From 0f10a5d8f5be3a9dc23411fe9c05987f7f80384b Mon Sep 17 00:00:00 2001 From: Matt Knight Date: Sat, 8 Oct 2022 10:10:30 +0200 Subject: [PATCH 01/29] Initial commit --- LICENSE | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..4818f98 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Zig Embedded Group + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From 58cfb98e80f8826980338a7c557d6fde6f9801f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20=22xq=22=20Quei=C3=9Fner?= Date: Sat, 8 Oct 2022 10:16:46 +0200 Subject: [PATCH 02/29] Initial vomit: not working at all, basic docs. --- .gitattributes | 1 + .github/FUNDING.yml | 1 + .gitignore | 2 ++ .gitmodules | 3 +++ README.md | 1 + build.zig | 34 ++++++++++++++++++++++++++++++++++ docs/esp32-c3-32s-pinout.png | Bin 0 -> 228243 bytes docs/esp32-c3-32s-pinout.xcf | Bin 0 -> 937723 bytes src/main.zig | 24 ++++++++++++++++++++++++ vendor/microzig | 1 + zpm.zig | 8 ++++++++ 11 files changed, 75 insertions(+) create mode 100644 .gitattributes create mode 100644 .github/FUNDING.yml create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 README.md create mode 100644 build.zig create mode 100644 docs/esp32-c3-32s-pinout.png create mode 100644 docs/esp32-c3-32s-pinout.xcf create mode 100644 src/main.zig create mode 160000 vendor/microzig create mode 100644 zpm.zig diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..0cb064a --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.zig text=auto eol=lf diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..85b5393 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +github: MasterQ32 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e73c965 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +zig-cache/ +zig-out/ diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..54620ef --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "vendor/microzig"] + path = vendor/microzig + url = https://github.com/ZigEmbeddedGroup/microzig diff --git a/README.md b/README.md new file mode 100644 index 0000000..2cd0dfa --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# esp32-c3-bringup diff --git a/build.zig b/build.zig new file mode 100644 index 0000000..035b12a --- /dev/null +++ b/build.zig @@ -0,0 +1,34 @@ +const std = @import("std"); + +pub fn build(b: *std.build.Builder) void { + // Standard target options allows the person running `zig build` to choose + // what target to build for. Here we do not override the defaults, which + // means any target is allowed, and the default is native. Other options + // for restricting supported target set are available. + const target = b.standardTargetOptions(.{}); + + // Standard release options allow the person running `zig build` to select + // between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall. + const mode = b.standardReleaseOptions(); + + const exe = b.addExecutable("esp32-c3-bringup", "src/main.zig"); + exe.setTarget(target); + exe.setBuildMode(mode); + exe.install(); + + const run_cmd = exe.run(); + run_cmd.step.dependOn(b.getInstallStep()); + if (b.args) |args| { + run_cmd.addArgs(args); + } + + const run_step = b.step("run", "Run the app"); + run_step.dependOn(&run_cmd.step); + + const exe_tests = b.addTest("src/main.zig"); + exe_tests.setTarget(target); + exe_tests.setBuildMode(mode); + + const test_step = b.step("test", "Run unit tests"); + test_step.dependOn(&exe_tests.step); +} diff --git a/docs/esp32-c3-32s-pinout.png b/docs/esp32-c3-32s-pinout.png new file mode 100644 index 0000000000000000000000000000000000000000..2221abbe0692de7bdf25fb0ced047254d7750d17 GIT binary patch literal 228243 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¨NzTk#E`Wqk$+C$u#>k_dDSY zDH-dJsNL*b2LZg#$^3&bvK!ZUVo&DQ^bvGr?swDxmAvz%g^Nq%tXU~Swejn(QW;zR zE>(LWh;cWmxqV{}6cnrEe-2tx;b9c+5-sr@9e_kzzbC8$&5E5m`kW=WPeJR6#353` z3-DWT*ykA~Ya6mGjcT}&abHSbFcpLMQ&wV|I{b!NS!RxogkO0#xXIr*8HQ(-OxQhg z_@o<`)!Czcyd<3M;K`uprcKn`%#n)Q;_J=(9W*~A1@y$THaWmj_ z(MvZ^XXq}u9K7yA-q;CIbZW?+3GqE!h$e4j6Lyv;$axaL`tRQ%G*XuJS(I97rc7jzP&_S6~QrvfonRry8KIS7j;cdhUehF9VL9qN2-c6WR~v zqI4*+QMY6-3nr=BXGhpS0;U0N{~F!ysWgIVa`k2Cu2VenbO@;%VxlyvHFq*0`!vSv|g-z*0?#m+h2s~r9&9oe24Za%K9TjPfAQTCx)QqmSwD4wr<(sG!^8#HGRj|R0i?BJlJ zfCd+=1NR!uEq$SEsWV-~@L1@XB+6}2BS-uHW<#Z@qc`&zZkW7@lJ9umaq?wQOZq~r z)R|bG)j9O<(p+&lCc9cea@(^rnv5CkQ2M^PxK$3d~mcdX`^2Lp|ty;i+|NI0&v^zQj+H|??FuV!>1@tif5d-7sR=muA+m-tAyy}CUXr|yy&R~T7C z*p3SnL=|7(sdB27O>{RIP4K$!D@?y1#s2Vy@UqtQ7)ntLrT(SX>GNxo;m3bx6=vPg zIoOHij|^ETtXX?MrbF(Jl6ubv3lZN2o`LZXHN(f(6Z=K=^;SndqH?h~TdT=%7Wv-0 z4}AUmk@BfHm7=dsRdphA7Ndh%=-Dw} z(#7#oI^>bcnneO9!C9tJ!*a>at%B_=^FVaK=*F3Wwc+@n5%mC*U3T@i-L0w0DF@q{ zg>M}ep5I3H19oP18~crHYCL0#J4`Yhjx);%bCTPv`&}b3?^O;G;@`a#yE4pj=9RyG zFXTMEPdS2tut-o1SJLVa1OUV!7tnv=d)wK~!8|`VoX2X6vJZ2=QIX&vGFLXznh}1r z?gy#`2z$c)I)1Sx)y==NJ?+27Rq(qMUp%ato;n=9x2u+J8u{Ui3CM*8CHK^%Xva^PL6{+ z9FB40z(1!nV8}PArU$C5Vf&jg`u#E|mpKRJCxouv^htsYB)I3w@;tM%v66SqJd
  • wg}#y(^===H8wxyDZ!V-yR?1FSzdRc@)8gKmKGW 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%0D)yAM|W0nH}KU@a+Yn%72#b$k~pb9Ps7s#TkM zUedvzL>zW?r4_Xu$}r%Dd*gq^4<@kk0B;YxKEUssRji!KWur-4;(#m5I-1Fy_<&!` z;5bbdg@dS3G~=(a82Z_O6y{-^J)p|L2PUM<=%ZIM8ef;tS)3^VYA*6%chz8Egc1CMgcC*hZ zq$$K%aju0X5MY`eW#u!ZmeCK|rI3}dgm0mYj@!iqXzGQ+YvP508#irA58oxPiJ^dk z;_kg*lM2D0UMLNQ2=a5^f=TALwvwz74$CN}yY5{wS)YrLS&<{n*7||hsk0*nRIK2H zz=I!#t9t`)wGXW+Lqzh}v`0$#)zj-T`wd-99z80H1w&!|ws*8YyZ|&z;3CQJ5)ovC<37$M$WK6E*8*}TBX}phaerm#5Y@xXKcK`5C^hUkGq3YjH>kI*h zS4|H1a`2p;z_a+U;9q+fyd}6bo220!Zi5m|z=X_`OcDxY9*WUFUAgTrdF0{YdS$WI zPgrslh|HjorW+u_CmQn}*?6rcq|+k>qt!pzkSY)|f0D+L4?zB?M3>C4vj_%ox{v#5 zKfMMiFR?Ld9=5fb?=tQ5T3xy41eqdJID8n2u}2%?d6>|i*{}4dC;oWf(LJLk)(;q( zkvo4~UES+k_jpvr9|>MDx#KF!;>ap=;oarZ;Wx>$V3?YuXBtOrp%nGiITSzuV$?Pz zT#pqxI?!Zaq$$`G#DZ6okSt+Au^0SH&&sA-Qr+65^sBI^QQDspt8<~WwWkjSUr4N8 z%ZyMlZery3rH4?W%G{ZmFn!V)M%hF`2w@>m>QkT}Hc8vU2YoT0=w|}xg z$)1*LgPH^~{J-0Oj|iR3I~+ZegG~;bdglWb)wPxvM4&l*->$0L*(F#*hC(?wUl}tL zM}g3MMW~=_(2Wx7aJ6^Bu`?#W8@}rMwSlV0o=lVd^4N@;Xoy4BSh_%r?|A>kK1m4@ zitohCU?gL)8Hho){9C)f-ROK2MtJlCuZpyfeIKr0`}5}eScQ)~M8%CTdQDc9>96%gD%X-4{X4AJ8=pZ|GpJd)*o4g>pT9P!q&e(R|XMa8l2=vuaAF!1sS>g zX#9Elmy@n1oF-D<_syExwX1J5ct)I~4;RG0El73(w8!I2AD(>`$o4BZrwAL5I}NT154KZefPCPNUK@y@jYsYO9190s-orUQy^_AH^F zz^G>i^o|0@9Wdx&V5H)fL?qLgD=LMTAyVw(g)pGd0U&GXyshv4Ox~ZLaemQYG*g&N z7j6d1dj@+es5U?f+NwW<7@T_&1BM|;q@e*enVxg3;FHh;&hzSOCA?{IpiL&5-sBJP z+{PTVB1(SRLCUD9Q-|R6<6aq1zOdGGav?!(Yjk1uSaTPi5V;}%u;r!t9TODE7LhJs zpxj�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 z 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/VP9Nn@0!`EJ2rhhTG?4=j*_oWwKG{2NV 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%0D6@ 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ൢscX39X}BCG#x*X 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

    AmvTp%bm< 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

    ;0eJ6u2Yo!h+$$ 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

    K0V|# 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�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Êqk%U^O~O)t^E0`m2xL~XD{0F(ScCT1bf-E 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
    ~`Y*VIDOs(MXEIo+c_XJ0X@Ui5b4htkT&*;ZR#u
    zP@>1tVN&G-N;@pE8%0@3cBp(wMDa_EqnD_4h8hPF^{VP|8sl7d9?d|j(TQeEa$+)v
    zOOn9^$zxWR1MCCu7i2hS5UPw;v*SmaDTujEa6rXPNan@IO?pf1gQDU=dOKk9-a0?F
    zw{{PL%h6NZ3v}nz+aU=o
    zjy4c?!E0R~Kz3@a*HU&Y4eJ0QCK71@f;}$dz8!ibWqG}|0Pa{?8Q+}4U1L%0mhvft
    zUXly|+2PxhI92|mhiqEtCOGH(^*%dbBXA~S*bdVU0a;zih@v78fgmOp>_zVs>-9#5
    z9Z+^ht=|I&9r2J=`>Zb8&k_-jV#QYxYb%kR95ej>tp+E_aK_{2rg~>}Boc($k`UjNVL;Kq7!!lg%C%d{fy6?RFYq_Wc7ewg9#A+A0q3zB(P!+|h!h=&ZlX8|@c08ZC;7%A@5*tMYV(&sS2gVdK%RI&W1i_zP;P
    z0gc$7fkmUa>Yc}L{8p(nxjYVw-r_VFf!zAhrbelildICZ|;4C+wom$Ye
    z)jRDz?~yI)4u1>qK*Ry=^P1J4QkWI{NPzc3
    zs5$XVB*bGVXv?DeT0}~Nf&!UZph#XO#l)_)U^lvE=R@BICvtYVs8Z|Rd!e)o
    z^lnY8=7<(wQ(K*n@QF4MX13ZoBvRQl+b5(jYpSL`==^fS_CSZP5iMh)5gci4?|_!=
    zZD>HI6rvGUqvo?ToTro)OR~1Qq|(vTQQJmX66(>1K(MvR2a*p0H6!^r7LD$Cp@>gu
    z2@bEWtFs2HwyqjHiKvUPPh)3$ZA&xwGfCbMa&3z)l_cYQfDi)w5l(WGuBwJGvDJVq
    z7vIEF-vUYkf+F=e_0~_*BuVH8s6YriM{QkaeRWgAFpvc_1e+|!J}vV#;yu_pF1Nb$
    zPC$iFR#W9i&k!X7S6wq0BZ1*bCh$C^Q1CNT8qgOa3`f`*pneky80wuzBDijq+m_Rl|
    zbwiD%SW#c^0V$60(4yg7t_W%Q*uRZHqrrqg-WNE6Xevo$Amlm+)~rGrlY)N+_lr2a5~$
    zZu_B3z3;n2r6+gnE;#)8OSfM+R+x&rkKrZavZx*ruw`ax{^$&@Xu=dRH)m{KnouSa
    z(HsE{C>fWQky|%J$PyM)7B1ov_*ncTwuoZ$Il!_7!D|#dVWKD=$mhsnJR3a{N0G#QZmRbOZ3an47Qn8h2sRSoOSdRdVa4;B*
    z0ctAj6!P(_Ol2Q3YAS$PjMB%H{EeFGu#qq@jt|Y}jG77!jseH?mA+6-C6Pn~x;=LL
    zZbnUoW0c8iz~8P5wN#BAiKGNJ?LNq8sR>ae{~_KEeR80dYE&TI7(BmTuf_ID7SU1@
    zph_|WBre+DXsI@Jg@Xtpi}5=|Z=i?AMgcQ{=^${F3$;{-OJAn6kZ7NIo0upaKy?7t
    zLGW6rkt~u4poIV+pZ{&8+Gw(RJ-RZj%L|{(_hRT(QE^5B?IF55nvNZoB8tk|Xi#bp
    z00b%9$wDw8BIkWLkIzNX9^n5HY)N3GB2yR}EqGR;)*_h`24>KKv}jn!xZ9p7idNCv
    zL~y0U+~6kUuPA||0*SLo7KBpi)|vE{o!FqHRU^6ypK4Mv?2729aj#dpRYs@NhZJGA
    z#RdE+a>joo@h~c~FTo_vM)do*MBcOw7058Mf=mwG
    z91$K+5>**0c8N$I)MRNU5v&=>kBA@s;IAg7#R0wyk1y!4AQle44YCF-x@}z2v^p^*
    zE-DT{F+d>W;-{`ZtyUuk(BpMl{XRITptO=Wt;uHk0n{Q~igY0&(I20Z6rFSL7L5&b
    zEO4jczz^EIkv>*co2SZR(EKdrlBVOM;yH2fN=GGJ^JSSz3)37pThLmAs|%+P$&7}U
    zX3?VKU<;=rlC%l&!y;4TWsiPeVNe6`0*$Vka6DP6>X9vrSUFT=t68-jM-FK{8me{#
    zYxYh9lCJAOpWWEl>L$jCFbl@~FYK%4nqAb=L$MKGD-ua}X
    z3EY5ymOw2rSc^xK;*HOp+PKka(0e^#<1{;n_6mx5MtiNm@oLA><*%)R8)GZZY|W>i
    ze0dni-zrOy8aRef<+a^ck2D83^N{6iQf*?6Kh3d9_(kE9(K%}2&J9&xK|Sk4ZaLh$
    z9+U1{DcOmxDirqNcmT@Wfo&3^zSiOxf;Nw%z@fJv8UgE4WAlOJ)Zuj2G{U!N8KAzx
    z@e8N~$>#aFBU
    zxOiGv+VIZdKog2X3j}j7
    zNdu^beqUP?iKgL-bZHIG5xlhqhNZjc$2G5)H3PU0Zg5nA`a_Zi2q1@a+mG#_*55-k
    zj%L6%+zR!E=L*~Fk<{S^Cl+Yq{H`XP7U&mQ+x(
    z3#0A_Ye0P5>P2ch(e#k}4wiN8rgTRCg7e?+EiAKkwfbSYV4Fa}t**f)fP)ee3+dz@
    zr&+6CA|iI2hM+n=G0uK;!wpV5=w?BH+Zv!O`QejrH}F-!|4mc?G+q@yMN$v+8T03I;n8@R^(h5-UKA0vuRH
    zAHP}BL^`au7|LHfr@pp;CJhNCK`cFzWrNE!0RQp(3VtZ6udW7s29$%J&N-*P!nTL+
    zm+`?PHUaOe-Uj8s;kKBtd307&x#sXf={fba7?2gG0k8&DMR|FtLRo>(KbQ!N1?9nj
    zT?abF{g38=l=rOq3a2w>-vNIryi)dIj(Vrb>8rDMPW1o5k($zu{m&B-2ZHXvjc}|YC^)4%}DnHi;BakD}IlB0xc9k;!z~N
    zLK62Sf2C5f;@AXsoNU=?0JR8ti`}UF6dcYPsDE$(_7?`^2DHd=TmbE(I5UqcG4qIW
    z!8EY!lEGWm%cS2TxfP**CvilgY8)>n5gl2pD^{2sUI*+5y=`A+A_{{ml@zs;3{Fs{
    za#Cnys7m9mErltg(Rp1)oc6{ad1%Bi8N>ls
    zoLEfD8NtP7_P7ixMaB1UWl??Wu2<>C`Gff|2oVae{sv!Aa%m
    z{bVi(UcyLb0;)9pp9v|mzb;prG=^F?!YdAw2aHZ8uT6V;KQW(4;fSOjq&>$u5)-22
    zcW+hcH6%LdwptZ63})D1c4!s&9K;E5u7_dI;GQ>
    z78mU~Ual%Uc*<%$eq`Ny`9Xg$MH+TUl&D`~mUiVE|nHJDSZKYCMQGv7;
    zm+?^Z7jM4bSOcy&!j=PErKteE0;=)p;~#%))2dwdO07j_WZ5Fnohps`_`25$LAI>N
    zFg;)vS8KNrRZa8Z2b=bTSj1&GRf#k^xMhMqOty9Jr=|4{r2X1J4-E04tM~*FBTAz<
    zR0;>D9pr)*Cx<18z)*2`+NrQ}Km#s;@=F?6kR17(8h%e-K0y#bt$uPpRP3
    z^O)R0uTF1bLYYpB+WafAXFzzRT(MbGu>O>FcVESgnTD1A`iAPdWWUjL;5=avs4RUAfEgo)i?z;jqM
    zs-L--@6Le7;`Rkt-g>C&9^KAe8Ya^j))33xKsao0#JOz_O<55Itp|ynU|#YV%+Q;0
    z$l6^9pI5W008)UZ-~x`7uoBtrrm|zq=?bn
    zi+3fE`6do*;6CyYgzMg1zu#9!ii33&(F%sF4o5l3A4k*(un(o?
    zZyd5>;Uu@8+PP|NQ9W?&eqiU(ap>|GEJjI)<(N2lrFtP7rJE6lwv|@A@zjYXf6Xv|
    z1o%{Iz1CVnng}QXKr;@D(NOu#n0V4MY$T8IlXYKWZsA~qZw(m@
    zpjB6XEJ0o(R*A#wb(|jA7Lm|+A%AWKeOB#bAeNx&bO5eB=e!Uq2V$)Ps`I}I|*04_~~
    zR^zalmBtSx!Z_@lCRl>--g>JVeGY&1umIrI9>3<-cTd^D1ca~Puvp6r|BS26NXs^?
    z3Of{X%v}I0!t2ENP0rJMAAA2`T@~QhaHtx~-_3(!MM{@x^y=bbtq}kNi%MtEt4a$_
    zo9vZ_HA}yOst>IQ8s33F3&FEbBu|yo4jM|5g#yeqdytS9}+_g+0+2O>+e%AhHJ
    zAqxzBjQ$T95b!Wqc34%2m4W=ITJLoo|L&w8PDL|P=rkW*0dokBF|-XQ4*Uy%5@0V`
    z%nrL=Wvs$yvFWuS%LBnniE{t#;*@^>>nXsa0GZS%Ks>8f
    zs#SX*%1Xt>5EN;<(ZrBNK}cKmdXs6Gxz?h!xM~dLR`4IF%D#JeB*+kX-IRy~@9Y4J
    z6Lf>m0|gVG$pLSX$F5LSD$EK+iF)^4NQ{LBORk4SX|D~(ATUvY))2fCU>5|Xq1Bfc
    z>XqfXO*iHwLMx@WL?e$6=*wp9yXmQJTq>hvs4wNhhJmR1%Q6_=}v
    zKfiYpSY-R1um+>15}>fkl1hNJ)aB~ZBKVUletl^MJ5_vMg>~#bb>gQj-xXHu{$^jn
    zk!`z9?EiH6EtietCGtcZz^~7#u)>@X(q!J~@l;BBevXt!Bj%jUrT8GPrz9axSVI4a
    zOki#TjJ6bRDoQ}}2Y!I!r{X@pekUv(z&sv)DF6b2kje77sRFP#!A!ulyTl1Aqr|*S
    z<|ma(5=2rFf(T*N+Q7-lkGFJQCKO6|;wz7Ju6;-mc2}R8>*hl%F7s)zpT}q9a84Cy3-jl
    z*|dt5wqSLK{kgQvY#~p)yum67DRcj)FJBC@+fldd+`exmf&!dmsVHvlSD%YR%A}@A
    zsT_7zjD!{og@SY%kb7BN(Z9cZbSlk8yoJt66o~{hwl1+yo*i6CBAxj{gZr-!nM`-)hPu|nmxYvB>pwc-p_b-bX$dV5TzUG;D{IXqAFche)f!Uf
    zl|aFyr%ee^9ce$`r{u}lq!CHXoi5!
    zy61@?oE>#x6ICMBgMJi(>2ub(Fl6`7Fa0&p(~adwIXB8fl*
    z*(nu^Ihp6%smEpLa1G(SB=<03bwmogBs49M_80lrmm@>x$I$uFCpP}|*XqAx4gHSKhVi
    zqb(o3c>4s|fD+e=WLz4!3R<2u?(zi>KJnM9CuK?olt`Cy#k5Eyq$QH{ypdC8PRNl<
    zbc{Gk(lVfLL%&Pw9h!r`Zw?&Th(f7A
    zBo)v(qbJUoF?IZi^nq)$D>fIbBrHiaoiTFky!PaRi5UY*q>-zz(?p`2NmH(RMp0dL
    z`irIW#||hVr)BW2(9#i8X5RX`ySvA*>y;Zv4Ja|1mVm62mgY>nEg8#}D~-nwnf
    zfD#*|GBHrnqVzEr-TLD8B4hD)tLEhlDDedxSbQ10IKwB-d*H1tySA;rf9imp=vWVL
    zkXR}fN;2}MU-$3}FE6?K^5N0}ZQLZ0(rFTGWLaA7#F=xipFJ^qphR%U5ZjPK@<3il
    zGt#qjv*lvR0IAZInl6&cSfXk%TuOKw-YAg{DA5K_y+|yAjAV&}bedQomPrT7j59Pl
    zLl`NJpd%zfT8?qaE_jIpJ}uN211^pqBE2O40b<7$?r<3~@+Eg`cW-x3Mz1T}(UKnW
    zJlw$|33(pwSfN9nhdWfHA2w7YGhk-xzFbG}y;f{ig^J~u)?jT4Dc^>W<7#;FF+#!%3@;uxTFe>DE
    zxC0<7;Xa-d@;r=iPfrbb9!9u}L+ghT
    z?h;-|{V>8^5>h{$aHm6_yTS-}I;4H_1&2vmL#qt^s(*0|&BXsQ6Rt3#pJtz5x#2{=
    zIOY6vR~XShS`hL)jOZWF4|yI&^k0`5@;r>_pPwG`JdEhSH6!GC7}0+<9r8Sk=${<2
    zv%-n~oRIl(g%SOsJ3E}{7l*VTPV|R94=4IVpNA3sbm;Vk5&bmx{P6#c_Qs0nKlS$i
    z%;-JS1BcPjU;lnn(9_c$(Q{F6Z_ma5#Xk|f82y?5-k(36sqeuA)Gi$%lL3h%l}aS=
    zSV$toadeC*Sr{!Cdi+nAmX`iGmrChjl6K<%f$QhooOh7Nb<0Muq`fpt(h9#epl_iC
    z8qXGxNhEMpOIflADJ$fgF^|b7m52o*8ooo;fKS@o|8|L(60sz`Viw&s;QdSiydR4}
    zNDqTPdwx0iNZtBnBP4KU$>6kN+*hGpV+u4Z&lOAL@~qtK3>opCg%+?gEv(3)(}s^4
    zGj-y)QQ5$Ckpl3(3*iovvP3MQ8dy?zMJb_x2GN8NKyI2R;K4;NN+s0;FJ{X}jF~p=
    z(u-zH9hDx5{;}vnnNTRAbFW+e-iCMA{3V0WeR{(SV?aJQN;*0Lom~R|k
    z(&c8AeO+(=j?}MRo;7ab%mq)pvTn&;^QLF@cV3i6ja=ccdjHnz=6%!TxjF6Yjx)*|
    z1=729_8Uejnm1j0)x2f;I#R!3W#;5*^Pm2rSh08QJy+x~^;z`lG$H?@vii>^2>8Mo
    z$2vYs-*e_n?XFS6dkof_awJOL5M^3-`<^|Wy%)^T7tG`~%70f!^xNE9VoSE~Ew=jEe+c#3-
    z^~K$19Jh{C^t{E%kcofjX2!oX7v5S~CRVsaM8oUbw|L>~rEYPxD;7_D;zV1^0nyj(
    z-=+vNmR7fDZyj0D^Lg$?Gxndc_0=DNB@fIZi|!`tomswW30IOKpZxvB9>*1$Rkb{amS3MnY&L;?`F`k}d^4lX%=|o>+vRbg-Wg_$Dab`FwEi
    zNm9^)^z7h=PMQJYc<6-vC!DZ<-=s1JU~p+J_O_6Y!~xAjsLvnJ%ppe(Sn?c76aMZy
    z!}_%*rT|V*oWO`GlZ|pg0Y;G5FV7!!i(?++JE9^Ko8M@05xxDd$59eai(|%y_v4u;YQXwo
    zdKP#-M~p;&c{nAGDG*$eO^fAe2#)?%iHqoUc6S7pW{Tv)M~@wZ5(k(`hwp_9S?-wW
    zgHYl~ZSQj#BgRg+bnal3I8wi6N&46cGjDlvFiIS$A6%9;Y3lrEz8s7a$Gm@;eC8$h
    zy?%5sN*t;0TP~Y<@#1$+4@QY&-oH{jY2u>yjtxeMBlZ1Dva_ZvT=m6ZlsKmTbJ?HhP>acqbr
    zgHYl~b!=XVRNkk9{ZS>ZuYNYM;9%~DDsh_Mqr{yZ{Ltw_yd!_#`7v}(|D&`P9EH`-
    zW#c3kK^6Lqy2c!5%t?xaHk`WFe^iq*I;^@D(c6Yiw`4f%Hc?o0jVTaZG93E}3gbX^
    zjX9|UOLBlUlE{9euGM$8HP_k}$%G=QR1QV*0)1`h@jqc&n$FHSaCew<)^Bw;A1Pp8
    zEEfn-0L$t(x?4+M0r;FGP_lpHfb0LJ;8Oy`>_P|Jxo;|DaAhcPfdh`|pM9}RfYznb
    z$N|b5(>2Fp86}X((g}tQ3wD6zz!Y#kCc`Dw8N)|}QQqvNcaA5JuReV2`00P#14pV`
    z9;ZcFV=tO<`5*Sck=mw3;;fMqFTeWcL3rSpseMe8KW65i|F&ij9yn6p`J`~{#QD#C
    zRWb+<9P|Dsg;QtT_vZ1oL3rRuealmVsnZv~U)VMX4;=IUXLw`BF8bhvV-OxVQs4fV
    zOg>@Z%UgaOga?kPzepy^o%_H`n+D;5>#Hy2)1ziyyI_C^?ycYDfn&zM2sj>TdX8)m
    z9=N{xasdS&USx;^uKaiDZcOhN%Y`C>MQ8nS4;-nF%_{)inp}#r=#MII{q=>wxWjh<
    z$@GUjaD9UxI%_V7aSct&znbd7oPgFvI04~2fs6b%IvsNWLv12QWTdq1w;nk1O>u;h
    z1Df%5U+97BJ4YYGJ)!WuU@MaN(|~idjEKMMQsf0+Ic)&5tbkOmbTp*Cj(rDI&
    zPPiDs6zU)O(=H}#KX9o}p*neBM&OI4QSFmCz{=x-(dcxzg$9y4f79yN8iE<8~O(7=1P2uCv=zAQ&_VFZX
    zAYT_JBMm^n;j$6o;HQ92iK$&pi&GO*(%0z>$EPGFP-2Pj!9xA3BWM=$G=dutius~X
    zJA0bfNN9>mO?|$$=Uqu;Usc3Oz!vmHXK%Crel|#Ms1d=b#N6*3e_J&r(
    z6lzFDgzm6^#}%<6`CY1w&k>T?DW8`_H3&Eyv4Be_3HfZA;t9dZ#u0%}i)s@{!4j9k
    zmD5R74UJ3HlBi5jnx#-;1Y05PAQ(ARH$OFnCF~ZYprsl%7YsScaXg+hotuO!D1|f8+8qmK@ih5RXlzCco0t^#BU-AlwD<
    zvl@GPI`&ZsTmg@r{#{28)2DPPXJu#SgDAwM2<_*!&0Xz1*115!OJwuQdm2{!=@ga3
    zABP`YX2D;Pbm@QeXopdW!d?MJi$BMn{j*n?AnFm~pS{9ZQ5W3DA{2-ew1GMe=PmyG
    zPoESD*RA)6cr12=Kn@+GgG=B&6i<$$w+&o-xYPlpd*lgp3S6dw8);;?JEmPoxQjul
    zJ&fB8638Ux&uFfY3WCayaPx)!7s+cH@NX7RPRaQz5|2_%{1i+$DGMq@UL?N(DuVz7
    zf5~9@V{^r#D0HrqC_6ks45bw$@qy3<6`+*j(&8l001DV(SN52%j{_ef
    zDq^UVWcJDG=GHC~oJbsA?5O=+ot@R+eOlJq)a}1KElI%U-B8wBI2RSuG+n0KK_Ny*
    zQ>{X2qG;6jXL?!{A>Xr?f;Qg&MftF>&wo+;OGtJ0eNiaX=e{RJe&2ES8?H!78~Q^3
    z)Gsvk+}DBr-oM*m9dt2Y1{OvCHbcRokMhslHq3QS%qcjYis$z5@W0XAPKY*K7&V@1
    z3KeJgcRZw53-(5;faawL>0}Y$kbJ6k(>jT6cN-S{0ZzR9ZDU1%d5|ipi?E6JhT4&_gBx)1Y|nnp*P-n
    zcd4NNd!e0G{-a}rq6ZHyyoL(05bdt`#}w(>KFZ&`5lhJb6;
    z@Y~h4$FF*;!yi)S74VJn_H-1?0JL+`XKg30`M7T9)P!-r9tttc^u2~^v*7}c(U)bFA2n_{5a8+s7JHMQ1RG)U$?F}sxESUPY*6v9Z
    zCF4r3IMlVhu-kQQ-rN>XNST-XC&nzU>v#En+z4H)Qk@-^b#jm{bVRm##86G@K>0Egd2qs_{fc1t=ODTBPL?LCM
    zuK}&g18x^`9{5^9&jDW*6w0$)wEw7eIMmJ%A@dMT>2G(zkbEAJ&qMP0xBFt~H$&&e
    zzruMjB%g=m^N@TVlE%MR8WRqV|1Ofx2yrBh>}Mp1H%l(yHYJa`#3Z$iCBBgNl;m5Z
    z8j{Nzfqof4BpF5bq9QWSP_5|#s@8Y{b4AVpdD{R^$2b~=OmxV$X+fa;D+iYGx1hEymY
    zIeyAi!mK$W?E+rdG%oUB0YSuy~z@1pzx!*z^DUb6^nl1ZWZRk|n^!5Bze&CFx=U;3Viru>`yUzoFJlWv7b;@;+`&V7mal7m5e8@!z-E
    z|5Jn;kxWFuG?0Z9Mrs8aS@K&+LZnutxSqh}2U5BA$*eP2N@%%xV3YCZWZA$a7)N)b
    z8J4gC>v-UkzJ>Ll$Y^=~v}l!tkSaz&Xq-PQ1`hoENzsgxB7_Pt^qgps$U-<2&z};l
    zk`QjhIJ)nXO$O(BK?lcJL-`TUEX24k>3aKCNBnTzq40jHM
    zlKh4{1w!U8{+?@OK#Y2L_4^8pWt{&`lGw}v*>FUebQGMrz?{c^mC$ngQ~{5KGJhDh{*l%?cB
    z9i#n2@g6`^I6$JyLa1FsC3=Je@bGh_u>BG}Qrs5ORH#6ghLjE!=mTq9AkRa498R7~
    zLtYk6p36enBg4q^5ux;rVdVJ);rSuD!pQU4X(7+U$n)z$*)zk)^V_mQ>W7i%^Ti?0
    z!^rcQA?%;wLq5JMj69cw%wITpE)M-ZVdQxzuWmSbE*h|C
    z{u{RIzxNnJrMxJFQ+c424`pi}Ams->2$k}ojrB`;NT87A6)NRJNn87AOv&Fv9H#$%
    z9HwWTr>mg4_19YHI}!JKW{iJ_O#&>#^hz=mKdf0
    zE^!e>z*>wDB9l)D0!nhXdz*kH%n@Wh3wON-D2BdnWfq+?X8P1irca-eFM|_;a7PvZ
    zeuHL)kDoqf%-HO-)KL>BO_?}q%Ct;4p2p4)3Dd@o6Q+;KBlT;R<>ZVRH~r!{S6((_
    zJnp1o>IX$snjrn^FP(M4HqFzcbC>pXRkP|={%M>4m+R$E*d6mzZ*T3Mp0=llwBTQw
    zJ$B;MtM6R&*uC>FpOksF`yyn1%-q?g_;k&;uIA;^XL^Eb-g@N&L)*@A4_LjkB)6h|
    z{?Rs4zkWsL#L06Xdh7c=pFjKOOSAjyi)j8W)#itR?|##KaP*5k<_s=Z{zOo-@G*;P
    zI(19ynW?#l8<_epWz3j)=jva4wd#$Fuj*%yTrHOJ7dWl!uFDr(_v~LXm-eWUgd(}k
    zX@Bs3Q((66w&sqB*+*JQ{lH5Zmt6YD+b28Dcy_#S{WesEz8aesib>A119Q@>oIsNRLCo)qc
    z0`8PYmu}U!wC~Sf-raRlsi`=$W~%5BOVt(pzcl0hN6zx1=4OnW|M(l@m&
    z#1aB~rieH4@lWm*iY71oF4!>n=tw=Y;QCzDUzXY^emy1l7mQrbag{_BHc<_eF8GY=NNIj+HZ#V%Z4#IG~AQ+3@Su9yxaS#W@+mKkxqxNu{8^HGGjXMT8))F-TXG9(1SZ;Mbs-~Pn+OB3@XQflOgk#H#E%D74SDSY4_k)|XXF^a=a
    z%gs)ubBB}q;FiU!Ny;w##vqp^{g0$81Zk;aDN-LO;2+r;{De$N3MC?`s>lu%@Q_-;
    z7qZU|AKeFOADOt$zSqNf1qVHm0rf)QE0H2{cIOL(EI}1y0EJuzLEru#B1*oHpr(IT
    zhxnsInFaqo0?PlRHbW3yyEK<2?V%+x1K32*J(9pR!W@5asgOO=e+HhTrj&v#NeV7j
    za@}EQ0j7oE3nN&vZt%I1`^&n1+W_H0l92{T)GquRa`6P$#q~WO&_W*z@{1!N0`Qzf
    zXF}O6&vtM)ob;gh8q3}
    z)#<$Z4)5Q8@W9@mmQCf)`+Dm{$()}K=5u+OWX0Am$w?n|@%;OqdUDa7vqq*fVvvv+
    z%VeWg*=kA;X=@bs2$uHLo;r4-(&Kn_)FNxmEb6vk_XJ-08fL{W89sdaEl;ldXyZFe
    z7hWXqCn1)IIrA)mHKV6Z-`#Q`V`Wp_IrCSODjg~!c-#3PtVT^#A&Ar~%rQUc&3NK5Ny0%A~og@+8QR95@
    zVXNaZ`nIMsW5(6jkP*}^9X0vZRXdd3-PH%*xpx%P1JoBvQb)e+Z|mr6IsWI&5s&wn
    zBtuOR&(@J@%R&Yu^myPq^WQFHY4q*?w97*YW)`D3nQf84LF~8r!>T
    zpO&xg?x}C|Ebeo5%|3Yr&#GC*2#wQ!!Uw+%<
    z^!|fTke>fV*XL%jhsy(7bQrNDLf9mHh*LH2pYm&Im_v*7)F?h}sV83J6xO3~tlCkkd!Hz^z=g}kv$
    z|Ci>00tRO+A*T{Dswj(A%lHVbW-oZ+@h7iL7t)iSe2|CqN~jXTQTIHQLuEetWGY`m
    zpPfFItP{xu2)wh-DzX(KzDxpT7Hv`#Vz?r1CL5oVMu?j$mT`qNhf3p65~ladauKW-
    z4a1a`_Afn=n8I+ttOMG1z5w<3@EsEFTx4~UlqE@uwC@yUxb1sHcxxNE{`KtC^+*K6
    zL`tGINI-ExgUkWc6o9|u0LKt0Nir=-A+P?QFDp1pYzn0o+*siZfQVinpA>GX8@2Es-DXjJz?s+g@Z8wNd3UlvQL|@5EpX08-z-EIohH
    zeXs2ri~+#Ze?B{H?EEJNWdJbspUaYDPMJ3-1E8;dHce-Y7&jOLfYb*OA|Yy*4#ogr
    z>VvwJ5G@YI0ATw6d=5zU0LU1G0YK`5ml%XRFdhaN0Gi)p0Gu5@OWKXz|6T*2{+t1D
    zuKEzM_7L^yKnk&cCJ`*d^NlqRlB$8a{#jnrY-|L8pop4(fhK;Q*OXYiVRZe7-WCYd
    zXR#r1qeB>7pJ~ANOcr(<;kobAe~bD5I#k&~|&jIK}iY~Y#9w2>FzaQ|R*eP+);la({=mZx4DjIPhT
    z|GAuzvmaf*b8xyoX(9Ohh;j3mepNUaU7ytVKbJS@mQ_1dgVFW-W*~Rm{1?7FJs4e|
    z)USRfXVjd<8wRE8GxeX%&X{oX({Bz&*YB&JCCQ#X|GvTK`po#B%cAMb{KTUq7kuctSXO+}uYu{4fY#KU4oH
    z;iRbx*Zf*D2wy*`51!j;Gah}nplcAmep281G=IXx#UGri8HBH&)VDt=${Bax8$T8e
    z!q?B#Un~=kod4ANZG-UjGxZlq1@bA^-u>hteEnzZ^Qnyd31bK0>nHWWk4f=y6B~g+
    z_uo|Ydwu;(eK6e;0#12f8UXQc{%&7C(|^L0D@XM~sQRQnSgZv?L<`_2`J=x6v%~La
    z`2M55{Byf0WXrcb`*={G(egtMP{|04PD%O8Dv*U3RS`m%~vvlhR*>*yey{Y?EwWzsP>Kl|3F
    zgK+lu)t3m;r{DO%vx9KN7*34rY4RaH*vy9v5+rL0HM+;W{B+0aY(9#DSo3VjGjFoRSsyjEYmW!d
    zY|KL(Y2Idpv#5C|JD<kgl3ZD{GN<0#`?Fk1!q42u0lU@epy3KW7~(h}(4=%+
    z9_}CA-r4;c=x~MOK5Osp?)qeeh%KeIi+E%HR@VG(9*-iFcOsM(@^E+QS8Y8YGzWm=
    z=98W69iOGqVz$g*aH_)F_~RvF5=cVl`IJ#0#-|i*>F8Z0W~cIa=}$O1&ujsKZj$(?
    z1N(p6c~6d<#Qa2*7Q~z)O15P0kGCO=MF|8GU)uToq7f2dTJ*@A{Jb&QDQvLrf;JqC
    zqLh|T(R6B}IDagi%m+aii1o&e0su!KP6RPKpPNLuO~K2~RB)ju09bL@$zo7C;kV$?
    zr37Mrst8~c25%NgMPdy{@_Q*3KZ5Gz1B1r@f9$;nd{ouCHhvQj1d`0m?tNN%BlO-u
    zq=SHff~fQ=HhM=<5mbr-iYO{7O^O9kRC@2dCL{rpklto8HUDQ%C^Ins?@G?O=R4=S
    z^AjYQwbovHuf5j$zVnvnaWkHOg8l(8@pvYPv|>3Go}vh)IvdZFB3MUhLaK+$6kVN7
    zU@U+J)boZZSypRBGe^*pj{P9tb;r{T096$XxcEq{+Kj8Q49vlWB}YY1Gey%nikw||
    z2EVEor$`_Va_<(M3$3^~z)@-Dor3c^?_Y~kCj0#Aa`^n3w!-Jv6SDWOdFKfA*W1W;
    zs<<-!%<|uV{q@V|6cy){2Vi|Ta|?T)0$SGlB^Qa4*%$ZTEJ|5Y2N14WfFegQ89V`i
    zSKZv=Q)1rg)=7!)rsPc(4O$(`M=}|JR%LX|M}?Ln>mtKw(fobEfh1OEpmh<Wx!D|VI$44Lh
    ze&c#dN@_vMd=yJ;MaH?+Mqb
    zeDilMXK8MJskL}c48B40=3k1P_S_yk6+M-kWDM^u%<_!A7*ASX^1%
    zkZam;yVEvID{*00+}71&#*G=eJi~dgGuS+yDt4q9zH!~0C{DanGVR6d4%cCwgl|62
    zpL1XCKxo_Aoyj_Ifkb_1wT-11DZJ3(40Z&$X9u@&x}4{`Q#{+g*m+BN$y)Mx-8Ie&
    zJ)ga9cO0ZOC`##f+HnmokEhG+msBSJHOFQff$vz23T?KNr;eXFb^64qtsQ~$->Inl
    zveYQWzWa@1?zMHEO?Ep@G$DYdKlGygQfpdHwA-&X#&=!A5|?u*&1oYGtYy>sJ@b6O
    zetr6NkE1AUmpuCwy3S_zjlXh>ri#6sheADZ5)Mgt(
    z3p(+!DI(9{w?be*8kuU79xYyRz5W2Q`j;jLMBE8t{SYMy+cfE5)URm;A
    zhq9dZeeHCLR^RYiS@E?!#|!K(+i*ckvMr7}9hnDrUoCQ87{nPkvU`#JI>Xo7W^-gt
    z6u9TE7`onexKaOE_;X(qHn2|H_f(0??aIw|Ifr}b;5uz70Yy=X<@;
    zopHL`b)pZ&K7WPKC-vRBY0I}SMJuevNErz7=_x;K-!x&&<_+!P2@&a45K*>K(RPNBlE0A6bK!*4o-RSUGIWt#v633R$+Ab4okoTK++Vr
    zZ4Scs$l(Zwu@a5jmUyjNp#?;Gxq3KiCp1Vj52YlYud1ghtwz>U8iCM+%3%UnYJvzy
    z2*ViZYSz5M?OpINArz~5eRG+$=-Qt{gPB}eTT6(_wpuNPxkaS~JBGzVwsDw}5*2u2
    zLTxA_D6v?ryL*zza+9?Oolcvz$nMJjrkNIgH&JV`*idL-wc1>1ZzqPL@JtPUBG!^jYj{e0`nUl_>~4OXX>tf~iMD;-^K9WH3tFy^U^rPsSFp$xcj4zhZ#
    zIz2lboPu~#4c>r3s2NTd6wTK1gi%pu6`brA2KT01UOJRinY8#0zquAAVmY_4x)fBpK*wqUpfm*8EI#MLHBoj(3EcvZASdXfKmIYE}
    zQQlvy7|d=^X+0=3_`+;8ye+Qh
    ziQ?CQ*Ps&MGun+9Hgd=-uf8(8G5k9s720WAmbL8i@2iG&Pr$~3SBx&V43XgRA!|>$STtNA
    zX;4(Eo+*fb;?3J<+BwTzWiDG;)@vjbK!`*&n!5J%HM=YK#L6}lYV;V^WnVjK!W%Ot
    zuSzN0&=lpD45y)Z_3jqIH99r(aJ%>4`(V++k3O8!R`rO}EEt&d&kuj^>#O=ZhM$@>b4R
    z_^KGO%)ajRnRDk%89%T-trZw;ho#GxFIhIfBh7FluH9-04?89frst`=Xws}N#)R<%
    zkNZekSGp(y8(*+nMsey9At{|iX$|xkd%4@?P8|<_bjO25V@O`Bz9E%j3N#MCTlT3h
    zj1&lZq4V21kg>eefo1zYU>32%@tnad&Vl6TC=hNs-fr!8>V?c^yI4;A#PjkmnV$8eTA^(Hfs%v}&;q_`Sk#ci0iA
    z$00)D2Svpz{Uj}D4WYC-3=c+zaN#_m0$MfTpbufe{-y5sFi^4*SaxAnkPW;^cncy;fk8>FykWGEuK|lLV9^CE
    zx`0I&u;>C7UBIFXSabo4E@08YN(}hu0zSHck1pV&qnUt@F5sgJ_~-&Yx`2=F|B{dH
    zhU-!!(#VDSUpejBQz=0v$LG4U&Q+J;!R>v_dH8A2vK!LeHwMv~T8L#_5VRVxhrQtZ
    z5KZ~nm@r8S>yTWQHeO(O_#VdTh>f~kfJrQz*osBXv04`T3D!zE|(vv71Hp_`?UkR8T{
    zgbzw{Tlb7`U(zEPx$b`V)uF+39&mOjqfXCoa3j;*kGs{u2Mm|p$1B8~C7l?;@Nmw<1MVCN`EW@yys_-9nH`o
    z2yiv~>`ac`b;XE)LhVDY%P+%E3seyuxiK7auk7GOrBkFI#lGxJgRiLOsD4r8YKTCZSwc2LmNT$jt~
    za$VtRP27xGqhe{=b>58di2hBh?U$x->SLMNKV0^oNQx3W?I}+i04iQBCA71+F0|B9
    z%*b6wj~zdD{Q&H;D+r|}y1MLmN}pntE(mbPwqEZuY2WxM-VBi!1Y
    z{A#A_=9(^&)M9at>(09>;FFq>j?3WnY0WcB9XHnwbY75HLSl7|*H~=DSO45`F4y8Z
    z-4zM^G{LssWU&{X{Oz}6Ic23g>#zip^s6yunNPA+h}1%u&dk=
    z>`dR;8gVQ1)QP>m%5pn_8s{oo(~;B2$TwiC(DNBqr;xnZ_Pg5-*H0_-AgtHHPj8H$
    zu<@H8)_>aGEF&^PE3Cv2F-;e2-MD4znud*QN$}Sr(t~?KR0A%5z(ASWzOlhrFAUyy
    zhSU<06l;o#tYZ?zngGZox#}cM3xY8rDmoEK{XnS-VWjHJenG2eYefo_5-pR0L8nCo
    z1X&I>5w!$Yy(d^AhA9Y?0JTy_;SbNEK0?&uf1U*UJb?}~^N7Uqgy(x24z8MhUyj&m
    z5dIBjGF31Cy(Z63ch9!kEr@Zd9|a?6UyZch(9(oXABMsgq>AIDkq94z8AFX)2Bj-9
    zB6QW5Y#s<>$O}i=0IGWk4#@Nf5(m>Mi1!$EH4&f&;Sw35(=swwRiJ8VP+r0qLn(&D
    zIiD4?aoM`w
    zi0GFmk{nLOZ?&I((fIV&cZxe{6m5)tjxA$xeYXFXkqxSZn6+(>m2OI)!nB5+j&%sb
    zXh)Tv>VR04z^fBi(|0Sq^b$jB8XmDujnK)p;w~00MbI!TzB*FZ1)cG=tiQTKHZYAxx0Lc2_jp+f9FeT49}=&)XD}n?)5$pcND8b
    za9bi;d}sS94)A4&4tc_>Gy--EDk7NJSCjMlBYK3`xL%93M~J*SVp}AVO<06^$roP!
    zE$_f!2H|wXL)GdRMA;ChzB2&TA-AWI`cagb0Ryk~xBTX&PA&^j9laoX%OJW`AW5UJjYMe*0+`s0Loa15G(qBGGKR!n
    zr4a5?Ba~c|?~6~jP-_e{*jrIUj;LextsAScHY^R#hwAj^ckF*O63DufKUuzX>Bldt
    z9}|Ru(F*i4m#l-N5K%`eWcY+rnR<+^yY$ClMoNd&A+0FYG7#Mz`#RHfx5KV-ByoI(
    z6bFvvc_caL42Rq^fF%o+m^k;!?GF>HAwayMOG?HJ;JEi){e84np>^_vvOO(HE~fAB
    zVK2Wp{ArRgPv7{4y69xnBCYh-1~39@bj){I)6Sng^ZeQ@
    zgi{Mv_B10Y0}z*7?Imfq-6d;Zj=+n>zV{qPiZu4!blYa%Gq(`}m#lGWaY>OII!tFa
    zOK}EDgTxVvQfQoVQm7j%8S&O>3MmZg;4p;=G0XAsbxgFL){u-&j*2$Nm?MlFV&__&
    z!2mjXSSnahLDbaZMJ>k@h~cwHvN(j@PlmE#Rce4=E{tKrj8HR(Jkw#wf}s_HUM5JrqMj@UA#B(%
    z+E7Iwic%t-1~n+vm<*v7cCDLo#4U1`Nr7AsH|v1BPV4kPH}-0gq(B
    zBN^~W20W4hk7U3j8SqF3Jdy#Ae#fPFfIC6H->TqB-sy#SEq}db^2~aGZ$VJB>NR3XcY({-?IC$02
    zho(h})O4Ej`53?!p-QdJn-|NR&dhc7^;9GBYIdZcKZH^nw7?cn;_`zYZ78R7tGIG@AGD~~J
    z{pfaE@~yWsOKk4c+Au75C1vlD!L91)ST0nSW8NyZr)+xbvom?FeI^7U<2JdRxm#AO
    z=|phCRcmQS1aFcS<&~wZoAvpLGRseq5~Zo*K-A&vS3NK~B&@@6SH|23lIe1>%rz7a
    zx%QiP=P@=?9H{8YTbpp}(xGU{-z$^8+ROCb)ifOUydZESXINYt4#LN8(oTuju
    zeQETFQ~CBE5#x*B=qi2}j(1?w>5|=+4q90|pulzFtue0*8MEJE{e~i?2JJ^L`Z3?;
    z-l_(3Un+OnZ4P&t-R*E}V>CkDtT}C(SL4pzvz-@TrgW_M%4eSqLV0(cZLYL2D0Bs^
    z8-2-TX@gvV7w*{4JHLy>Z!Ye}!b^
    zq|L6h35eU0B&$nzm$pOwRfhv^%k~$d8_&DxbdAtNhP2=P^Zsi#*YzewGEC8rOLyd7
    z{Oe%4)wMSYm0C$ZxNeMB;~gxoyXh!s&mvegJ-w{t(qBh2t?u0hfb~VW99YUfpEhVD
    zQA*gPx
    zi3PeELDMEVIz~i{%v=>5oV+efpBNsW6dF-YFjW`n@R&Fgp+WG2(#A&`WK=jxVko7=
    zhR2#XPG6lyB!pGe@Tf5?)TkiB6U-Kcp=eRia!MHDE}S-)Ob3D;A}^@1RBP1$u!nPt
    z@Csnyuq_a+R$=DU;B_#5F0Ke?tLGojS_Pj3(Z#B~s1O}5sQdxmIgRtF^>#?t(^utJT{Kdm32R9c}L?<>uG%7D69
    z-Lua8P0ukz+^nm`ds`|}STw0YOiV{DFWeg;Qrg5H+_wF_uy2hb0OIghAf9b~(77r?
    z&{2l3GqxhGiR!|B7o3B1j7CpXXU=iV2L*fCT0)a;j{LnnSjZCrWsMzchG
    zer4GlM^kdx*0R4^hHHRGhgw-Blme9xs=L(!^4Y;n82bH!U2MZOuCm`dBI+v<*tNTC
    zD-nLHeW0}Ip0Y(I1S!eaax4dDb#K!^QY*(1stXTQ>xgkfG)FEf{Hw+1Adl;eu(Ara
    zNYeZ4D@mHue|%u(&1-!Hwa8alcExHigAu6<6%e%30XmPu|5oH>m$_3*
    zvnK$t5mEb!@tmk-sb0k^64aa$K_EkTea8_~SMSbp9qq1QD+)kjfOy3Ha|-}id}{K=
    z(z7oC9s;33&;8?vP^sUSjnuF$3F(LEG-iwL^!6p&8WUJf=Y6>NlaH771qJ}SB+tF8
    zyEv|}bXOsM6!6T{ZdK#PRh_~?&vPe-woe9q;x0Y8(*30{)i6h_DlEBi;ryBFCAZ(J7b0?Do=Sb5U7mAN
    zVTf9CNW=n5@#;Fr7dl}7MpR!xXLpJHVjGm4YmISTHzzwwtvA{MuqOcf<1QKo;$O(vthY2(R98T~%
    zYH6gJ$UK1rB~)vJN{7JQwUFT<3KT);B%M}ZLurht#-!^QBs$@+A)ACi6q{xBp)^kt
    zD6P3s`&si!WgD1uVXRk1yck3;6f~KE8mDFW}<~
    z`1k@ozJQPKKikKrMeSu3CWx)URpYC0L3|a#$?%4V;7Ge!uZC>Y@JvOIV6G4)FZjd3
    zAC5m9tM(5P@_Bvl9r>VNy8L}Z6c5vIZ+fm6#9fGvOJY!mX>J_TuwhaZqchd1U%OHL
    zrj2V4yzX!m+$plUjtFKHrAc?Ez>s(H_BWM68&5w_mRFRvv`a*@pYsX|Z&@t%FYSeA
    zR!sfwTGs6*9AZy!*58|DPWH}Nrty0Btqt!jIbL{ZaN_8B?|t;~ZFkBZXWslqGV$WX
    zSK8E+5t^Xy4|zX#cO&+r!ke#?Mxy&6+tyZ`$mnKg7mokd=}g@`yGIup(I<`r_UXML
    z7vIjlh}oy
    z&TYXZb^9>enun-5iWct=dFR%j4IAdT-<3pK68oRcd6j2A&N~+=2qzu6Up3b?{5Z#c
    zB?17kYB`p=H}G2C&Dz_5-R?eCpAfhPU*(_eFLK+tMXG_sz1M!@2s)GIKtNW9uAqPsc1R))hHzPM16H+YTY50s!CpLl)#72-lnX
    zUn)u8cR1(f!g!YJe9qlpF9?Rj=a+BVvgMOrb+y=cC|ivUKg>|c^qsVhm
    z)C0q#XjgdjsQqvGq^e*;uny#4?2~ub=z+MgAeb(L*9$7f2)F?5`O$%8g~wiLYcjGLKX-~q
    z{@xB67SO+sUbD=dyZfW2S{^mD4^LO-*xeC9Y)bcNlf}NPJ%F<*+23titcRXPWE}-U-#*TIg6zyW9c{)9nX;fSpt$DnMv
    z&nJKW{>z4!!-M(!4l95E^Oq@{^};}ekC05@)%*JVJNp{)`Z*U1()U~`y|S_u+2ZHo
    zgZr~@zjw`gbz5iD(0lhzo}YW59yK)AzO_l?xQVw4K1q1v>a~tdmpe`_JZHcDvP6ea
    z_nt0@OJ0z_H<3Hy`ZJc%m}8ceo#_8w?w;247-yleehlJaVch-K8N^+GH~07YZ3_xM
    zV7>_+WW0ZC
    zPt$(Ir4td<7U^d$luY@)cvBr#$tt^d`h&QP1-ZMDq^r4GObE;B$LFTLy3I8$N@Pyh
    zy!y<``K_UTeqrXwdXjO-Y0LJmUze;&WE$Tn^y)J=dsiYEyEd=jn*nbgF5cab7;`y$
    z@zC$=`@H&0Kf5_jk&`~!n|veXm03&MN#E{%<~hlRRXq3z*Y&^D*vFZQdOwJ
    z-w{Mf)+@3k3W8Ga-E4b#xy$8t8_FHTuK)C2U*8_UVg;0_C`Ht7J#fK+tdi?HKI|9oa}700fY^X&N^JJ*
    zw6AuZIq?1Try{(2R2726OhF%2_vs<;f4S+K`2*|vESIMl{A7{!It&^&aZK;VX32N-
    zZBb%@WM_A%MV24FuzE@SRsW}es?w(!L&YGWsu&~{i;~atJb_w;C#2HAXaCk~5F}O+s))f-
    ziR`l@o)FxU7_7cqsQ}wX_T6mNg>nqZl@&!2v8{Ywadn}p6ojGJ4n9|`hG}vHUY4xu6nmw1gT$A?f6KOBKnFCN>7V2r^u`j
    znb@$^Q|&r5GE1WO!AK1;^Q4i7crYZj?D5j8ufG0b>ja+%N@X~s9EOS+C9YY|aq~V~
    z{n`ANTlm~WDngH-_T_kU{dR-i`ELKgKR3KPAl7FV!NABygaxCTbs4?#Oi}LT-CvBV
    zN=uZq#kuCzq`S*Y~U(n&i`CoG2)$
    z`V#et9bSIxo4@w_vF@$j(LOysCS*u4L6E{5^%^mM$*R>0hBWj!&-T|1vLaH!;vFTn
    zMc1L@-x%M&naOv>q97&ocvU(%&YRl$jnwiwKp%HH>B2^S=FP0bYr3!Pa)bxkPJYmw?oZb#UhV!g
    zo!8~l{pq=Iukrr0T!dG&6;s}Q#pKmcp_cORsU@!q
    zRTZ#jAyFPEC9h$38@*JL_c`~ckoX5XE#03w@|ro_pEB~A93}XVs-kGG>-$qgwY}Q?
    zsiAnUc7IAJ(W~8`3X1e<_osloUfzB6ljEg+yw}H{^6_3Df2zkzW<08Rtm1>adr0jR
    zt7^yV*jq`PO++Tyk5ZXp@;yj{m
    zj2iEe52+h4gWO+r&(ZZ(H=zBv-}r=(<@FT`rmxp}`|2Cu#@`=>OZw^?Aot&I^wu}P
    zqrd;Tx>c%5mcU2l|0XMOUkQm`Fa2R92-W#8t{NL?4lGMxJN$#kAYVOW
    z`O{-0Nw1h9fd2#!qDB
    zyq`-pwV7}=w*wWo&3660H>P^#pB59@sMpAu3qN{yLf<9^HM)cQpZ#AhnW6gMzBY^%
    z4euS_7BS1319~uNOxEca#$L(n$h}&UJps&J>J&t=g5Gern@8&&S;x
    z&lq$~w-o1G*t&d5D_NNW8cB|-_qF9{kI~7QZMpMh-!ee(Q^yxfiEa4otnW|TY&U;f
    zIwbMlcuwJ@PD{=fIqX@#K4Y5hF8uz7^*eLY=SPjWn$v+zwtfy|z>4vcqwDvb{_RPd
    zJ$3uyAqjU^;E+Ta1TL}jvr7);+xADyDzpD_c=zs2Lz1|W*Kf9?lS{tblYX>*GUJnHUqb_E4r1#kW
    z;tUnfpFb@oqVe-HSFT&X=G`GJ!qxG?!d``{|E_CSdjP<_e)~@QnT`S$wMRg{V_r?Y
    z(~g)^R?=T9v7X1D5hX{p>NkG&+{uHQhgWQ%U}2s_>U&-&`m?(*WJmGdq&MwpfENQe
    z7_S|6J-wY2el+jaA|k;v9u-$oRNdCydp_O3i0{02HxLP*=?iH^**V3Ii_Nuoec`O2
    zdeX(w$?07xqyli}eLsi1O)%XVi{WU!2{adObzZF|Mtj7QUNhx&MvL{E1qF!&V
    zguRB0CtLQE2wsY*+pIG7nmYc@qzEOtdDrJFW3PGUpA;F?7DdA#dtNxX;*F57Vn|U$1UYp9;Yo5oS6e)?w?W&Bu
    zrjE~=7zIlUpbZ{-ZQf(qYo7ThMj($!z*nZnx7XD1*^^-8!s2|yUc35#w%6`Hdq9V(
    z?w^2`{AX#&0=u;&FJ&xBoMlh8&_l*qpgFKC-hQ^gZmGm60Zx8N-i>hz!|II@k&o|Z
    z^9&!aP+Uy?7VRtHXRCN=G9TW&`=H^K@Uwa5AFCMZ_8K#LQKkHB>J`$)8KPPbd*`d4
    zD&c4Ij2~-E>^kX-Jt>v&v#H}#M;mJQnziAay%K&l&-hVtV$bR8&e$vAXH&~Ew?AHDOs$@qFxSV=_Tk_1vw6mklPEU2LAxH6
    z@UwXyf2_i?iryToSRdQZrjAb@qlbNX%60AV0R={TSzOH%PY
    z2lj{|DbT-A1}62+_Tk}O4;MenvNXak+e<#>n8^95#T%RJkSfB_=&?2b@ZesDi=PK$
    zmfFMed05h%)V%d=!UXVZiRv{v9WP!u@TjE^Q_-XJ^XS>BB|kK$2p~>zG>IOjL9=^3
    zd)#`jN6Ciy>4h6xQyilu!RDez51{#R-HwzExO*SA1?ng@c-@QP2;h%e~r|}z4@Jy(z-UQp|&7p&jSo+go
    zRN{o4CBHQre9rcB3s%s{xP%rxYJYt5y9vi^&w@(Ipy=0^tYOVl@`~2f1D%PE(<$h&
    zv*gy~-iHf&0W2&`FK^0SE{8N&Z%ZGgB53I~>S8#OCm5eO=qSm{FUY?fxx3_Zk!E@w
    zcU|tr2s%ayLyrmZCQXC4*R9>Wb@RF}o?N);6)nhzhJLlVm4*)^47k%EC7lTYRFOcC
    zjMk*rhlZ0H0~Ud=K?*WgOI-}QhN7rEK?)nj*Ca#rIxd6+un}c2VL3u%^Z;lVr7kL1
    zjd1%sZ~(<%1DiV_xdW2>AC<068030_u1jdl*i>Ls
    z*wOe%B~v8SA2@*|WnB{{h;wR1lNOzz**PIZQGen@QV4w&KhdFDP80t-eo|zL);7ma
    zL4|>Xl(ZFi`30XP{>T>L2D;mGgi_
    z>PIZY>$;xDNBBXJmf{DIszob})J_agJhk|t0t|Il&Djio2|N~-?LXsfod)fy$dG~v
    zhEJ7vmjp#BSPzkvLct7Du|x?F!!bZN4h2yitF1-_=~7^EG9)+`sW63l5|>@U0dAs@2K!JSucyRAQUe)MAi^5P%AR9z>{)1k@);^(gf&ad=d!
    zQPzs>PSd~wmY-w~o2${_CuNw3*++A-FD$4X0_H`TuVrZW`K`>G*Jev5h5%h3OAI}F
    zE92Hj>ItY-OM3fG^_=tR-^wcTHNz||29>MZ@_S!KAb3g|o#Jvj-EPaVh6(_KX==$$
    zOR(EgmeLl7Okid?tGO51ojXH8l!{f#F8hXNXJ4^w5|t2I>Ttq!wkL0#Us$$9CbR-E
    z@|t~9tU#?Px!6RYG&*q13R)elTj#zQL-C{rbK6!$(>3`~uG4Kp1TJ(z#)-O0m^R^6
    zYsx^DrW3!hY;8=C+Ugtg=LB=JgB0~}(^&F1i;ITw90}u;VXkxpk*eIY=xl!hL^cb~
    zeCM@+|h7N4?0$dsT`F8fn6X0q_^ouww-l3
    zf>sEE1_>!ut6pL9o1jj9{(Ra1Y#?ooc*nJPEj9pNJkKmIz1gs)Ap{0H<`>zpKK=eE
    zIW&S4QN#f5L6Akt@=({6XMmg9=VZn+I+hR7v~s3*r&ylRf{?c9`LbD{5yqx~w89q9
    zmf4+oAJ@lA1_A;t(>jKzyRUR(w1#I|?Q%_!kh5l0S&<#ZA|Bqejc43u2(Eo%6N?>jEMgaRJWaCY8Va^l^Y@89~vnbr-AnjAxt
    z^D|PL2|%o-g6S%Zg=VxOrF>}LUN@MzNaGdMUt5?ml)`btIikD&n(c6;|J2`=(t^V3
    z(WHKB**7s1U4uCyh7nqhf7WrdBgs(suJhdb+|=h}3NY0w1uxU~mFZK*G#+L<7mhW@
    zYwCF1J_InkPclb8k0ixfk~G1wzl~OaIvIVS>{NeJ19WQ$`iR%Q8mtEiYK@K7t)NW>
    zaVkF{ExEB!lR0W15lPZQ{CCA`O)7Zxm}4csw8Qqs>zAldc}2Bp*Tvqs7eTKmi
    zra6#?#&c{9=IFlS)MLl?9G_ZG5g%cV+_k0w%w!*s&Xe_rK^uh~+1`qC$1hSfH>?IDtBS9PU
    z^7gds8<{tMdNER%Uu2!bvs8=y*>fYma24IWmXde%)5aB@bs{0l{nJYK%o{g-XYr}0
    zi4}RayzU&^^g!0U$j_XI-p4zr
    z^wx$AKdhfwdwI^Oj#sSv`t8b|ZT`ZssX5@+^!q`bg4N*h9i3V2I!Tj_mhInt!Lq%{
    z;)0Xp$db&Rhtl7Q`rNg-32J-5X;pC>@HTLRT-W*veC?*qmt_CZcv;CIHg=u0C^z%1
    z*wyZ>jp5DUZd$d7%w1+kR;YizcugXRP54Cxzcu?H?;uCFJ?OM&&kJ8xvZN14`1~uPMLVa
    zR!~r4FWAt9f4}&Iq~l^gE6Vc^fFP+C;;5TaCTRC_1Btk+g&)n&7#m;UAHd8X*2c;1t*ZOsGb0
    z43$C+o+}G7!I2sYJ`oM6;ROx+Zt#VO953mGFqzcLU}Q4N=88=R#w)ENX=D-pIN)!J
    zqK49w$hHzey#(AfhDIr&o}{IK5c6iy3#>+9H7fWN|9LwhpezE)BA_gM$V&fthwEY1
    zzQC0O0{ovX!2gwdETAj`$|9gF0?OhptM}hgXBE(;0Vw}}XF7wbDipd0%pYj!iopkN
    zT}3js0%#Dp`+6B*MWsGi>J^BTRfG~>Ab$@yspJ+x?f@X%hp^LCtePC2)1#Ufm-WHR
    zuecEpGP@AW7Xg{ZXY4&df7xJ;2sar}RpQf}3eSuHmJ5j!O)-hhTQ+T!U=V$XFdPaY
    zOLVZD#me!GJM-cb1;WRg%HNZLHI}
    z|BRJCZQrtLN;e;}j?_&YzCbkjvy|WFUQ|}0gyW^@3W08
    z8YIaWk^Z7$_UEbK$H3+BxetdX0u;;On~;L|0yHbWtP)mpjc`F{#7H3a%Y{H4l6(;T
    z15(J~!NdLcl0pGg{0f4Iirx9IS&av>9+Fuxc;TBrEa|=P=boImh+cr{UQ)gk*Lr}3
    zu3jlv$h$A&y~g-T_!3BXuW|Qai66*!uf}wL(%p*;;+|~J_Ll8l?dkp`yZ80|$#pN9
    zigbTc-J1r(pG^0LxA!N}z1#iC^Oy&Vs?Pt2G&gy*`;+C~&+ku?djZ&|`;+5d*Y}m;
    zg%wiV3*p{Jh8NtG;a>B5OYkC(1owu&_mSVls{Hn9{a2ok|Lt=Hu;Wz@1$7tvUtbAd
    zQLT8PfU5#F`@T^Q)5{BC{l2L7{?JEMdvgptB&xk>10E68en8@d`=Z*r(VwX1y@(Y2
    ziE6X<0m!*OQQgoBi9FqpsP5uL@!(HXzvN9J;YU;t^9F(UBdUjZxBC&*0~D|O_amxX
    zv0m+dM0KRs`lS02)uQ+M_z~48vbYZt?<=ZZ5Y@q~)oY9R6V;s8^&b({-t+{%rnV}o
    zefQJ9!NK{rIKBV+o4AL>ul^f=;s4Kr;lInD5J2Mx3qb&l{~v?fFL{79%!^eXLKw?b
    z8v#NN;AOxsd-!=(Xgu*g)W1#bP%u3vSS;ey1`iwKBOUUl0Y=#=$~<2M_J}t+nrD2@
    z)Rvf}4(*sjoI3uxs
    zpPAntEwtR&zIf<;lyjtiJ$>4KW7~+vwWC;Sp8G<$RxrPsclE_l$?0u`i_Wby3Io+U
    zD43Smu;1MEr|gc5-#&UN!LvhDVosTioOJY#)nPp~wO-Wg?)2`xpBjIysxGM=tpG=bhV@z0%QqcLnB&Y)Ae7#p4;73;A+zWEz3g`L+R-h(l
    zl(d>-FF^GdgVH&6+|@fzQLF9AO+dI)F+N&0*K7ams9^)zC+gwS^}v)LQi#|QnJEkE
    z^Uas%o@+YAk%e+l3dM%xm>aj-vYl^~uJ6g2)bRx~VkJQzo=~rDLOAd<@9iL#m1{4~
    zPFwfUuW2_Y%F~@G3Ud9_q_+{*(>e;=tJm$v-dp7vKQmqr2ywWy6-lKty}N@XhLIXi
    z*>v>Csjo*zGDA;n(Sx>+rFpT>mY-XqVtUBxlSeM9<8!B}FzFoJ%%ESs3)8N`rL!o}
    zR9bcG-nG7o;iGzV*8(CPwWX|~V|RsBNTczY?p;0Or$)ois?wmsn*+xyFzWXJkAxLu
    zi3RT_>Nhz_YoHCX3X(1|D1u{Y)b;|JL>-+!JxT@b6jfg?roX#-=Oh*`Yk@;iFE8tW
    z?~Xy73Y3moK?YRYS^*gOci&zNfH%PiT&CWD`s`JNa;_?GXOSW(Fjcs6CYTN8g4i+?
    z@1oF|9C%nXbU5S)0asef!cl&WXoE}2f%hxG4V1s4m|%ZW9-ro5}zVxVzZL5+{8
    zq#o+lzo*zd^a=UXqY*gcArru|%{x42<6Z}k=FJ7af#MXA)>{R-|AFH5j8+w|jQV&<
    zdcsF5-@V~zOvhEY3my!-YcNC!lF<|$9}BK*h$Zj)@^nCgw`7c~*ZS%9ts6z%rB$dZ
    z9N`4@~F7qTDCz?H&}H&>)eIR>)&HR(O}
    zt!2v>O?s|r1trPDqm^w1H>P*%HtS^Z`W6YN+~4=?+Ihf!yE?jHT5Q5oqZWMk$KIbl
    znb;F%1y=mw(a&4cW|%lGe0qA`#KuQm3lx?yjB|T#d`3dOUQ@r^myvUE^ZPGVsM&`{
    zZ*ix9^O0d&{OtU$`##5Vfg<(OEuOijt4emm83&Z?;+HFwth#94&wbdw0dHH+avxcb
    zy?DyGh%?YV4|wi8e`-Sg-ZQ>ATx3c6^~0BHt19Nfg%U)8l06?ex>>
    zSvj}Vslh^$)b+KGx9vN=`^#xP!#x(%!=ulYZD(PmNz5Y0Ujt6N&;9njEAK`pb#(sp
    zxQIsmCM{m|)#~{#HZ|VWPFE#b>XUY5v;qo_UmagYuW}s?M@7Bvsa?+1ZBLbd7%oqA
    z74G~eVF^Py_)=5_mEZB8wSy*}7yTKwo(?&aBcM?{7Vjg5ZBTiM2XGy#3wY6w7`8#>
    z#V%Xs#0VKg=PE^(uVEWhUaEp!MlqKj5>9KeGKQ@>K5LSS
    zC(l>Pu=R|e7>;-)+@gd3+mI
    zJ=(dG!VPiFy1n?=HmpZ3OpJ(Z+{`Ze>!+LIfN^ISpQ`hW&
    zd>hs?_heO{Zmfh2Tk+g6^`4or_Q+$~u}k9581Jq9`x&RdX|OX2zidG2iE6no~J|VIE4lXnhZbcBX(?2
    z#r0)|1Aeyfh#gy~HeVkD3JL`-o`>yN&&?&Hl@*aa_^2IQaeHHdK8p+@Mg6w)u!B~;
    ze5#6G9v)k-sXqs;+97?M%;}R_b?^Q74qDIk$4GK~yXPj%u7rbD9e-ntVs1KU`o~{a
    z!a=K!Pa9{9d1}J)UrtuaLF>7~cynTpnd?pzSHeN-S%I2gH|1%GR7F+
    zb;_E3w<_VFRma~LYlv($a?$s{RKh{)89z=h#djO`_R>l?Xe-9UUsb+
    zJ*^-Bfrf^PebVcuyp%8UpZs}g?;a1D0nM}M$HMh!XH~)Sih>Z&Ltfg7qpfh9>W+WN
    z!o7FT3@if)zCPc$>s`A6de;~cm*CG&t6n>8oWw|R4cm2kY(K4M^jJwPTX=cg~6I@S=?X4Infe?7LJ)^p?IO$lA6etj_OvHi53xyOY=*Zy!$
    z)wPf3r>%HyQ)2fS-yJJ{TtBTk7%Voi9ba4V^Zv*7(|V>JXVBN}H+9+SO89C2E(~>Q
    z%EAVc#0)!8SW;8#;B6_XM
    zc5cV9f|3ml^+HXR%wfQd?Ae|76wfq8SAWlTr(xsKmh`C#LA{ygS}pORDn&w_l@}Kd
    zJYMi(G;Jc5EQyQTSMsS4#z^cZg+)y?V9y4L0?&#qezM)(GrDb~cmvTqFJm&ri=<{`
    zit`OVOy#~{bs8P};@+$>yX)+iP3d+;S4Sdt%Zd$7+ZTzPO83B`K80jDOxyf(s>OA#
    zesAZsQ4|FT-@0e)3m8Sc25Ek}X@?j4MoEzqK6O}Uw#ZMN1SnTdH$1&?0+375!#sZ1
    z(oeE3cAz*NlVkg+!S2HK4Z&$)T#=tvm(!>{W}eUgVBG1#CG8Z`=={Q$jIZ6yTG5Pe
    zI6JxIlSl?^)lBNm>@DqM-$}{Yvt;G1lC4HMe&O{y+ur~2X4W?i5j2(1W8=g&ye?tr
    zwo_-0>>K$M2teXqUU}fu+4XNWrfEJz?a@pQ;|zq*taGojB?+_Z?~gqUDB+Nh5?nPHdFA5
    zH0*l8r;RCQQEuUIj-+cdg?}|pSeBDIF?{G1*Ovx@PGSl!KTkFJ(Q#nzQR^=)G%Sx!
    z1s4Vg?C?vLjDoCAI*#Nhe6+W*A{*ys*l)k8gho{r2z>N9S&QPP-*%LA=kx^drtuLH
    z1DL)?9B%vBq?!`J@%TuuW8mL?>cANboUyqGM-VE-cy8RhU?Gk=Jn)7xh-&Tl$%ovx^T8<2SAY3&~zKZD_b
    zA78ZVnN7A2W9ek~k6I>-y&>>a+@!@FbqTv2E5imBU2iXOO*a#IE7@uBdwJocdkY;4?CX7CwZNJvDX4I>e-Eoog
    ziq^zP5>aJ?2TZfFWni{=Gcu1Fl*VClV==p9I3bz$?8be
    zDJ;EtCo54WeO$C@q-A?kK?1EC!wxM4d?D5Wx5XvCIJyDDj=Gs2&r#iOXZ)EvpW*8b
    zdNq;bTiF1Jh$lo=Pv?EPQChA99$)O$s+j6&MMzl27k$krk8M`p!0~Ks`1XTm
    zc8_Rt_trr+!x`H2?Anr-Il?FiZ95ogN)`#BV~;MaNB|S!rog$t>IIe~2vGv#2q^WC
    zn8wpaGAGz})Jr`K-5L0#23PGd&_({=TEi+_76?EVEJaS-(q&8Mv}^R{
    z;*qhGBJ}i}V|A|tA*<*P$EUiIkDWeo{LIF#y$;*1JVz?RZ1=sT2<9@8nnoqNS9W=}
    zOXogq!+RZc*ndu9*|+X@3F3m7ELPOsalZl%5P-89x&wx^_&t+6&#O-cz6Da6oYIew
    z_9n0r+xf6PGxy4i^elj%R_xOtE<>b{x_h%U^~|~RXOAqDyB{oFcCK_!%xv#I;1?03
    z+pf#M{<-6~A72aWcBEk7!hGw;3%utdWKhFox~3WpVw9N^dhW9i5PmGOeB#}Q)&Yn#
    z%{_(J86;5SbUS1lOw>Dze5iZ(^PjeN0%|3oRsw1T!Ri0h1N@(%z5{9{pjHCkRs!Ev
    z0^e2wisqk)T^Ud-l~XGf2t$7d5i=NRJuVNXU5PIcVl^QXIe#dvMjAU{1ciq{6oYuR
    z+&TwI=ExsF=HMgEWopWgh~n>H6`#=uDGwNno=R7>;8a!-8htSqpAa(cCM&^%fth{p
    z3urP@7H&*2;>M7c`0!Xyt89*L+@wKbgd+N20H)GZIKFX8GAqT@YxY!+ZoOJZDLxp0
    zsR~;|G+<6Kyk48$qo>c9HKt2_vk#sjYczq=l@|?(&7XPo-8J8=Sv0z>FM6XXl+yDi
    zP6%(<;l=m2o;gv=?(-|w!mE28#%2taL4tw`xQJ%GUSE^p
    za-9ISv&hPyA#YCT3x{I6{RkV^4+xmqWU;Ogh&ugZ3_C=BG
    z$8!p!;4Pc#bs0SSgXK%7_D=GBmbMHla|&`l1#`VNeTR&DsY9IJ=Uu0&NR_ODS_@7v
    zMkmy%Uprj(ech>AyhNn9V4q;=4H7a^42sV+Y`jE*A4IH%EmeqIRoSQ2N(0!jqC{BA
    z1(Ku!kWjr3fT&eL!7w%+KDG_^p^rR3ZWHg3Q>ep3
    zhSWn6u&Q8D2dhF*#kVN&-PN9n;kbpP8b|EmiSJ1%QBjNP@yF-3?zT$C$hd^KC?mGB
    z&$*ok@3)$Z&55XgYW-BZw)IVtkCbvJi^2SDWM^^4q~@KTA2o99fM#*N*GPu!0Q{>U
    z$2RRcZ2FRqm(6~mxsMP|y{?{0^f1+H_uT9?fA0GA>)Fpl`P|1<$Zw=)^ASzEjQZqw
    zPR98^J{{_dF?$u#A0_&HMDu4}Uz4dysV_$QBFJ9lQGkIZG&bxpVdXVjQS#nZ!|V9W
    zlFV@+(3V9d@u{KjY&dvm*T(t1BYk?LgTWYzMwBC(^cnrZr(b>j;jkt?=fC3odV@*&
    z`{aSDvv?yyRuk^{C^{b`$qF@>cVEpt)aa$;08i-!CkU8H&)#{U;=EuWpAfQq6`W67
    zkd*DM-X3jxpxnHm5!3ytHZN$zbbpG?=mqWQPpx^)o$gPmMR||+qtd*gC;cfj?{H_@6JM?&p*C~75d163XwTCE%#7%JtrGSUp@U$
    z3SK+VOBWSZ=pwJ<`;aE`5l|25A&a-1@rV*{E#x(!s%2DBa$g5M+V(&Lc|AnBKmFq+
    zN<7*JUk-e)TzP|bY*!vDRsfuj<>7E=r-JEZy>B)(ll?5{(
    zCREH31yNA}0l}OT>Y{5x1=FssKJ}R+uDa$mV;~I~CWr3n`2Xtm0Jov{?F{?=u5WjK
    zIxtk7bE|IMs&h`AI`y5sD^2>wA_b{EaEw_(r&-@vMRVoe`o`RwU6W+jb}AKU(U?HH
    z^^M@z(_lJ%Bb)Ih)99N9#>AgS-;6W8P&$1xO)~TEt8Y^9HPh&ul=?LK<`gr2XBvHT
    zuo?d|jlQWiedWe9`UcqxcjITK(>Id&{nO|h1Y+#w-&@~^rn+?c2DkKf^P2SylnO)y
    zWR;13Z-ry7>+9t2+Y%X|>g@R^v4DHEQ0h18BKBpk7D5(H)4beA3vs4JouY-ZQe;Sq
    z63R-EJ=p@9+pU9Ao7*K`cIhB9gl})%ZXINPg>*VdG>MmVI;hMvg&Wi8ppoX~l|}~v
    z@ptzUNvDI(FpGyYI_PY#nSbAX&za`>G&*Q1;ETT6nw$`gX>`y~6FTz%4r`(p%Jl#A
    zUjsO-130XSjOa54RMvuk5*Tyzc~@R>;k1!n!XnY06oxzK+t3x<_$^)c
    z`b9A?cYFJ3BR=Z6T`Tb39ceSbvK9fd&096%px=$C)RIt;R^e(*W^0#qZ@cM$EiUbHY@FMz<>{EfJXyLwx
    z_iV~_H{CX~(o5-zL#|wO<87DyjwE3||JnmI8|7!tChR*2o?H+vT)0}WWk~{Ae#Ub;
    zCyO+0Fbk^S5^YWjVP^^t?>kRZf+D+IoWM{<^9xD|-i~N+5Ku-70)Su0J{z(8;)!Bm@7|Nr~WP
    zaKi~^vO^LPndwS4UWOe%oZA?+RJ5>v4&ZNqdtgv8m3ILz{&Ulz7p|EgLMG942-GSg
    z3N(`5Q}ALlGAkfT+~p)tr#$Dx;hXG4$TedC)dHy*i^4#R#0uFBwF>YZUE&xSH;Hi<
    z4`?17CkhnJxe&AIvb$(RI6I9c(z-BU6=O*9Wfelm^KQ7ZtioE+QHZl02Cee&iMWvS
    zOyB@j%Tg5bcZqh8yPA?fzY78c5D#EJkPZgoqy-3uv`1H*02P#ddNG)3nsQOB$nvT}
    ziF7e9QwXUxaDD+4trDDBynOEpwFpZx-U5dUi=Lra2j|cc&#fQ|RVpsTdUs$%7?(?s
    z9Yw|x2c#t#D}oFQm%bq)&=WsLF=#|lSly%BH3u+iDIPDvs~(IUM3#zs(uCi@npR{@
    zBXC7v>=myz!OfMG%SEh|@AUzz$i@0gWj)|$OYEf;-b$^^FIJTien3%+vcIf;)Uf(;
    zHzK{0BI>WIlRxH%^)q;xm;O8WM@4cT@l1Pn*QU45lJ!5eb#->fyPMiSGx!&K{hs=o
    z5#z^=8CIbZ0l6E7kr&w)!%w-XIW0TCdhp>7Ten=|IpeOo?re{~wDk7NjlM7Pm6eS<
    z_@oPFoqhDUO4aE5-rQ9icK+7^v^-)(XXCMcn_c-fwnQjW2zT?M(yH1iXJ7x&BX?bT
    z+(>s??qxk2#v!<$n)KKB-Bk!~-x8lEI0b|Iin97)Cog&C)34sTd*;DjW8UoD_SoBoD%45yBGPg_r1RlKPKR^smNd3
    z_0a?;&+G_Y4!vS?8FW~v?w{dtJMQrp6dDJ}_1y|Aoe
    z(4_Njer(0P3yvGQ3;1%Co01RtXv?LT;PtB_OSKEyww+D^Jm8dX+ZXtd?Qdh`3a3Vs
    zo&%QIT`_v{nU`HUbK2Md4vBk}@hyX%4!wPhXYh?%HXTLlt2(~ExW;$hn=S7gAmMK9
    zrue)P!D+AqJWnfY7&l?U*g<}hXb|kM1?;M*n^#tCXuKmJv6Eg4Z+P>awHu#5
    zU1KoSx5Ve;B&c`b0BE54yk0jJO;Q_wuJ8`Ociau{tXj3=jG7|8P^>@YD3|O6M65&cF?Pr{L4tK5%0(I9dpe2`(t<;2w(GoGv}?|AH$ol!}7&xfuQV<;Z69r&kK+VzmMVl$v-x{340Q0
    z7GA*pFuaZC=X#M~4{L=?_x>2(gc%ThIM#(&PBFZ{>677|Y}^k3_W{Vs0m#Yygq*a>
    zmc4dteTS?3A9;lWEQdZ@*kmpP&k`V82A-wK!v4HZ7Iu=~fSkrc?7xMbTuVNLib=|T
    zSlEPp>t%ibec`Zie=KaHeFADN0OeypENsHRW3HF9uJ4b9P55`tL;4SYdBgr#*arUs
    z-RrKe9ob(C+vxjzcOWqCkdymwVH57{^SzZdQ_i`e{}#5veYwAG=*d^^hlQPNyL8By
    z^X~en{}#5vJ4XvxU7R_g>0z$
    zX=5k(0dH;a_us}Q{7sj`Y>;^5;U+@XFtNYslZoBi`2m}ugv{%iwO>;gc~BDvPV{r6`R_Vu%MmPRnJqdg(
    zK^dC-*`N2#pKUZh6DRgisKlb~k5x^04b)A7nwer%_syN1Y}>#qgypf1JA0s79vGHA
    z4(Wg4bm&E?Orl%M1Us|O);8(&`dPr`6$M$xB;VuD?whrp;>7^&PM$bfgwOlt%{E#;Ux7!819FIkUy^ZsKmFO{3F~Ic6su?+
    zeLwu!gn#`k90B?(2anzlf40GYA(B_s*N^^PKmFN8-!Bk7-f@SWI=kQgY{I?v0;#lO
    z%8Z*H?zcbN;GV5iHk@+xpFiujKRemBRyX3jd;Z$dZ-2JIJxi$@dEVV0_uHRMnAgn|
    zs|TNa%}ZbR*Pm@L&r*FglV{zwazFgpgn!LUP4bVPdd}Sb`?C#pOn0$-$bkp#hd-O}
    zuO-4laR+=RfA$xB@@FTxH4djrO4c5C_L7Vj`($hz?7#=c4GFlh`)_O~`GLU=e)53+
    zI_?mvI4OkGb79k9M;80b^pXn1KJE!_xLZK)ig%);XR(bcAN`tOszTKh8LH
    zb!hpplJOr#zNn@12}Eeq7w)eMPFUOWXPknd==$pxUUdjZA++L>8y34H16!1F
    z@eF91u%(QUvTBK(o>SY84$WO6)t_XkTGTchR-th!CM0
    zG){AimZbrR1(hsKg`ZzA$nbQ2Z2|$
    zIT(8ZrK(P@#AQ(p#8tN{C?45aY!@i6CKZxVu_Z#I*J}_Y<;B0rnz4V
    zf9w^Vx(!8>?&#dUK=$6>vhy;nSd<7dwyuFqyHY3#f~FVJv83?Nt+b@VqqAAQ#L
    z(rCse)Am}%!nOOa-57~}HW_2*0FYNL)5ZytKMKa~E8|=Wg@YwL32%Dox@h>_iM$gy
    zVs_Finwj)L=hquUE6T|EHFq}mG$?xJzNQ>n|YebxXyS#NnDV$Fd
    zMu(k+p~3(`DPMB(auHsKlerR}m>jr4YIlj4Xc%${AaImZDMfu*aS3Yro3M5NW$zHi;s+S1h8x_05@x0+87)uPc~wd{G$
    z7NWkn`8V8p<1JU;eDkeS0_R=Tz-vzCteZ_V433Rx8R+lV(fMZ$KGW+jeN0I(_UqWQlD0Qi3c
    zKWzU-)xvd%z^7nb1ZM;v)5-;TiFLsyWa(Ys%fi7zrIEr2W-3n(7ZF^{hb2XDY4RSL
    zEuzj8(1Md8>54#)03U*AAv2PR#>J2z2~=TjI7BzXixE31V+TFS-a1Ni`mX#X*cJQp2vdJ<+_9>jFMA@k$nrnA_P)9x3wfzd@FgWsy(6b}1-uZmJc2@W&GtJJA2CHl0Paz0fS1;YM
    z;k<`~xA|pxXIl!*dxIvo$LF&uB{EaL?7HT~_=T#({}49OT;Kdw#hlLQ6auueW)~;E7rO1`=((jV|C5>KhHdW;8@@Tdgu`0qkN>%4
    z?vs)E9!}h7paUmiOt;*!{Vz4r%klSzBiBXQ-JzdOxU=KFN?}-Am#IHDZ~d^IKJk-|
    zCr=hCZr{{=TiyIk-yiS(L-acn&GlQ~A5LrYR(JmN+Iw3z+%=RP`Pa^`UvF-@!$fob
    z>-PsZmpXCYyRX0g&=d_@lJSqc{obpWG?-}gAq`Fqmni)WRbvBA1z)}-FsN=cZ{I~j
    za8(hpMnfzyoR4;5Qfsm*NSvncB7x*ZQd_5;S9q6LTmk?c(M9WplHj17CK?w^ddXD;
    zw}-&1n5+`bxOv0~?S9VwEx6x4*MMdkz`FbmKwb}MrUA_~pqU0VlSvp4XeQHO{Pqor
    zf7c!kXr=+pG@zLVG!umJ`k#26#}z2}Im$*)nsNCx^QR4UrvN0b|DJ{$1Zadf!1mV;
    zJK&Hp<&u~JBN+Re%vyylB)v0l++dLuRZRgqTtAl*Sp=5jax_k$alsPspK?koLDl7@
    zaBq|xFgL-!qTnLAlF~|;k=+0RwBlA(3=uN`W8AAAJ;aWf;CmVf|)p3NW?p$V0;uY(LE7lqnw6MO-6Bj0aqcF_C7he8*lu
    zr0W&0gFz#tpQ=aIbPa)_DbHA+r2>qXHwb*?!$%FPE7hcwS-iej!8$_JHltS74H`6d
    z;@H6zdo9;t5+XHl(@-p}9em)l8JEmFVfavUqR(u*nNw`tpZWE3P;!kn)Tpfj!Cq2~{f}
    zbkJ$nKk(GU*Pc2&6^Xfmczwyoa952w==9n1=A1OvpE_caPT*HDB9gnJVf6Tk2Mj8e
    z<&;*OzZDu`!)$GNBA6
    z71Op<#biQ2Y)q$?OwTtfrIuYv$@KhvR8qHMuHB`OT6QTU)1#B0asZ-p7iQ+a5{z_T
    z6_bL!*_ckjm_Frh_0qIQy_ldd_f;-kSk`->CU>irohH>{nxy+GmaY^`(Z+OY#l+v3
    zPN|r>-w#snx3CdeVD{RV>;zwu1}{rOyiqIadgY3?`u{YExXi)ss7(p(xg)k0AJYy
    zpO;2C01{+(eLCeJo9fdk2hsHWbjkt8cDtXymvTtOON23-+^p=<4aoGmo0EL8zJSXP
    zQ2o=$nfp0}X*7lzP&b{%Fk@`)))+m#8Y2}jb6<@CpkLF>N~bZ*&F`x*EGhV(=`@BJ
    zlrx>iNWuM0qcJoy@Mao~QEtK?O{X!2n{jp1XpF=3J?o<}jm9|EZ>mqDF^=|_>eFb9
    zLqt=38jUg3gq_=%Mq_wQ>$fqD#y~3H-RrwCjm9ubj&vHsjLF=XMq`+PQ`2b-K-=tY
    zKb^)f;|~8P$e#i5)B*6+F#sO@clfa+@D|bk+@Fl-KY)1p=c>En7+nG>hD+dCQts}X
    zujcYxDM!o|a(Qy6{$EwzL;BgWu-vL71k#_@WMU%ttPltWdsDEoNOi)%ehTD(>u?G(;Q*y-*WlE`A+O}>%!|)+jZtFOfdp_2-?i@-x^@lY_
    zmwg$3xNd0m)bE>(VOoTIREM58_vSmUK6mmk9nF4-@YMspX}is>2=w6hLoZ4%2XPZ=
    zFn#*ZKOa@~xA;9YB2({-7`#^mY6l%Z_u*IHefGMuCU`K^9{_Dvn%=c~I<9OvoqRbX
    zJ|Ajq-+H?+ef5t=)qWYjRi+(s!_Fjg`H<1)-2U#?*6&x&o9s83d9M1p#Jh*e4zH>^
    z{0_$p!IxGU2<}zBZT_mJd5{*6%-y#|w98hr+Q>lTsJ?n6QJxVXuynpWR@`qIxjH{I)cF1Ugb_zTy>e>uMN^Vn@uwf2o005v8Bk+H;HU!9LQ=^RMC>y>@Y00yFTUj1QYX(HciwRhhG#}yIHQU=
    z^`eVr&R%%BE*rcAl~Kkrw@NV_!jP5pB`2sfMGj=Jq8QQPp>Riy!R0-KaPtfayml8Q
    z5gjjw(;m>TSzsk%=5qz{()b~`%%Z|kv>OrBoQq?5nWYfF4@79qX5c!vE+nAPI2ZyV
    zqYUZ21q+;{5`z<;NEqA_U}TEtajVeEYoc>CcB+=oQYtk(w+B`68oV`=~}_Pc$&B
    zkuMJduRzE_=l{Klc7GZrO5nTm@wJn$Z76amR8>{PT+D)8sQ3~-hx@ISCk6L{fU3L6
    z{ciXafQ8ZM<|Gx^rMdqQ4G>23}8
    zT_wNnbjro#jsolC-Mozh41Er7h_1FprNnU|;S{St+Tbr09MHIeuGm~|omCVUD|iIH
    zgjU=JrYG^-*q0Fnb)KGy+^m6zSJtOD{_r%F^w1sa7^f+Qk}!v^4+Y~FY;
    zz}Q0C;M5HVXM&I?t(Q4Y7NFoIWCX<;W`SYFV0i<;no)p|pUsCzdo2qq(7T|9F#(jl
    zjCX6)0SV3PI+{~C#YZU|Edc|*h}T@aP?DSMX6vGIS@xFIH8j+g>9U-Q<`{)_A9d=f
    z$By)Sjy$6b3QgrI&OV~La`Ne?o^YVt+sn4arJB38Zur=7BkIbuJn1Ku6Uwhz-Lh@d
    zi-*>K9$bjrq^x$~wwI5;diBmNZSPElWX3_?{}RsNKft~;+pOjm%{J@5t~^K(Kyix%
    zOAHIIZ#FA|@Y*@QlxPzp&EDU&S%2BfW;KAr=9glL7-#rEed)W+YBV~}Z{Q=Qu~~om
    zJ2op}+dkK?C@O%U`eU>v8Ocj>y+-TjeKT4KBZd@!s-giM)eoc9c*prb*!GrI_t$78
    zyiE(-ZmqgvaDR-PDc^2$S}&+D(zYVcm}t7$lX-tvAMtx4w6
    zL8H#OcjsJB_26SJeYn3yYqHM)
    zcjfrwFY2$+N_e*c?@+HDJGtLRtHC_iC-7QnO@EEnWT*X55`cm0r_pNg5|~3Qr2ZPM
    z2JdBFLt6CDXeFFG=Mg|<2#o$2tw~lN!D3eaN27I1iqT5gdIg4I>+Z2yEs5^mTvg_7
    z+tsYJ2oP^N)Aiq%W{={unrv3%eRs?&g%e0J+pNF6@(|IBK1FjAM4?!pY*u4BCf5ei
    zyZ6~4I?(P{w00(X(b>GjoSwIrI!LJL6F
    zD0<&*R->D+ge1vZUf&O!)#zo@0=QLb>qqp@W^MidiCokR=x3ls5#hJT*_v9D4O4NK
    zyY)9xvu+k(2npII>095-STd69FVHw7+`=ULA6&0{o3Vs(!v!jVA8
    zptP^+_3xRn$*->RK-@!%#P|AH-+ZsT7?Hk9l(GyD>SukkV+rTFSqdC7fH)*Vq92B=
    z@s=0JH0Ld=9nw$lE8*R6A!7EbtA>v5r}x$9^K3zPj~qAUr2ctd2`g{~eSt$yzWmmH
    zdS4CR*-ClM@s~gPT7SK-NoK8P*f~qz-`-#EtHC@=tsgV%zAt0_^u7|_bu*>fVQ1d*
    z_QrmCUkUH}nPOSpF>@dJ?|yn;lYQ3Y!1xpA+|*C+E8$&pKJv%a9&qIJ{(4^x=9w~0
    z>t%Iy{q(*jJFT(|BGV1LO{wqRSA!Q&%w#1&s_yc>e$f~2tHFCd0V2kgjm&(Ap7?Fm8L~~q
    z7uoHNHAWj>ibww;*wdP{`)J^FcJKdLqW0cTNR%mtV2?L;*Z1R*X-!qKP5#*5a!q&g
    zi^@QNu_}GFbB&LOl|vwFu=&J=fWG-=Nn0DB^?+Zas(tg#_D(pKS2efR4?DM+Fs_-Y
    z@;u}MI@w3x>`ubAZkEPz1UIjf>JwZ)VO~6X8Q(L
    zIE={w(nKa*!xXRy*CgY!>U#`JvHT>*Ar6RRWSJ`nGg=1->wx{Vj9AGnSrcoK%b~QAP
    zlNFP+!Jkiq&zxm(qz}&UtF?&y0KTg!xIDm2B?6rY2C1f2lc{4~Vi1$6A>
    z^ndH9(-|Mm19$!8azoj_|C7t+GNo(@-aYm2T9nnIg8}0w!J|>u(MNR3fzLefnFm($
    zZ+|r}E*i%y&b)|?0g5;ilE}hZAO`@cOWEwKhyVeH6M$kOm!!J{qC1Nn1PtCzByonc
    zBauxmI$3!!SgmY`A;Jy9u8wKLHXT`UDF-XLid}p!*(s3MQ6lJ|1=uX6m{pi263Zkb
    z&7%WA$^vrVB3dd7UCCjRPd*K_RyLb)0=2H4MR*hP)go%h<#bY3^as7BvwKO$;prlN
    z60{YMCrJIIQ<+dGapcuyw$Ki{(}mvgIMdX0TquPOpj;5hRz6O;w76gdlT8md{VdLS
    z9c_#-eimn5%a$YW?f)j#F8s0oYtR`a7_OT@OCt~kGa-}f0e~Qa&hT3lL1BRRv$5;R
    z0>E^@Q8PJH7ia{?;RqUsh{$;i_(AgSYk`anph^a;0wvp=@Xa7^IGzNpLqbj@14MEw
    z0?rt~Bm)|gwR=!QYpMk+Ujk?&AM?;UF6)RW5z@OwT2+zy8W=Z@%#0L8W$>J3qKYCj#xR~%phhIWZ2Md>fW}rzJBO+
    zTboXBE$!?G&M%SbKG}Y?Z&~EUg9il;{!8pdgP10Zplnm;A5>9s)jZw$NY(u<;rON_
    z?4#dky4w4P=rcq86f-Bf!ytzHiF2JE`(?81U|7{(s%W>gtqXO%sgHks`<0cCbUZnh
    zlQsL=NRrr&;GO5f-^xzElcJCz*KtGp`*+9NuO0lwwyVn?Nc{Im8*J^jq6RT%bJ|_6
    zZ~cxfnDA~-xToX2!OOZnrB}r^&wZ!mD($}RKaG?)r{`Tj5n?o8`qIM9-9M^q#jJam
    zzq#{;!OL1d^p0E|`tFnFE8UMopBVuwivGDf4`y8!VL+N%mbk<%vP-tUH+*UH
    z=PGl<)^K#wHRZn#KR+1P2kJUI34;YI{Ra-|YANx(t`Co_IfZ+Uyv?d_lNT;SnQ
    zbj#JH7?t4)HSGE5rriwqK8W4?-CtY3UpD>vFIpP!uD-qXVF5GPzbYtBU%&l=*--`#*k?^7OBCGLhe-#kQUqQ&w)w0=Df}J=iY-@C(Hll?>YPyO2)?mGCxEn;$so_qwsDQVs(Uk2wBv#
    zM0PTQ0Nv%*kY9iUe5NE931V+O!gKKoh}LkHI9Pae1TXf)9^H+PXz&Y8g#TzFi$v3!
    z0=!HoN$0~koE)jo<+svEChw*peIb5H-g<-zI$ds2+r`eQ`0$PqlP67@dekAqMju)x
    zx>fXY%IWawBbHq
    zDwtgeTYKCK2An6k0*An_)By+*NIrOWkcdUfl-meAUkYkp2reAl1QLLQ(+uwoxzd#K
    zwmrDS1m`-E*GB-!hZNO&jRsEI;oh;Ld+^>8^vKRsG`?1(i@{w%(k^@lbhK8DQFD`JTzy=mkDqs}h{F2M6arI~PkSf2LN->BfZZ6y!^i>M=?}>9DcK-`Wz3Z+`Q(6H>t%pFrR#
    zoX5Ox(1@v5e!6AH-=4W&;I0h^SDL$K$e|bB^XwbX-hI)5-jr4vFqpWFi5t&#
    z2TZzX$<5czI$eyyQn%YVq
    z?uDhaqQV&uC_a$j3J>y|R$AM7V8{N1^rYOm+AUbZR2$_Oehk#!5qz%akNI(Knh{0yW
    zG-0}>*0&;FtxU%e5*QITF3DDmj4;oF;%3Qw~_BxXZE^M(N?a4*;fsVn7EF
    zLGJZvd&$i8YpXe2%*3jZ6n}O7ph2~z$Sh>;=lbU(4;u1}|?O!d2z)DE+fG67gN
    zrc+U6CV<3r3aZvrpH4lQ0U*;UC-d{usV2AS`RNps34qbUY}!{XnE@WtDJ9eAX-ub*
    zOyiSAA*JApHt(yBta8ZI|8&a8G`03sMO`U#I;nKbGv+_1WS6orzx^(y@>?itOs8B-
    z-*%5`Y2K|`OiRWq^TCu3+iIq;Nm=;E3I+bGTTw^+gVy;i8PD~5upTLFsVU}ke
    zx#4{@3beDCJDo~NL4Zu7Qe-m%Vj7j=Grf2^l~Qj)xJ;)~CMbKpY-1Xga
    zG>WF%{P4y!iYBE#jiND6w{(ieJY5^pC>q(x&HQ>>5+L~B6zp>p@GBSRU6mkzkNFjU
    zMkg}kBX_}vCgRrENHo6ppV4?Uh6?hRLEQTnwvnR}*0evP6PEbmtalQ4m45}8Wo&Wg
    z!bB_{i;Xh=T%7f8!ay!+U*an(8#Q?Jp_3+#9$K#D$R8r)NIQPh`UjSL(D`8X;~juc
    zW95eDb}pUy%f@Ak-VMHqeW6p34Ai4Vfx7DPlV&VfGV7QL^&Y~@d%WjLz3`R)fV-aT`iH&_19V|N3sNs)%W6I&GE25oIUciVS|@gmDXJ*sbaKZTU=qA|`*
    zi^|<)6VJTr_Yd54+2m@O^jXoWZ~tj*p=SrU>JstU``zg2NS^Vt{RVx2>_AcgOJ;
    zZryT5A?J~e7Y5dwEW5o`g9q36WWeI($ltg{dE(R2j^?Ic=2RkFS9m@80TBA!L;leE
    z^QP{tw+3v2B0G)Aae2V1bR$WS?$&{eg)40zNEF38yvO|c*(VMwb7;I*I_1Ih;nYE<
    zvRQw6`mqsi+9#GU2CQB4scZ1(
    z0u)74;p)nkk!DGRqu;CGz9y|&rFTS|hEQsFqBVxrX~a$A7L+?V(u>M9!mJ~&4lael
    z*(yt_Dyqaa3x^i`%J7Zx1f(s8|E~AD5(dQlVSF_mAa3x*BW4u%3h=0-eFZVndKv~<
    z*YQBZCrr9(oDe8H(mtuc@C0(%-Yp>V9sn^K{u5Q;ZdO!RmTDLoJOGY3nKKv!bC+<<
    zPDY2|t1BIT^u;&cb<53*&OB_8hHzy>1gpsw_F@oKx6CVLhg`n$!!=Di+gdh$_1Yb$
    z3?iTb@HXa1C1T3+H9>L9o>B8&Skn=V#>3HgEF9eO@oh(Vc)S5#xkT*6ysNNk>j?IM
    zqPh>c@5hc{B+rQiBkd~=(&W8qWGQgQUt^u!
    zane?}C%WmnN{-MZA?1?&QPfe7wT2^cTcRfpALYA8vwJ^9DLeP;V0$3<5^G^(XcfX?ZGf-L4(D*e>gJ-FJeiwgLFx$M;CS92_N*tvq2f@$pq|4G@b)@
    z>X!Mt$vSST(7cLTdd}*eSWY|<&5k6ZS!g;IZ@-lgSrZ-c&OZ!SkeRCT{B_-toLFu=
    z6Q9Wn_1e8mDaH)2;ypT_n~nKX>|AX4!*Xu2Gr2xTVPW1FuFXg;~>#5X%ZoEfq7J{6>~c%o~=!ri1z
    zvF>MwdfYW8aFh&KG
    zuo~j=Xw#F2=-En%jMgLZZTALLuT($d^(}4DY=a6UiA1F9hwE$iP<4HLxKyfF9(322
    zJHpOHxO>x|r+a&AE%A=n&U*rSsjvFfr`L2u@SX5!EwSuGPtW%E=hk~v(pFZY4ZT=B
    zRnxq_k&E70*AdH1gp==(mFNj?|Mc#IWnYd#xHBA21Rou*`aD&Wu6t`ua}a5aFbU#4
    zQEMU??cVb7{U=uI-Xtx~+Y;gC1=X7DFFo}4Z-3L+oEdEG!H~ye!KSr;T{)vtEf)!C
    zrZLslc0|9tQ0INs<>QyU^y&BOwuhqlc+vLeE#JR$_c66)0dKBaqGTn03diG-M9=HT
    zRr6|~cFftgzxe4lKQ(S^+`eVa*YB)cIHk^4>i6h52JO$GSRCY?Zy&Gu%2aQ|E?%4R>*Pk$~+#`#bYL}ww5N=4zrf9U1kJXuoWk=hBo8Eh1
    z!KsIh9WtoCwx+f|yDnB=S4-6tV1;DGEYY?|PiNEmzrFSRQ%^qm#N&@YnfpXyCAFd;
    zksa@jMWf+RPb3l!TVcfJfq{w@Byup7deF^SBor!1&@l({u-c!cjvs);iFEz=B@r3pa$=J-_QeR-t%#P4ba~A
    ztsgye>D&D_Kne5K1*Mhsr(X3`KMhdAx@~@`9+-GmzYS2ryJLQ-tk+LGzTXC@!AyW2
    z-M;EQ2Iz-U-r!aO)`6BRkzAL{WL%g-g!P8r{m7XE&~)6cV7%p
    z;?sF^`cH9(1l3wxO)hcg+VW(I991GJ_p0CQ$9
    z1Jum0w*h+VEmxd%_}&JnnSmJIW&^anWz*NM-I-#5rjTn$q?u}fM)op5Er}lp;8`ie
    zIi?Z*^rSUFWj$$t8c*LoFJRTW2`Y%@KXT>fT?S|+?gu4}vk2xip-ISAHSC@E;P!B@
    z0s7vF7{FATZkXV{A=j_%3H2JF9V-vkmAz?HrTnaqcNw6OaBS1{ReQA+#55kWvK>m=
    z2DeD;y<-dm74~&+U(im)dEbOOBRw!XGKq;84MVGKyQ9o#3%`bU%ul{o!_qAf{ypeV
    z5Oxss#mi&lV%VtGcyp{}QJ_@iJ-$gVbi$TGWf8Hgqv2TBPv;mWB4~)Usqw1!qz_R=
    z3@*?R?HP+~Tact_iNVxVJ(BD{>-+8q>R?!-KQVY|T5lmF#E2)RrtH(@z&Ss)hlmB2
    znaD!FVb8@P@t)SDB`_gD2YceVNs`Ac1>uvOPe|qPOpSQNO2P2VSXX}o2-+cJO(i7dhU)W=s{$iM>
    zg16i=^x_q-tor1;jaxTw-m>PKzkTxNQ;UD+24JaZm}6OqAA60{<7;`KY1dD?V);vN
    zy!+8dZ~f&jZ@#$lwsXgMd9uCkCEjJ7zH@@+@p3}xn9~>CcK=g$LNoSrwwsE6V=C6Q`YV&Wy89JbZMuB59f%dv`andNEC+KO4qrEYkh)
    z!qINX4Md8SmIh!#Ispy-5;d@L`);;~Qe(?llijtAYS^dsIaSjoah(xnXs>
    zJ(`px1{vsKz{eAjo$uXr)F6)nR|6a|1UelIZmS-LYsBb9cD&gjOvJl3zk1V2BP)HH
    zqGxGAbO3@3e6-?Bv_`gl_{fs8ri>plsII2Ermj}1aS`a%_RZhD|I$-WuCzWDTe;#<
    z{JG+>$LJNraBRb5!NeuTG?53Gj%4K#qcSVr6AOn>K@81E7Rp>$5M-@mnv-oK%um!Z
    z@dE6IG3zs9@lY@mi_01%TU{CkEq2M68^k8fglP+63B-jcAp2cxaj}|f(az$G#}iEi
    zVW;sT!Q&k@Y}{e}bdeI?wHGMmW#f;Wxv-xuQiFGvR#!7=)&uYK(?v>n*UwT14LkX|
    zciQ^tA~kp~Q0m9bT=r>KKV77~?^`u|=H2f$_SZ#9n18uYEv-KFnm?}UpNo{RuDL*!
    zya%0g&9Z*FND1${3sg?7KlsG6`|Bb#m%5ZWn3aEL6g~7D#(=mm>16pDxlQ
    zGcuu*RfZ+m9~Y^?I}84BBoBb(NxDe;XrUS}e1Q)4w1S=IE(`S|6{g!ibde@`k-|Y$
    zJ@B2v&8p5P4a3;V6J+7q-~gMhKE$<1crc7knmptX5=pa
    zrHR3<=-7Q@Z*6!;MdUG&j6_W^JK;0-^g29E3?9`3(TF7Jh?+(A2IO2~0E2<6>%0mq
    z0BBjmLuzJlBZ5-Zm86H%UsfJ)V^59*GVl#+YSLyFzB4hn@unsZ>76%RH~-Xw>HsBS
    z_K<#WV$k6o)g?|29Bg<NEH_xa1Wom7ulM?^K}5(jAtHTR!Q4F@Tax3NfY!?V*>9_b+n`F29S7UXyz
    z1vxgf!>6NnsBq0#7=FFrrGX9MD{l>0v41zTavNjkAx4(HD$!oJW
    zDg4lti+<>6hrcdA0e3=ASEzaUcqGHwn^30ZX>WHmx4~{O2qVF+(7G#2seK9Ax_dXb
    zb%fxFN)m=K4sT3$8H79byb$K%Ngp+B>uB!|ThYzTcy}}u3U`Gz-r(U$<69!3t`=ar
    zVI!#uo+Uqa2E$#!o-j-RD_$RN)G!i8!DrI>bUkO#M|-;38ZRPq#U~B^!^RG%8rU3N
    zJ)m!k_jGj-r*$G4-u}T+Y&LAtEwOM{`=(1U-vnJ4^YrHK82po=u1;8ypbvGlwFik2
    z7uxyx=}a$uuygAb9sxT&VdBdhI-sWEc@0I3=ZAw`-LQKSvEcTvFQ$|9kx=LMJ8C%{
    z({AFcKQ~9v0P!b*J`B^bCya)|k;vF8ZV=zgV}kqX!)$HUPFE!C0_)(+_W7s!+sgZG%$S~?-D0nyZnW}uHM!Kdd#9|w5P4{n^n&)J;Rg9
    z@Ps@wu`M19N7^13C1{LYJ?OG~o>}$NPMrJ0`042B-1y}iE3QAOqOe#HlhmuRwTg6Y
    zyR<^3ORVfs^Y47}%`blVW!=Wcb?erA|KW=dUwdXvUbaX}N$MYA@aM+x+lV{AGH*ewM`Bz`F
    zc>b*Eqm_a@8om~dxK2Tw^vU9E1PMO!GIRN%lct?^{>2wwGW+x+NBV48xlUPi`wZee
    zUfEdps@dg0D*?Sztr|Rh?C1tBSCpAk?81Y6W%@3!EIG!`Ol$~!v3N8N((L)U1qFpg
    zB_##9c||35C#!f%%PZVTV)EhegSp-q+3?u$l`?@vv6tXK2OzO<%K|oYdBE38ZH@no
    zbpf*z3#j@1o2S-8;u-iV#%&8YIy_##&(quMY^-bSXyTi@H@|Y@^x>5rC;?(}1Njl=
    zGJLbTO2I4JXdFKkARS65jp6V+5re(y>QXJJ~mZT@c6
    zOHV)Xgmq>2<0~I~Wcfo6KKRh1)QWsEy~91$uqDzR?&-lIkHH5^ysaS=2fI4EBUCJ(
    z>?9$QVwg&qhRe1a^Mt$*io>Dqt{{jCAh+P7jklAQ~@C3d4H;0+aON7*)T%nRL;E>)5dZ%Qs-$;LG!N%vKzEUXQbHyr>I1DIK#YmG?BGw|;
    zB=SiSiof%l3?-E-CI4h#f0TeP7de}fza=Cu>XEDf_&&L!4R_o2{XI`CLAejtZTz@{
    zlq)kh?k-}h*^VMC}AiD4tpR-*(d;m*=o5q9(xg8!?uO!
    zH^yGe1x0V5)Qdd|$?}6_n4nPt4W}--@AmVC>#7HFGbqukZo1>NhM{w=KeE;*(K1Th
    zbMBvr{bl93S5EZe${{IvXpYwbNUn+3p6vIt5-Is)jN)`KYW1ZT_;iXq$Nk^F^5`XeW?l(5?uz4NnzFmO1aB2G`E0IDoBGhR)aJAW*$h1qo;d1$Q!
    zN?k;KE2mV>yzzobCoG(QNI6`ItedxpAso3P28iVMZ5Q<+Q)b_E-RWb?6xFMumW#6}
    zw-Pu>D#D3wpWj-V@LAn4RbcUKmdT?ME~~SX)>X2P!In^ytPH84@?2TYc0jiQoDk?}
    z0Ij6x-5irJ@Y&aOvE3UPd-ToMfPz
    zpaY~L4a`kICr5$9#_C*)=+`|ypWCft?}pvCfJa#f1|uwJd=`IQS!tjmfQTM)-vLP~
    zg-k9?D&ZvHV*V#qTA%4&`Oqm|LLf_4C5~^(hf$A9dpf^8@ch`?nyT81W_WRkOfJe{
    z&r8NKN(fM2{(`TpDj=V69&XQ(E2bp%3vLaf>p|j$JYC#u;^Um`~80HYtjN5Z=ZE6=>T&5Dw2~W!EULPd81kVK*mBSkhpMY2-=~XQUyfH}QCC}`IBZm$iI;5te
    zvZzXbtmRLCx#H597hbaL!!^=t>3i19mg54NvpA~B(^l!
    zCF8enSEMMW6qIgw~@4jE;LHoy)l*h$JdTf;?h
    zHy&hxxf>+T-b5nY6RS<+;|PP8p0_3-E^*(Ua@Z&VH}4sTogyWYNZX4MtqP<>EK`&K
    zp_FwLIYe9|C7G;i*>+sEW}G$(-XKy^$F>n9a)6H$lMV%tX%@BvDBy@SB&osyObeOD
    z0%{k@d2u`5`~Ig?5&&zU=lE3vsq33J%&(h`@G
    zKl1EK8|@?#mA!OAjN}byP7R)OCIXK@ub|>kzTPV&?^iHe&kRIa4a=B0I`;
    zzK4XXLIhi-gqS6?JAk31j<*pDajmkU>>|9eY69#Uh#$
    zpB)&jR4)>-g@sI~Ak$ks58ktE*&pt`=NOjAaw!^a?XP2S~s*4%>p<4*^ICz7K>tm5%R16l}%u`aZ@?YDii(S-9LtcQ0hm2sCbXz`
    z7MD2eMMoS(BbS5>3{r^OU!zRh)hf+LP*k
    zlNUX{^3jJMcyPtzD~cY|V=a-@KWzAJ_0Qio#o^lP#@@XeWufk#o?tK(#R(rGN)rhp
    zZCfH;U2r9$6wz5-By(^zTx1AJ&5Q(z*AV5T2wp0L#gRj6V`mTExNiKDNN#Jq4uY3N
    zmo3h?gNRvPM^1E!#*Ke_rj0j*stV0frrRmemRUdxMDU7CvCvQfNodO}fb3)2fbVP<
    zE4?VO7dj;mDIv(KdRp^6I&t=5d59NJx06DS6a
    zD=Vvd^0_C}EehiwoJC<3B_3%8I_gUErLe3X5>SKHxB(F`rDf$l_{kBuq%*l0-tpy<
    zK4c_s7d$eA=my4#bQMVQ>~L_J*Uc7LG94A;5AYV{m55#yPiS^#TeI`9tcyxqn7ce(
    zl$({&V=d%#U4$4feXH11`<3h`^!qbdZxBh1b8|nRg|hs
    zVP0M_1u4zIz}_Iay}H;Fke1Zij4#M#H|OmmvF?j2sMmWo4dL%mDY~#B_oz(XYs)At&G$C==t4|cMfZB)9*6G3)k0xI-icPGn!ywD^-7(x*%+*E
    zw+Gt>NN--$g^hW~S&F6NjM~~fPUWDlh`2`NxMB3e;LSTGBbP18sISkZan^)z1xVmu
    zy9|p;R}2Z9zq>b#NK?2V015nSlx0uOfNKkblnZDN&h1kT37j=PBVTi5R8{3E6#-vG
    zxdsWGHNoO67c#N%#B#se=OspP?onClV0Ug+mDQyJ^O)gD*^ySZT+FJfve+fY4)X(&
    zI_uz!Y^ErqqQc@tf&fvdky>(&%*dsSEHyRRoX<-_WWic|s-;MBSO*WzlLDpW01jnE
    zCud}rSsC56g9^p6ic+_`%rJPbJI*(9*r*YQ&b<7#haP?8
    zf%}&ma=7uHn;%>L_>;@u{JA9pM|w}BI@Z~_dBcwFJ9li^fpZ^gA|5uZUJLAD!v#yC
    zjbey_F)Uoj-gr3JO^$bB?ae(kctpq=?&@l5$7x0)(!8^W$YDg$MsdoN^!SEC(V9d7
    z7&8r{H%38&F`H;7C3`%wqo@#utxT8LoMgQq;|`0g3^6AKnw^xxiQR={%g?vtA`e|$
    z0van_z{G7X5w&(Zr>KIhz<2^SwC$*@Nu
    zdt0y1N7f(K4-caaSs;i3<)lHi9_ZQ*nN!R3@?&p!@UHWRsUF}zTAK2ioq3bU(L*ggWa%3
    zRg4hUH8%h7pnz;0PvnePS@F>EI=O>1Z0=Ehoak~6LIx3Hq$Lu$pLiUf(v0GNeRQQ0
    zK;ZTBPl1#Xagsu0mGLy#q5|kth(KB{d$~cA3muYY&S@Tx&bx@Y+DnJ$irgroNI_=o$i?2S=gH#Dtx(h}n&*I7x#$4fl!Hys289x6}7vFZx+2i~=
    z5z`d1EFt#-MfQ%!*&*;h!AK@wNYP8R@`|eR@_^}w`$-*
    zFvLE-AB3Vn>Nr;~9aIHL=|Kw|aHkMlipSvnL|hQVP63Z_5V|PRN4Tt%1sMW@4v~f4
    zMYpVU4=y(0A`8Yp%42gT5DPjNG*&u7j_C1s56m^hQphl`MIFu{G9;9h?gS`5=>>MO
    zrCzHV!CV)4iJ0L8zzuUUli7(a3=I;1wTm8Hk&sj`oatN~N#@~)*-WO8k)6t*LC92v
    zj*sZ^so3Dec{x+HAYvc>8h!^RC3z4lmW+J(p~qG}{P?4%$vC9wfd__!6p;Lc#N~n=
    z4UOHXr|$9EfKRWz=t4MT@Ir!=jpoSiz#`xpJWe}gE%35j=4F&Q7yEED(TY7F3d`!B
    zq!520&sgXaazUGbm!?ZnMn739+C=@l*-$vxYH&!ZQ8wyD%~rrD=g+CapdbeT>!i!Z
    zzN{5wQ_}et|4L<2D=^PE7h`G|uz6OY<6luGx02WlRtSuKSu4t=r1LJSlA7VN6Lg=Z
    zmk)nYcN9`$Zz0cWaGjP7eqMLMh%yS1bc9kMt^5tosg5F-c>Wxy5*SCKt|*@RXJvbV
    zOPqNL9x1Xo^F=hayY3mqUg(l8xU9DjxOpgiR&|yz%IwR)%{y#_&{O}s&Nz8(HX(#0
    zaTt#r@*Ar3WFr@o)&i
    zlwoq0BN45NH{(WCTPV`q*$VyC*@i+;HY2hCF%^hshy~-p&M1xvtIB6bRwakeZ+Q678xWMVTzn8M8qzXk*_oF;1_UXiPU
    zvEO6Qv1b?Bicg-3W}J2|Nd?uQ;z>l?$kfG$mgE-}+Xv4$5TXw{&FB@h2mIaWRWnJK
    z=i-aTEv#cHw(PVsd>F1Cq+lgt(ik?h3^C3kQ5Ca|o3!w-u@lZdug0+P@tKK_396e<
    z08tU=y3A&J%t@D?cPNtAz>fhdfM^2p3v{vqA$hZ(HXoL`c!Eadc{Cc=Zi1!MKgOC*nsryJLFg_%w6wzK99~Xgg
    zXBE47Bx`}oAN3GX$OcHf4=dlT=QDRiPUP#gw<=;tz*ee-bTGI6?xpuVbl(H_9EDdSS`^a=iMx!)WV0O{?^~v$
    zJML3XW;qE*-dX%kc%;biaI~O0
    z6O|Zlsh#jS0(Uq|vI>f(P7A=(pMX!Qi)WR4iXHHP9DNdW3(n_JCa}ugB`&yKezh{9
    zNUf<2LpLV~4ytJC%&$;ZDK=pQlf%razb|pX$#c~7DhXrAx08h+c-
    z()xlto1g{+&WXMPN0_JxJnt7*PNo*{N*M=d!QGabkyY=_wQ+6_(oxxLw2Yf!(BIt8
    zv?GsG1bfD!jEo%KnO$(u;EX)@-&IgKSkA81kTWd#xfzZjQbr*!dlbBb6Sq0M
    zwRvGN1e`bvVX4bjLclbn5FjNfOG1Ld0h5rpge0VGNC29{fqRbR*rrbi+D>33_wMJNWB|IgbjJ_dcs;@N~=gzCBoLfb@CN&q-0lVYk
    z7Xv2q>N$>8h59nnn7O_|cK@=labgIcO>yCo1RL?Cb
    zxODQWl6g%L30{$0gp9^vI8R)h+vD@taa@=ynzO_&4cJcXL&ws2sre8uAg97zw^f%{
    zoKRC=UrP+3&SZDh%_G&&!A835?`S?=H@B>!s8Wc%}wJKWm>x0;Bf8m8cWJ9Jo|!6zHr4A^C{$E
    z*`|TXa18olUrSqy%cv{=Qf1|wIdd2HvT)?UR1QTIW?XxJ|WQPo?3D249=4Y|#>qwbh(p^E8+O
    zzPaU>8{CZ+eeXgU*J=;8dDIsF9K)shx`sI=J-yo5?EWUV+U%_;zf3o;#!%ALBWJ^w
    zRjgK@YAFA*?gZ8V3a#v62|&AS`tq-o7|L}e3m0{^kF>V5v~{)A*I!nm)0LF;EG_t7
    zn>KFT^w5L1U;FjbmYs3Zi5GvnjVhw@d@Ot5)oqXd>d{SGp8P#)G|9-QticQ&+A{!;
    z!M^>6+j2vc;~hH^qjfAoIbA9|JQBjo$|i~aNh4{VxKv{aqJvr7Ej{VVxr8`vsj);S
    zp~Mu4uzV7v#QEw35@j*Gh3!1ctkeFsn5-?9rR;<^pPyB_yRk%1mWkaX)*-e?S~JSK
    zn5CNWM+&F>UQWbL{ykZ1*W1a==@oy-mIjxcjxMo2wa;P_=J^~kSyfC?QKd{J#cHyp
    zVIHa1Y~CzZI9Z`A3r2zpS(oDDh*e!^i@F^?Uky<)Dd3VG)k8!ED6Mu
    z*mD+zhRB}mZuR2&0e(7DPCUSJN0mL<<_bWwqv3GQV)GLrDYGYAQG2)*dM*}6k(Nla
    zL@eCN`#C|U7DJ?X?gFQ9=pKYs|
    zI_vmx?NjF*Z)tNFCcedZ3k5b%8%CPZO_)g-_?)xQmS~|3P;ly9c@=&o28&KKNwrR)
    zDbea?MH##(9M!-HV(lIk3zHC@OYLOvY=_USccjs=5_mW8+3(RilQQ}7h)7gW%2e9C
    zT5&yX1O>FVNIUE;XgBd_
    zSS4>_rWovTiQCdgwh1jv6sV*e7&YP%%e2-e&x|&0qD*UR=LL-xcWmQy(;CL7#I#=1
    z+pyX(&nG*|L@ivMaboa4+f*}g#)+e}DWaWkqD7k`(^?AC0jHJVgSfvC6KInr;Sg$k
    zTw>W2#H>vaog;E{{Nsf}VIW0zDCJ)@;OrrKkm7^t39zmIs#vYQ~IQeAY6VVrR
    zl9q#KDa-^)LnJ!}%|wW|Fgwy>?P7L_W2?&KNVm6kG&Sm*)2(bI(b?6W{>1|i-v4v`
    z1L<`eHg4L~wIMx5F8`Q5MK!rT*GD|JQ^_32
    zWP530qL2)LK-QTg1E4_Ivi*NC9oAq5^5R;$tfV2CS*o^Ti?YACHQXSc2l_>_tjv}L
    zwlFzVMq%_TGyolh@(3>#J~K-qywzxD;yCnZ=wdb**!D#1YR9N7kv%xG$5R?KK}YI7`H
    z-r%#Lof<4&H;GGy#)zSsxR*GiK#EeBd8yJ$mfe|m8H#QclQtWZ`bx=oVp$=Jmr|H}
    zW4a1?YM=~z#@iijOuul6!KC{9JP&c#?5)ftn#_>f!Tm%C)?%kC7$uFK#-;$#cjAAO
    zjTLrZGb=XO_B3jpO=`!2zQqf>+L{7^#|kXXFq1PxG(wRi&vg?{jLN5gW3gfboySG|aR~tI+$*gO$p83aP
    z*Bv>s*e=q;_@bl`egAj&HCRu2EPRj48T?sjPy9Kro$8+oIlwB}8t&EEBbS?2?%RE(
    z)8YQ|{$%!il^Mw#ucp+8F+ii*(>Fzr>_5E!pIglyOUFy;*E=XTn><8ri@UaV$yc9v
    zdi^Ch_#UP1x=okyZcH9>gcy+Buhug?{8md{gWF1KS2MvEWsY{1W3sb7(8qeP-R|>P
    z&>`;H8n<52aeJ!l{g^$noxRoWH}lSVtS*}gzDzS`D9G_iC8*Y5uM6UQTN&Ntq4Zkh
    z%+z_S@w+L_PVDU
    zp@vaq#~!<4qztN>vKDgYQIwLu(m2r+mt}CLd;X~_ub+eF(vET^Z1#=|);{^xzKN!|
    z>hvzVM_Aeo%!3oit4J?0Q658Oi
    zJafx&vLpCk6F`^ZAkwZVi+?(hj-=s&$>)uXQ|%0SEKIege|$3`P$WgHP4L2H#y4|9Q_xa}`X$DeynNT36``W&2zA|TZ
    z7@eh#VdzM`O*bCmLgoAO9|DLH0s6Q@wfkCbI3VSM86uh4ER|d)M64x{^vd#j`?c?;
    z^VxD1(liNfmH`38C2g1fXDo{#pE1&dcCjwwlrOZLxowCzDTtoRq%&ey&r@=-m?%oTv3vpCRmB*zzEonE#yX^L~UGv+)6u_<%VmIkbAuHDa4Z6qW34Hdx4`OH<
    z7#K5Fr;&>dVL$o;^RIlWUmQ{i-dd?gD@+m-h`u6Ikb(xL=ARu}C30_1j4o=)CY}FTK}46wPGF2!I%-LNT}^9$))e
    zYqr0&=V&B7(OT|``hCGqeq-ZrcJA6g)fo4A)Zmg8H~eJllUBv78iX0o|a$LaQsx~Nj4ysh=xuRHjLSx`>3N}w`CPa?k>J4}UN+s8$s5(~oQ(i#d
    zAE<0E@9=kK<}c{#D(lX5^%*z#H|95&Ka|_Jr5CrqGGF++j{tx!W6T8zfg3Qq`gjQq
    z@=SUqjLm_4tddIb`mZ|tuR8oMR)-TnWmWFK)8nP&GQ|Zi0)0Oj7Dt9GJG9og8lQ*C
    zk^t-&_CbSh#WUe-dWZuEqnd7rep{MWu8qcx9uZg6Jtp7pLVvN&KGdm}pDZYJw$B7Whv2hM+XFj<*5
    z;wiHKlCUR{AE(;A%hr8FJvJyQVF}T^RZ71m7Vc=A@UA;{4nk{I0L+4B&LY>l2jP2g
    z*nO8jcQBF`G58|l8YQP94QpJ{%IQCTa{%TD+%_u`9p7?T#fpaKZROT?j*dw55m<88
    zD#sX;Fbkflt>>Fhzk7HD=+5U+&htRdJgR-z<#3bp>so%>8niie6Qd-JgF`?&!lEqw03;M`gQ9beDHw>ezAUW7952}Be^)MgZqrc
    z&Bd@u!98KjHS*r+xNq4LHBekd!Sr8M_Fq-@U#!Z;A5lle?EYZ7**ynUu46I9=kRym
    zeUyynk6GP%Mbbv_*aHsV=eHeYge5sU*0p6DTN**pAzAauy9JssMAHD|KeZo
    zI!1Oj#&a&E+1vEh#KamYTRQvEoyQlT$!)Eh*K++6e>^Y%iy;SCIRRpcZQwt$yMd*qe%YOmy|Q!v5cD&M
    ztCYjs5^+I^j=Ai071nd^cyP377`6$hI$#YUKM@8Xc;Y4Hg_ty?qOpEMIo=(UtB
    zM*E4-;CJF%boMU#)ZgE@>gy}d>hl-L>wFZ+sZO=IZ_(+OZ+`K`^|xPjMpKd8QAZV!
    z>Qq{noOI4@d!vyzH-BeEN0D5$5&XoIXkL8Eg?E3L%@<~JUE{`LQO;KpUaqW<)iJZ6W}+i}K4-~QnPKfC3;
    z1@7LvWD`}nJ_A-q$jK(jr$AhJ>6yJ=Rb&!GcIV3#_J@UEIMCJG4PB1nof4Jdf9hO>
    z62ycO&)glD5|(3+gk2t19JL!aB`_#Ca=o2lNs+>r$4Q-%F`}Bqh1V-lTv4gn@=pl~
    z;9#nhsyauU2?j&^lqi7*D)AD=75mTNN*4*kGS_6*NW!|Xvlk2Xn3R}Q(9pTmifNKa
    zOLJ>mv!5?1BbQH;g}?j5AKrPx7nZ`HFPk(>A2NJ=WaQ}HHy^*_+;*04W(s*LS@DV<
    zdf~QD!ZXFqQzOUJ29;=sd~_+XczddcVN8-GrL{4t64XF`u%+U#_&xv$&X_x-{n
    z4B)g5=EqXG(9;)Ckfplq!RaEF4zl3~Pg9^ea`>i1GGLAbuk3-q1&1q1STd#ZV66gg`svNOZ+n#e{zu$uxL-vz?+2L
    z7u^my(MTq?^J2f#=UMRG5RsJ}W#UZR(u^qKNM_%4KGo~$T|1P{Wc|$8JQDeur4V@y
    ztns*guEjqcl8j|9FE7Q99ENN(b@U#|?LTRKh*>K`$`=6-(pcSeO%2@b_XRwkd_0`t
    zYl>7)>RLeoG
    zo!jaQ^!%WoT?ZzlU~F3K&(X0X8&355eP=xtE|&6`OCeYt+I2&#&+WVULoRQ;t8kej
    z3h&>x+}Gq@v?WeiKB6|7L&?Lhe7!di3|_O7n+Qy2+wzfA{Meg6IknrTF8yVk3z7(y
    zk5G?{L23Tr!B_6Ppmn~d^Y-0R)34XAOee3=*x-S8U;grpI^Vat7t!Q_(dOx>=8{d*2JTfqFXwR;sMX0{L~I_u-Sj^mP8hcfY$tAM|*3tKiJaJ+2riK
    z>e=I&R6duYxk-2)eT~7!&d+`SjgfSEgt&QYewZjU`qn@H(>Ff0FFrPw8OycjLj)#0
    zjlJjI^zi$!bRrGaTt_~%_R(8pLeSoaMTO&^nb8F%*KGJX6v%a77(bjHA`1W>L({;+J>FhGj!+SD_$GUls-u&zF>(AjW)R^W
    z#|+QZK;wWB83zpSxMT_~Vj5aZ4D~UnNKHsSh7*&L=^!!LJQE=%1s{WlDalN1n3Bu{
    zhDpi6*-%04_)g*OH|7Uspn|(|Ql!fq%O^mEXD)OqUhb-Yx=2D6k#(OSZ0d1(rbN8n
    z`rJ@5k^Sg9lvJsHWkS@%J3q)12Nae8`i;&BL34g6E5VIau77p2lVUDSP^wj=8}i3+
    z({stOr`RpX>YIOiKZ|8dAP_+h7U**$`Al@@B>^Si?OZdMPQj9xZ9?A(^K&GwGi>yRwmaCu@0
    z9vVx=Bcq|C`*yzi%-XYkE|>R$Jpe4hExZ>QAb(K*QE1<;KfL-Mn{WASqoc_UMC33D
    z0{Ow$UVr1Y-~9TSO?O|pQ1vz2PJTEk3VvwoBac4(;E!&-YFSIL(c}B{=4ck+8vM$&
    zU%mSBGyB?=23OGcHxH+B@dO|N^HXq`z1nPEm$mom9m6>mSl|tB&L3l&9Vs@ot1X{d
    z`&OLIhuGCBD*~))lHk>rGp>Ie2K00m<<3180Y!Kni_f{~m%AnRjvcPFn~z}OX=i`=
    z+yC~`0s12ll`c1^IUjrYi5K5K5CWHk`nK?nwB$pnM1sy7%HcQ|fPc0Ha|@S(x4H}%
    zrmYN+gvEh@(#cE(aKfT6?|7ESo@A9v@-#X$aMrW!4ht$gA~|OV@y#-x%R&uD9-9?M
    z0wx=qhQ?S#n;l1btVQx!a0EWyss6Lz$hn>(`7AiH!d)bv1xL;;md}DCXV{AR&w?YJ
    zCi^vi8juXH0*(w8;fSYhT;>Bwju#_|(>y6DV9C%Fmbk2wGI2se6KGP@XB-aK}HLR;<8N2rZ9!bC~RO;Ut$KTl)1)~Dd7xYnJz5Gmhx%cro)S2nrsHbOdm3;
    zfz0oJb^AGOq_hxeH`@xg*vGC5;(nmJcC0$X=OD3S%rPY#2bx4GzHiIL9!S7QmUm4&
    zf*e32espT+(MuZbHn-Ek6<%9-a)>g?bTpni{^SY^`DfHcO^AZ|BbZO=F^Eove||Dy
    zZ6`_B~$q#RFlhvRaXUaI?Sn@eGy0&?0ie-?V#uCt-CiZ>H*Wk3(PRJSw
    z@#s^7P^=`QqmOo5-L-N$Y{4uSfR;0)N5?{M{H@CZ`^i7PKNL>pny`n($jhS`BRj7k
    zt*BnT;e(+_%Fj?jl`84FqtFw-bG^ytGWl=aJrqsjmoWWN<01@Y!w28EvD)UfG_Tzo
    z5_I$C^~rPsTN6V(lnw2E>FRk6K1c8U2g9ODykK%7F&2*t|M5uX_@5p>ud2@H{q&Oq
    z5s0sSXc7kIjxqE|>cGqEPpPi)w|?=J;b=iBdPNdVkj8gCbC-9nDbRiEu5c8L3X0mo
    z4A$pE>EnNR;_51cg_zwD7-Z8~F%&R>(NH7r|9aE1(m7`D&F{rvGAM{-F+Ox;_kTWe
    zvr=ldE!x7CV;oDbBa9e5{=x5G+IG*f`f9u9>YbR`jFRR$@?i2nW-PS#cTaA(>tZui
    zmM1+N#Sj2JMSPH_&UKFNf92sH-}pD~GKa1Gjt_Ven#vXVo&){;hxYw($ELM6p6x0%
    zD#43(MM(hF&>8u$hyH#0j^{V8UH#1~mwV=(;PZU`1-aws@NcaC?poaCZPQAzRZBi^XhG30WWEa$r8@{bzL>J~p6i36{*Nl3(VF_n}^8EXn_$
    z{**KR#7`N&|6l&-Zq2V6|0$uqgHn;olER-ge5RU6`*S*fuO9#1!@sAE|8C@8xBUKJ
    DjLf+c
    
    literal 0
    HcmV?d00001
    
    diff --git a/src/main.zig b/src/main.zig
    new file mode 100644
    index 0000000..c8a3f67
    --- /dev/null
    +++ b/src/main.zig
    @@ -0,0 +1,24 @@
    +const std = @import("std");
    +
    +pub fn main() !void {
    +    // Prints to stderr (it's a shortcut based on `std.io.getStdErr()`)
    +    std.debug.print("All your {s} are belong to us.\n", .{"codebase"});
    +
    +    // stdout is for the actual output of your application, for example if you
    +    // are implementing gzip, then only the compressed bytes should be sent to
    +    // stdout, not any debugging messages.
    +    const stdout_file = std.io.getStdOut().writer();
    +    var bw = std.io.bufferedWriter(stdout_file);
    +    const stdout = bw.writer();
    +
    +    try stdout.print("Run `zig build test` to run the tests.\n", .{});
    +
    +    try bw.flush(); // don't forget to flush!
    +}
    +
    +test "simple test" {
    +    var list = std.ArrayList(i32).init(std.testing.allocator);
    +    defer list.deinit(); // try commenting this out and see if zig detects the memory leak!
    +    try list.append(42);
    +    try std.testing.expectEqual(@as(i32, 42), list.pop());
    +}
    diff --git a/vendor/microzig b/vendor/microzig
    new file mode 160000
    index 0000000..15bc1fc
    --- /dev/null
    +++ b/vendor/microzig
    @@ -0,0 +1 @@
    +Subproject commit 15bc1fc06da3b6c622a21fa438e40be247d9dee1
    diff --git a/zpm.zig b/zpm.zig
    new file mode 100644
    index 0000000..1dcd7b3
    --- /dev/null
    +++ b/zpm.zig
    @@ -0,0 +1,8 @@
    +//! This file is auto-generated by zpm-update and *should*
    +//! not be changed. This file can be checked into your VCS
    +//! and is able to work standalone.
    +const std = @import("std");
    +
    +pub const sdks = struct {
    +    pub const microzig = @import("vendor/microzig/src/main.zig");
    +};
    
    From e1e525a50d562ec1d1687491f7cdd0a109343ccf Mon Sep 17 00:00:00 2001
    From: Matt Knight 
    Date: Sat, 8 Oct 2022 11:25:01 +0200
    Subject: [PATCH 03/29] conflict fixed
    
    ---
     .gitignore      |     4 +-
     README.adoc     |     5 +
     esp32c3.svd     | 36932 ++++++++++++++++++++++++++++++++++++++++++++
     src/esp32c3.zig | 37956 ++++++++++++++++++++++++++++++++++++++++++++++
     4 files changed, 74895 insertions(+), 2 deletions(-)
     create mode 100644 README.adoc
     create mode 100644 esp32c3.svd
     create mode 100644 src/esp32c3.zig
    
    diff --git a/.gitignore b/.gitignore
    index e73c965..c26d4af 100644
    --- a/.gitignore
    +++ b/.gitignore
    @@ -1,2 +1,2 @@
    -zig-cache/
    -zig-out/
    +zig-out
    +zig-cache
    diff --git a/README.adoc b/README.adoc
    new file mode 100644
    index 0000000..65801a9
    --- /dev/null
    +++ b/README.adoc
    @@ -0,0 +1,5 @@
    += ESP MicroZig Package
    +
    +[WIP]
    +
    +SVD is copied from https://github.com/esp-rs/esp-pacs
    diff --git a/esp32c3.svd b/esp32c3.svd
    new file mode 100644
    index 0000000..ab064fa
    --- /dev/null
    +++ b/esp32c3.svd
    @@ -0,0 +1,36932 @@
    +
    +
    +  ESPRESSIF SYSTEMS (SHANGHAI) CO., LTD.
    +  ESPRESSIF
    +  ESP32-C3
    +  ESP32-C3
    +  8
    +  32-bit RISC-V MCU & 2.4 GHz Wi-Fi & Bluetooth 5 (LE)
    +  
    +    Copyright 2022 Espressif Systems (Shanghai) PTE LTD
    +
    +    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.
    +
    +  
    +    RV32IMC
    +    r0p0
    +    little
    +    false
    +    false
    +    4
    +    false
    +  
    +  32
    +  32
    +  0x00000000
    +  0xFFFFFFFF
    +  
    +    
    +      AES
    +      AES (Advanced Encryption Standard) Accelerator
    +      AES
    +      0x6003A000
    +      
    +        0x0
    +        0xBC
    +        registers
    +      
    +      
    +        AES
    +        48
    +      
    +      
    +        
    +          KEY_0
    +          Key material key_0 configure register
    +          0x0
    +          0x20
    +          
    +            
    +              KEY_0
    +              This bits stores key_0 that is a part of key material.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          KEY_1
    +          Key material key_1 configure register
    +          0x4
    +          0x20
    +          
    +            
    +              KEY_1
    +              This bits stores key_1 that is a part of key material.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          KEY_2
    +          Key material key_2 configure register
    +          0x8
    +          0x20
    +          
    +            
    +              KEY_2
    +              This bits stores key_2 that is a part of key material.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          KEY_3
    +          Key material key_3 configure register
    +          0xC
    +          0x20
    +          
    +            
    +              KEY_3
    +              This bits stores key_3 that is a part of key material.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          KEY_4
    +          Key material key_4 configure register
    +          0x10
    +          0x20
    +          
    +            
    +              KEY_4
    +              This bits stores key_4 that is a part of key material.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          KEY_5
    +          Key material key_5 configure register
    +          0x14
    +          0x20
    +          
    +            
    +              KEY_5
    +              This bits stores key_5 that is a part of key material.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          KEY_6
    +          Key material key_6 configure register
    +          0x18
    +          0x20
    +          
    +            
    +              KEY_6
    +              This bits stores key_6 that is a part of key material.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          KEY_7
    +          Key material key_7 configure register
    +          0x1C
    +          0x20
    +          
    +            
    +              KEY_7
    +              This bits stores key_7 that is a part of key material.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          TEXT_IN_0
    +          source text material text_in_0 configure register
    +          0x20
    +          0x20
    +          
    +            
    +              TEXT_IN_0
    +              This bits stores text_in_0 that is a part of source text material.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          TEXT_IN_1
    +          source text material text_in_1 configure register
    +          0x24
    +          0x20
    +          
    +            
    +              TEXT_IN_1
    +              This bits stores text_in_1 that is a part of source text material.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          TEXT_IN_2
    +          source text material text_in_2 configure register
    +          0x28
    +          0x20
    +          
    +            
    +              TEXT_IN_2
    +              This bits stores text_in_2 that is a part of source text material.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          TEXT_IN_3
    +          source text material text_in_3 configure register
    +          0x2C
    +          0x20
    +          
    +            
    +              TEXT_IN_3
    +              This bits stores text_in_3 that is a part of source text material.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          TEXT_OUT_0
    +          result text material text_out_0 configure register
    +          0x30
    +          0x20
    +          
    +            
    +              TEXT_OUT_0
    +              This bits stores text_out_0 that is a part of result text material.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          TEXT_OUT_1
    +          result text material text_out_1 configure register
    +          0x34
    +          0x20
    +          
    +            
    +              TEXT_OUT_1
    +              This bits stores text_out_1 that is a part of result text material.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          TEXT_OUT_2
    +          result text material text_out_2 configure register
    +          0x38
    +          0x20
    +          
    +            
    +              TEXT_OUT_2
    +              This bits stores text_out_2 that is a part of result text material.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          TEXT_OUT_3
    +          result text material text_out_3 configure register
    +          0x3C
    +          0x20
    +          
    +            
    +              TEXT_OUT_3
    +              This bits stores text_out_3 that is a part of result text material.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          MODE
    +          AES Mode register
    +          0x40
    +          0x20
    +          
    +            
    +              MODE
    +              This bits decides which one operation mode will be used. 3'd0: AES-EN-128, 3'd1: AES-EN-192, 3'd2: AES-EN-256, 3'd4: AES-DE-128, 3'd5: AES-DE-192, 3'd6: AES-DE-256.
    +              0
    +              3
    +              read-write
    +            
    +          
    +        
    +        
    +          ENDIAN
    +          AES Endian configure register
    +          0x44
    +          0x20
    +          
    +            
    +              ENDIAN
    +              endian. [1:0] key endian, [3:2] text_in endian or in_stream endian,  [5:4] text_out endian or out_stream endian
    +              0
    +              6
    +              read-write
    +            
    +          
    +        
    +        
    +          TRIGGER
    +          AES trigger register
    +          0x48
    +          0x20
    +          
    +            
    +              TRIGGER
    +              Set this bit to start AES calculation.
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          STATE
    +          AES state register
    +          0x4C
    +          0x20
    +          
    +            
    +              STATE
    +              Those bits shows AES status. For typical AES, 0: idle, 1: busy. For DMA-AES, 0: idle, 1: busy, 2: calculation_done.
    +              0
    +              2
    +              read-only
    +            
    +          
    +        
    +        
    +          16
    +          0x1
    +          IV_MEM[%s]
    +          The memory that stores initialization vector
    +          0x50
    +          0x8
    +        
    +        
    +          16
    +          0x1
    +          H_MEM[%s]
    +          The memory that stores GCM hash subkey
    +          0x60
    +          0x8
    +        
    +        
    +          16
    +          0x1
    +          J0_MEM[%s]
    +          The memory that stores J0
    +          0x70
    +          0x8
    +        
    +        
    +          16
    +          0x1
    +          T0_MEM[%s]
    +          The memory that stores T0
    +          0x80
    +          0x8
    +        
    +        
    +          DMA_ENABLE
    +          DMA-AES working mode register
    +          0x90
    +          0x20
    +          
    +            
    +              DMA_ENABLE
    +              1'b0: typical AES working mode, 1'b1: DMA-AES working mode.
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          BLOCK_MODE
    +          AES cipher block mode register
    +          0x94
    +          0x20
    +          
    +            
    +              BLOCK_MODE
    +              Those bits decides which block mode will be used. 0x0: ECB, 0x1: CBC, 0x2: OFB, 0x3: CTR, 0x4: CFB-8, 0x5: CFB-128, 0x6: GCM, 0x7: reserved.
    +              0
    +              3
    +              read-write
    +            
    +          
    +        
    +        
    +          BLOCK_NUM
    +          AES block number register
    +          0x98
    +          0x20
    +          
    +            
    +              BLOCK_NUM
    +              Those bits stores the number of Plaintext/ciphertext block.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          INC_SEL
    +          Standard incrementing function configure register
    +          0x9C
    +          0x20
    +          
    +            
    +              INC_SEL
    +              This bit decides the standard incrementing function. 0: INC32. 1: INC128.
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          AAD_BLOCK_NUM
    +          Additional Authential Data block number register
    +          0xA0
    +          0x20
    +          
    +            
    +              AAD_BLOCK_NUM
    +              Those bits stores the number of AAD block.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          REMAINDER_BIT_NUM
    +          AES remainder bit number register
    +          0xA4
    +          0x20
    +          
    +            
    +              REMAINDER_BIT_NUM
    +              Those bits stores the number of remainder bit.
    +              0
    +              7
    +              read-write
    +            
    +          
    +        
    +        
    +          CONTINUE
    +          AES continue register
    +          0xA8
    +          0x20
    +          
    +            
    +              CONTINUE
    +              Set this bit to continue GCM operation.
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          INT_CLEAR
    +          AES Interrupt clear register
    +          0xAC
    +          0x20
    +          
    +            
    +              INT_CLEAR
    +              Set this bit to clear the AES interrupt.
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          INT_ENA
    +          AES Interrupt enable register
    +          0xB0
    +          0x20
    +          
    +            
    +              INT_ENA
    +              Set this bit to enable interrupt that occurs when DMA-AES calculation is done.
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DATE
    +          AES version control register
    +          0xB4
    +          0x20
    +          0x20191210
    +          
    +            
    +              DATE
    +              This bits stores the version information of AES.
    +              0
    +              30
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_EXIT
    +          AES-DMA exit config
    +          0xB8
    +          0x20
    +          
    +            
    +              DMA_EXIT
    +              Set this register to leave calculation done stage. Recommend to use it after software finishes reading DMA's output buffer.
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +      
    +    
    +    
    +      APB_CTRL
    +      Advanced Peripheral Bus Controller
    +      APB_CTRL
    +      0x60026000
    +      
    +        0x0
    +        0xA0
    +        registers
    +      
    +      
    +        
    +          SYSCLK_CONF
    +          APB_CTRL_SYSCLK_CONF_REG
    +          0x0
    +          0x20
    +          0x00000001
    +          
    +            
    +              PRE_DIV_CNT
    +              reg_pre_div_cnt
    +              0
    +              10
    +              read-write
    +            
    +            
    +              CLK_320M_EN
    +              reg_clk_320m_en
    +              10
    +              1
    +              read-write
    +            
    +            
    +              CLK_EN
    +              reg_clk_en
    +              11
    +              1
    +              read-write
    +            
    +            
    +              RST_TICK_CNT
    +              reg_rst_tick_cnt
    +              12
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          TICK_CONF
    +          APB_CTRL_TICK_CONF_REG
    +          0x4
    +          0x20
    +          0x00010727
    +          
    +            
    +              XTAL_TICK_NUM
    +              reg_xtal_tick_num
    +              0
    +              8
    +              read-write
    +            
    +            
    +              CK8M_TICK_NUM
    +              reg_ck8m_tick_num
    +              8
    +              8
    +              read-write
    +            
    +            
    +              TICK_ENABLE
    +              reg_tick_enable
    +              16
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CLK_OUT_EN
    +          APB_CTRL_CLK_OUT_EN_REG
    +          0x8
    +          0x20
    +          0x000007FF
    +          
    +            
    +              CLK20_OEN
    +              reg_clk20_oen
    +              0
    +              1
    +              read-write
    +            
    +            
    +              CLK22_OEN
    +              reg_clk22_oen
    +              1
    +              1
    +              read-write
    +            
    +            
    +              CLK44_OEN
    +              reg_clk44_oen
    +              2
    +              1
    +              read-write
    +            
    +            
    +              CLK_BB_OEN
    +              reg_clk_bb_oen
    +              3
    +              1
    +              read-write
    +            
    +            
    +              CLK80_OEN
    +              reg_clk80_oen
    +              4
    +              1
    +              read-write
    +            
    +            
    +              CLK160_OEN
    +              reg_clk160_oen
    +              5
    +              1
    +              read-write
    +            
    +            
    +              CLK_320M_OEN
    +              reg_clk_320m_oen
    +              6
    +              1
    +              read-write
    +            
    +            
    +              CLK_ADC_INF_OEN
    +              reg_clk_adc_inf_oen
    +              7
    +              1
    +              read-write
    +            
    +            
    +              CLK_DAC_CPU_OEN
    +              reg_clk_dac_cpu_oen
    +              8
    +              1
    +              read-write
    +            
    +            
    +              CLK40X_BB_OEN
    +              reg_clk40x_bb_oen
    +              9
    +              1
    +              read-write
    +            
    +            
    +              CLK_XTAL_OEN
    +              reg_clk_xtal_oen
    +              10
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          WIFI_BB_CFG
    +          APB_CTRL_WIFI_BB_CFG_REG
    +          0xC
    +          0x20
    +          
    +            
    +              WIFI_BB_CFG
    +              reg_wifi_bb_cfg
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          WIFI_BB_CFG_2
    +          APB_CTRL_WIFI_BB_CFG_2_REG
    +          0x10
    +          0x20
    +          
    +            
    +              WIFI_BB_CFG_2
    +              reg_wifi_bb_cfg_2
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          WIFI_CLK_EN
    +          APB_CTRL_WIFI_CLK_EN_REG
    +          0x14
    +          0x20
    +          0xFFFCE030
    +          
    +            
    +              WIFI_CLK_EN
    +              reg_wifi_clk_en
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          WIFI_RST_EN
    +          APB_CTRL_WIFI_RST_EN_REG
    +          0x18
    +          0x20
    +          
    +            
    +              WIFI_RST
    +              reg_wifi_rst
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          HOST_INF_SEL
    +          APB_CTRL_HOST_INF_SEL_REG
    +          0x1C
    +          0x20
    +          
    +            
    +              PERI_IO_SWAP
    +              reg_peri_io_swap
    +              0
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          EXT_MEM_PMS_LOCK
    +          APB_CTRL_EXT_MEM_PMS_LOCK_REG
    +          0x20
    +          0x20
    +          
    +            
    +              EXT_MEM_PMS_LOCK
    +              reg_ext_mem_pms_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          FLASH_ACE0_ATTR
    +          APB_CTRL_FLASH_ACE0_ATTR_REG
    +          0x28
    +          0x20
    +          0x00000003
    +          
    +            
    +              FLASH_ACE0_ATTR
    +              reg_flash_ace0_attr
    +              0
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          FLASH_ACE1_ATTR
    +          APB_CTRL_FLASH_ACE1_ATTR_REG
    +          0x2C
    +          0x20
    +          0x00000003
    +          
    +            
    +              FLASH_ACE1_ATTR
    +              reg_flash_ace1_attr
    +              0
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          FLASH_ACE2_ATTR
    +          APB_CTRL_FLASH_ACE2_ATTR_REG
    +          0x30
    +          0x20
    +          0x00000003
    +          
    +            
    +              FLASH_ACE2_ATTR
    +              reg_flash_ace2_attr
    +              0
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          FLASH_ACE3_ATTR
    +          APB_CTRL_FLASH_ACE3_ATTR_REG
    +          0x34
    +          0x20
    +          0x00000003
    +          
    +            
    +              FLASH_ACE3_ATTR
    +              reg_flash_ace3_attr
    +              0
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          FLASH_ACE0_ADDR
    +          APB_CTRL_FLASH_ACE0_ADDR_REG
    +          0x38
    +          0x20
    +          
    +            
    +              S
    +              reg_flash_ace0_addr_s
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          FLASH_ACE1_ADDR
    +          APB_CTRL_FLASH_ACE1_ADDR_REG
    +          0x3C
    +          0x20
    +          0x00400000
    +          
    +            
    +              S
    +              reg_flash_ace1_addr_s
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          FLASH_ACE2_ADDR
    +          APB_CTRL_FLASH_ACE2_ADDR_REG
    +          0x40
    +          0x20
    +          0x00800000
    +          
    +            
    +              S
    +              reg_flash_ace2_addr_s
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          FLASH_ACE3_ADDR
    +          APB_CTRL_FLASH_ACE3_ADDR_REG
    +          0x44
    +          0x20
    +          0x00C00000
    +          
    +            
    +              S
    +              reg_flash_ace3_addr_s
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          FLASH_ACE0_SIZE
    +          APB_CTRL_FLASH_ACE0_SIZE_REG
    +          0x48
    +          0x20
    +          0x00000400
    +          
    +            
    +              FLASH_ACE0_SIZE
    +              reg_flash_ace0_size
    +              0
    +              13
    +              read-write
    +            
    +          
    +        
    +        
    +          FLASH_ACE1_SIZE
    +          APB_CTRL_FLASH_ACE1_SIZE_REG
    +          0x4C
    +          0x20
    +          0x00000400
    +          
    +            
    +              FLASH_ACE1_SIZE
    +              reg_flash_ace1_size
    +              0
    +              13
    +              read-write
    +            
    +          
    +        
    +        
    +          FLASH_ACE2_SIZE
    +          APB_CTRL_FLASH_ACE2_SIZE_REG
    +          0x50
    +          0x20
    +          0x00000400
    +          
    +            
    +              FLASH_ACE2_SIZE
    +              reg_flash_ace2_size
    +              0
    +              13
    +              read-write
    +            
    +          
    +        
    +        
    +          FLASH_ACE3_SIZE
    +          APB_CTRL_FLASH_ACE3_SIZE_REG
    +          0x54
    +          0x20
    +          0x00000400
    +          
    +            
    +              FLASH_ACE3_SIZE
    +              reg_flash_ace3_size
    +              0
    +              13
    +              read-write
    +            
    +          
    +        
    +        
    +          SPI_MEM_PMS_CTRL
    +          APB_CTRL_SPI_MEM_PMS_CTRL_REG
    +          0x88
    +          0x20
    +          
    +            
    +              SPI_MEM_REJECT_INT
    +              reg_spi_mem_reject_int
    +              0
    +              1
    +              read-only
    +            
    +            
    +              SPI_MEM_REJECT_CLR
    +              reg_spi_mem_reject_clr
    +              1
    +              1
    +              write-only
    +            
    +            
    +              SPI_MEM_REJECT_CDE
    +              reg_spi_mem_reject_cde
    +              2
    +              5
    +              read-only
    +            
    +          
    +        
    +        
    +          SPI_MEM_REJECT_ADDR
    +          APB_CTRL_SPI_MEM_REJECT_ADDR_REG
    +          0x8C
    +          0x20
    +          
    +            
    +              SPI_MEM_REJECT_ADDR
    +              reg_spi_mem_reject_addr
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          SDIO_CTRL
    +          APB_CTRL_SDIO_CTRL_REG
    +          0x90
    +          0x20
    +          
    +            
    +              SDIO_WIN_ACCESS_EN
    +              reg_sdio_win_access_en
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          REDCY_SIG0
    +          APB_CTRL_REDCY_SIG0_REG
    +          0x94
    +          0x20
    +          
    +            
    +              REDCY_SIG0
    +              reg_redcy_sig0
    +              0
    +              31
    +              read-write
    +            
    +            
    +              REDCY_ANDOR
    +              reg_redcy_andor
    +              31
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          REDCY_SIG1
    +          APB_CTRL_REDCY_SIG1_REG
    +          0x98
    +          0x20
    +          
    +            
    +              REDCY_SIG1
    +              reg_redcy_sig1
    +              0
    +              31
    +              read-write
    +            
    +            
    +              REDCY_NANDOR
    +              reg_redcy_nandor
    +              31
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          FRONT_END_MEM_PD
    +          APB_CTRL_FRONT_END_MEM_PD_REG
    +          0x9C
    +          0x20
    +          0x00000015
    +          
    +            
    +              AGC_MEM_FORCE_PU
    +              reg_agc_mem_force_pu
    +              0
    +              1
    +              read-write
    +            
    +            
    +              AGC_MEM_FORCE_PD
    +              reg_agc_mem_force_pd
    +              1
    +              1
    +              read-write
    +            
    +            
    +              PBUS_MEM_FORCE_PU
    +              reg_pbus_mem_force_pu
    +              2
    +              1
    +              read-write
    +            
    +            
    +              PBUS_MEM_FORCE_PD
    +              reg_pbus_mem_force_pd
    +              3
    +              1
    +              read-write
    +            
    +            
    +              DC_MEM_FORCE_PU
    +              reg_dc_mem_force_pu
    +              4
    +              1
    +              read-write
    +            
    +            
    +              DC_MEM_FORCE_PD
    +              reg_dc_mem_force_pd
    +              5
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          RETENTION_CTRL
    +          APB_CTRL_RETENTION_CTRL_REG
    +          0xA0
    +          0x20
    +          
    +            
    +              RETENTION_LINK_ADDR
    +              reg_retention_link_addr
    +              0
    +              27
    +              read-write
    +            
    +            
    +              NOBYPASS_CPU_ISO_RST
    +              reg_nobypass_cpu_iso_rst
    +              27
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CLKGATE_FORCE_ON
    +          APB_CTRL_CLKGATE_FORCE_ON_REG
    +          0xA4
    +          0x20
    +          0x0000003F
    +          
    +            
    +              ROM_CLKGATE_FORCE_ON
    +              reg_rom_clkgate_force_on
    +              0
    +              2
    +              read-write
    +            
    +            
    +              SRAM_CLKGATE_FORCE_ON
    +              reg_sram_clkgate_force_on
    +              2
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          MEM_POWER_DOWN
    +          APB_CTRL_MEM_POWER_DOWN_REG
    +          0xA8
    +          0x20
    +          
    +            
    +              ROM_POWER_DOWN
    +              reg_rom_power_down
    +              0
    +              2
    +              read-write
    +            
    +            
    +              SRAM_POWER_DOWN
    +              reg_sram_power_down
    +              2
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          MEM_POWER_UP
    +          APB_CTRL_MEM_POWER_UP_REG
    +          0xAC
    +          0x20
    +          0x0000003F
    +          
    +            
    +              ROM_POWER_UP
    +              reg_rom_power_up
    +              0
    +              2
    +              read-write
    +            
    +            
    +              SRAM_POWER_UP
    +              reg_sram_power_up
    +              2
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          RND_DATA
    +          APB_CTRL_RND_DATA_REG
    +          0xB0
    +          0x20
    +          
    +            
    +              RND_DATA
    +              reg_rnd_data
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          PERI_BACKUP_CONFIG
    +          APB_CTRL_PERI_BACKUP_CONFIG_REG
    +          0xB4
    +          0x20
    +          0x00006480
    +          
    +            
    +              PERI_BACKUP_FLOW_ERR
    +              reg_peri_backup_flow_err
    +              1
    +              2
    +              read-only
    +            
    +            
    +              PERI_BACKUP_BURST_LIMIT
    +              reg_peri_backup_burst_limit
    +              4
    +              5
    +              read-write
    +            
    +            
    +              PERI_BACKUP_TOUT_THRES
    +              reg_peri_backup_tout_thres
    +              9
    +              10
    +              read-write
    +            
    +            
    +              PERI_BACKUP_SIZE
    +              reg_peri_backup_size
    +              19
    +              10
    +              read-write
    +            
    +            
    +              PERI_BACKUP_START
    +              reg_peri_backup_start
    +              29
    +              1
    +              write-only
    +            
    +            
    +              PERI_BACKUP_TO_MEM
    +              reg_peri_backup_to_mem
    +              30
    +              1
    +              read-write
    +            
    +            
    +              PERI_BACKUP_ENA
    +              reg_peri_backup_ena
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          PERI_BACKUP_APB_ADDR
    +          APB_CTRL_PERI_BACKUP_APB_ADDR_REG
    +          0xB8
    +          0x20
    +          
    +            
    +              BACKUP_APB_START_ADDR
    +              reg_backup_apb_start_addr
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          PERI_BACKUP_MEM_ADDR
    +          APB_CTRL_PERI_BACKUP_MEM_ADDR_REG
    +          0xBC
    +          0x20
    +          
    +            
    +              BACKUP_MEM_START_ADDR
    +              reg_backup_mem_start_addr
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          PERI_BACKUP_INT_RAW
    +          APB_CTRL_PERI_BACKUP_INT_RAW_REG
    +          0xC0
    +          0x20
    +          
    +            
    +              PERI_BACKUP_DONE_INT_RAW
    +              reg_peri_backup_done_int_raw
    +              0
    +              1
    +              read-only
    +            
    +            
    +              PERI_BACKUP_ERR_INT_RAW
    +              reg_peri_backup_err_int_raw
    +              1
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          PERI_BACKUP_INT_ST
    +          APB_CTRL_PERI_BACKUP_INT_ST_REG
    +          0xC4
    +          0x20
    +          
    +            
    +              PERI_BACKUP_DONE_INT_ST
    +              reg_peri_backup_done_int_st
    +              0
    +              1
    +              read-only
    +            
    +            
    +              PERI_BACKUP_ERR_INT_ST
    +              reg_peri_backup_err_int_st
    +              1
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          PERI_BACKUP_INT_ENA
    +          APB_CTRL_PERI_BACKUP_INT_ENA_REG
    +          0xC8
    +          0x20
    +          
    +            
    +              PERI_BACKUP_DONE_INT_ENA
    +              reg_peri_backup_done_int_ena
    +              0
    +              1
    +              read-write
    +            
    +            
    +              PERI_BACKUP_ERR_INT_ENA
    +              reg_peri_backup_err_int_ena
    +              1
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          PERI_BACKUP_INT_CLR
    +          APB_CTRL_PERI_BACKUP_INT_CLR_REG
    +          0xD0
    +          0x20
    +          
    +            
    +              PERI_BACKUP_DONE_INT_CLR
    +              reg_peri_backup_done_int_clr
    +              0
    +              1
    +              write-only
    +            
    +            
    +              PERI_BACKUP_ERR_INT_CLR
    +              reg_peri_backup_err_int_clr
    +              1
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          DATE
    +          APB_CTRL_DATE_REG
    +          0x3FC
    +          0x20
    +          0x02007210
    +          
    +            
    +              DATE
    +              reg_dateVersion control
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      APB_SARADC
    +      Successive Approximation Register Analog to Digital Converter
    +      APB_SARADC
    +      0x60040000
    +      
    +        0x0
    +        0x68
    +        registers
    +      
    +      
    +        APB_ADC
    +        43
    +      
    +      
    +        
    +          CTRL
    +          digital saradc configure register
    +          0x0
    +          0x20
    +          0x40038240
    +          
    +            
    +              SARADC_START_FORCE
    +              select software enable saradc sample
    +              0
    +              1
    +              read-write
    +            
    +            
    +              SARADC_START
    +              software enable saradc sample
    +              1
    +              1
    +              read-write
    +            
    +            
    +              SARADC_SAR_CLK_GATED
    +              SAR clock gated
    +              6
    +              1
    +              read-write
    +            
    +            
    +              SARADC_SAR_CLK_DIV
    +              SAR clock divider
    +              7
    +              8
    +              read-write
    +            
    +            
    +              SARADC_SAR_PATT_LEN
    +              0 ~ 15 means length 1 ~ 16
    +              15
    +              3
    +              read-write
    +            
    +            
    +              SARADC_SAR_PATT_P_CLEAR
    +              clear the pointer of pattern table for DIG ADC1 CTRL
    +              23
    +              1
    +              read-write
    +            
    +            
    +              SARADC_XPD_SAR_FORCE
    +              force option to xpd sar blocks
    +              27
    +              2
    +              read-write
    +            
    +            
    +              SARADC_WAIT_ARB_CYCLE
    +              wait arbit signal stable after sar_done
    +              30
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          CTRL2
    +          digital saradc configure register
    +          0x4
    +          0x20
    +          0x0000A1FE
    +          
    +            
    +              SARADC_MEAS_NUM_LIMIT
    +              enable max meas num
    +              0
    +              1
    +              read-write
    +            
    +            
    +              SARADC_MAX_MEAS_NUM
    +              max conversion number
    +              1
    +              8
    +              read-write
    +            
    +            
    +              SARADC_SAR1_INV
    +              1: data to DIG ADC1 CTRL is inverted, otherwise not
    +              9
    +              1
    +              read-write
    +            
    +            
    +              SARADC_SAR2_INV
    +              1: data to DIG ADC2 CTRL is inverted, otherwise not
    +              10
    +              1
    +              read-write
    +            
    +            
    +              SARADC_TIMER_TARGET
    +              to set saradc timer target
    +              12
    +              12
    +              read-write
    +            
    +            
    +              SARADC_TIMER_EN
    +              to enable saradc timer trigger
    +              24
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          FILTER_CTRL1
    +          digital saradc configure register
    +          0x8
    +          0x20
    +          
    +            
    +              APB_SARADC_FILTER_FACTOR1
    +              Factor of saradc filter1
    +              26
    +              3
    +              read-write
    +            
    +            
    +              APB_SARADC_FILTER_FACTOR0
    +              Factor of saradc filter0
    +              29
    +              3
    +              read-write
    +            
    +          
    +        
    +        
    +          FSM_WAIT
    +          digital saradc configure register
    +          0xC
    +          0x20
    +          0x00FF0808
    +          
    +            
    +              SARADC_XPD_WAIT
    +              saradc_xpd_wait
    +              0
    +              8
    +              read-write
    +            
    +            
    +              SARADC_RSTB_WAIT
    +              saradc_rstb_wait
    +              8
    +              8
    +              read-write
    +            
    +            
    +              SARADC_STANDBY_WAIT
    +              saradc_standby_wait
    +              16
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          SAR1_STATUS
    +          digital saradc configure register
    +          0x10
    +          0x20
    +          
    +            
    +              SARADC_SAR1_STATUS
    +              saradc1 status about data and channel
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          SAR2_STATUS
    +          digital saradc configure register
    +          0x14
    +          0x20
    +          
    +            
    +              SARADC_SAR2_STATUS
    +              saradc2 status about data and channel
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          SAR_PATT_TAB1
    +          digital saradc configure register
    +          0x18
    +          0x20
    +          
    +            
    +              SARADC_SAR_PATT_TAB1
    +              item 0 ~ 3 for pattern table 1 (each item one byte)
    +              0
    +              24
    +              read-write
    +            
    +          
    +        
    +        
    +          SAR_PATT_TAB2
    +          digital saradc configure register
    +          0x1C
    +          0x20
    +          
    +            
    +              SARADC_SAR_PATT_TAB2
    +              Item 4 ~ 7 for pattern table 1 (each item one byte)
    +              0
    +              24
    +              read-write
    +            
    +          
    +        
    +        
    +          ONETIME_SAMPLE
    +          digital saradc configure register
    +          0x20
    +          0x20
    +          0x1A000000
    +          
    +            
    +              SARADC_ONETIME_ATTEN
    +              configure onetime atten
    +              23
    +              2
    +              read-write
    +            
    +            
    +              SARADC_ONETIME_CHANNEL
    +              configure onetime channel
    +              25
    +              4
    +              read-write
    +            
    +            
    +              SARADC_ONETIME_START
    +              trigger adc onetime sample
    +              29
    +              1
    +              read-write
    +            
    +            
    +              SARADC2_ONETIME_SAMPLE
    +              enable adc2 onetime sample
    +              30
    +              1
    +              read-write
    +            
    +            
    +              SARADC1_ONETIME_SAMPLE
    +              enable adc1 onetime sample
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          ARB_CTRL
    +          digital saradc configure register
    +          0x24
    +          0x20
    +          0x00000900
    +          
    +            
    +              ADC_ARB_APB_FORCE
    +              adc2 arbiter force to enableapb controller
    +              2
    +              1
    +              read-write
    +            
    +            
    +              ADC_ARB_RTC_FORCE
    +              adc2 arbiter force to enable rtc controller
    +              3
    +              1
    +              read-write
    +            
    +            
    +              ADC_ARB_WIFI_FORCE
    +              adc2 arbiter force to enable wifi controller
    +              4
    +              1
    +              read-write
    +            
    +            
    +              ADC_ARB_GRANT_FORCE
    +              adc2 arbiter force grant
    +              5
    +              1
    +              read-write
    +            
    +            
    +              ADC_ARB_APB_PRIORITY
    +              Set adc2 arbiterapb priority
    +              6
    +              2
    +              read-write
    +            
    +            
    +              ADC_ARB_RTC_PRIORITY
    +              Set adc2 arbiter rtc priority
    +              8
    +              2
    +              read-write
    +            
    +            
    +              ADC_ARB_WIFI_PRIORITY
    +              Set adc2 arbiter wifi priority
    +              10
    +              2
    +              read-write
    +            
    +            
    +              ADC_ARB_FIX_PRIORITY
    +              adc2 arbiter uses fixed priority
    +              12
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          FILTER_CTRL0
    +          digital saradc configure register
    +          0x28
    +          0x20
    +          0x03740000
    +          
    +            
    +              APB_SARADC_FILTER_CHANNEL1
    +              configure filter1 to adc channel
    +              18
    +              4
    +              read-write
    +            
    +            
    +              APB_SARADC_FILTER_CHANNEL0
    +              configure filter0 to adc channel
    +              22
    +              4
    +              read-write
    +            
    +            
    +              APB_SARADC_FILTER_RESET
    +              enable apb_adc1_filter
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          SAR1DATA_STATUS
    +          digital saradc configure register
    +          0x2C
    +          0x20
    +          
    +            
    +              APB_SARADC1_DATA
    +              saradc1 data
    +              0
    +              17
    +              read-only
    +            
    +          
    +        
    +        
    +          SAR2DATA_STATUS
    +          digital saradc configure register
    +          0x30
    +          0x20
    +          
    +            
    +              APB_SARADC2_DATA
    +              saradc2 data
    +              0
    +              17
    +              read-only
    +            
    +          
    +        
    +        
    +          THRES0_CTRL
    +          digital saradc configure register
    +          0x34
    +          0x20
    +          0x0003FFED
    +          
    +            
    +              APB_SARADC_THRES0_CHANNEL
    +              configure thres0 to adc channel
    +              0
    +              4
    +              read-write
    +            
    +            
    +              APB_SARADC_THRES0_HIGH
    +              saradc thres0 monitor thres
    +              5
    +              13
    +              read-write
    +            
    +            
    +              APB_SARADC_THRES0_LOW
    +              saradc thres0 monitor thres
    +              18
    +              13
    +              read-write
    +            
    +          
    +        
    +        
    +          THRES1_CTRL
    +          digital saradc configure register
    +          0x38
    +          0x20
    +          0x0003FFED
    +          
    +            
    +              APB_SARADC_THRES1_CHANNEL
    +              configure thres1 to adc channel
    +              0
    +              4
    +              read-write
    +            
    +            
    +              APB_SARADC_THRES1_HIGH
    +              saradc thres1 monitor thres
    +              5
    +              13
    +              read-write
    +            
    +            
    +              APB_SARADC_THRES1_LOW
    +              saradc thres1 monitor thres
    +              18
    +              13
    +              read-write
    +            
    +          
    +        
    +        
    +          THRES_CTRL
    +          digital saradc configure register
    +          0x3C
    +          0x20
    +          
    +            
    +              APB_SARADC_THRES_ALL_EN
    +              enable thres to all channel
    +              27
    +              1
    +              read-write
    +            
    +            
    +              APB_SARADC_THRES1_EN
    +              enable thres1
    +              30
    +              1
    +              read-write
    +            
    +            
    +              APB_SARADC_THRES0_EN
    +              enable thres0
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_ENA
    +          digital saradc int register
    +          0x40
    +          0x20
    +          
    +            
    +              APB_SARADC_THRES1_LOW_INT_ENA
    +              saradc thres1 low  interrupt enable
    +              26
    +              1
    +              read-write
    +            
    +            
    +              APB_SARADC_THRES0_LOW_INT_ENA
    +              saradc thres0 low interrupt enable
    +              27
    +              1
    +              read-write
    +            
    +            
    +              APB_SARADC_THRES1_HIGH_INT_ENA
    +              saradc thres1 high interrupt enable
    +              28
    +              1
    +              read-write
    +            
    +            
    +              APB_SARADC_THRES0_HIGH_INT_ENA
    +              saradc thres0 high interrupt enable
    +              29
    +              1
    +              read-write
    +            
    +            
    +              APB_SARADC2_DONE_INT_ENA
    +              saradc2 done interrupt enable
    +              30
    +              1
    +              read-write
    +            
    +            
    +              APB_SARADC1_DONE_INT_ENA
    +              saradc1 done interrupt enable
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_RAW
    +          digital saradc int register
    +          0x44
    +          0x20
    +          
    +            
    +              APB_SARADC_THRES1_LOW_INT_RAW
    +              saradc thres1 low  interrupt raw
    +              26
    +              1
    +              read-only
    +            
    +            
    +              APB_SARADC_THRES0_LOW_INT_RAW
    +              saradc thres0 low interrupt raw
    +              27
    +              1
    +              read-only
    +            
    +            
    +              APB_SARADC_THRES1_HIGH_INT_RAW
    +              saradc thres1 high interrupt raw
    +              28
    +              1
    +              read-only
    +            
    +            
    +              APB_SARADC_THRES0_HIGH_INT_RAW
    +              saradc thres0 high interrupt raw
    +              29
    +              1
    +              read-only
    +            
    +            
    +              APB_SARADC2_DONE_INT_RAW
    +              saradc2 done interrupt raw
    +              30
    +              1
    +              read-only
    +            
    +            
    +              APB_SARADC1_DONE_INT_RAW
    +              saradc1 done interrupt raw
    +              31
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_ST
    +          digital saradc int register
    +          0x48
    +          0x20
    +          
    +            
    +              APB_SARADC_THRES1_LOW_INT_ST
    +              saradc thres1 low  interrupt state
    +              26
    +              1
    +              read-only
    +            
    +            
    +              APB_SARADC_THRES0_LOW_INT_ST
    +              saradc thres0 low interrupt state
    +              27
    +              1
    +              read-only
    +            
    +            
    +              APB_SARADC_THRES1_HIGH_INT_ST
    +              saradc thres1 high interrupt state
    +              28
    +              1
    +              read-only
    +            
    +            
    +              APB_SARADC_THRES0_HIGH_INT_ST
    +              saradc thres0 high interrupt state
    +              29
    +              1
    +              read-only
    +            
    +            
    +              APB_SARADC2_DONE_INT_ST
    +              saradc2 done interrupt state
    +              30
    +              1
    +              read-only
    +            
    +            
    +              APB_SARADC1_DONE_INT_ST
    +              saradc1 done interrupt state
    +              31
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_CLR
    +          digital saradc int register
    +          0x4C
    +          0x20
    +          
    +            
    +              APB_SARADC_THRES1_LOW_INT_CLR
    +              saradc thres1 low  interrupt clear
    +              26
    +              1
    +              write-only
    +            
    +            
    +              APB_SARADC_THRES0_LOW_INT_CLR
    +              saradc thres0 low interrupt clear
    +              27
    +              1
    +              write-only
    +            
    +            
    +              APB_SARADC_THRES1_HIGH_INT_CLR
    +              saradc thres1 high interrupt clear
    +              28
    +              1
    +              write-only
    +            
    +            
    +              APB_SARADC_THRES0_HIGH_INT_CLR
    +              saradc thres0 high interrupt clear
    +              29
    +              1
    +              write-only
    +            
    +            
    +              APB_SARADC2_DONE_INT_CLR
    +              saradc2 done interrupt clear
    +              30
    +              1
    +              write-only
    +            
    +            
    +              APB_SARADC1_DONE_INT_CLR
    +              saradc1 done interrupt clear
    +              31
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          DMA_CONF
    +          digital saradc configure register
    +          0x50
    +          0x20
    +          0x000000FF
    +          
    +            
    +              APB_ADC_EOF_NUM
    +              the dma_in_suc_eof gen when sample cnt = spi_eof_num
    +              0
    +              16
    +              read-write
    +            
    +            
    +              APB_ADC_RESET_FSM
    +              reset_apb_adc_state
    +              30
    +              1
    +              read-write
    +            
    +            
    +              APB_ADC_TRANS
    +              enable apb_adc use spi_dma
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CLKM_CONF
    +          digital saradc configure register
    +          0x54
    +          0x20
    +          0x00000004
    +          
    +            
    +              CLKM_DIV_NUM
    +              Integral I2S clock divider value
    +              0
    +              8
    +              read-write
    +            
    +            
    +              CLKM_DIV_B
    +              Fractional clock divider numerator value
    +              8
    +              6
    +              read-write
    +            
    +            
    +              CLKM_DIV_A
    +              Fractional clock divider denominator value
    +              14
    +              6
    +              read-write
    +            
    +            
    +              CLK_EN
    +              reg clk en
    +              20
    +              1
    +              read-write
    +            
    +            
    +              CLK_SEL
    +              Set this bit to enable clk_apll
    +              21
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          APB_TSENS_CTRL
    +          digital tsens configure register
    +          0x58
    +          0x20
    +          0x00018000
    +          
    +            
    +              TSENS_OUT
    +              temperature sensor data out
    +              0
    +              8
    +              read-only
    +            
    +            
    +              TSENS_IN_INV
    +              invert temperature sensor data
    +              13
    +              1
    +              read-write
    +            
    +            
    +              TSENS_CLK_DIV
    +              temperature sensor clock divider
    +              14
    +              8
    +              read-write
    +            
    +            
    +              TSENS_PU
    +              temperature sensor power up
    +              22
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          TSENS_CTRL2
    +          digital tsens configure register
    +          0x5C
    +          0x20
    +          0x00004002
    +          
    +            
    +              TSENS_XPD_WAIT
    +              the time that power up tsens need wait
    +              0
    +              12
    +              read-write
    +            
    +            
    +              TSENS_XPD_FORCE
    +              force power up tsens
    +              12
    +              2
    +              read-write
    +            
    +            
    +              TSENS_CLK_INV
    +              inv tsens clk
    +              14
    +              1
    +              read-write
    +            
    +            
    +              TSENS_CLK_SEL
    +              tsens clk select
    +              15
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CALI
    +          digital saradc configure register
    +          0x60
    +          0x20
    +          0x00008000
    +          
    +            
    +              APB_SARADC_CALI_CFG
    +              saradc cali factor
    +              0
    +              17
    +              read-write
    +            
    +          
    +        
    +        
    +          CTRL_DATE
    +          version
    +          0x3FC
    +          0x20
    +          0x02007171
    +          
    +            
    +              DATE
    +              version
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      ASSIST_DEBUG
    +      Debug Assist
    +      ASSIST_DEBUG
    +      0x600CE000
    +      
    +        0x0
    +        0xA0
    +        registers
    +      
    +      
    +        ASSIST_DEBUG
    +        54
    +      
    +      
    +        
    +          C0RE_0_MONTR_ENA
    +          ASSIST_DEBUG_C0RE_0_MONTR_ENA_REG
    +          0x0
    +          0x20
    +          
    +            
    +              CORE_0_AREA_DRAM0_0_RD_ENA
    +              reg_core_0_area_dram0_0_rd_ena
    +              0
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_AREA_DRAM0_0_WR_ENA
    +              reg_core_0_area_dram0_0_wr_ena
    +              1
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_AREA_DRAM0_1_RD_ENA
    +              reg_core_0_area_dram0_1_rd_ena
    +              2
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_AREA_DRAM0_1_WR_ENA
    +              reg_core_0_area_dram0_1_wr_ena
    +              3
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_AREA_PIF_0_RD_ENA
    +              reg_core_0_area_pif_0_rd_ena
    +              4
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_AREA_PIF_0_WR_ENA
    +              reg_core_0_area_pif_0_wr_ena
    +              5
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_AREA_PIF_1_RD_ENA
    +              reg_core_0_area_pif_1_rd_ena
    +              6
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_AREA_PIF_1_WR_ENA
    +              reg_core_0_area_pif_1_wr_ena
    +              7
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_SP_SPILL_MIN_ENA
    +              reg_core_0_sp_spill_min_ena
    +              8
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_SP_SPILL_MAX_ENA
    +              reg_core_0_sp_spill_max_ena
    +              9
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_IRAM0_EXCEPTION_MONITOR_ENA
    +              reg_core_0_iram0_exception_monitor_ena
    +              10
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_DRAM0_EXCEPTION_MONITOR_ENA
    +              reg_core_0_dram0_exception_monitor_ena
    +              11
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_INTR_RAW
    +          ASSIST_DEBUG_CORE_0_INTR_RAW_REG
    +          0x4
    +          0x20
    +          
    +            
    +              CORE_0_AREA_DRAM0_0_RD_RAW
    +              reg_core_0_area_dram0_0_rd_raw
    +              0
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_AREA_DRAM0_0_WR_RAW
    +              reg_core_0_area_dram0_0_wr_raw
    +              1
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_AREA_DRAM0_1_RD_RAW
    +              reg_core_0_area_dram0_1_rd_raw
    +              2
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_AREA_DRAM0_1_WR_RAW
    +              reg_core_0_area_dram0_1_wr_raw
    +              3
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_AREA_PIF_0_RD_RAW
    +              reg_core_0_area_pif_0_rd_raw
    +              4
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_AREA_PIF_0_WR_RAW
    +              reg_core_0_area_pif_0_wr_raw
    +              5
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_AREA_PIF_1_RD_RAW
    +              reg_core_0_area_pif_1_rd_raw
    +              6
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_AREA_PIF_1_WR_RAW
    +              reg_core_0_area_pif_1_wr_raw
    +              7
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_SP_SPILL_MIN_RAW
    +              reg_core_0_sp_spill_min_raw
    +              8
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_SP_SPILL_MAX_RAW
    +              reg_core_0_sp_spill_max_raw
    +              9
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_IRAM0_EXCEPTION_MONITOR_RAW
    +              reg_core_0_iram0_exception_monitor_raw
    +              10
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_DRAM0_EXCEPTION_MONITOR_RAW
    +              reg_core_0_dram0_exception_monitor_raw
    +              11
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          CORE_0_INTR_ENA
    +          ASSIST_DEBUG_CORE_0_INTR_ENA_REG
    +          0x8
    +          0x20
    +          
    +            
    +              CORE_0_AREA_DRAM0_0_RD_INTR_ENA
    +              reg_core_0_area_dram0_0_rd_intr_ena
    +              0
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_AREA_DRAM0_0_WR_INTR_ENA
    +              reg_core_0_area_dram0_0_wr_intr_ena
    +              1
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_AREA_DRAM0_1_RD_INTR_ENA
    +              reg_core_0_area_dram0_1_rd_intr_ena
    +              2
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_AREA_DRAM0_1_WR_INTR_ENA
    +              reg_core_0_area_dram0_1_wr_intr_ena
    +              3
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_AREA_PIF_0_RD_INTR_ENA
    +              reg_core_0_area_pif_0_rd_intr_ena
    +              4
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_AREA_PIF_0_WR_INTR_ENA
    +              reg_core_0_area_pif_0_wr_intr_ena
    +              5
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_AREA_PIF_1_RD_INTR_ENA
    +              reg_core_0_area_pif_1_rd_intr_ena
    +              6
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_AREA_PIF_1_WR_INTR_ENA
    +              reg_core_0_area_pif_1_wr_intr_ena
    +              7
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_SP_SPILL_MIN_INTR_ENA
    +              reg_core_0_sp_spill_min_intr_ena
    +              8
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_SP_SPILL_MAX_INTR_ENA
    +              reg_core_0_sp_spill_max_intr_ena
    +              9
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_IRAM0_EXCEPTION_MONITOR_RLS
    +              reg_core_0_iram0_exception_monitor_ena
    +              10
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_DRAM0_EXCEPTION_MONITOR_RLS
    +              reg_core_0_dram0_exception_monitor_ena
    +              11
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_INTR_CLR
    +          ASSIST_DEBUG_CORE_0_INTR_CLR_REG
    +          0xC
    +          0x20
    +          
    +            
    +              CORE_0_AREA_DRAM0_0_RD_CLR
    +              reg_core_0_area_dram0_0_rd_clr
    +              0
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_AREA_DRAM0_0_WR_CLR
    +              reg_core_0_area_dram0_0_wr_clr
    +              1
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_AREA_DRAM0_1_RD_CLR
    +              reg_core_0_area_dram0_1_rd_clr
    +              2
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_AREA_DRAM0_1_WR_CLR
    +              reg_core_0_area_dram0_1_wr_clr
    +              3
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_AREA_PIF_0_RD_CLR
    +              reg_core_0_area_pif_0_rd_clr
    +              4
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_AREA_PIF_0_WR_CLR
    +              reg_core_0_area_pif_0_wr_clr
    +              5
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_AREA_PIF_1_RD_CLR
    +              reg_core_0_area_pif_1_rd_clr
    +              6
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_AREA_PIF_1_WR_CLR
    +              reg_core_0_area_pif_1_wr_clr
    +              7
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_SP_SPILL_MIN_CLR
    +              reg_core_0_sp_spill_min_clr
    +              8
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_SP_SPILL_MAX_CLR
    +              reg_core_0_sp_spill_max_clr
    +              9
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_IRAM0_EXCEPTION_MONITOR_CLR
    +              reg_core_0_iram0_exception_monitor_clr
    +              10
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_DRAM0_EXCEPTION_MONITOR_CLR
    +              reg_core_0_dram0_exception_monitor_clr
    +              11
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_AREA_DRAM0_0_MIN
    +          ASSIST_DEBUG_CORE_0_AREA_DRAM0_0_MIN_REG
    +          0x10
    +          0x20
    +          0xFFFFFFFF
    +          
    +            
    +              CORE_0_AREA_DRAM0_0_MIN
    +              reg_core_0_area_dram0_0_min
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_AREA_DRAM0_0_MAX
    +          ASSIST_DEBUG_CORE_0_AREA_DRAM0_0_MAX_REG
    +          0x14
    +          0x20
    +          
    +            
    +              CORE_0_AREA_DRAM0_0_MAX
    +              reg_core_0_area_dram0_0_max
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_AREA_DRAM0_1_MIN
    +          ASSIST_DEBUG_CORE_0_AREA_DRAM0_1_MIN_REG
    +          0x18
    +          0x20
    +          0xFFFFFFFF
    +          
    +            
    +              CORE_0_AREA_DRAM0_1_MIN
    +              reg_core_0_area_dram0_1_min
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_AREA_DRAM0_1_MAX
    +          ASSIST_DEBUG_CORE_0_AREA_DRAM0_1_MAX_REG
    +          0x1C
    +          0x20
    +          
    +            
    +              CORE_0_AREA_DRAM0_1_MAX
    +              reg_core_0_area_dram0_1_max
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_AREA_PIF_0_MIN
    +          ASSIST_DEBUG_CORE_0_AREA_PIF_0_MIN_REG
    +          0x20
    +          0x20
    +          0xFFFFFFFF
    +          
    +            
    +              CORE_0_AREA_PIF_0_MIN
    +              reg_core_0_area_pif_0_min
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_AREA_PIF_0_MAX
    +          ASSIST_DEBUG_CORE_0_AREA_PIF_0_MAX_REG
    +          0x24
    +          0x20
    +          
    +            
    +              CORE_0_AREA_PIF_0_MAX
    +              reg_core_0_area_pif_0_max
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_AREA_PIF_1_MIN
    +          ASSIST_DEBUG_CORE_0_AREA_PIF_1_MIN_REG
    +          0x28
    +          0x20
    +          0xFFFFFFFF
    +          
    +            
    +              CORE_0_AREA_PIF_1_MIN
    +              reg_core_0_area_pif_1_min
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_AREA_PIF_1_MAX
    +          ASSIST_DEBUG_CORE_0_AREA_PIF_1_MAX_REG
    +          0x2C
    +          0x20
    +          
    +            
    +              CORE_0_AREA_PIF_1_MAX
    +              reg_core_0_area_pif_1_max
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_AREA_PC
    +          ASSIST_DEBUG_CORE_0_AREA_PC_REG
    +          0x30
    +          0x20
    +          
    +            
    +              CORE_0_AREA_PC
    +              reg_core_0_area_pc
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          CORE_0_AREA_SP
    +          ASSIST_DEBUG_CORE_0_AREA_SP_REG
    +          0x34
    +          0x20
    +          
    +            
    +              CORE_0_AREA_SP
    +              reg_core_0_area_sp
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          CORE_0_SP_MIN
    +          ASSIST_DEBUG_CORE_0_SP_MIN_REG
    +          0x38
    +          0x20
    +          
    +            
    +              CORE_0_SP_MIN
    +              reg_core_0_sp_min
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_SP_MAX
    +          ASSIST_DEBUG_CORE_0_SP_MAX_REG
    +          0x3C
    +          0x20
    +          0xFFFFFFFF
    +          
    +            
    +              CORE_0_SP_MAX
    +              reg_core_0_sp_max
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_SP_PC
    +          ASSIST_DEBUG_CORE_0_SP_PC_REG
    +          0x40
    +          0x20
    +          
    +            
    +              CORE_0_SP_PC
    +              reg_core_0_sp_pc
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          CORE_0_RCD_EN
    +          ASSIST_DEBUG_CORE_0_RCD_EN_REG
    +          0x44
    +          0x20
    +          
    +            
    +              CORE_0_RCD_RECORDEN
    +              reg_core_0_rcd_recorden
    +              0
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_RCD_PDEBUGEN
    +              reg_core_0_rcd_pdebugen
    +              1
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_RCD_PDEBUGPC
    +          ASSIST_DEBUG_CORE_0_RCD_PDEBUGPC_REG
    +          0x48
    +          0x20
    +          
    +            
    +              CORE_0_RCD_PDEBUGPC
    +              reg_core_0_rcd_pdebugpc
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          CORE_0_RCD_PDEBUGSP
    +          ASSIST_DEBUG_CORE_0_RCD_PDEBUGSP_REG
    +          0x4C
    +          0x20
    +          
    +            
    +              CORE_0_RCD_PDEBUGSP
    +              reg_core_0_rcd_pdebugsp
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          CORE_0_IRAM0_EXCEPTION_MONITOR_0
    +          ASSIST_DEBUG_CORE_0_RCD_PDEBUGSP_REG
    +          0x50
    +          0x20
    +          
    +            
    +              CORE_0_IRAM0_RECORDING_ADDR_0
    +              reg_core_0_iram0_recording_addr_0
    +              0
    +              24
    +              read-only
    +            
    +            
    +              CORE_0_IRAM0_RECORDING_WR_0
    +              reg_core_0_iram0_recording_wr_0
    +              24
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_IRAM0_RECORDING_LOADSTORE_0
    +              reg_core_0_iram0_recording_loadstore_0
    +              25
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          CORE_0_IRAM0_EXCEPTION_MONITOR_1
    +          ASSIST_DEBUG_CORE_0_IRAM0_EXCEPTION_MONITOR_1_REG
    +          0x54
    +          0x20
    +          
    +            
    +              CORE_0_IRAM0_RECORDING_ADDR_1
    +              reg_core_0_iram0_recording_addr_1
    +              0
    +              24
    +              read-only
    +            
    +            
    +              CORE_0_IRAM0_RECORDING_WR_1
    +              reg_core_0_iram0_recording_wr_1
    +              24
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_IRAM0_RECORDING_LOADSTORE_1
    +              reg_core_0_iram0_recording_loadstore_1
    +              25
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          CORE_0_DRAM0_EXCEPTION_MONITOR_0
    +          ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_0_REG
    +          0x58
    +          0x20
    +          
    +            
    +              CORE_0_DRAM0_RECORDING_ADDR_0
    +              reg_core_0_dram0_recording_addr_0
    +              0
    +              24
    +              read-only
    +            
    +            
    +              CORE_0_DRAM0_RECORDING_WR_0
    +              reg_core_0_dram0_recording_wr_0
    +              24
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_DRAM0_RECORDING_BYTEEN_0
    +              reg_core_0_dram0_recording_byteen_0
    +              25
    +              4
    +              read-only
    +            
    +          
    +        
    +        
    +          CORE_0_DRAM0_EXCEPTION_MONITOR_1
    +          ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_1_REG
    +          0x5C
    +          0x20
    +          
    +            
    +              CORE_0_DRAM0_RECORDING_PC_0
    +              reg_core_0_dram0_recording_pc_0
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          CORE_0_DRAM0_EXCEPTION_MONITOR_2
    +          ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_1_REG
    +          0x60
    +          0x20
    +          
    +            
    +              CORE_0_DRAM0_RECORDING_ADDR_1
    +              reg_core_0_dram0_recording_addr_1
    +              0
    +              24
    +              read-only
    +            
    +            
    +              CORE_0_DRAM0_RECORDING_WR_1
    +              reg_core_0_dram0_recording_wr_1
    +              24
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_DRAM0_RECORDING_BYTEEN_1
    +              reg_core_0_dram0_recording_byteen_1
    +              25
    +              4
    +              read-only
    +            
    +          
    +        
    +        
    +          CORE_0_DRAM0_EXCEPTION_MONITOR_3
    +          ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_3_REG
    +          0x64
    +          0x20
    +          
    +            
    +              CORE_0_DRAM0_RECORDING_PC_1
    +              reg_core_0_dram0_recording_pc_1
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_0
    +          ASSIST_DEBUG_CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_0_REG
    +          0x68
    +          0x20
    +          
    +            
    +              CORE_X_IRAM0_DRAM0_LIMIT_CYCLE_0
    +              reg_core_x_iram0_dram0_limit_cycle_0
    +              0
    +              20
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_1
    +          ASSIST_DEBUG_CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_1_REG
    +          0x6C
    +          0x20
    +          
    +            
    +              CORE_X_IRAM0_DRAM0_LIMIT_CYCLE_1
    +              reg_core_x_iram0_dram0_limit_cycle_1
    +              0
    +              20
    +              read-write
    +            
    +          
    +        
    +        
    +          LOG_SETTING
    +          ASSIST_DEBUG_LOG_SETTING
    +          0x70
    +          0x20
    +          0x00000080
    +          
    +            
    +              LOG_ENA
    +              reg_log_ena
    +              0
    +              3
    +              read-write
    +            
    +            
    +              LOG_MODE
    +              reg_log_mode
    +              3
    +              4
    +              read-write
    +            
    +            
    +              LOG_MEM_LOOP_ENABLE
    +              reg_log_mem_loop_enable
    +              7
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          LOG_DATA_0
    +          ASSIST_DEBUG_LOG_DATA_0_REG
    +          0x74
    +          0x20
    +          
    +            
    +              LOG_DATA_0
    +              reg_log_data_0
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          LOG_DATA_MASK
    +          ASSIST_DEBUG_LOG_DATA_MASK_REG
    +          0x78
    +          0x20
    +          
    +            
    +              LOG_DATA_SIZE
    +              reg_log_data_size
    +              0
    +              16
    +              read-write
    +            
    +          
    +        
    +        
    +          LOG_MIN
    +          ASSIST_DEBUG_LOG_MIN_REG
    +          0x7C
    +          0x20
    +          
    +            
    +              LOG_MIN
    +              reg_log_min
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          LOG_MAX
    +          ASSIST_DEBUG_LOG_MAX_REG
    +          0x80
    +          0x20
    +          
    +            
    +              LOG_MAX
    +              reg_log_max
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          LOG_MEM_START
    +          ASSIST_DEBUG_LOG_MEM_START_REG
    +          0x84
    +          0x20
    +          
    +            
    +              LOG_MEM_START
    +              reg_log_mem_start
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          LOG_MEM_END
    +          ASSIST_DEBUG_LOG_MEM_END_REG
    +          0x88
    +          0x20
    +          
    +            
    +              LOG_MEM_END
    +              reg_log_mem_end
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          LOG_MEM_WRITING_ADDR
    +          ASSIST_DEBUG_LOG_MEM_WRITING_ADDR_REG
    +          0x8C
    +          0x20
    +          
    +            
    +              LOG_MEM_WRITING_ADDR
    +              reg_log_mem_writing_addr
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          LOG_MEM_FULL_FLAG
    +          ASSIST_DEBUG_LOG_MEM_FULL_FLAG_REG
    +          0x90
    +          0x20
    +          
    +            
    +              LOG_MEM_FULL_FLAG
    +              reg_log_mem_full_flag
    +              0
    +              1
    +              read-only
    +            
    +            
    +              CLR_LOG_MEM_FULL_FLAG
    +              reg_clr_log_mem_full_flag
    +              1
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          C0RE_0_LASTPC_BEFORE_EXCEPTION
    +          ASSIST_DEBUG_C0RE_0_LASTPC_BEFORE_EXCEPTION
    +          0x94
    +          0x20
    +          
    +            
    +              CORE_0_LASTPC_BEFORE_EXC
    +              reg_core_0_lastpc_before_exc
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          C0RE_0_DEBUG_MODE
    +          ASSIST_DEBUG_C0RE_0_DEBUG_MODE
    +          0x98
    +          0x20
    +          
    +            
    +              CORE_0_DEBUG_MODE
    +              reg_core_0_debug_mode
    +              0
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_DEBUG_MODULE_ACTIVE
    +              reg_core_0_debug_module_active
    +              1
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          DATE
    +          ASSIST_DEBUG_DATE_REG
    +          0x1FC
    +          0x20
    +          0x02008010
    +          
    +            
    +              ASSIST_DEBUG_DATE
    +              reg_assist_debug_date
    +              0
    +              28
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      DMA
    +      DMA (Direct Memory Access) Controller
    +      DMA
    +      0x6003F000
    +      
    +        0x0
    +        0x174
    +        registers
    +      
    +      
    +        DMA_CH0
    +        44
    +      
    +      
    +        DMA_CH1
    +        45
    +      
    +      
    +        DMA_CH2
    +        46
    +      
    +      
    +        
    +          INT_RAW_CH0
    +          DMA_INT_RAW_CH0_REG.
    +          0x0
    +          0x20
    +          
    +            
    +              IN_DONE_CH0_INT_RAW
    +              The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 0.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              IN_SUC_EOF_CH0_INT_RAW
    +              The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 0. For UHCI0, the raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received and no data error is detected for Rx channel 0.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              IN_ERR_EOF_CH0_INT_RAW
    +              The raw interrupt bit turns to high level when data error is detected only in the case that the peripheral is UHCI0 for Rx channel 0. For other peripherals, this raw interrupt is reserved.
    +              2
    +              1
    +              read-only
    +            
    +            
    +              OUT_DONE_CH0_INT_RAW
    +              The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been transmitted to peripherals for Tx channel 0.
    +              3
    +              1
    +              read-only
    +            
    +            
    +              OUT_EOF_CH0_INT_RAW
    +              The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been read from memory for Tx channel 0.
    +              4
    +              1
    +              read-only
    +            
    +            
    +              IN_DSCR_ERR_CH0_INT_RAW
    +              The raw interrupt bit turns to high level when detecting inlink descriptor error, including owner error, the second and third word error of inlink descriptor for Rx channel 0.
    +              5
    +              1
    +              read-only
    +            
    +            
    +              OUT_DSCR_ERR_CH0_INT_RAW
    +              The raw interrupt bit turns to high level when detecting outlink descriptor error, including owner error, the second and third word error of outlink descriptor for Tx channel 0.
    +              6
    +              1
    +              read-only
    +            
    +            
    +              IN_DSCR_EMPTY_CH0_INT_RAW
    +              The raw interrupt bit turns to high level when Rx buffer pointed by inlink is full and receiving data is not completed, but there is no more inlink for Rx channel 0.
    +              7
    +              1
    +              read-only
    +            
    +            
    +              OUT_TOTAL_EOF_CH0_INT_RAW
    +              The raw interrupt bit turns to high level when data corresponding a outlink (includes one link descriptor or few link descriptors) is transmitted out for Tx channel 0.
    +              8
    +              1
    +              read-only
    +            
    +            
    +              INFIFO_OVF_CH0_INT_RAW
    +              This raw interrupt bit turns to high level when level 1 fifo of Rx channel 0 is overflow.
    +              9
    +              1
    +              read-only
    +            
    +            
    +              INFIFO_UDF_CH0_INT_RAW
    +              This raw interrupt bit turns to high level when level 1 fifo of Rx channel 0 is underflow.
    +              10
    +              1
    +              read-only
    +            
    +            
    +              OUTFIFO_OVF_CH0_INT_RAW
    +              This raw interrupt bit turns to high level when level 1 fifo of Tx channel 0 is overflow.
    +              11
    +              1
    +              read-only
    +            
    +            
    +              OUTFIFO_UDF_CH0_INT_RAW
    +              This raw interrupt bit turns to high level when level 1 fifo of Tx channel 0 is underflow.
    +              12
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_ST_CH0
    +          DMA_INT_ST_CH0_REG.
    +          0x4
    +          0x20
    +          
    +            
    +              IN_DONE_CH0_INT_ST
    +              The raw interrupt status bit for the IN_DONE_CH_INT interrupt.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              IN_SUC_EOF_CH0_INT_ST
    +              The raw interrupt status bit for the IN_SUC_EOF_CH_INT interrupt.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              IN_ERR_EOF_CH0_INT_ST
    +              The raw interrupt status bit for the IN_ERR_EOF_CH_INT interrupt.
    +              2
    +              1
    +              read-only
    +            
    +            
    +              OUT_DONE_CH0_INT_ST
    +              The raw interrupt status bit for the OUT_DONE_CH_INT interrupt.
    +              3
    +              1
    +              read-only
    +            
    +            
    +              OUT_EOF_CH0_INT_ST
    +              The raw interrupt status bit for the OUT_EOF_CH_INT interrupt.
    +              4
    +              1
    +              read-only
    +            
    +            
    +              IN_DSCR_ERR_CH0_INT_ST
    +              The raw interrupt status bit for the IN_DSCR_ERR_CH_INT interrupt.
    +              5
    +              1
    +              read-only
    +            
    +            
    +              OUT_DSCR_ERR_CH0_INT_ST
    +              The raw interrupt status bit for the OUT_DSCR_ERR_CH_INT interrupt.
    +              6
    +              1
    +              read-only
    +            
    +            
    +              IN_DSCR_EMPTY_CH0_INT_ST
    +              The raw interrupt status bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    +              7
    +              1
    +              read-only
    +            
    +            
    +              OUT_TOTAL_EOF_CH0_INT_ST
    +              The raw interrupt status bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    +              8
    +              1
    +              read-only
    +            
    +            
    +              INFIFO_OVF_CH0_INT_ST
    +              The raw interrupt status bit for the INFIFO_OVF_L1_CH_INT interrupt.
    +              9
    +              1
    +              read-only
    +            
    +            
    +              INFIFO_UDF_CH0_INT_ST
    +              The raw interrupt status bit for the INFIFO_UDF_L1_CH_INT interrupt.
    +              10
    +              1
    +              read-only
    +            
    +            
    +              OUTFIFO_OVF_CH0_INT_ST
    +              The raw interrupt status bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    +              11
    +              1
    +              read-only
    +            
    +            
    +              OUTFIFO_UDF_CH0_INT_ST
    +              The raw interrupt status bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    +              12
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_ENA_CH0
    +          DMA_INT_ENA_CH0_REG.
    +          0x8
    +          0x20
    +          
    +            
    +              IN_DONE_CH0_INT_ENA
    +              The interrupt enable bit for the IN_DONE_CH_INT interrupt.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              IN_SUC_EOF_CH0_INT_ENA
    +              The interrupt enable bit for the IN_SUC_EOF_CH_INT interrupt.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              IN_ERR_EOF_CH0_INT_ENA
    +              The interrupt enable bit for the IN_ERR_EOF_CH_INT interrupt.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              OUT_DONE_CH0_INT_ENA
    +              The interrupt enable bit for the OUT_DONE_CH_INT interrupt.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              OUT_EOF_CH0_INT_ENA
    +              The interrupt enable bit for the OUT_EOF_CH_INT interrupt.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              IN_DSCR_ERR_CH0_INT_ENA
    +              The interrupt enable bit for the IN_DSCR_ERR_CH_INT interrupt.
    +              5
    +              1
    +              read-write
    +            
    +            
    +              OUT_DSCR_ERR_CH0_INT_ENA
    +              The interrupt enable bit for the OUT_DSCR_ERR_CH_INT interrupt.
    +              6
    +              1
    +              read-write
    +            
    +            
    +              IN_DSCR_EMPTY_CH0_INT_ENA
    +              The interrupt enable bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    +              7
    +              1
    +              read-write
    +            
    +            
    +              OUT_TOTAL_EOF_CH0_INT_ENA
    +              The interrupt enable bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    +              8
    +              1
    +              read-write
    +            
    +            
    +              INFIFO_OVF_CH0_INT_ENA
    +              The interrupt enable bit for the INFIFO_OVF_L1_CH_INT interrupt.
    +              9
    +              1
    +              read-write
    +            
    +            
    +              INFIFO_UDF_CH0_INT_ENA
    +              The interrupt enable bit for the INFIFO_UDF_L1_CH_INT interrupt.
    +              10
    +              1
    +              read-write
    +            
    +            
    +              OUTFIFO_OVF_CH0_INT_ENA
    +              The interrupt enable bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    +              11
    +              1
    +              read-write
    +            
    +            
    +              OUTFIFO_UDF_CH0_INT_ENA
    +              The interrupt enable bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    +              12
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_CLR_CH0
    +          DMA_INT_CLR_CH0_REG.
    +          0xC
    +          0x20
    +          
    +            
    +              IN_DONE_CH0_INT_CLR
    +              Set this bit to clear the IN_DONE_CH_INT interrupt.
    +              0
    +              1
    +              write-only
    +            
    +            
    +              IN_SUC_EOF_CH0_INT_CLR
    +              Set this bit to clear the IN_SUC_EOF_CH_INT interrupt.
    +              1
    +              1
    +              write-only
    +            
    +            
    +              IN_ERR_EOF_CH0_INT_CLR
    +              Set this bit to clear the IN_ERR_EOF_CH_INT interrupt.
    +              2
    +              1
    +              write-only
    +            
    +            
    +              OUT_DONE_CH0_INT_CLR
    +              Set this bit to clear the OUT_DONE_CH_INT interrupt.
    +              3
    +              1
    +              write-only
    +            
    +            
    +              OUT_EOF_CH0_INT_CLR
    +              Set this bit to clear the OUT_EOF_CH_INT interrupt.
    +              4
    +              1
    +              write-only
    +            
    +            
    +              IN_DSCR_ERR_CH0_INT_CLR
    +              Set this bit to clear the IN_DSCR_ERR_CH_INT interrupt.
    +              5
    +              1
    +              write-only
    +            
    +            
    +              OUT_DSCR_ERR_CH0_INT_CLR
    +              Set this bit to clear the OUT_DSCR_ERR_CH_INT interrupt.
    +              6
    +              1
    +              write-only
    +            
    +            
    +              IN_DSCR_EMPTY_CH0_INT_CLR
    +              Set this bit to clear the IN_DSCR_EMPTY_CH_INT interrupt.
    +              7
    +              1
    +              write-only
    +            
    +            
    +              OUT_TOTAL_EOF_CH0_INT_CLR
    +              Set this bit to clear the OUT_TOTAL_EOF_CH_INT interrupt.
    +              8
    +              1
    +              write-only
    +            
    +            
    +              INFIFO_OVF_CH0_INT_CLR
    +              Set this bit to clear the INFIFO_OVF_L1_CH_INT interrupt.
    +              9
    +              1
    +              write-only
    +            
    +            
    +              INFIFO_UDF_CH0_INT_CLR
    +              Set this bit to clear the INFIFO_UDF_L1_CH_INT interrupt.
    +              10
    +              1
    +              write-only
    +            
    +            
    +              OUTFIFO_OVF_CH0_INT_CLR
    +              Set this bit to clear the OUTFIFO_OVF_L1_CH_INT interrupt.
    +              11
    +              1
    +              write-only
    +            
    +            
    +              OUTFIFO_UDF_CH0_INT_CLR
    +              Set this bit to clear the OUTFIFO_UDF_L1_CH_INT interrupt.
    +              12
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          INT_RAW_CH1
    +          DMA_INT_RAW_CH1_REG.
    +          0x10
    +          0x20
    +          
    +            
    +              IN_DONE_CH1_INT_RAW
    +              The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 1.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              IN_SUC_EOF_CH1_INT_RAW
    +              The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 1. For UHCI0, the raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received and no data error is detected for Rx channel 1.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              IN_ERR_EOF_CH1_INT_RAW
    +              The raw interrupt bit turns to high level when data error is detected only in the case that the peripheral is UHCI0 for Rx channel 1. For other peripherals, this raw interrupt is reserved.
    +              2
    +              1
    +              read-only
    +            
    +            
    +              OUT_DONE_CH1_INT_RAW
    +              The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been transmitted to peripherals for Tx channel 1.
    +              3
    +              1
    +              read-only
    +            
    +            
    +              OUT_EOF_CH1_INT_RAW
    +              The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been read from memory for Tx channel 1.
    +              4
    +              1
    +              read-only
    +            
    +            
    +              IN_DSCR_ERR_CH1_INT_RAW
    +              The raw interrupt bit turns to high level when detecting inlink descriptor error, including owner error, the second and third word error of inlink descriptor for Rx channel 1.
    +              5
    +              1
    +              read-only
    +            
    +            
    +              OUT_DSCR_ERR_CH1_INT_RAW
    +              The raw interrupt bit turns to high level when detecting outlink descriptor error, including owner error, the second and third word error of outlink descriptor for Tx channel 1.
    +              6
    +              1
    +              read-only
    +            
    +            
    +              IN_DSCR_EMPTY_CH1_INT_RAW
    +              The raw interrupt bit turns to high level when Rx buffer pointed by inlink is full and receiving data is not completed, but there is no more inlink for Rx channel 1.
    +              7
    +              1
    +              read-only
    +            
    +            
    +              OUT_TOTAL_EOF_CH1_INT_RAW
    +              The raw interrupt bit turns to high level when data corresponding a outlink (includes one link descriptor or few link descriptors) is transmitted out for Tx channel 1.
    +              8
    +              1
    +              read-only
    +            
    +            
    +              INFIFO_OVF_CH1_INT_RAW
    +              This raw interrupt bit turns to high level when level 1 fifo of Rx channel 1 is overflow.
    +              9
    +              1
    +              read-only
    +            
    +            
    +              INFIFO_UDF_CH1_INT_RAW
    +              This raw interrupt bit turns to high level when level 1 fifo of Rx channel 1 is underflow.
    +              10
    +              1
    +              read-only
    +            
    +            
    +              OUTFIFO_OVF_CH1_INT_RAW
    +              This raw interrupt bit turns to high level when level 1 fifo of Tx channel 1 is overflow.
    +              11
    +              1
    +              read-only
    +            
    +            
    +              OUTFIFO_UDF_CH1_INT_RAW
    +              This raw interrupt bit turns to high level when level 1 fifo of Tx channel 1 is underflow.
    +              12
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_ST_CH1
    +          DMA_INT_ST_CH1_REG.
    +          0x14
    +          0x20
    +          
    +            
    +              IN_DONE_CH1_INT_ST
    +              The raw interrupt status bit for the IN_DONE_CH_INT interrupt.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              IN_SUC_EOF_CH1_INT_ST
    +              The raw interrupt status bit for the IN_SUC_EOF_CH_INT interrupt.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              IN_ERR_EOF_CH1_INT_ST
    +              The raw interrupt status bit for the IN_ERR_EOF_CH_INT interrupt.
    +              2
    +              1
    +              read-only
    +            
    +            
    +              OUT_DONE_CH1_INT_ST
    +              The raw interrupt status bit for the OUT_DONE_CH_INT interrupt.
    +              3
    +              1
    +              read-only
    +            
    +            
    +              OUT_EOF_CH1_INT_ST
    +              The raw interrupt status bit for the OUT_EOF_CH_INT interrupt.
    +              4
    +              1
    +              read-only
    +            
    +            
    +              IN_DSCR_ERR_CH1_INT_ST
    +              The raw interrupt status bit for the IN_DSCR_ERR_CH_INT interrupt.
    +              5
    +              1
    +              read-only
    +            
    +            
    +              OUT_DSCR_ERR_CH1_INT_ST
    +              The raw interrupt status bit for the OUT_DSCR_ERR_CH_INT interrupt.
    +              6
    +              1
    +              read-only
    +            
    +            
    +              IN_DSCR_EMPTY_CH1_INT_ST
    +              The raw interrupt status bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    +              7
    +              1
    +              read-only
    +            
    +            
    +              OUT_TOTAL_EOF_CH1_INT_ST
    +              The raw interrupt status bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    +              8
    +              1
    +              read-only
    +            
    +            
    +              INFIFO_OVF_CH1_INT_ST
    +              The raw interrupt status bit for the INFIFO_OVF_L1_CH_INT interrupt.
    +              9
    +              1
    +              read-only
    +            
    +            
    +              INFIFO_UDF_CH1_INT_ST
    +              The raw interrupt status bit for the INFIFO_UDF_L1_CH_INT interrupt.
    +              10
    +              1
    +              read-only
    +            
    +            
    +              OUTFIFO_OVF_CH1_INT_ST
    +              The raw interrupt status bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    +              11
    +              1
    +              read-only
    +            
    +            
    +              OUTFIFO_UDF_CH1_INT_ST
    +              The raw interrupt status bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    +              12
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_ENA_CH1
    +          DMA_INT_ENA_CH1_REG.
    +          0x18
    +          0x20
    +          
    +            
    +              IN_DONE_CH1_INT_ENA
    +              The interrupt enable bit for the IN_DONE_CH_INT interrupt.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              IN_SUC_EOF_CH1_INT_ENA
    +              The interrupt enable bit for the IN_SUC_EOF_CH_INT interrupt.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              IN_ERR_EOF_CH1_INT_ENA
    +              The interrupt enable bit for the IN_ERR_EOF_CH_INT interrupt.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              OUT_DONE_CH1_INT_ENA
    +              The interrupt enable bit for the OUT_DONE_CH_INT interrupt.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              OUT_EOF_CH1_INT_ENA
    +              The interrupt enable bit for the OUT_EOF_CH_INT interrupt.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              IN_DSCR_ERR_CH1_INT_ENA
    +              The interrupt enable bit for the IN_DSCR_ERR_CH_INT interrupt.
    +              5
    +              1
    +              read-write
    +            
    +            
    +              OUT_DSCR_ERR_CH1_INT_ENA
    +              The interrupt enable bit for the OUT_DSCR_ERR_CH_INT interrupt.
    +              6
    +              1
    +              read-write
    +            
    +            
    +              IN_DSCR_EMPTY_CH1_INT_ENA
    +              The interrupt enable bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    +              7
    +              1
    +              read-write
    +            
    +            
    +              OUT_TOTAL_EOF_CH1_INT_ENA
    +              The interrupt enable bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    +              8
    +              1
    +              read-write
    +            
    +            
    +              INFIFO_OVF_CH1_INT_ENA
    +              The interrupt enable bit for the INFIFO_OVF_L1_CH_INT interrupt.
    +              9
    +              1
    +              read-write
    +            
    +            
    +              INFIFO_UDF_CH1_INT_ENA
    +              The interrupt enable bit for the INFIFO_UDF_L1_CH_INT interrupt.
    +              10
    +              1
    +              read-write
    +            
    +            
    +              OUTFIFO_OVF_CH1_INT_ENA
    +              The interrupt enable bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    +              11
    +              1
    +              read-write
    +            
    +            
    +              OUTFIFO_UDF_CH1_INT_ENA
    +              The interrupt enable bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    +              12
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_CLR_CH1
    +          DMA_INT_CLR_CH1_REG.
    +          0x1C
    +          0x20
    +          
    +            
    +              IN_DONE_CH1_INT_CLR
    +              Set this bit to clear the IN_DONE_CH_INT interrupt.
    +              0
    +              1
    +              write-only
    +            
    +            
    +              IN_SUC_EOF_CH1_INT_CLR
    +              Set this bit to clear the IN_SUC_EOF_CH_INT interrupt.
    +              1
    +              1
    +              write-only
    +            
    +            
    +              IN_ERR_EOF_CH1_INT_CLR
    +              Set this bit to clear the IN_ERR_EOF_CH_INT interrupt.
    +              2
    +              1
    +              write-only
    +            
    +            
    +              OUT_DONE_CH1_INT_CLR
    +              Set this bit to clear the OUT_DONE_CH_INT interrupt.
    +              3
    +              1
    +              write-only
    +            
    +            
    +              OUT_EOF_CH1_INT_CLR
    +              Set this bit to clear the OUT_EOF_CH_INT interrupt.
    +              4
    +              1
    +              write-only
    +            
    +            
    +              IN_DSCR_ERR_CH1_INT_CLR
    +              Set this bit to clear the IN_DSCR_ERR_CH_INT interrupt.
    +              5
    +              1
    +              write-only
    +            
    +            
    +              OUT_DSCR_ERR_CH1_INT_CLR
    +              Set this bit to clear the OUT_DSCR_ERR_CH_INT interrupt.
    +              6
    +              1
    +              write-only
    +            
    +            
    +              IN_DSCR_EMPTY_CH1_INT_CLR
    +              Set this bit to clear the IN_DSCR_EMPTY_CH_INT interrupt.
    +              7
    +              1
    +              write-only
    +            
    +            
    +              OUT_TOTAL_EOF_CH1_INT_CLR
    +              Set this bit to clear the OUT_TOTAL_EOF_CH_INT interrupt.
    +              8
    +              1
    +              write-only
    +            
    +            
    +              INFIFO_OVF_CH1_INT_CLR
    +              Set this bit to clear the INFIFO_OVF_L1_CH_INT interrupt.
    +              9
    +              1
    +              write-only
    +            
    +            
    +              INFIFO_UDF_CH1_INT_CLR
    +              Set this bit to clear the INFIFO_UDF_L1_CH_INT interrupt.
    +              10
    +              1
    +              write-only
    +            
    +            
    +              OUTFIFO_OVF_CH1_INT_CLR
    +              Set this bit to clear the OUTFIFO_OVF_L1_CH_INT interrupt.
    +              11
    +              1
    +              write-only
    +            
    +            
    +              OUTFIFO_UDF_CH1_INT_CLR
    +              Set this bit to clear the OUTFIFO_UDF_L1_CH_INT interrupt.
    +              12
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          INT_RAW_CH2
    +          DMA_INT_RAW_CH2_REG.
    +          0x20
    +          0x20
    +          
    +            
    +              IN_DONE_CH2_INT_RAW
    +              The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 2.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              IN_SUC_EOF_CH2_INT_RAW
    +              The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 2. For UHCI0, the raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received and no data error is detected for Rx channel 2.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              IN_ERR_EOF_CH2_INT_RAW
    +              The raw interrupt bit turns to high level when data error is detected only in the case that the peripheral is UHCI0 for Rx channel 2. For other peripherals, this raw interrupt is reserved.
    +              2
    +              1
    +              read-only
    +            
    +            
    +              OUT_DONE_CH2_INT_RAW
    +              The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been transmitted to peripherals for Tx channel 2.
    +              3
    +              1
    +              read-only
    +            
    +            
    +              OUT_EOF_CH2_INT_RAW
    +              The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been read from memory for Tx channel 2.
    +              4
    +              1
    +              read-only
    +            
    +            
    +              IN_DSCR_ERR_CH2_INT_RAW
    +              The raw interrupt bit turns to high level when detecting inlink descriptor error, including owner error, the second and third word error of inlink descriptor for Rx channel 2.
    +              5
    +              1
    +              read-only
    +            
    +            
    +              OUT_DSCR_ERR_CH2_INT_RAW
    +              The raw interrupt bit turns to high level when detecting outlink descriptor error, including owner error, the second and third word error of outlink descriptor for Tx channel 2.
    +              6
    +              1
    +              read-only
    +            
    +            
    +              IN_DSCR_EMPTY_CH2_INT_RAW
    +              The raw interrupt bit turns to high level when Rx buffer pointed by inlink is full and receiving data is not completed, but there is no more inlink for Rx channel 2.
    +              7
    +              1
    +              read-only
    +            
    +            
    +              OUT_TOTAL_EOF_CH2_INT_RAW
    +              The raw interrupt bit turns to high level when data corresponding a outlink (includes one link descriptor or few link descriptors) is transmitted out for Tx channel 2.
    +              8
    +              1
    +              read-only
    +            
    +            
    +              INFIFO_OVF_CH2_INT_RAW
    +              This raw interrupt bit turns to high level when level 1 fifo of Rx channel 2 is overflow.
    +              9
    +              1
    +              read-only
    +            
    +            
    +              INFIFO_UDF_CH2_INT_RAW
    +              This raw interrupt bit turns to high level when level 1 fifo of Rx channel 2 is underflow.
    +              10
    +              1
    +              read-only
    +            
    +            
    +              OUTFIFO_OVF_CH2_INT_RAW
    +              This raw interrupt bit turns to high level when level 1 fifo of Tx channel 2 is overflow.
    +              11
    +              1
    +              read-only
    +            
    +            
    +              OUTFIFO_UDF_CH2_INT_RAW
    +              This raw interrupt bit turns to high level when level 1 fifo of Tx channel 2 is underflow.
    +              12
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_ST_CH2
    +          DMA_INT_ST_CH2_REG.
    +          0x24
    +          0x20
    +          
    +            
    +              IN_DONE_CH2_INT_ST
    +              The raw interrupt status bit for the IN_DONE_CH_INT interrupt.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              IN_SUC_EOF_CH2_INT_ST
    +              The raw interrupt status bit for the IN_SUC_EOF_CH_INT interrupt.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              IN_ERR_EOF_CH2_INT_ST
    +              The raw interrupt status bit for the IN_ERR_EOF_CH_INT interrupt.
    +              2
    +              1
    +              read-only
    +            
    +            
    +              OUT_DONE_CH2_INT_ST
    +              The raw interrupt status bit for the OUT_DONE_CH_INT interrupt.
    +              3
    +              1
    +              read-only
    +            
    +            
    +              OUT_EOF_CH2_INT_ST
    +              The raw interrupt status bit for the OUT_EOF_CH_INT interrupt.
    +              4
    +              1
    +              read-only
    +            
    +            
    +              IN_DSCR_ERR_CH2_INT_ST
    +              The raw interrupt status bit for the IN_DSCR_ERR_CH_INT interrupt.
    +              5
    +              1
    +              read-only
    +            
    +            
    +              OUT_DSCR_ERR_CH2_INT_ST
    +              The raw interrupt status bit for the OUT_DSCR_ERR_CH_INT interrupt.
    +              6
    +              1
    +              read-only
    +            
    +            
    +              IN_DSCR_EMPTY_CH2_INT_ST
    +              The raw interrupt status bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    +              7
    +              1
    +              read-only
    +            
    +            
    +              OUT_TOTAL_EOF_CH2_INT_ST
    +              The raw interrupt status bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    +              8
    +              1
    +              read-only
    +            
    +            
    +              INFIFO_OVF_CH2_INT_ST
    +              The raw interrupt status bit for the INFIFO_OVF_L1_CH_INT interrupt.
    +              9
    +              1
    +              read-only
    +            
    +            
    +              INFIFO_UDF_CH2_INT_ST
    +              The raw interrupt status bit for the INFIFO_UDF_L1_CH_INT interrupt.
    +              10
    +              1
    +              read-only
    +            
    +            
    +              OUTFIFO_OVF_CH2_INT_ST
    +              The raw interrupt status bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    +              11
    +              1
    +              read-only
    +            
    +            
    +              OUTFIFO_UDF_CH2_INT_ST
    +              The raw interrupt status bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    +              12
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_ENA_CH2
    +          DMA_INT_ENA_CH2_REG.
    +          0x28
    +          0x20
    +          
    +            
    +              IN_DONE_CH2_INT_ENA
    +              The interrupt enable bit for the IN_DONE_CH_INT interrupt.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              IN_SUC_EOF_CH2_INT_ENA
    +              The interrupt enable bit for the IN_SUC_EOF_CH_INT interrupt.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              IN_ERR_EOF_CH2_INT_ENA
    +              The interrupt enable bit for the IN_ERR_EOF_CH_INT interrupt.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              OUT_DONE_CH2_INT_ENA
    +              The interrupt enable bit for the OUT_DONE_CH_INT interrupt.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              OUT_EOF_CH2_INT_ENA
    +              The interrupt enable bit for the OUT_EOF_CH_INT interrupt.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              IN_DSCR_ERR_CH2_INT_ENA
    +              The interrupt enable bit for the IN_DSCR_ERR_CH_INT interrupt.
    +              5
    +              1
    +              read-write
    +            
    +            
    +              OUT_DSCR_ERR_CH2_INT_ENA
    +              The interrupt enable bit for the OUT_DSCR_ERR_CH_INT interrupt.
    +              6
    +              1
    +              read-write
    +            
    +            
    +              IN_DSCR_EMPTY_CH2_INT_ENA
    +              The interrupt enable bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    +              7
    +              1
    +              read-write
    +            
    +            
    +              OUT_TOTAL_EOF_CH2_INT_ENA
    +              The interrupt enable bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    +              8
    +              1
    +              read-write
    +            
    +            
    +              INFIFO_OVF_CH2_INT_ENA
    +              The interrupt enable bit for the INFIFO_OVF_L1_CH_INT interrupt.
    +              9
    +              1
    +              read-write
    +            
    +            
    +              INFIFO_UDF_CH2_INT_ENA
    +              The interrupt enable bit for the INFIFO_UDF_L1_CH_INT interrupt.
    +              10
    +              1
    +              read-write
    +            
    +            
    +              OUTFIFO_OVF_CH2_INT_ENA
    +              The interrupt enable bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    +              11
    +              1
    +              read-write
    +            
    +            
    +              OUTFIFO_UDF_CH2_INT_ENA
    +              The interrupt enable bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    +              12
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_CLR_CH2
    +          DMA_INT_CLR_CH2_REG.
    +          0x2C
    +          0x20
    +          
    +            
    +              IN_DONE_CH2_INT_CLR
    +              Set this bit to clear the IN_DONE_CH_INT interrupt.
    +              0
    +              1
    +              write-only
    +            
    +            
    +              IN_SUC_EOF_CH2_INT_CLR
    +              Set this bit to clear the IN_SUC_EOF_CH_INT interrupt.
    +              1
    +              1
    +              write-only
    +            
    +            
    +              IN_ERR_EOF_CH2_INT_CLR
    +              Set this bit to clear the IN_ERR_EOF_CH_INT interrupt.
    +              2
    +              1
    +              write-only
    +            
    +            
    +              OUT_DONE_CH2_INT_CLR
    +              Set this bit to clear the OUT_DONE_CH_INT interrupt.
    +              3
    +              1
    +              write-only
    +            
    +            
    +              OUT_EOF_CH2_INT_CLR
    +              Set this bit to clear the OUT_EOF_CH_INT interrupt.
    +              4
    +              1
    +              write-only
    +            
    +            
    +              IN_DSCR_ERR_CH2_INT_CLR
    +              Set this bit to clear the IN_DSCR_ERR_CH_INT interrupt.
    +              5
    +              1
    +              write-only
    +            
    +            
    +              OUT_DSCR_ERR_CH2_INT_CLR
    +              Set this bit to clear the OUT_DSCR_ERR_CH_INT interrupt.
    +              6
    +              1
    +              write-only
    +            
    +            
    +              IN_DSCR_EMPTY_CH2_INT_CLR
    +              Set this bit to clear the IN_DSCR_EMPTY_CH_INT interrupt.
    +              7
    +              1
    +              write-only
    +            
    +            
    +              OUT_TOTAL_EOF_CH2_INT_CLR
    +              Set this bit to clear the OUT_TOTAL_EOF_CH_INT interrupt.
    +              8
    +              1
    +              write-only
    +            
    +            
    +              INFIFO_OVF_CH2_INT_CLR
    +              Set this bit to clear the INFIFO_OVF_L1_CH_INT interrupt.
    +              9
    +              1
    +              write-only
    +            
    +            
    +              INFIFO_UDF_CH2_INT_CLR
    +              Set this bit to clear the INFIFO_UDF_L1_CH_INT interrupt.
    +              10
    +              1
    +              write-only
    +            
    +            
    +              OUTFIFO_OVF_CH2_INT_CLR
    +              Set this bit to clear the OUTFIFO_OVF_L1_CH_INT interrupt.
    +              11
    +              1
    +              write-only
    +            
    +            
    +              OUTFIFO_UDF_CH2_INT_CLR
    +              Set this bit to clear the OUTFIFO_UDF_L1_CH_INT interrupt.
    +              12
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          AHB_TEST
    +          DMA_AHB_TEST_REG.
    +          0x40
    +          0x20
    +          
    +            
    +              AHB_TESTMODE
    +              reserved
    +              0
    +              3
    +              read-write
    +            
    +            
    +              AHB_TESTADDR
    +              reserved
    +              4
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          MISC_CONF
    +          DMA_MISC_CONF_REG.
    +          0x44
    +          0x20
    +          
    +            
    +              AHBM_RST_INTER
    +              Set this bit, then clear this bit to reset the internal ahb FSM.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              ARB_PRI_DIS
    +              Set this bit to disable priority arbitration function.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              CLK_EN
    +              reg_clk_en
    +              3
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DATE
    +          DMA_DATE_REG.
    +          0x48
    +          0x20
    +          0x02008250
    +          
    +            
    +              DATE
    +              register version.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          IN_CONF0_CH0
    +          DMA_IN_CONF0_CH0_REG.
    +          0x70
    +          0x20
    +          
    +            
    +              IN_RST_CH0
    +              This bit is used to reset DMA channel 0 Rx FSM and Rx FIFO pointer.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              IN_LOOP_TEST_CH0
    +              reserved
    +              1
    +              1
    +              read-write
    +            
    +            
    +              INDSCR_BURST_EN_CH0
    +              Set this bit to 1 to enable INCR burst transfer for Rx channel 0 reading link descriptor when accessing internal SRAM.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              IN_DATA_BURST_EN_CH0
    +              Set this bit to 1 to enable INCR burst transfer for Rx channel 0 receiving data when accessing internal SRAM.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              MEM_TRANS_EN_CH0
    +              Set this bit 1 to enable automatic transmitting data from memory to memory via DMA.
    +              4
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          IN_CONF1_CH0
    +          DMA_IN_CONF1_CH0_REG.
    +          0x74
    +          0x20
    +          
    +            
    +              IN_CHECK_OWNER_CH0
    +              Set this bit to enable checking the owner attribute of the link descriptor.
    +              12
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INFIFO_STATUS_CH0
    +          DMA_INFIFO_STATUS_CH0_REG.
    +          0x78
    +          0x20
    +          0x07800003
    +          
    +            
    +              INFIFO_FULL_CH0
    +              L1 Rx FIFO full signal for Rx channel 0.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              INFIFO_EMPTY_CH0
    +              L1 Rx FIFO empty signal for Rx channel 0.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              INFIFO_CNT_CH0
    +              The register stores the byte number of the data in L1 Rx FIFO for Rx channel 0.
    +              2
    +              6
    +              read-only
    +            
    +            
    +              IN_REMAIN_UNDER_1B_CH0
    +              reserved
    +              23
    +              1
    +              read-only
    +            
    +            
    +              IN_REMAIN_UNDER_2B_CH0
    +              reserved
    +              24
    +              1
    +              read-only
    +            
    +            
    +              IN_REMAIN_UNDER_3B_CH0
    +              reserved
    +              25
    +              1
    +              read-only
    +            
    +            
    +              IN_REMAIN_UNDER_4B_CH0
    +              reserved
    +              26
    +              1
    +              read-only
    +            
    +            
    +              IN_BUF_HUNGRY_CH0
    +              reserved
    +              27
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_POP_CH0
    +          DMA_IN_POP_CH0_REG.
    +          0x7C
    +          0x20
    +          0x00000800
    +          
    +            
    +              INFIFO_RDATA_CH0
    +              This register stores the data popping from DMA FIFO.
    +              0
    +              12
    +              read-only
    +            
    +            
    +              INFIFO_POP_CH0
    +              Set this bit to pop data from DMA FIFO.
    +              12
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          IN_LINK_CH0
    +          DMA_IN_LINK_CH0_REG.
    +          0x80
    +          0x20
    +          0x01100000
    +          
    +            
    +              INLINK_ADDR_CH0
    +              This register stores the 20 least significant bits of the first inlink descriptor's address.
    +              0
    +              20
    +              read-write
    +            
    +            
    +              INLINK_AUTO_RET_CH0
    +              Set this bit to return to current inlink descriptor's address, when there are some errors in current receiving data.
    +              20
    +              1
    +              read-write
    +            
    +            
    +              INLINK_STOP_CH0
    +              Set this bit to stop dealing with the inlink descriptors.
    +              21
    +              1
    +              read-write
    +            
    +            
    +              INLINK_START_CH0
    +              Set this bit to start dealing with the inlink descriptors.
    +              22
    +              1
    +              read-write
    +            
    +            
    +              INLINK_RESTART_CH0
    +              Set this bit to mount a new inlink descriptor.
    +              23
    +              1
    +              read-write
    +            
    +            
    +              INLINK_PARK_CH0
    +              1: the inlink descriptor's FSM is in idle state.  0: the inlink descriptor's FSM is working.
    +              24
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_STATE_CH0
    +          DMA_IN_STATE_CH0_REG.
    +          0x84
    +          0x20
    +          
    +            
    +              INLINK_DSCR_ADDR_CH0
    +              This register stores the current inlink descriptor's address.
    +              0
    +              18
    +              read-only
    +            
    +            
    +              IN_DSCR_STATE_CH0
    +              reserved
    +              18
    +              2
    +              read-only
    +            
    +            
    +              IN_STATE_CH0
    +              reserved
    +              20
    +              3
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_SUC_EOF_DES_ADDR_CH0
    +          DMA_IN_SUC_EOF_DES_ADDR_CH0_REG.
    +          0x88
    +          0x20
    +          
    +            
    +              IN_SUC_EOF_DES_ADDR_CH0
    +              This register stores the address of the inlink descriptor when the EOF bit in this descriptor is 1.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_ERR_EOF_DES_ADDR_CH0
    +          DMA_IN_ERR_EOF_DES_ADDR_CH0_REG.
    +          0x8C
    +          0x20
    +          
    +            
    +              IN_ERR_EOF_DES_ADDR_CH0
    +              This register stores the address of the inlink descriptor when there are some errors in current receiving data. Only used when peripheral is UHCI0.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_DSCR_CH0
    +          DMA_IN_DSCR_CH0_REG.
    +          0x90
    +          0x20
    +          
    +            
    +              INLINK_DSCR_CH0
    +              The address of the current inlink descriptor x.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_DSCR_BF0_CH0
    +          DMA_IN_DSCR_BF0_CH0_REG.
    +          0x94
    +          0x20
    +          
    +            
    +              INLINK_DSCR_BF0_CH0
    +              The address of the last inlink descriptor x-1.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_DSCR_BF1_CH0
    +          DMA_IN_DSCR_BF1_CH0_REG.
    +          0x98
    +          0x20
    +          
    +            
    +              INLINK_DSCR_BF1_CH0
    +              The address of the second-to-last inlink descriptor x-2.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_PRI_CH0
    +          DMA_IN_PRI_CH0_REG.
    +          0x9C
    +          0x20
    +          
    +            
    +              RX_PRI_CH0
    +              The priority of Rx channel 0. The larger of the value, the higher of the priority.
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          IN_PERI_SEL_CH0
    +          DMA_IN_PERI_SEL_CH0_REG.
    +          0xA0
    +          0x20
    +          0x0000003F
    +          
    +            
    +              PERI_IN_SEL_CH0
    +              This register is used to select peripheral for Rx channel 0. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.
    +              0
    +              6
    +              read-write
    +            
    +          
    +        
    +        
    +          OUT_CONF0_CH0
    +          DMA_OUT_CONF0_CH0_REG.
    +          0xD0
    +          0x20
    +          0x00000008
    +          
    +            
    +              OUT_RST_CH0
    +              This bit is used to reset DMA channel 0 Tx FSM and Tx FIFO pointer.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              OUT_LOOP_TEST_CH0
    +              reserved
    +              1
    +              1
    +              read-write
    +            
    +            
    +              OUT_AUTO_WRBACK_CH0
    +              Set this bit to enable automatic outlink-writeback when all the data in tx buffer has been transmitted.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              OUT_EOF_MODE_CH0
    +              EOF flag generation mode when transmitting data. 1: EOF flag for Tx channel 0 is generated when data need to transmit has been popped from FIFO in DMA
    +              3
    +              1
    +              read-write
    +            
    +            
    +              OUTDSCR_BURST_EN_CH0
    +              Set this bit to 1 to enable INCR burst transfer for Tx channel 0 reading link descriptor when accessing internal SRAM.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              OUT_DATA_BURST_EN_CH0
    +              Set this bit to 1 to enable INCR burst transfer for Tx channel 0 transmitting data when accessing internal SRAM.
    +              5
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          OUT_CONF1_CH0
    +          DMA_OUT_CONF1_CH0_REG.
    +          0xD4
    +          0x20
    +          
    +            
    +              OUT_CHECK_OWNER_CH0
    +              Set this bit to enable checking the owner attribute of the link descriptor.
    +              12
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          OUTFIFO_STATUS_CH0
    +          DMA_OUTFIFO_STATUS_CH0_REG.
    +          0xD8
    +          0x20
    +          0x07800002
    +          
    +            
    +              OUTFIFO_FULL_CH0
    +              L1 Tx FIFO full signal for Tx channel 0.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              OUTFIFO_EMPTY_CH0
    +              L1 Tx FIFO empty signal for Tx channel 0.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              OUTFIFO_CNT_CH0
    +              The register stores the byte number of the data in L1 Tx FIFO for Tx channel 0.
    +              2
    +              6
    +              read-only
    +            
    +            
    +              OUT_REMAIN_UNDER_1B_CH0
    +              reserved
    +              23
    +              1
    +              read-only
    +            
    +            
    +              OUT_REMAIN_UNDER_2B_CH0
    +              reserved
    +              24
    +              1
    +              read-only
    +            
    +            
    +              OUT_REMAIN_UNDER_3B_CH0
    +              reserved
    +              25
    +              1
    +              read-only
    +            
    +            
    +              OUT_REMAIN_UNDER_4B_CH0
    +              reserved
    +              26
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_PUSH_CH0
    +          DMA_OUT_PUSH_CH0_REG.
    +          0xDC
    +          0x20
    +          
    +            
    +              OUTFIFO_WDATA_CH0
    +              This register stores the data that need to be pushed into DMA FIFO.
    +              0
    +              9
    +              read-write
    +            
    +            
    +              OUTFIFO_PUSH_CH0
    +              Set this bit to push data into DMA FIFO.
    +              9
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          OUT_LINK_CH0
    +          DMA_OUT_LINK_CH0_REG.
    +          0xE0
    +          0x20
    +          0x00800000
    +          
    +            
    +              OUTLINK_ADDR_CH0
    +              This register stores the 20 least significant bits of the first outlink descriptor's address.
    +              0
    +              20
    +              read-write
    +            
    +            
    +              OUTLINK_STOP_CH0
    +              Set this bit to stop dealing with the outlink descriptors.
    +              20
    +              1
    +              read-write
    +            
    +            
    +              OUTLINK_START_CH0
    +              Set this bit to start dealing with the outlink descriptors.
    +              21
    +              1
    +              read-write
    +            
    +            
    +              OUTLINK_RESTART_CH0
    +              Set this bit to restart a new outlink from the last address.
    +              22
    +              1
    +              read-write
    +            
    +            
    +              OUTLINK_PARK_CH0
    +              1: the outlink descriptor's FSM is in idle state.  0: the outlink descriptor's FSM is working.
    +              23
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_STATE_CH0
    +          DMA_OUT_STATE_CH0_REG.
    +          0xE4
    +          0x20
    +          
    +            
    +              OUTLINK_DSCR_ADDR_CH0
    +              This register stores the current outlink descriptor's address.
    +              0
    +              18
    +              read-only
    +            
    +            
    +              OUT_DSCR_STATE_CH0
    +              reserved
    +              18
    +              2
    +              read-only
    +            
    +            
    +              OUT_STATE_CH0
    +              reserved
    +              20
    +              3
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_EOF_DES_ADDR_CH0
    +          DMA_OUT_EOF_DES_ADDR_CH0_REG.
    +          0xE8
    +          0x20
    +          
    +            
    +              OUT_EOF_DES_ADDR_CH0
    +              This register stores the address of the outlink descriptor when the EOF bit in this descriptor is 1.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_EOF_BFR_DES_ADDR_CH0
    +          DMA_OUT_EOF_BFR_DES_ADDR_CH0_REG.
    +          0xEC
    +          0x20
    +          
    +            
    +              OUT_EOF_BFR_DES_ADDR_CH0
    +              This register stores the address of the outlink descriptor before the last outlink descriptor.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_DSCR_CH0
    +          DMA_OUT_DSCR_CH0_REG.
    +          0xF0
    +          0x20
    +          
    +            
    +              OUTLINK_DSCR_CH0
    +              The address of the current outlink descriptor y.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_DSCR_BF0_CH0
    +          DMA_OUT_DSCR_BF0_CH0_REG.
    +          0xF4
    +          0x20
    +          
    +            
    +              OUTLINK_DSCR_BF0_CH0
    +              The address of the last outlink descriptor y-1.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_DSCR_BF1_CH0
    +          DMA_OUT_DSCR_BF1_CH0_REG.
    +          0xF8
    +          0x20
    +          
    +            
    +              OUTLINK_DSCR_BF1_CH0
    +              The address of the second-to-last inlink descriptor x-2.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_PRI_CH0
    +          DMA_OUT_PRI_CH0_REG.
    +          0xFC
    +          0x20
    +          
    +            
    +              TX_PRI_CH0
    +              The priority of Tx channel 0. The larger of the value, the higher of the priority.
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          OUT_PERI_SEL_CH0
    +          DMA_OUT_PERI_SEL_CH0_REG.
    +          0x100
    +          0x20
    +          0x0000003F
    +          
    +            
    +              PERI_OUT_SEL_CH0
    +              This register is used to select peripheral for Tx channel 0. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.
    +              0
    +              6
    +              read-write
    +            
    +          
    +        
    +        
    +          IN_CONF0_CH1
    +          DMA_IN_CONF0_CH1_REG.
    +          0x130
    +          0x20
    +          
    +            
    +              IN_RST_CH1
    +              This bit is used to reset DMA channel 1 Rx FSM and Rx FIFO pointer.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              IN_LOOP_TEST_CH1
    +              reserved
    +              1
    +              1
    +              read-write
    +            
    +            
    +              INDSCR_BURST_EN_CH1
    +              Set this bit to 1 to enable INCR burst transfer for Rx channel 1 reading link descriptor when accessing internal SRAM.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              IN_DATA_BURST_EN_CH1
    +              Set this bit to 1 to enable INCR burst transfer for Rx channel 1 receiving data when accessing internal SRAM.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              MEM_TRANS_EN_CH1
    +              Set this bit 1 to enable automatic transmitting data from memory to memory via DMA.
    +              4
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          IN_CONF1_CH1
    +          DMA_IN_CONF1_CH1_REG.
    +          0x134
    +          0x20
    +          
    +            
    +              IN_CHECK_OWNER_CH1
    +              Set this bit to enable checking the owner attribute of the link descriptor.
    +              12
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INFIFO_STATUS_CH1
    +          DMA_INFIFO_STATUS_CH1_REG.
    +          0x138
    +          0x20
    +          0x07800003
    +          
    +            
    +              INFIFO_FULL_CH1
    +              L1 Rx FIFO full signal for Rx channel 1.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              INFIFO_EMPTY_CH1
    +              L1 Rx FIFO empty signal for Rx channel 1.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              INFIFO_CNT_CH1
    +              The register stores the byte number of the data in L1 Rx FIFO for Rx channel 1.
    +              2
    +              6
    +              read-only
    +            
    +            
    +              IN_REMAIN_UNDER_1B_CH1
    +              reserved
    +              23
    +              1
    +              read-only
    +            
    +            
    +              IN_REMAIN_UNDER_2B_CH1
    +              reserved
    +              24
    +              1
    +              read-only
    +            
    +            
    +              IN_REMAIN_UNDER_3B_CH1
    +              reserved
    +              25
    +              1
    +              read-only
    +            
    +            
    +              IN_REMAIN_UNDER_4B_CH1
    +              reserved
    +              26
    +              1
    +              read-only
    +            
    +            
    +              IN_BUF_HUNGRY_CH1
    +              reserved
    +              27
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_POP_CH1
    +          DMA_IN_POP_CH1_REG.
    +          0x13C
    +          0x20
    +          0x00000800
    +          
    +            
    +              INFIFO_RDATA_CH1
    +              This register stores the data popping from DMA FIFO.
    +              0
    +              12
    +              read-only
    +            
    +            
    +              INFIFO_POP_CH1
    +              Set this bit to pop data from DMA FIFO.
    +              12
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          IN_LINK_CH1
    +          DMA_IN_LINK_CH1_REG.
    +          0x140
    +          0x20
    +          0x01100000
    +          
    +            
    +              INLINK_ADDR_CH1
    +              This register stores the 20 least significant bits of the first inlink descriptor's address.
    +              0
    +              20
    +              read-write
    +            
    +            
    +              INLINK_AUTO_RET_CH1
    +              Set this bit to return to current inlink descriptor's address, when there are some errors in current receiving data.
    +              20
    +              1
    +              read-write
    +            
    +            
    +              INLINK_STOP_CH1
    +              Set this bit to stop dealing with the inlink descriptors.
    +              21
    +              1
    +              read-write
    +            
    +            
    +              INLINK_START_CH1
    +              Set this bit to start dealing with the inlink descriptors.
    +              22
    +              1
    +              read-write
    +            
    +            
    +              INLINK_RESTART_CH1
    +              Set this bit to mount a new inlink descriptor.
    +              23
    +              1
    +              read-write
    +            
    +            
    +              INLINK_PARK_CH1
    +              1: the inlink descriptor's FSM is in idle state.  0: the inlink descriptor's FSM is working.
    +              24
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_STATE_CH1
    +          DMA_IN_STATE_CH1_REG.
    +          0x144
    +          0x20
    +          
    +            
    +              INLINK_DSCR_ADDR_CH1
    +              This register stores the current inlink descriptor's address.
    +              0
    +              18
    +              read-only
    +            
    +            
    +              IN_DSCR_STATE_CH1
    +              reserved
    +              18
    +              2
    +              read-only
    +            
    +            
    +              IN_STATE_CH1
    +              reserved
    +              20
    +              3
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_SUC_EOF_DES_ADDR_CH1
    +          DMA_IN_SUC_EOF_DES_ADDR_CH1_REG.
    +          0x148
    +          0x20
    +          
    +            
    +              IN_SUC_EOF_DES_ADDR_CH1
    +              This register stores the address of the inlink descriptor when the EOF bit in this descriptor is 1.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_ERR_EOF_DES_ADDR_CH1
    +          DMA_IN_ERR_EOF_DES_ADDR_CH1_REG.
    +          0x14C
    +          0x20
    +          
    +            
    +              IN_ERR_EOF_DES_ADDR_CH1
    +              This register stores the address of the inlink descriptor when there are some errors in current receiving data. Only used when peripheral is UHCI0.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_DSCR_CH1
    +          DMA_IN_DSCR_CH1_REG.
    +          0x150
    +          0x20
    +          
    +            
    +              INLINK_DSCR_CH1
    +              The address of the current inlink descriptor x.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_DSCR_BF0_CH1
    +          DMA_IN_DSCR_BF0_CH1_REG.
    +          0x154
    +          0x20
    +          
    +            
    +              INLINK_DSCR_BF0_CH1
    +              The address of the last inlink descriptor x-1.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_DSCR_BF1_CH1
    +          DMA_IN_DSCR_BF1_CH1_REG.
    +          0x158
    +          0x20
    +          
    +            
    +              INLINK_DSCR_BF1_CH1
    +              The address of the second-to-last inlink descriptor x-2.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_PRI_CH1
    +          DMA_IN_PRI_CH1_REG.
    +          0x15C
    +          0x20
    +          
    +            
    +              RX_PRI_CH1
    +              The priority of Rx channel 1. The larger of the value, the higher of the priority.
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          IN_PERI_SEL_CH1
    +          DMA_IN_PERI_SEL_CH1_REG.
    +          0x160
    +          0x20
    +          0x0000003F
    +          
    +            
    +              PERI_IN_SEL_CH1
    +              This register is used to select peripheral for Rx channel 1. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.
    +              0
    +              6
    +              read-write
    +            
    +          
    +        
    +        
    +          OUT_CONF0_CH1
    +          DMA_OUT_CONF0_CH1_REG.
    +          0x190
    +          0x20
    +          0x00000008
    +          
    +            
    +              OUT_RST_CH1
    +              This bit is used to reset DMA channel 1 Tx FSM and Tx FIFO pointer.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              OUT_LOOP_TEST_CH1
    +              reserved
    +              1
    +              1
    +              read-write
    +            
    +            
    +              OUT_AUTO_WRBACK_CH1
    +              Set this bit to enable automatic outlink-writeback when all the data in tx buffer has been transmitted.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              OUT_EOF_MODE_CH1
    +              EOF flag generation mode when transmitting data. 1: EOF flag for Tx channel 1 is generated when data need to transmit has been popped from FIFO in DMA
    +              3
    +              1
    +              read-write
    +            
    +            
    +              OUTDSCR_BURST_EN_CH1
    +              Set this bit to 1 to enable INCR burst transfer for Tx channel 1 reading link descriptor when accessing internal SRAM.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              OUT_DATA_BURST_EN_CH1
    +              Set this bit to 1 to enable INCR burst transfer for Tx channel 1 transmitting data when accessing internal SRAM.
    +              5
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          OUT_CONF1_CH1
    +          DMA_OUT_CONF1_CH1_REG.
    +          0x194
    +          0x20
    +          
    +            
    +              OUT_CHECK_OWNER_CH1
    +              Set this bit to enable checking the owner attribute of the link descriptor.
    +              12
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          OUTFIFO_STATUS_CH1
    +          DMA_OUTFIFO_STATUS_CH1_REG.
    +          0x198
    +          0x20
    +          0x07800002
    +          
    +            
    +              OUTFIFO_FULL_CH1
    +              L1 Tx FIFO full signal for Tx channel 1.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              OUTFIFO_EMPTY_CH1
    +              L1 Tx FIFO empty signal for Tx channel 1.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              OUTFIFO_CNT_CH1
    +              The register stores the byte number of the data in L1 Tx FIFO for Tx channel 1.
    +              2
    +              6
    +              read-only
    +            
    +            
    +              OUT_REMAIN_UNDER_1B_CH1
    +              reserved
    +              23
    +              1
    +              read-only
    +            
    +            
    +              OUT_REMAIN_UNDER_2B_CH1
    +              reserved
    +              24
    +              1
    +              read-only
    +            
    +            
    +              OUT_REMAIN_UNDER_3B_CH1
    +              reserved
    +              25
    +              1
    +              read-only
    +            
    +            
    +              OUT_REMAIN_UNDER_4B_CH1
    +              reserved
    +              26
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_PUSH_CH1
    +          DMA_OUT_PUSH_CH1_REG.
    +          0x19C
    +          0x20
    +          
    +            
    +              OUTFIFO_WDATA_CH1
    +              This register stores the data that need to be pushed into DMA FIFO.
    +              0
    +              9
    +              read-write
    +            
    +            
    +              OUTFIFO_PUSH_CH1
    +              Set this bit to push data into DMA FIFO.
    +              9
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          OUT_LINK_CH1
    +          DMA_OUT_LINK_CH1_REG.
    +          0x1A0
    +          0x20
    +          0x00800000
    +          
    +            
    +              OUTLINK_ADDR_CH1
    +              This register stores the 20 least significant bits of the first outlink descriptor's address.
    +              0
    +              20
    +              read-write
    +            
    +            
    +              OUTLINK_STOP_CH1
    +              Set this bit to stop dealing with the outlink descriptors.
    +              20
    +              1
    +              read-write
    +            
    +            
    +              OUTLINK_START_CH1
    +              Set this bit to start dealing with the outlink descriptors.
    +              21
    +              1
    +              read-write
    +            
    +            
    +              OUTLINK_RESTART_CH1
    +              Set this bit to restart a new outlink from the last address.
    +              22
    +              1
    +              read-write
    +            
    +            
    +              OUTLINK_PARK_CH1
    +              1: the outlink descriptor's FSM is in idle state.  0: the outlink descriptor's FSM is working.
    +              23
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_STATE_CH1
    +          DMA_OUT_STATE_CH1_REG.
    +          0x1A4
    +          0x20
    +          
    +            
    +              OUTLINK_DSCR_ADDR_CH1
    +              This register stores the current outlink descriptor's address.
    +              0
    +              18
    +              read-only
    +            
    +            
    +              OUT_DSCR_STATE_CH1
    +              reserved
    +              18
    +              2
    +              read-only
    +            
    +            
    +              OUT_STATE_CH1
    +              reserved
    +              20
    +              3
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_EOF_DES_ADDR_CH1
    +          DMA_OUT_EOF_DES_ADDR_CH1_REG.
    +          0x1A8
    +          0x20
    +          
    +            
    +              OUT_EOF_DES_ADDR_CH1
    +              This register stores the address of the outlink descriptor when the EOF bit in this descriptor is 1.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_EOF_BFR_DES_ADDR_CH1
    +          DMA_OUT_EOF_BFR_DES_ADDR_CH1_REG.
    +          0x1AC
    +          0x20
    +          
    +            
    +              OUT_EOF_BFR_DES_ADDR_CH1
    +              This register stores the address of the outlink descriptor before the last outlink descriptor.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_DSCR_CH1
    +          DMA_OUT_DSCR_CH1_REG.
    +          0x1B0
    +          0x20
    +          
    +            
    +              OUTLINK_DSCR_CH1
    +              The address of the current outlink descriptor y.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_DSCR_BF0_CH1
    +          DMA_OUT_DSCR_BF0_CH1_REG.
    +          0x1B4
    +          0x20
    +          
    +            
    +              OUTLINK_DSCR_BF0_CH1
    +              The address of the last outlink descriptor y-1.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_DSCR_BF1_CH1
    +          DMA_OUT_DSCR_BF1_CH1_REG.
    +          0x1B8
    +          0x20
    +          
    +            
    +              OUTLINK_DSCR_BF1_CH1
    +              The address of the second-to-last inlink descriptor x-2.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_PRI_CH1
    +          DMA_OUT_PRI_CH1_REG.
    +          0x1BC
    +          0x20
    +          
    +            
    +              TX_PRI_CH1
    +              The priority of Tx channel 1. The larger of the value, the higher of the priority.
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          OUT_PERI_SEL_CH1
    +          DMA_OUT_PERI_SEL_CH1_REG.
    +          0x1C0
    +          0x20
    +          0x0000003F
    +          
    +            
    +              PERI_OUT_SEL_CH1
    +              This register is used to select peripheral for Tx channel 1. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.
    +              0
    +              6
    +              read-write
    +            
    +          
    +        
    +        
    +          IN_CONF0_CH2
    +          DMA_IN_CONF0_CH2_REG.
    +          0x1F0
    +          0x20
    +          
    +            
    +              IN_RST_CH2
    +              This bit is used to reset DMA channel 2 Rx FSM and Rx FIFO pointer.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              IN_LOOP_TEST_CH2
    +              reserved
    +              1
    +              1
    +              read-write
    +            
    +            
    +              INDSCR_BURST_EN_CH2
    +              Set this bit to 1 to enable INCR burst transfer for Rx channel 2 reading link descriptor when accessing internal SRAM.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              IN_DATA_BURST_EN_CH2
    +              Set this bit to 1 to enable INCR burst transfer for Rx channel 2 receiving data when accessing internal SRAM.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              MEM_TRANS_EN_CH2
    +              Set this bit 1 to enable automatic transmitting data from memory to memory via DMA.
    +              4
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          IN_CONF1_CH2
    +          DMA_IN_CONF1_CH2_REG.
    +          0x1F4
    +          0x20
    +          
    +            
    +              IN_CHECK_OWNER_CH2
    +              Set this bit to enable checking the owner attribute of the link descriptor.
    +              12
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INFIFO_STATUS_CH2
    +          DMA_INFIFO_STATUS_CH2_REG.
    +          0x1F8
    +          0x20
    +          0x07800003
    +          
    +            
    +              INFIFO_FULL_CH2
    +              L1 Rx FIFO full signal for Rx channel 2.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              INFIFO_EMPTY_CH2
    +              L1 Rx FIFO empty signal for Rx channel 2.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              INFIFO_CNT_CH2
    +              The register stores the byte number of the data in L1 Rx FIFO for Rx channel 2.
    +              2
    +              6
    +              read-only
    +            
    +            
    +              IN_REMAIN_UNDER_1B_CH2
    +              reserved
    +              23
    +              1
    +              read-only
    +            
    +            
    +              IN_REMAIN_UNDER_2B_CH2
    +              reserved
    +              24
    +              1
    +              read-only
    +            
    +            
    +              IN_REMAIN_UNDER_3B_CH2
    +              reserved
    +              25
    +              1
    +              read-only
    +            
    +            
    +              IN_REMAIN_UNDER_4B_CH2
    +              reserved
    +              26
    +              1
    +              read-only
    +            
    +            
    +              IN_BUF_HUNGRY_CH2
    +              reserved
    +              27
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_POP_CH2
    +          DMA_IN_POP_CH2_REG.
    +          0x1FC
    +          0x20
    +          0x00000800
    +          
    +            
    +              INFIFO_RDATA_CH2
    +              This register stores the data popping from DMA FIFO.
    +              0
    +              12
    +              read-only
    +            
    +            
    +              INFIFO_POP_CH2
    +              Set this bit to pop data from DMA FIFO.
    +              12
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          IN_LINK_CH2
    +          DMA_IN_LINK_CH2_REG.
    +          0x200
    +          0x20
    +          0x01100000
    +          
    +            
    +              INLINK_ADDR_CH2
    +              This register stores the 20 least significant bits of the first inlink descriptor's address.
    +              0
    +              20
    +              read-write
    +            
    +            
    +              INLINK_AUTO_RET_CH2
    +              Set this bit to return to current inlink descriptor's address, when there are some errors in current receiving data.
    +              20
    +              1
    +              read-write
    +            
    +            
    +              INLINK_STOP_CH2
    +              Set this bit to stop dealing with the inlink descriptors.
    +              21
    +              1
    +              read-write
    +            
    +            
    +              INLINK_START_CH2
    +              Set this bit to start dealing with the inlink descriptors.
    +              22
    +              1
    +              read-write
    +            
    +            
    +              INLINK_RESTART_CH2
    +              Set this bit to mount a new inlink descriptor.
    +              23
    +              1
    +              read-write
    +            
    +            
    +              INLINK_PARK_CH2
    +              1: the inlink descriptor's FSM is in idle state.  0: the inlink descriptor's FSM is working.
    +              24
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_STATE_CH2
    +          DMA_IN_STATE_CH2_REG.
    +          0x204
    +          0x20
    +          
    +            
    +              INLINK_DSCR_ADDR_CH2
    +              This register stores the current inlink descriptor's address.
    +              0
    +              18
    +              read-only
    +            
    +            
    +              IN_DSCR_STATE_CH2
    +              reserved
    +              18
    +              2
    +              read-only
    +            
    +            
    +              IN_STATE_CH2
    +              reserved
    +              20
    +              3
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_SUC_EOF_DES_ADDR_CH2
    +          DMA_IN_SUC_EOF_DES_ADDR_CH2_REG.
    +          0x208
    +          0x20
    +          
    +            
    +              IN_SUC_EOF_DES_ADDR_CH2
    +              This register stores the address of the inlink descriptor when the EOF bit in this descriptor is 1.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_ERR_EOF_DES_ADDR_CH2
    +          DMA_IN_ERR_EOF_DES_ADDR_CH2_REG.
    +          0x20C
    +          0x20
    +          
    +            
    +              IN_ERR_EOF_DES_ADDR_CH2
    +              This register stores the address of the inlink descriptor when there are some errors in current receiving data. Only used when peripheral is UHCI0.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_DSCR_CH2
    +          DMA_IN_DSCR_CH2_REG.
    +          0x210
    +          0x20
    +          
    +            
    +              INLINK_DSCR_CH2
    +              The address of the current inlink descriptor x.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_DSCR_BF0_CH2
    +          DMA_IN_DSCR_BF0_CH2_REG.
    +          0x214
    +          0x20
    +          
    +            
    +              INLINK_DSCR_BF0_CH2
    +              The address of the last inlink descriptor x-1.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_DSCR_BF1_CH2
    +          DMA_IN_DSCR_BF1_CH2_REG.
    +          0x218
    +          0x20
    +          
    +            
    +              INLINK_DSCR_BF1_CH2
    +              The address of the second-to-last inlink descriptor x-2.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_PRI_CH2
    +          DMA_IN_PRI_CH2_REG.
    +          0x21C
    +          0x20
    +          
    +            
    +              RX_PRI_CH2
    +              The priority of Rx channel 2. The larger of the value, the higher of the priority.
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          IN_PERI_SEL_CH2
    +          DMA_IN_PERI_SEL_CH2_REG.
    +          0x220
    +          0x20
    +          0x0000003F
    +          
    +            
    +              PERI_IN_SEL_CH2
    +              This register is used to select peripheral for Rx channel 2. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.
    +              0
    +              6
    +              read-write
    +            
    +          
    +        
    +        
    +          OUT_CONF0_CH2
    +          DMA_OUT_CONF0_CH2_REG.
    +          0x250
    +          0x20
    +          0x00000008
    +          
    +            
    +              OUT_RST_CH2
    +              This bit is used to reset DMA channel 2 Tx FSM and Tx FIFO pointer.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              OUT_LOOP_TEST_CH2
    +              reserved
    +              1
    +              1
    +              read-write
    +            
    +            
    +              OUT_AUTO_WRBACK_CH2
    +              Set this bit to enable automatic outlink-writeback when all the data in tx buffer has been transmitted.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              OUT_EOF_MODE_CH2
    +              EOF flag generation mode when transmitting data. 1: EOF flag for Tx channel 2 is generated when data need to transmit has been popped from FIFO in DMA
    +              3
    +              1
    +              read-write
    +            
    +            
    +              OUTDSCR_BURST_EN_CH2
    +              Set this bit to 1 to enable INCR burst transfer for Tx channel 2 reading link descriptor when accessing internal SRAM.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              OUT_DATA_BURST_EN_CH2
    +              Set this bit to 1 to enable INCR burst transfer for Tx channel 2 transmitting data when accessing internal SRAM.
    +              5
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          OUT_CONF1_CH2
    +          DMA_OUT_CONF1_CH2_REG.
    +          0x254
    +          0x20
    +          
    +            
    +              OUT_CHECK_OWNER_CH2
    +              Set this bit to enable checking the owner attribute of the link descriptor.
    +              12
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          OUTFIFO_STATUS_CH2
    +          DMA_OUTFIFO_STATUS_CH2_REG.
    +          0x258
    +          0x20
    +          0x07800002
    +          
    +            
    +              OUTFIFO_FULL_CH2
    +              L1 Tx FIFO full signal for Tx channel 2.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              OUTFIFO_EMPTY_CH2
    +              L1 Tx FIFO empty signal for Tx channel 2.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              OUTFIFO_CNT_CH2
    +              The register stores the byte number of the data in L1 Tx FIFO for Tx channel 2.
    +              2
    +              6
    +              read-only
    +            
    +            
    +              OUT_REMAIN_UNDER_1B_CH2
    +              reserved
    +              23
    +              1
    +              read-only
    +            
    +            
    +              OUT_REMAIN_UNDER_2B_CH2
    +              reserved
    +              24
    +              1
    +              read-only
    +            
    +            
    +              OUT_REMAIN_UNDER_3B_CH2
    +              reserved
    +              25
    +              1
    +              read-only
    +            
    +            
    +              OUT_REMAIN_UNDER_4B_CH2
    +              reserved
    +              26
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_PUSH_CH2
    +          DMA_OUT_PUSH_CH2_REG.
    +          0x25C
    +          0x20
    +          
    +            
    +              OUTFIFO_WDATA_CH2
    +              This register stores the data that need to be pushed into DMA FIFO.
    +              0
    +              9
    +              read-write
    +            
    +            
    +              OUTFIFO_PUSH_CH2
    +              Set this bit to push data into DMA FIFO.
    +              9
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          OUT_LINK_CH2
    +          DMA_OUT_LINK_CH2_REG.
    +          0x260
    +          0x20
    +          0x00800000
    +          
    +            
    +              OUTLINK_ADDR_CH2
    +              This register stores the 20 least significant bits of the first outlink descriptor's address.
    +              0
    +              20
    +              read-write
    +            
    +            
    +              OUTLINK_STOP_CH2
    +              Set this bit to stop dealing with the outlink descriptors.
    +              20
    +              1
    +              read-write
    +            
    +            
    +              OUTLINK_START_CH2
    +              Set this bit to start dealing with the outlink descriptors.
    +              21
    +              1
    +              read-write
    +            
    +            
    +              OUTLINK_RESTART_CH2
    +              Set this bit to restart a new outlink from the last address.
    +              22
    +              1
    +              read-write
    +            
    +            
    +              OUTLINK_PARK_CH2
    +              1: the outlink descriptor's FSM is in idle state.  0: the outlink descriptor's FSM is working.
    +              23
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_STATE_CH2
    +          DMA_OUT_STATE_CH2_REG.
    +          0x264
    +          0x20
    +          
    +            
    +              OUTLINK_DSCR_ADDR_CH2
    +              This register stores the current outlink descriptor's address.
    +              0
    +              18
    +              read-only
    +            
    +            
    +              OUT_DSCR_STATE_CH2
    +              reserved
    +              18
    +              2
    +              read-only
    +            
    +            
    +              OUT_STATE_CH2
    +              reserved
    +              20
    +              3
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_EOF_DES_ADDR_CH2
    +          DMA_OUT_EOF_DES_ADDR_CH2_REG.
    +          0x268
    +          0x20
    +          
    +            
    +              OUT_EOF_DES_ADDR_CH2
    +              This register stores the address of the outlink descriptor when the EOF bit in this descriptor is 1.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_EOF_BFR_DES_ADDR_CH2
    +          DMA_OUT_EOF_BFR_DES_ADDR_CH2_REG.
    +          0x26C
    +          0x20
    +          
    +            
    +              OUT_EOF_BFR_DES_ADDR_CH2
    +              This register stores the address of the outlink descriptor before the last outlink descriptor.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_DSCR_CH2
    +          DMA_OUT_DSCR_CH2_REG.
    +          0x270
    +          0x20
    +          
    +            
    +              OUTLINK_DSCR_CH2
    +              The address of the current outlink descriptor y.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_DSCR_BF0_CH2
    +          DMA_OUT_DSCR_BF0_CH2_REG.
    +          0x274
    +          0x20
    +          
    +            
    +              OUTLINK_DSCR_BF0_CH2
    +              The address of the last outlink descriptor y-1.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_DSCR_BF1_CH2
    +          DMA_OUT_DSCR_BF1_CH2_REG.
    +          0x278
    +          0x20
    +          
    +            
    +              OUTLINK_DSCR_BF1_CH2
    +              The address of the second-to-last inlink descriptor x-2.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_PRI_CH2
    +          DMA_OUT_PRI_CH2_REG.
    +          0x27C
    +          0x20
    +          
    +            
    +              TX_PRI_CH2
    +              The priority of Tx channel 2. The larger of the value, the higher of the priority.
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          OUT_PERI_SEL_CH2
    +          DMA_OUT_PERI_SEL_CH2_REG.
    +          0x280
    +          0x20
    +          0x0000003F
    +          
    +            
    +              PERI_OUT_SEL_CH2
    +              This register is used to select peripheral for Tx channel 2. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.
    +              0
    +              6
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      DS
    +      Digital Signature
    +      DS
    +      0x6003D000
    +      
    +        0x0
    +        0xA4C
    +        registers
    +      
    +      
    +        
    +          512
    +          0x1
    +          Y_MEM[%s]
    +          memory that stores Y
    +          0x0
    +          0x8
    +        
    +        
    +          512
    +          0x1
    +          M_MEM[%s]
    +          memory that stores M
    +          0x200
    +          0x8
    +        
    +        
    +          512
    +          0x1
    +          RB_MEM[%s]
    +          memory that stores Rb
    +          0x400
    +          0x8
    +        
    +        
    +          48
    +          0x1
    +          BOX_MEM[%s]
    +          memory that stores BOX
    +          0x600
    +          0x8
    +        
    +        
    +          512
    +          0x1
    +          X_MEM[%s]
    +          memory that stores X
    +          0x800
    +          0x8
    +        
    +        
    +          512
    +          0x1
    +          Z_MEM[%s]
    +          memory that stores Z
    +          0xA00
    +          0x8
    +        
    +        
    +          SET_START
    +          DS start control register
    +          0xE00
    +          0x20
    +          
    +            
    +              SET_START
    +              set this bit to start DS operation.
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          SET_CONTINUE
    +          DS continue control register
    +          0xE04
    +          0x20
    +          
    +            
    +              SET_CONTINUE
    +              set this bit to continue DS operation.
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          SET_FINISH
    +          DS finish control register
    +          0xE08
    +          0x20
    +          
    +            
    +              SET_FINISH
    +              Set this bit to finish DS process.
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          QUERY_BUSY
    +          DS query busy register
    +          0xE0C
    +          0x20
    +          
    +            
    +              QUERY_BUSY
    +              digital signature state. 1'b0: idle, 1'b1: busy
    +              0
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          QUERY_KEY_WRONG
    +          DS query key-wrong counter register
    +          0xE10
    +          0x20
    +          
    +            
    +              QUERY_KEY_WRONG
    +              digital signature key wrong counter
    +              0
    +              4
    +              read-only
    +            
    +          
    +        
    +        
    +          QUERY_CHECK
    +          DS query check result register
    +          0xE14
    +          0x20
    +          
    +            
    +              MD_ERROR
    +              MD checkout result. 1'b0: MD check pass, 1'b1: MD check fail
    +              0
    +              1
    +              read-only
    +            
    +            
    +              PADDING_BAD
    +              padding checkout result. 1'b0: a good padding, 1'b1: a bad padding
    +              1
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          DATE
    +          DS version control register
    +          0xE20
    +          0x20
    +          0x20200618
    +          
    +            
    +              DATE
    +              ds version information
    +              0
    +              30
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      EFUSE
    +      eFuse Controller
    +      EFUSE
    +      0x60008800
    +      
    +        0x0
    +        0x1CC
    +        registers
    +      
    +      
    +        EFUSE
    +        24
    +      
    +      
    +        
    +          PGM_DATA0
    +          Register 0 that stores data to be programmed.
    +          0x0
    +          0x20
    +          
    +            
    +              PGM_DATA_0
    +              The content of the 0th 32-bit data to be programmed.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          PGM_DATA1
    +          Register 1 that stores data to be programmed.
    +          0x4
    +          0x20
    +          
    +            
    +              PGM_DATA_1
    +              The content of the 1st 32-bit data to be programmed.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          PGM_DATA2
    +          Register 2 that stores data to be programmed.
    +          0x8
    +          0x20
    +          
    +            
    +              PGM_DATA_2
    +              The content of the 2nd 32-bit data to be programmed.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          PGM_DATA3
    +          Register 3 that stores data to be programmed.
    +          0xC
    +          0x20
    +          
    +            
    +              PGM_DATA_3
    +              The content of the 3rd 32-bit data to be programmed.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          PGM_DATA4
    +          Register 4 that stores data to be programmed.
    +          0x10
    +          0x20
    +          
    +            
    +              PGM_DATA_4
    +              The content of the 4th 32-bit data to be programmed.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          PGM_DATA5
    +          Register 5 that stores data to be programmed.
    +          0x14
    +          0x20
    +          
    +            
    +              PGM_DATA_5
    +              The content of the 5th 32-bit data to be programmed.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          PGM_DATA6
    +          Register 6 that stores data to be programmed.
    +          0x18
    +          0x20
    +          
    +            
    +              PGM_DATA_6
    +              The content of the 6th 32-bit data to be programmed.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          PGM_DATA7
    +          Register 7 that stores data to be programmed.
    +          0x1C
    +          0x20
    +          
    +            
    +              PGM_DATA_7
    +              The content of the 7th 32-bit data to be programmed.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          PGM_CHECK_VALUE0
    +          Register 0 that stores the RS code to be programmed.
    +          0x20
    +          0x20
    +          
    +            
    +              PGM_RS_DATA_0
    +              The content of the 0th 32-bit RS code to be programmed.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          PGM_CHECK_VALUE1
    +          Register 1 that stores the RS code to be programmed.
    +          0x24
    +          0x20
    +          
    +            
    +              PGM_RS_DATA_1
    +              The content of the 1st 32-bit RS code to be programmed.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          PGM_CHECK_VALUE2
    +          Register 2 that stores the RS code to be programmed.
    +          0x28
    +          0x20
    +          
    +            
    +              PGM_RS_DATA_2
    +              The content of the 2nd 32-bit RS code to be programmed.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          RD_WR_DIS
    +          BLOCK0 data register 0.
    +          0x2C
    +          0x20
    +          
    +            
    +              WR_DIS
    +              Disable programming of individual eFuses.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_REPEAT_DATA0
    +          BLOCK0 data register 1.
    +          0x30
    +          0x20
    +          
    +            
    +              RD_DIS
    +              Set this bit to disable reading from BlOCK4-10.
    +              0
    +              7
    +              read-only
    +            
    +            
    +              DIS_RTC_RAM_BOOT
    +              Set this bit to disable boot from RTC RAM.
    +              7
    +              1
    +              read-only
    +            
    +            
    +              DIS_ICACHE
    +              Set this bit to disable Icache.
    +              8
    +              1
    +              read-only
    +            
    +            
    +              DIS_USB_JTAG
    +              Set this bit to disable function of usb switch to jtag in module of usb device.
    +              9
    +              1
    +              read-only
    +            
    +            
    +              DIS_DOWNLOAD_ICACHE
    +              Set this bit to disable Icache in download mode (boot_mode[3:0] is 0, 1, 2, 3, 6, 7).
    +              10
    +              1
    +              read-only
    +            
    +            
    +              DIS_USB_DEVICE
    +              Set this bit to disable usb device.
    +              11
    +              1
    +              read-only
    +            
    +            
    +              DIS_FORCE_DOWNLOAD
    +              Set this bit to disable the function that forces chip into download mode.
    +              12
    +              1
    +              read-only
    +            
    +            
    +              RPT4_RESERVED6
    +              Reserved (used for four backups method).
    +              13
    +              1
    +              read-only
    +            
    +            
    +              DIS_CAN
    +              Set this bit to disable CAN function.
    +              14
    +              1
    +              read-only
    +            
    +            
    +              JTAG_SEL_ENABLE
    +              Set this bit to enable selection between usb_to_jtag and pad_to_jtag through strapping gpio10 when both reg_dis_usb_jtag and reg_dis_pad_jtag are equal to 0.
    +              15
    +              1
    +              read-only
    +            
    +            
    +              SOFT_DIS_JTAG
    +              Set these bits to disable JTAG in the soft way (odd number 1 means disable ). JTAG can be enabled in HMAC module.
    +              16
    +              3
    +              read-only
    +            
    +            
    +              DIS_PAD_JTAG
    +              Set this bit to disable JTAG in the hard way. JTAG is disabled permanently.
    +              19
    +              1
    +              read-only
    +            
    +            
    +              DIS_DOWNLOAD_MANUAL_ENCRYPT
    +              Set this bit to disable flash encryption when in download boot modes.
    +              20
    +              1
    +              read-only
    +            
    +            
    +              USB_DREFH
    +              Controls single-end input threshold vrefh, 1.76 V to 2 V with step of 80 mV, stored in eFuse.
    +              21
    +              2
    +              read-only
    +            
    +            
    +              USB_DREFL
    +              Controls single-end input threshold vrefl, 0.8 V to 1.04 V with step of 80 mV, stored in eFuse.
    +              23
    +              2
    +              read-only
    +            
    +            
    +              USB_EXCHG_PINS
    +              Set this bit to exchange USB D+ and D- pins.
    +              25
    +              1
    +              read-only
    +            
    +            
    +              VDD_SPI_AS_GPIO
    +              Set this bit to vdd spi pin function as gpio.
    +              26
    +              1
    +              read-only
    +            
    +            
    +              BTLC_GPIO_ENABLE
    +              Enable btlc gpio.
    +              27
    +              2
    +              read-only
    +            
    +            
    +              POWERGLITCH_EN
    +              Set this bit to enable power glitch function.
    +              29
    +              1
    +              read-only
    +            
    +            
    +              POWER_GLITCH_DSENSE
    +              Sample delay configuration of power glitch.
    +              30
    +              2
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_REPEAT_DATA1
    +          BLOCK0 data register 2.
    +          0x34
    +          0x20
    +          
    +            
    +              RPT4_RESERVED2
    +              Reserved (used for four backups method).
    +              0
    +              16
    +              read-only
    +            
    +            
    +              WDT_DELAY_SEL
    +              Selects RTC watchdog timeout threshold, in unit of slow clock cycle. 0: 40000. 1: 80000. 2: 160000. 3:320000.
    +              16
    +              2
    +              read-only
    +            
    +            
    +              SPI_BOOT_CRYPT_CNT
    +              Set this bit to enable SPI boot encrypt/decrypt. Odd number of 1: enable. even number of 1: disable.
    +              18
    +              3
    +              read-only
    +            
    +            
    +              SECURE_BOOT_KEY_REVOKE0
    +              Set this bit to enable revoking first secure boot key.
    +              21
    +              1
    +              read-only
    +            
    +            
    +              SECURE_BOOT_KEY_REVOKE1
    +              Set this bit to enable revoking second secure boot key.
    +              22
    +              1
    +              read-only
    +            
    +            
    +              SECURE_BOOT_KEY_REVOKE2
    +              Set this bit to enable revoking third secure boot key.
    +              23
    +              1
    +              read-only
    +            
    +            
    +              KEY_PURPOSE_0
    +              Purpose of Key0.
    +              24
    +              4
    +              read-only
    +            
    +            
    +              KEY_PURPOSE_1
    +              Purpose of Key1.
    +              28
    +              4
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_REPEAT_DATA2
    +          BLOCK0 data register 3.
    +          0x38
    +          0x20
    +          
    +            
    +              KEY_PURPOSE_2
    +              Purpose of Key2.
    +              0
    +              4
    +              read-only
    +            
    +            
    +              KEY_PURPOSE_3
    +              Purpose of Key3.
    +              4
    +              4
    +              read-only
    +            
    +            
    +              KEY_PURPOSE_4
    +              Purpose of Key4.
    +              8
    +              4
    +              read-only
    +            
    +            
    +              KEY_PURPOSE_5
    +              Purpose of Key5.
    +              12
    +              4
    +              read-only
    +            
    +            
    +              RPT4_RESERVED3
    +              Reserved (used for four backups method).
    +              16
    +              4
    +              read-only
    +            
    +            
    +              SECURE_BOOT_EN
    +              Set this bit to enable secure boot.
    +              20
    +              1
    +              read-only
    +            
    +            
    +              SECURE_BOOT_AGGRESSIVE_REVOKE
    +              Set this bit to enable revoking aggressive secure boot.
    +              21
    +              1
    +              read-only
    +            
    +            
    +              RPT4_RESERVED0
    +              Reserved (used for four backups method).
    +              22
    +              6
    +              read-only
    +            
    +            
    +              FLASH_TPUW
    +              Configures flash waiting time after power-up, in unit of ms. If the value is less than 15, the waiting time is the configurable value; Otherwise, the waiting time is twice the configurable value.
    +              28
    +              4
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_REPEAT_DATA3
    +          BLOCK0 data register 4.
    +          0x3C
    +          0x20
    +          
    +            
    +              DIS_DOWNLOAD_MODE
    +              Set this bit to disable download mode (boot_mode[3:0] = 0, 1, 2, 3, 6, 7).
    +              0
    +              1
    +              read-only
    +            
    +            
    +              DIS_LEGACY_SPI_BOOT
    +              Set this bit to disable Legacy SPI boot mode (boot_mode[3:0] = 4).
    +              1
    +              1
    +              read-only
    +            
    +            
    +              UART_PRINT_CHANNEL
    +              Selectes the default UART print channel. 0: UART0. 1: UART1.
    +              2
    +              1
    +              read-only
    +            
    +            
    +              FLASH_ECC_MODE
    +              Set ECC mode in ROM, 0: ROM would Enable Flash ECC 16to18 byte mode. 1:ROM would use 16to17 byte mode.
    +              3
    +              1
    +              read-only
    +            
    +            
    +              DIS_USB_DOWNLOAD_MODE
    +              Set this bit to disable UART download mode through USB.
    +              4
    +              1
    +              read-only
    +            
    +            
    +              ENABLE_SECURITY_DOWNLOAD
    +              Set this bit to enable secure UART download mode.
    +              5
    +              1
    +              read-only
    +            
    +            
    +              UART_PRINT_CONTROL
    +              Set the default UARTboot message output mode. 00: Enabled. 01: Enabled when GPIO8 is low at reset. 10: Enabled when GPIO8 is high at reset. 11:disabled.
    +              6
    +              2
    +              read-only
    +            
    +            
    +              PIN_POWER_SELECTION
    +              GPIO33-GPIO37 power supply selection in ROM code. 0: VDD3P3_CPU. 1: VDD_SPI.
    +              8
    +              1
    +              read-only
    +            
    +            
    +              FLASH_TYPE
    +              Set the maximum lines of SPI flash. 0: four lines. 1: eight lines.
    +              9
    +              1
    +              read-only
    +            
    +            
    +              FLASH_PAGE_SIZE
    +              Set Flash page size.
    +              10
    +              2
    +              read-only
    +            
    +            
    +              FLASH_ECC_EN
    +              Set 1 to enable ECC for flash boot.
    +              12
    +              1
    +              read-only
    +            
    +            
    +              FORCE_SEND_RESUME
    +              Set this bit to force ROM code to send a resume command during SPI boot.
    +              13
    +              1
    +              read-only
    +            
    +            
    +              SECURE_VERSION
    +              Secure version (used by ESP-IDF anti-rollback feature).
    +              14
    +              16
    +              read-only
    +            
    +            
    +              RPT4_RESERVED1
    +              Reserved (used for four backups method).
    +              30
    +              2
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_REPEAT_DATA4
    +          BLOCK0 data register 5.
    +          0x40
    +          0x20
    +          
    +            
    +              RPT4_RESERVED4
    +              Reserved (used for four backups method).
    +              0
    +              24
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_MAC_SPI_SYS_0
    +          BLOCK1 data register 0.
    +          0x44
    +          0x20
    +          
    +            
    +              MAC_0
    +              Stores the low 32 bits of MAC address.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_MAC_SPI_SYS_1
    +          BLOCK1 data register 1.
    +          0x48
    +          0x20
    +          
    +            
    +              MAC_1
    +              Stores the high 16 bits of MAC address.
    +              0
    +              16
    +              read-only
    +            
    +            
    +              SPI_PAD_CONF_0
    +              Stores the zeroth part of SPI_PAD_CONF.
    +              16
    +              16
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_MAC_SPI_SYS_2
    +          BLOCK1 data register 2.
    +          0x4C
    +          0x20
    +          
    +            
    +              SPI_PAD_CONF_1
    +              Stores the first part of SPI_PAD_CONF.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_MAC_SPI_SYS_3
    +          BLOCK1 data register 3.
    +          0x50
    +          0x20
    +          
    +            
    +              SPI_PAD_CONF_2
    +              Stores the second part of SPI_PAD_CONF.
    +              0
    +              18
    +              read-only
    +            
    +            
    +              SYS_DATA_PART0_0
    +              Stores the fist 14 bits of the zeroth part of system data.
    +              18
    +              14
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_MAC_SPI_SYS_4
    +          BLOCK1 data register 4.
    +          0x54
    +          0x20
    +          
    +            
    +              SYS_DATA_PART0_1
    +              Stores the fist 32 bits of the zeroth part of system data.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_MAC_SPI_SYS_5
    +          BLOCK1 data register 5.
    +          0x58
    +          0x20
    +          
    +            
    +              SYS_DATA_PART0_2
    +              Stores the second 32 bits of the zeroth part of system data.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_SYS_PART1_DATA0
    +          Register 0 of BLOCK2 (system).
    +          0x5C
    +          0x20
    +          
    +            
    +              SYS_DATA_PART1_0
    +              Stores the zeroth 32 bits of the first part of system data.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_SYS_PART1_DATA1
    +          Register 1 of BLOCK2 (system).
    +          0x60
    +          0x20
    +          
    +            
    +              SYS_DATA_PART1_1
    +              Stores the first 32 bits of the first part of system data.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_SYS_PART1_DATA2
    +          Register 2 of BLOCK2 (system).
    +          0x64
    +          0x20
    +          
    +            
    +              SYS_DATA_PART1_2
    +              Stores the second 32 bits of the first part of system data.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_SYS_PART1_DATA3
    +          Register 3 of BLOCK2 (system).
    +          0x68
    +          0x20
    +          
    +            
    +              SYS_DATA_PART1_3
    +              Stores the third 32 bits of the first part of system data.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_SYS_PART1_DATA4
    +          Register 4 of BLOCK2 (system).
    +          0x6C
    +          0x20
    +          
    +            
    +              SYS_DATA_PART1_4
    +              Stores the fourth 32 bits of the first part of system data.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_SYS_PART1_DATA5
    +          Register 5 of BLOCK2 (system).
    +          0x70
    +          0x20
    +          
    +            
    +              SYS_DATA_PART1_5
    +              Stores the fifth 32 bits of the first part of system data.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_SYS_PART1_DATA6
    +          Register 6 of BLOCK2 (system).
    +          0x74
    +          0x20
    +          
    +            
    +              SYS_DATA_PART1_6
    +              Stores the sixth 32 bits of the first part of system data.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_SYS_PART1_DATA7
    +          Register 7 of BLOCK2 (system).
    +          0x78
    +          0x20
    +          
    +            
    +              SYS_DATA_PART1_7
    +              Stores the seventh 32 bits of the first part of system data.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_USR_DATA0
    +          Register 0 of BLOCK3 (user).
    +          0x7C
    +          0x20
    +          
    +            
    +              USR_DATA0
    +              Stores the zeroth 32 bits of BLOCK3 (user).
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_USR_DATA1
    +          Register 1 of BLOCK3 (user).
    +          0x80
    +          0x20
    +          
    +            
    +              USR_DATA1
    +              Stores the first 32 bits of BLOCK3 (user).
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_USR_DATA2
    +          Register 2 of BLOCK3 (user).
    +          0x84
    +          0x20
    +          
    +            
    +              USR_DATA2
    +              Stores the second 32 bits of BLOCK3 (user).
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_USR_DATA3
    +          Register 3 of BLOCK3 (user).
    +          0x88
    +          0x20
    +          
    +            
    +              USR_DATA3
    +              Stores the third 32 bits of BLOCK3 (user).
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_USR_DATA4
    +          Register 4 of BLOCK3 (user).
    +          0x8C
    +          0x20
    +          
    +            
    +              USR_DATA4
    +              Stores the fourth 32 bits of BLOCK3 (user).
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_USR_DATA5
    +          Register 5 of BLOCK3 (user).
    +          0x90
    +          0x20
    +          
    +            
    +              USR_DATA5
    +              Stores the fifth 32 bits of BLOCK3 (user).
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_USR_DATA6
    +          Register 6 of BLOCK3 (user).
    +          0x94
    +          0x20
    +          
    +            
    +              USR_DATA6
    +              Stores the sixth 32 bits of BLOCK3 (user).
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_USR_DATA7
    +          Register 7 of BLOCK3 (user).
    +          0x98
    +          0x20
    +          
    +            
    +              USR_DATA7
    +              Stores the seventh 32 bits of BLOCK3 (user).
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY0_DATA0
    +          Register 0 of BLOCK4 (KEY0).
    +          0x9C
    +          0x20
    +          
    +            
    +              KEY0_DATA0
    +              Stores the zeroth 32 bits of KEY0.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY0_DATA1
    +          Register 1 of BLOCK4 (KEY0).
    +          0xA0
    +          0x20
    +          
    +            
    +              KEY0_DATA1
    +              Stores the first 32 bits of KEY0.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY0_DATA2
    +          Register 2 of BLOCK4 (KEY0).
    +          0xA4
    +          0x20
    +          
    +            
    +              KEY0_DATA2
    +              Stores the second 32 bits of KEY0.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY0_DATA3
    +          Register 3 of BLOCK4 (KEY0).
    +          0xA8
    +          0x20
    +          
    +            
    +              KEY0_DATA3
    +              Stores the third 32 bits of KEY0.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY0_DATA4
    +          Register 4 of BLOCK4 (KEY0).
    +          0xAC
    +          0x20
    +          
    +            
    +              KEY0_DATA4
    +              Stores the fourth 32 bits of KEY0.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY0_DATA5
    +          Register 5 of BLOCK4 (KEY0).
    +          0xB0
    +          0x20
    +          
    +            
    +              KEY0_DATA5
    +              Stores the fifth 32 bits of KEY0.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY0_DATA6
    +          Register 6 of BLOCK4 (KEY0).
    +          0xB4
    +          0x20
    +          
    +            
    +              KEY0_DATA6
    +              Stores the sixth 32 bits of KEY0.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY0_DATA7
    +          Register 7 of BLOCK4 (KEY0).
    +          0xB8
    +          0x20
    +          
    +            
    +              KEY0_DATA7
    +              Stores the seventh 32 bits of KEY0.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY1_DATA0
    +          Register 0 of BLOCK5 (KEY1).
    +          0xBC
    +          0x20
    +          
    +            
    +              KEY1_DATA0
    +              Stores the zeroth 32 bits of KEY1.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY1_DATA1
    +          Register 1 of BLOCK5 (KEY1).
    +          0xC0
    +          0x20
    +          
    +            
    +              KEY1_DATA1
    +              Stores the first 32 bits of KEY1.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY1_DATA2
    +          Register 2 of BLOCK5 (KEY1).
    +          0xC4
    +          0x20
    +          
    +            
    +              KEY1_DATA2
    +              Stores the second 32 bits of KEY1.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY1_DATA3
    +          Register 3 of BLOCK5 (KEY1).
    +          0xC8
    +          0x20
    +          
    +            
    +              KEY1_DATA3
    +              Stores the third 32 bits of KEY1.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY1_DATA4
    +          Register 4 of BLOCK5 (KEY1).
    +          0xCC
    +          0x20
    +          
    +            
    +              KEY1_DATA4
    +              Stores the fourth 32 bits of KEY1.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY1_DATA5
    +          Register 5 of BLOCK5 (KEY1).
    +          0xD0
    +          0x20
    +          
    +            
    +              KEY1_DATA5
    +              Stores the fifth 32 bits of KEY1.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY1_DATA6
    +          Register 6 of BLOCK5 (KEY1).
    +          0xD4
    +          0x20
    +          
    +            
    +              KEY1_DATA6
    +              Stores the sixth 32 bits of KEY1.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY1_DATA7
    +          Register 7 of BLOCK5 (KEY1).
    +          0xD8
    +          0x20
    +          
    +            
    +              KEY1_DATA7
    +              Stores the seventh 32 bits of KEY1.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY2_DATA0
    +          Register 0 of BLOCK6 (KEY2).
    +          0xDC
    +          0x20
    +          
    +            
    +              KEY2_DATA0
    +              Stores the zeroth 32 bits of KEY2.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY2_DATA1
    +          Register 1 of BLOCK6 (KEY2).
    +          0xE0
    +          0x20
    +          
    +            
    +              KEY2_DATA1
    +              Stores the first 32 bits of KEY2.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY2_DATA2
    +          Register 2 of BLOCK6 (KEY2).
    +          0xE4
    +          0x20
    +          
    +            
    +              KEY2_DATA2
    +              Stores the second 32 bits of KEY2.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY2_DATA3
    +          Register 3 of BLOCK6 (KEY2).
    +          0xE8
    +          0x20
    +          
    +            
    +              KEY2_DATA3
    +              Stores the third 32 bits of KEY2.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY2_DATA4
    +          Register 4 of BLOCK6 (KEY2).
    +          0xEC
    +          0x20
    +          
    +            
    +              KEY2_DATA4
    +              Stores the fourth 32 bits of KEY2.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY2_DATA5
    +          Register 5 of BLOCK6 (KEY2).
    +          0xF0
    +          0x20
    +          
    +            
    +              KEY2_DATA5
    +              Stores the fifth 32 bits of KEY2.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY2_DATA6
    +          Register 6 of BLOCK6 (KEY2).
    +          0xF4
    +          0x20
    +          
    +            
    +              KEY2_DATA6
    +              Stores the sixth 32 bits of KEY2.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY2_DATA7
    +          Register 7 of BLOCK6 (KEY2).
    +          0xF8
    +          0x20
    +          
    +            
    +              KEY2_DATA7
    +              Stores the seventh 32 bits of KEY2.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY3_DATA0
    +          Register 0 of BLOCK7 (KEY3).
    +          0xFC
    +          0x20
    +          
    +            
    +              KEY3_DATA0
    +              Stores the zeroth 32 bits of KEY3.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY3_DATA1
    +          Register 1 of BLOCK7 (KEY3).
    +          0x100
    +          0x20
    +          
    +            
    +              KEY3_DATA1
    +              Stores the first 32 bits of KEY3.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY3_DATA2
    +          Register 2 of BLOCK7 (KEY3).
    +          0x104
    +          0x20
    +          
    +            
    +              KEY3_DATA2
    +              Stores the second 32 bits of KEY3.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY3_DATA3
    +          Register 3 of BLOCK7 (KEY3).
    +          0x108
    +          0x20
    +          
    +            
    +              KEY3_DATA3
    +              Stores the third 32 bits of KEY3.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY3_DATA4
    +          Register 4 of BLOCK7 (KEY3).
    +          0x10C
    +          0x20
    +          
    +            
    +              KEY3_DATA4
    +              Stores the fourth 32 bits of KEY3.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY3_DATA5
    +          Register 5 of BLOCK7 (KEY3).
    +          0x110
    +          0x20
    +          
    +            
    +              KEY3_DATA5
    +              Stores the fifth 32 bits of KEY3.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY3_DATA6
    +          Register 6 of BLOCK7 (KEY3).
    +          0x114
    +          0x20
    +          
    +            
    +              KEY3_DATA6
    +              Stores the sixth 32 bits of KEY3.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY3_DATA7
    +          Register 7 of BLOCK7 (KEY3).
    +          0x118
    +          0x20
    +          
    +            
    +              KEY3_DATA7
    +              Stores the seventh 32 bits of KEY3.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY4_DATA0
    +          Register 0 of BLOCK8 (KEY4).
    +          0x11C
    +          0x20
    +          
    +            
    +              KEY4_DATA0
    +              Stores the zeroth 32 bits of KEY4.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY4_DATA1
    +          Register 1 of BLOCK8 (KEY4).
    +          0x120
    +          0x20
    +          
    +            
    +              KEY4_DATA1
    +              Stores the first 32 bits of KEY4.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY4_DATA2
    +          Register 2 of BLOCK8 (KEY4).
    +          0x124
    +          0x20
    +          
    +            
    +              KEY4_DATA2
    +              Stores the second 32 bits of KEY4.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY4_DATA3
    +          Register 3 of BLOCK8 (KEY4).
    +          0x128
    +          0x20
    +          
    +            
    +              KEY4_DATA3
    +              Stores the third 32 bits of KEY4.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY4_DATA4
    +          Register 4 of BLOCK8 (KEY4).
    +          0x12C
    +          0x20
    +          
    +            
    +              KEY4_DATA4
    +              Stores the fourth 32 bits of KEY4.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY4_DATA5
    +          Register 5 of BLOCK8 (KEY4).
    +          0x130
    +          0x20
    +          
    +            
    +              KEY4_DATA5
    +              Stores the fifth 32 bits of KEY4.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY4_DATA6
    +          Register 6 of BLOCK8 (KEY4).
    +          0x134
    +          0x20
    +          
    +            
    +              KEY4_DATA6
    +              Stores the sixth 32 bits of KEY4.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY4_DATA7
    +          Register 7 of BLOCK8 (KEY4).
    +          0x138
    +          0x20
    +          
    +            
    +              KEY4_DATA7
    +              Stores the seventh 32 bits of KEY4.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY5_DATA0
    +          Register 0 of BLOCK9 (KEY5).
    +          0x13C
    +          0x20
    +          
    +            
    +              KEY5_DATA0
    +              Stores the zeroth 32 bits of KEY5.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY5_DATA1
    +          Register 1 of BLOCK9 (KEY5).
    +          0x140
    +          0x20
    +          
    +            
    +              KEY5_DATA1
    +              Stores the first 32 bits of KEY5.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY5_DATA2
    +          Register 2 of BLOCK9 (KEY5).
    +          0x144
    +          0x20
    +          
    +            
    +              KEY5_DATA2
    +              Stores the second 32 bits of KEY5.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY5_DATA3
    +          Register 3 of BLOCK9 (KEY5).
    +          0x148
    +          0x20
    +          
    +            
    +              KEY5_DATA3
    +              Stores the third 32 bits of KEY5.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY5_DATA4
    +          Register 4 of BLOCK9 (KEY5).
    +          0x14C
    +          0x20
    +          
    +            
    +              KEY5_DATA4
    +              Stores the fourth 32 bits of KEY5.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY5_DATA5
    +          Register 5 of BLOCK9 (KEY5).
    +          0x150
    +          0x20
    +          
    +            
    +              KEY5_DATA5
    +              Stores the fifth 32 bits of KEY5.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY5_DATA6
    +          Register 6 of BLOCK9 (KEY5).
    +          0x154
    +          0x20
    +          
    +            
    +              KEY5_DATA6
    +              Stores the sixth 32 bits of KEY5.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_KEY5_DATA7
    +          Register 7 of BLOCK9 (KEY5).
    +          0x158
    +          0x20
    +          
    +            
    +              KEY5_DATA7
    +              Stores the seventh 32 bits of KEY5.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_SYS_PART2_DATA0
    +          Register 0 of BLOCK10 (system).
    +          0x15C
    +          0x20
    +          
    +            
    +              SYS_DATA_PART2_0
    +              Stores the 0th 32 bits of the 2nd part of system data.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_SYS_PART2_DATA1
    +          Register 1 of BLOCK9 (KEY5).
    +          0x160
    +          0x20
    +          
    +            
    +              SYS_DATA_PART2_1
    +              Stores the 1st 32 bits of the 2nd part of system data.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_SYS_PART2_DATA2
    +          Register 2 of BLOCK10 (system).
    +          0x164
    +          0x20
    +          
    +            
    +              SYS_DATA_PART2_2
    +              Stores the 2nd 32 bits of the 2nd part of system data.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_SYS_PART2_DATA3
    +          Register 3 of BLOCK10 (system).
    +          0x168
    +          0x20
    +          
    +            
    +              SYS_DATA_PART2_3
    +              Stores the 3rd 32 bits of the 2nd part of system data.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_SYS_PART2_DATA4
    +          Register 4 of BLOCK10 (system).
    +          0x16C
    +          0x20
    +          
    +            
    +              SYS_DATA_PART2_4
    +              Stores the 4th 32 bits of the 2nd part of system data.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_SYS_PART2_DATA5
    +          Register 5 of BLOCK10 (system).
    +          0x170
    +          0x20
    +          
    +            
    +              SYS_DATA_PART2_5
    +              Stores the 5th 32 bits of the 2nd part of system data.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_SYS_PART2_DATA6
    +          Register 6 of BLOCK10 (system).
    +          0x174
    +          0x20
    +          
    +            
    +              SYS_DATA_PART2_6
    +              Stores the 6th 32 bits of the 2nd part of system data.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_SYS_PART2_DATA7
    +          Register 7 of BLOCK10 (system).
    +          0x178
    +          0x20
    +          
    +            
    +              SYS_DATA_PART2_7
    +              Stores the 7th 32 bits of the 2nd part of system data.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_REPEAT_ERR0
    +          Programming error record register 0 of BLOCK0.
    +          0x17C
    +          0x20
    +          
    +            
    +              RD_DIS_ERR
    +              If any bit in RD_DIS is 1, then it indicates a programming error.
    +              0
    +              7
    +              read-only
    +            
    +            
    +              DIS_RTC_RAM_BOOT_ERR
    +              If DIS_RTC_RAM_BOOT is 1, then it indicates a programming error.
    +              7
    +              1
    +              read-only
    +            
    +            
    +              DIS_ICACHE_ERR
    +              If DIS_ICACHE is 1, then it indicates a programming error.
    +              8
    +              1
    +              read-only
    +            
    +            
    +              DIS_USB_JTAG_ERR
    +              If DIS_USB_JTAG is 1, then it indicates a programming error.
    +              9
    +              1
    +              read-only
    +            
    +            
    +              DIS_DOWNLOAD_ICACHE_ERR
    +              If DIS_DOWNLOAD_ICACHE is 1, then it indicates a programming error.
    +              10
    +              1
    +              read-only
    +            
    +            
    +              DIS_USB_DEVICE_ERR
    +              If DIS_USB_DEVICE is 1, then it indicates a programming error.
    +              11
    +              1
    +              read-only
    +            
    +            
    +              DIS_FORCE_DOWNLOAD_ERR
    +              If DIS_FORCE_DOWNLOAD is 1, then it indicates a programming error.
    +              12
    +              1
    +              read-only
    +            
    +            
    +              RPT4_RESERVED6_ERR
    +              Reserved.
    +              13
    +              1
    +              read-only
    +            
    +            
    +              DIS_CAN_ERR
    +              If DIS_CAN is 1, then it indicates a programming error.
    +              14
    +              1
    +              read-only
    +            
    +            
    +              JTAG_SEL_ENABLE_ERR
    +              If JTAG_SEL_ENABLE is 1, then it indicates a programming error.
    +              15
    +              1
    +              read-only
    +            
    +            
    +              SOFT_DIS_JTAG_ERR
    +              If SOFT_DIS_JTAG is 1, then it indicates a programming error.
    +              16
    +              3
    +              read-only
    +            
    +            
    +              DIS_PAD_JTAG_ERR
    +              If DIS_PAD_JTAG is 1, then it indicates a programming error.
    +              19
    +              1
    +              read-only
    +            
    +            
    +              DIS_DOWNLOAD_MANUAL_ENCRYPT_ERR
    +              If DIS_DOWNLOAD_MANUAL_ENCRYPT is 1, then it indicates a programming error.
    +              20
    +              1
    +              read-only
    +            
    +            
    +              USB_DREFH_ERR
    +              If any bit in USB_DREFH is 1, then it indicates a programming error.
    +              21
    +              2
    +              read-only
    +            
    +            
    +              USB_DREFL_ERR
    +              If any bit in USB_DREFL is 1, then it indicates a programming error.
    +              23
    +              2
    +              read-only
    +            
    +            
    +              USB_EXCHG_PINS_ERR
    +              If USB_EXCHG_PINS is 1, then it indicates a programming error.
    +              25
    +              1
    +              read-only
    +            
    +            
    +              VDD_SPI_AS_GPIO_ERR
    +              If VDD_SPI_AS_GPIO is 1, then it indicates a programming error.
    +              26
    +              1
    +              read-only
    +            
    +            
    +              BTLC_GPIO_ENABLE_ERR
    +              If any bit in BTLC_GPIO_ENABLE is 1, then it indicates a programming error.
    +              27
    +              2
    +              read-only
    +            
    +            
    +              POWERGLITCH_EN_ERR
    +              If POWERGLITCH_EN is 1, then it indicates a programming error.
    +              29
    +              1
    +              read-only
    +            
    +            
    +              POWER_GLITCH_DSENSE_ERR
    +              If any bit in POWER_GLITCH_DSENSE is 1, then it indicates a programming error.
    +              30
    +              2
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_REPEAT_ERR1
    +          Programming error record register 1 of BLOCK0.
    +          0x180
    +          0x20
    +          
    +            
    +              RPT4_RESERVED2_ERR
    +              Reserved.
    +              0
    +              16
    +              read-only
    +            
    +            
    +              WDT_DELAY_SEL_ERR
    +              If any bit in WDT_DELAY_SEL is 1, then it indicates a programming error.
    +              16
    +              2
    +              read-only
    +            
    +            
    +              SPI_BOOT_CRYPT_CNT_ERR
    +              If any bit in SPI_BOOT_CRYPT_CNT is 1, then it indicates a programming error.
    +              18
    +              3
    +              read-only
    +            
    +            
    +              SECURE_BOOT_KEY_REVOKE0_ERR
    +              If SECURE_BOOT_KEY_REVOKE0 is 1, then it indicates a programming error.
    +              21
    +              1
    +              read-only
    +            
    +            
    +              SECURE_BOOT_KEY_REVOKE1_ERR
    +              If SECURE_BOOT_KEY_REVOKE1 is 1, then it indicates a programming error.
    +              22
    +              1
    +              read-only
    +            
    +            
    +              SECURE_BOOT_KEY_REVOKE2_ERR
    +              If SECURE_BOOT_KEY_REVOKE2 is 1, then it indicates a programming error.
    +              23
    +              1
    +              read-only
    +            
    +            
    +              KEY_PURPOSE_0_ERR
    +              If any bit in KEY_PURPOSE_0 is 1, then it indicates a programming error.
    +              24
    +              4
    +              read-only
    +            
    +            
    +              KEY_PURPOSE_1_ERR
    +              If any bit in KEY_PURPOSE_1 is 1, then it indicates a programming error.
    +              28
    +              4
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_REPEAT_ERR2
    +          Programming error record register 2 of BLOCK0.
    +          0x184
    +          0x20
    +          
    +            
    +              KEY_PURPOSE_2_ERR
    +              If any bit in KEY_PURPOSE_2 is 1, then it indicates a programming error.
    +              0
    +              4
    +              read-only
    +            
    +            
    +              KEY_PURPOSE_3_ERR
    +              If any bit in KEY_PURPOSE_3 is 1, then it indicates a programming error.
    +              4
    +              4
    +              read-only
    +            
    +            
    +              KEY_PURPOSE_4_ERR
    +              If any bit in KEY_PURPOSE_4 is 1, then it indicates a programming error.
    +              8
    +              4
    +              read-only
    +            
    +            
    +              KEY_PURPOSE_5_ERR
    +              If any bit in KEY_PURPOSE_5 is 1, then it indicates a programming error.
    +              12
    +              4
    +              read-only
    +            
    +            
    +              RPT4_RESERVED3_ERR
    +              Reserved.
    +              16
    +              4
    +              read-only
    +            
    +            
    +              SECURE_BOOT_EN_ERR
    +              If SECURE_BOOT_EN is 1, then it indicates a programming error.
    +              20
    +              1
    +              read-only
    +            
    +            
    +              SECURE_BOOT_AGGRESSIVE_REVOKE_ERR
    +              If SECURE_BOOT_AGGRESSIVE_REVOKE is 1, then it indicates a programming error.
    +              21
    +              1
    +              read-only
    +            
    +            
    +              RPT4_RESERVED0_ERR
    +              Reserved.
    +              22
    +              6
    +              read-only
    +            
    +            
    +              FLASH_TPUW_ERR
    +              If any bit in FLASH_TPUM is 1, then it indicates a programming error.
    +              28
    +              4
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_REPEAT_ERR3
    +          Programming error record register 3 of BLOCK0.
    +          0x188
    +          0x20
    +          
    +            
    +              DIS_DOWNLOAD_MODE_ERR
    +              If DIS_DOWNLOAD_MODE is 1, then it indicates a programming error.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              DIS_LEGACY_SPI_BOOT_ERR
    +              If DIS_LEGACY_SPI_BOOT is 1, then it indicates a programming error.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              UART_PRINT_CHANNEL_ERR
    +              If UART_PRINT_CHANNEL is 1, then it indicates a programming error.
    +              2
    +              1
    +              read-only
    +            
    +            
    +              FLASH_ECC_MODE_ERR
    +              If FLASH_ECC_MODE is 1, then it indicates a programming error.
    +              3
    +              1
    +              read-only
    +            
    +            
    +              DIS_USB_DOWNLOAD_MODE_ERR
    +              If DIS_USB_DOWNLOAD_MODE is 1, then it indicates a programming error.
    +              4
    +              1
    +              read-only
    +            
    +            
    +              ENABLE_SECURITY_DOWNLOAD_ERR
    +              If ENABLE_SECURITY_DOWNLOAD is 1, then it indicates a programming error.
    +              5
    +              1
    +              read-only
    +            
    +            
    +              UART_PRINT_CONTROL_ERR
    +              If any bit in UART_PRINT_CONTROL is 1, then it indicates a programming error.
    +              6
    +              2
    +              read-only
    +            
    +            
    +              PIN_POWER_SELECTION_ERR
    +              If PIN_POWER_SELECTION is 1, then it indicates a programming error.
    +              8
    +              1
    +              read-only
    +            
    +            
    +              FLASH_TYPE_ERR
    +              If FLASH_TYPE is 1, then it indicates a programming error.
    +              9
    +              1
    +              read-only
    +            
    +            
    +              FLASH_PAGE_SIZE_ERR
    +              If any bits in FLASH_PAGE_SIZE is 1, then it indicates a programming error.
    +              10
    +              2
    +              read-only
    +            
    +            
    +              FLASH_ECC_EN_ERR
    +              If FLASH_ECC_EN_ERR is 1, then it indicates a programming error.
    +              12
    +              1
    +              read-only
    +            
    +            
    +              FORCE_SEND_RESUME_ERR
    +              If FORCE_SEND_RESUME is 1, then it indicates a programming error.
    +              13
    +              1
    +              read-only
    +            
    +            
    +              SECURE_VERSION_ERR
    +              If any bit in SECURE_VERSION is 1, then it indicates a programming error.
    +              14
    +              16
    +              read-only
    +            
    +            
    +              RPT4_RESERVED1_ERR
    +              Reserved.
    +              30
    +              2
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_REPEAT_ERR4
    +          Programming error record register 4 of BLOCK0.
    +          0x190
    +          0x20
    +          
    +            
    +              RPT4_RESERVED4_ERR
    +              Reserved.
    +              0
    +              24
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_RS_ERR0
    +          Programming error record register 0 of BLOCK1-10.
    +          0x1C0
    +          0x20
    +          
    +            
    +              MAC_SPI_8M_ERR_NUM
    +              The value of this signal means the number of error bytes.
    +              0
    +              3
    +              read-only
    +            
    +            
    +              MAC_SPI_8M_FAIL
    +              0: Means no failure and that the data of MAC_SPI_8M is reliable 1: Means that programming user data failed and the number of error bytes is over 6.
    +              3
    +              1
    +              read-only
    +            
    +            
    +              SYS_PART1_NUM
    +              The value of this signal means the number of error bytes.
    +              4
    +              3
    +              read-only
    +            
    +            
    +              SYS_PART1_FAIL
    +              0: Means no failure and that the data of system part1 is reliable 1: Means that programming user data failed and the number of error bytes is over 6.
    +              7
    +              1
    +              read-only
    +            
    +            
    +              USR_DATA_ERR_NUM
    +              The value of this signal means the number of error bytes.
    +              8
    +              3
    +              read-only
    +            
    +            
    +              USR_DATA_FAIL
    +              0: Means no failure and that the user data is reliable 1: Means that programming user data failed and the number of error bytes is over 6.
    +              11
    +              1
    +              read-only
    +            
    +            
    +              KEY0_ERR_NUM
    +              The value of this signal means the number of error bytes.
    +              12
    +              3
    +              read-only
    +            
    +            
    +              KEY0_FAIL
    +              0: Means no failure and that the data of key0 is reliable 1: Means that programming key0 failed and the number of error bytes is over 6.
    +              15
    +              1
    +              read-only
    +            
    +            
    +              KEY1_ERR_NUM
    +              The value of this signal means the number of error bytes.
    +              16
    +              3
    +              read-only
    +            
    +            
    +              KEY1_FAIL
    +              0: Means no failure and that the data of key1 is reliable 1: Means that programming key1 failed and the number of error bytes is over 6.
    +              19
    +              1
    +              read-only
    +            
    +            
    +              KEY2_ERR_NUM
    +              The value of this signal means the number of error bytes.
    +              20
    +              3
    +              read-only
    +            
    +            
    +              KEY2_FAIL
    +              0: Means no failure and that the data of key2 is reliable 1: Means that programming key2 failed and the number of error bytes is over 6.
    +              23
    +              1
    +              read-only
    +            
    +            
    +              KEY3_ERR_NUM
    +              The value of this signal means the number of error bytes.
    +              24
    +              3
    +              read-only
    +            
    +            
    +              KEY3_FAIL
    +              0: Means no failure and that the data of key3 is reliable 1: Means that programming key3 failed and the number of error bytes is over 6.
    +              27
    +              1
    +              read-only
    +            
    +            
    +              KEY4_ERR_NUM
    +              The value of this signal means the number of error bytes.
    +              28
    +              3
    +              read-only
    +            
    +            
    +              KEY4_FAIL
    +              0: Means no failure and that the data of key4 is reliable 1: Means that programming key4 failed and the number of error bytes is over 6.
    +              31
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          RD_RS_ERR1
    +          Programming error record register 1 of BLOCK1-10.
    +          0x1C4
    +          0x20
    +          
    +            
    +              KEY5_ERR_NUM
    +              The value of this signal means the number of error bytes.
    +              0
    +              3
    +              read-only
    +            
    +            
    +              KEY5_FAIL
    +              0: Means no failure and that the data of KEY5 is reliable 1: Means that programming user data failed and the number of error bytes is over 6.
    +              3
    +              1
    +              read-only
    +            
    +            
    +              SYS_PART2_ERR_NUM
    +              The value of this signal means the number of error bytes.
    +              4
    +              3
    +              read-only
    +            
    +            
    +              SYS_PART2_FAIL
    +              0: Means no failure and that the data of system part2 is reliable 1: Means that programming user data failed and the number of error bytes is over 6.
    +              7
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          CLK
    +          eFuse clcok configuration register.
    +          0x1C8
    +          0x20
    +          0x00000002
    +          
    +            
    +              EFUSE_MEM_FORCE_PD
    +              Set this bit to force eFuse SRAM into power-saving mode.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              MEM_CLK_FORCE_ON
    +              Set this bit and force to activate clock signal of eFuse SRAM.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              EFUSE_MEM_FORCE_PU
    +              Set this bit to force eFuse SRAM into working mode.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              EN
    +              Set this bit and force to enable clock signal of eFuse memory.
    +              16
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CONF
    +          eFuse operation mode configuraiton register;
    +          0x1CC
    +          0x20
    +          
    +            
    +              OP_CODE
    +              0x5A5A: Operate programming command 0x5AA5: Operate read command.
    +              0
    +              16
    +              read-write
    +            
    +          
    +        
    +        
    +          STATUS
    +          eFuse status register.
    +          0x1D0
    +          0x20
    +          
    +            
    +              STATE
    +              Indicates the state of the eFuse state machine.
    +              0
    +              4
    +              read-only
    +            
    +            
    +              OTP_LOAD_SW
    +              The value of OTP_LOAD_SW.
    +              4
    +              1
    +              read-only
    +            
    +            
    +              OTP_VDDQ_C_SYNC2
    +              The value of OTP_VDDQ_C_SYNC2.
    +              5
    +              1
    +              read-only
    +            
    +            
    +              OTP_STROBE_SW
    +              The value of OTP_STROBE_SW.
    +              6
    +              1
    +              read-only
    +            
    +            
    +              OTP_CSB_SW
    +              The value of OTP_CSB_SW.
    +              7
    +              1
    +              read-only
    +            
    +            
    +              OTP_PGENB_SW
    +              The value of OTP_PGENB_SW.
    +              8
    +              1
    +              read-only
    +            
    +            
    +              OTP_VDDQ_IS_SW
    +              The value of OTP_VDDQ_IS_SW.
    +              9
    +              1
    +              read-only
    +            
    +            
    +              REPEAT_ERR_CNT
    +              Indicates the number of error bits during programming BLOCK0.
    +              10
    +              8
    +              read-only
    +            
    +          
    +        
    +        
    +          CMD
    +          eFuse command register.
    +          0x1D4
    +          0x20
    +          
    +            
    +              READ_CMD
    +              Set this bit to send read command.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              PGM_CMD
    +              Set this bit to send programming command.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              BLK_NUM
    +              The serial number of the block to be programmed. Value 0-10 corresponds to block number 0-10, respectively.
    +              2
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_RAW
    +          eFuse raw interrupt register.
    +          0x1D8
    +          0x20
    +          
    +            
    +              READ_DONE_INT_RAW
    +              The raw bit signal for read_done interrupt.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              PGM_DONE_INT_RAW
    +              The raw bit signal for pgm_done interrupt.
    +              1
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_ST
    +          eFuse interrupt status register.
    +          0x1DC
    +          0x20
    +          
    +            
    +              READ_DONE_INT_ST
    +              The status signal for read_done interrupt.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              PGM_DONE_INT_ST
    +              The status signal for pgm_done interrupt.
    +              1
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_ENA
    +          eFuse interrupt enable register.
    +          0x1E0
    +          0x20
    +          
    +            
    +              READ_DONE_INT_ENA
    +              The enable signal for read_done interrupt.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              PGM_DONE_INT_ENA
    +              The enable signal for pgm_done interrupt.
    +              1
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_CLR
    +          eFuse interrupt clear register.
    +          0x1E4
    +          0x20
    +          
    +            
    +              READ_DONE_INT_CLR
    +              The clear signal for read_done interrupt.
    +              0
    +              1
    +              write-only
    +            
    +            
    +              PGM_DONE_INT_CLR
    +              The clear signal for pgm_done interrupt.
    +              1
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          DAC_CONF
    +          Controls the eFuse programming voltage.
    +          0x1E8
    +          0x20
    +          0x0001FE1C
    +          
    +            
    +              DAC_CLK_DIV
    +              Controls the division factor of the rising clock of the programming voltage.
    +              0
    +              8
    +              read-write
    +            
    +            
    +              DAC_CLK_PAD_SEL
    +              Don't care.
    +              8
    +              1
    +              read-write
    +            
    +            
    +              DAC_NUM
    +              Controls the rising period of the programming voltage.
    +              9
    +              8
    +              read-write
    +            
    +            
    +              OE_CLR
    +              Reduces the power supply of the programming voltage.
    +              17
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          RD_TIM_CONF
    +          Configures read timing parameters.
    +          0x1EC
    +          0x20
    +          0x12000000
    +          
    +            
    +              READ_INIT_NUM
    +              Configures the initial read time of eFuse.
    +              24
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          WR_TIM_CONF1
    +          Configurarion register 1 of eFuse programming timing parameters.
    +          0x1F0
    +          0x20
    +          0x00288000
    +          
    +            
    +              PWR_ON_NUM
    +              Configures the power up time for VDDQ.
    +              8
    +              16
    +              read-write
    +            
    +          
    +        
    +        
    +          WR_TIM_CONF2
    +          Configurarion register 2 of eFuse programming timing parameters.
    +          0x1F4
    +          0x20
    +          0x00000190
    +          
    +            
    +              PWR_OFF_NUM
    +              Configures the power outage time for VDDQ.
    +              0
    +              16
    +              read-write
    +            
    +          
    +        
    +        
    +          DATE
    +          eFuse version register.
    +          0x1FC
    +          0x20
    +          0x02007200
    +          
    +            
    +              DATE
    +              Stores eFuse version.
    +              0
    +              28
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      EXTMEM
    +      External Memory
    +      EXTMEM
    +      0x600C4000
    +      
    +        0x0
    +        0x108
    +        registers
    +      
    +      
    +        
    +          ICACHE_CTRL
    +          This description will be updated in the near future.
    +          0x0
    +          0x20
    +          
    +            
    +              ICACHE_ENABLE
    +              The bit is used to activate the data cache. 0: disable, 1: enable
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          ICACHE_CTRL1
    +          This description will be updated in the near future.
    +          0x4
    +          0x20
    +          0x00000003
    +          
    +            
    +              ICACHE_SHUT_IBUS
    +              The bit is used to disable core0 ibus, 0: enable, 1: disable
    +              0
    +              1
    +              read-write
    +            
    +            
    +              ICACHE_SHUT_DBUS
    +              The bit is used to disable core1 ibus, 0: enable, 1: disable
    +              1
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          ICACHE_TAG_POWER_CTRL
    +          This description will be updated in the near future.
    +          0x8
    +          0x20
    +          0x00000005
    +          
    +            
    +              ICACHE_TAG_MEM_FORCE_ON
    +              The bit is used to close clock gating of  icache tag memory. 1: close gating, 0: open clock gating.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              ICACHE_TAG_MEM_FORCE_PD
    +              The bit is used to power  icache tag memory down, 0: follow rtc_lslp, 1: power down
    +              1
    +              1
    +              read-write
    +            
    +            
    +              ICACHE_TAG_MEM_FORCE_PU
    +              The bit is used to power  icache tag memory up, 0: follow rtc_lslp, 1: power up
    +              2
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          ICACHE_PRELOCK_CTRL
    +          This description will be updated in the near future.
    +          0xC
    +          0x20
    +          
    +            
    +              ICACHE_PRELOCK_SCT0_EN
    +              The bit is used to enable the first section of prelock function.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              ICACHE_PRELOCK_SCT1_EN
    +              The bit is used to enable the second section of prelock function.
    +              1
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          ICACHE_PRELOCK_SCT0_ADDR
    +          This description will be updated in the near future.
    +          0x10
    +          0x20
    +          
    +            
    +              ICACHE_PRELOCK_SCT0_ADDR
    +              The bits are used to configure the first start virtual address of data prelock, which is combined with ICACHE_PRELOCK_SCT0_SIZE_REG
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          ICACHE_PRELOCK_SCT1_ADDR
    +          This description will be updated in the near future.
    +          0x14
    +          0x20
    +          
    +            
    +              ICACHE_PRELOCK_SCT1_ADDR
    +              The bits are used to configure the second start virtual address of data prelock, which is combined with ICACHE_PRELOCK_SCT1_SIZE_REG
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          ICACHE_PRELOCK_SCT_SIZE
    +          This description will be updated in the near future.
    +          0x18
    +          0x20
    +          
    +            
    +              ICACHE_PRELOCK_SCT1_SIZE
    +              The bits are used to configure the second length of data locking, which is combined with ICACHE_PRELOCK_SCT1_ADDR_REG
    +              0
    +              16
    +              read-write
    +            
    +            
    +              ICACHE_PRELOCK_SCT0_SIZE
    +              The bits are used to configure the first length of data locking, which is combined with ICACHE_PRELOCK_SCT0_ADDR_REG
    +              16
    +              16
    +              read-write
    +            
    +          
    +        
    +        
    +          ICACHE_LOCK_CTRL
    +          This description will be updated in the near future.
    +          0x1C
    +          0x20
    +          0x00000004
    +          
    +            
    +              ICACHE_LOCK_ENA
    +              The bit is used to enable lock operation. It will be cleared by hardware after lock operation done.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              ICACHE_UNLOCK_ENA
    +              The bit is used to enable unlock operation. It will be cleared by hardware after unlock operation done.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              ICACHE_LOCK_DONE
    +              The bit is used to indicate unlock/lock operation is finished.
    +              2
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          ICACHE_LOCK_ADDR
    +          This description will be updated in the near future.
    +          0x20
    +          0x20
    +          
    +            
    +              ICACHE_LOCK_ADDR
    +              The bits are used to configure the start virtual address for lock operations. It should be combined with ICACHE_LOCK_SIZE_REG.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          ICACHE_LOCK_SIZE
    +          This description will be updated in the near future.
    +          0x24
    +          0x20
    +          
    +            
    +              ICACHE_LOCK_SIZE
    +              The bits are used to configure the length for lock operations. The bits are the counts of cache block. It should be combined with ICACHE_LOCK_ADDR_REG.
    +              0
    +              16
    +              read-write
    +            
    +          
    +        
    +        
    +          ICACHE_SYNC_CTRL
    +          This description will be updated in the near future.
    +          0x28
    +          0x20
    +          0x00000001
    +          
    +            
    +              ICACHE_INVALIDATE_ENA
    +              The bit is used to enable invalidate operation. It will be cleared by hardware after invalidate operation done.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              ICACHE_SYNC_DONE
    +              The bit is used to indicate invalidate operation is finished.
    +              1
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          ICACHE_SYNC_ADDR
    +          This description will be updated in the near future.
    +          0x2C
    +          0x20
    +          
    +            
    +              ICACHE_SYNC_ADDR
    +              The bits are used to configure the start virtual address for clean operations. It should be combined with ICACHE_SYNC_SIZE_REG.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          ICACHE_SYNC_SIZE
    +          This description will be updated in the near future.
    +          0x30
    +          0x20
    +          
    +            
    +              ICACHE_SYNC_SIZE
    +              The bits are used to configure the length for sync operations. The bits are the counts of cache block. It should be combined with ICACHE_SYNC_ADDR_REG.
    +              0
    +              23
    +              read-write
    +            
    +          
    +        
    +        
    +          ICACHE_PRELOAD_CTRL
    +          This description will be updated in the near future.
    +          0x34
    +          0x20
    +          0x00000002
    +          
    +            
    +              ICACHE_PRELOAD_ENA
    +              The bit is used to enable preload operation. It will be cleared by hardware after preload operation done.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              ICACHE_PRELOAD_DONE
    +              The bit is used to indicate preload operation is finished.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              ICACHE_PRELOAD_ORDER
    +              The bit is used to configure the direction of preload operation. 1: descending, 0: ascending.
    +              2
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          ICACHE_PRELOAD_ADDR
    +          This description will be updated in the near future.
    +          0x38
    +          0x20
    +          
    +            
    +              ICACHE_PRELOAD_ADDR
    +              The bits are used to configure the start virtual address for preload operation. It should be combined with ICACHE_PRELOAD_SIZE_REG.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          ICACHE_PRELOAD_SIZE
    +          This description will be updated in the near future.
    +          0x3C
    +          0x20
    +          
    +            
    +              ICACHE_PRELOAD_SIZE
    +              The bits are used to configure the length for preload operation. The bits are the counts of cache block. It should be combined with ICACHE_PRELOAD_ADDR_REG..
    +              0
    +              16
    +              read-write
    +            
    +          
    +        
    +        
    +          ICACHE_AUTOLOAD_CTRL
    +          This description will be updated in the near future.
    +          0x40
    +          0x20
    +          0x00000008
    +          
    +            
    +              ICACHE_AUTOLOAD_SCT0_ENA
    +              The bits are used to enable the first section for autoload operation.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              ICACHE_AUTOLOAD_SCT1_ENA
    +              The bits are used to enable the second section for autoload operation.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              ICACHE_AUTOLOAD_ENA
    +              The bit is used to enable and disable autoload operation. It is combined with icache_autoload_done. 1: enable, 0: disable.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              ICACHE_AUTOLOAD_DONE
    +              The bit is used to indicate autoload operation is finished.
    +              3
    +              1
    +              read-only
    +            
    +            
    +              ICACHE_AUTOLOAD_ORDER
    +              The bits are used to configure the direction of autoload. 1: descending, 0: ascending.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              ICACHE_AUTOLOAD_RQST
    +              The bits are used to configure trigger conditions for autoload. 0/3: cache miss, 1: cache hit, 2: both cache miss and hit.
    +              5
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          ICACHE_AUTOLOAD_SCT0_ADDR
    +          This description will be updated in the near future.
    +          0x44
    +          0x20
    +          
    +            
    +              ICACHE_AUTOLOAD_SCT0_ADDR
    +              The bits are used to configure the start virtual address of the first section for autoload operation. It should be combined with icache_autoload_sct0_ena.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          ICACHE_AUTOLOAD_SCT0_SIZE
    +          This description will be updated in the near future.
    +          0x48
    +          0x20
    +          
    +            
    +              ICACHE_AUTOLOAD_SCT0_SIZE
    +              The bits are used to configure the length of the first section for autoload operation. It should be combined with icache_autoload_sct0_ena.
    +              0
    +              27
    +              read-write
    +            
    +          
    +        
    +        
    +          ICACHE_AUTOLOAD_SCT1_ADDR
    +          This description will be updated in the near future.
    +          0x4C
    +          0x20
    +          
    +            
    +              ICACHE_AUTOLOAD_SCT1_ADDR
    +              The bits are used to configure the start virtual address of the second section for autoload operation. It should be combined with icache_autoload_sct1_ena.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          ICACHE_AUTOLOAD_SCT1_SIZE
    +          This description will be updated in the near future.
    +          0x50
    +          0x20
    +          
    +            
    +              ICACHE_AUTOLOAD_SCT1_SIZE
    +              The bits are used to configure the length of the second section for autoload operation. It should be combined with icache_autoload_sct1_ena.
    +              0
    +              27
    +              read-write
    +            
    +          
    +        
    +        
    +          IBUS_TO_FLASH_START_VADDR
    +          This description will be updated in the near future.
    +          0x54
    +          0x20
    +          0x42000000
    +          
    +            
    +              IBUS_TO_FLASH_START_VADDR
    +              The bits are used to configure the start virtual address of ibus to access flash. The register is used to give constraints to ibus access counter.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          IBUS_TO_FLASH_END_VADDR
    +          This description will be updated in the near future.
    +          0x58
    +          0x20
    +          0x427FFFFF
    +          
    +            
    +              IBUS_TO_FLASH_END_VADDR
    +              The bits are used to configure the end virtual address of ibus to access flash. The register is used to give constraints to ibus access counter.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          DBUS_TO_FLASH_START_VADDR
    +          This description will be updated in the near future.
    +          0x5C
    +          0x20
    +          0x3C000000
    +          
    +            
    +              DBUS_TO_FLASH_START_VADDR
    +              The bits are used to configure the start virtual address of dbus to access flash. The register is used to give constraints to dbus access counter.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          DBUS_TO_FLASH_END_VADDR
    +          This description will be updated in the near future.
    +          0x60
    +          0x20
    +          0x3C7FFFFF
    +          
    +            
    +              DBUS_TO_FLASH_END_VADDR
    +              The bits are used to configure the end virtual address of dbus to access flash. The register is used to give constraints to dbus access counter.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          CACHE_ACS_CNT_CLR
    +          This description will be updated in the near future.
    +          0x64
    +          0x20
    +          
    +            
    +              IBUS_ACS_CNT_CLR
    +              The bit is used to clear ibus counter.
    +              0
    +              1
    +              write-only
    +            
    +            
    +              DBUS_ACS_CNT_CLR
    +              The bit is used to clear dbus counter.
    +              1
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          IBUS_ACS_MISS_CNT
    +          This description will be updated in the near future.
    +          0x68
    +          0x20
    +          
    +            
    +              IBUS_ACS_MISS_CNT
    +              The bits are used to count the number of the cache miss caused by ibus access flash.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          IBUS_ACS_CNT
    +          This description will be updated in the near future.
    +          0x6C
    +          0x20
    +          
    +            
    +              IBUS_ACS_CNT
    +              The bits are used to count the number of ibus access flash through icache.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          DBUS_ACS_FLASH_MISS_CNT
    +          This description will be updated in the near future.
    +          0x70
    +          0x20
    +          
    +            
    +              DBUS_ACS_FLASH_MISS_CNT
    +              The bits are used to count the number of the cache miss caused by dbus access flash.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          DBUS_ACS_CNT
    +          This description will be updated in the near future.
    +          0x74
    +          0x20
    +          
    +            
    +              DBUS_ACS_CNT
    +              The bits are used to count the number of dbus access flash through icache.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          CACHE_ILG_INT_ENA
    +          This description will be updated in the near future.
    +          0x78
    +          0x20
    +          
    +            
    +              ICACHE_SYNC_OP_FAULT_INT_ENA
    +              The bit is used to enable interrupt by sync configurations fault.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              ICACHE_PRELOAD_OP_FAULT_INT_ENA
    +              The bit is used to enable interrupt by preload configurations fault.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              MMU_ENTRY_FAULT_INT_ENA
    +              The bit is used to enable interrupt by mmu entry fault.
    +              5
    +              1
    +              read-write
    +            
    +            
    +              IBUS_CNT_OVF_INT_ENA
    +              The bit is used to enable interrupt by ibus counter overflow.
    +              7
    +              1
    +              read-write
    +            
    +            
    +              DBUS_CNT_OVF_INT_ENA
    +              The bit is used to enable interrupt by dbus counter overflow.
    +              8
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CACHE_ILG_INT_CLR
    +          This description will be updated in the near future.
    +          0x7C
    +          0x20
    +          
    +            
    +              ICACHE_SYNC_OP_FAULT_INT_CLR
    +              The bit is used to clear interrupt by sync configurations fault.
    +              0
    +              1
    +              write-only
    +            
    +            
    +              ICACHE_PRELOAD_OP_FAULT_INT_CLR
    +              The bit is used to clear interrupt by preload configurations fault.
    +              1
    +              1
    +              write-only
    +            
    +            
    +              MMU_ENTRY_FAULT_INT_CLR
    +              The bit is used to clear interrupt by mmu entry fault.
    +              5
    +              1
    +              write-only
    +            
    +            
    +              IBUS_CNT_OVF_INT_CLR
    +              The bit is used to clear interrupt by ibus counter overflow.
    +              7
    +              1
    +              write-only
    +            
    +            
    +              DBUS_CNT_OVF_INT_CLR
    +              The bit is used to clear interrupt by dbus counter overflow.
    +              8
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          CACHE_ILG_INT_ST
    +          This description will be updated in the near future.
    +          0x80
    +          0x20
    +          
    +            
    +              ICACHE_SYNC_OP_FAULT_ST
    +              The bit is used to indicate interrupt by sync configurations fault.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              ICACHE_PRELOAD_OP_FAULT_ST
    +              The bit is used to indicate interrupt by preload configurations fault.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              MMU_ENTRY_FAULT_ST
    +              The bit is used to indicate interrupt by mmu entry fault.
    +              5
    +              1
    +              read-only
    +            
    +            
    +              IBUS_ACS_CNT_OVF_ST
    +              The bit is used to indicate interrupt by ibus access flash/spiram counter overflow.
    +              7
    +              1
    +              read-only
    +            
    +            
    +              IBUS_ACS_MISS_CNT_OVF_ST
    +              The bit is used to indicate interrupt by ibus access flash/spiram miss counter overflow.
    +              8
    +              1
    +              read-only
    +            
    +            
    +              DBUS_ACS_CNT_OVF_ST
    +              The bit is used to indicate interrupt by dbus access flash/spiram counter overflow.
    +              9
    +              1
    +              read-only
    +            
    +            
    +              DBUS_ACS_FLASH_MISS_CNT_OVF_ST
    +              The bit is used to indicate interrupt by dbus access flash miss counter overflow.
    +              10
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          CORE0_ACS_CACHE_INT_ENA
    +          This description will be updated in the near future.
    +          0x84
    +          0x20
    +          
    +            
    +              CORE0_IBUS_ACS_MSK_IC_INT_ENA
    +              The bit is used to enable interrupt by cpu access icache while the corresponding ibus is disabled which include speculative access.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              CORE0_IBUS_WR_IC_INT_ENA
    +              The bit is used to enable interrupt by ibus trying to write icache
    +              1
    +              1
    +              read-write
    +            
    +            
    +              CORE0_IBUS_REJECT_INT_ENA
    +              The bit is used to enable interrupt by authentication fail.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              CORE0_DBUS_ACS_MSK_IC_INT_ENA
    +              The bit is used to enable interrupt by cpu access icache while the corresponding dbus is disabled which include speculative access.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              CORE0_DBUS_REJECT_INT_ENA
    +              The bit is used to enable interrupt by authentication fail.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              CORE0_DBUS_WR_IC_INT_ENA
    +              The bit is used to enable interrupt by dbus trying to write icache
    +              5
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE0_ACS_CACHE_INT_CLR
    +          This description will be updated in the near future.
    +          0x88
    +          0x20
    +          
    +            
    +              CORE0_IBUS_ACS_MSK_IC_INT_CLR
    +              The bit is used to clear interrupt by cpu access icache while the corresponding ibus is disabled or icache is disabled which include speculative access.
    +              0
    +              1
    +              write-only
    +            
    +            
    +              CORE0_IBUS_WR_IC_INT_CLR
    +              The bit is used to clear interrupt by ibus trying to write icache
    +              1
    +              1
    +              write-only
    +            
    +            
    +              CORE0_IBUS_REJECT_INT_CLR
    +              The bit is used to clear interrupt by authentication fail.
    +              2
    +              1
    +              write-only
    +            
    +            
    +              CORE0_DBUS_ACS_MSK_IC_INT_CLR
    +              The bit is used to clear interrupt by cpu access icache while the corresponding dbus is disabled or icache is disabled which include speculative access.
    +              3
    +              1
    +              write-only
    +            
    +            
    +              CORE0_DBUS_REJECT_INT_CLR
    +              The bit is used to clear interrupt by authentication fail.
    +              4
    +              1
    +              write-only
    +            
    +            
    +              CORE0_DBUS_WR_IC_INT_CLR
    +              The bit is used to clear interrupt by dbus trying to write icache
    +              5
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          CORE0_ACS_CACHE_INT_ST
    +          This description will be updated in the near future.
    +          0x8C
    +          0x20
    +          
    +            
    +              CORE0_IBUS_ACS_MSK_ICACHE_ST
    +              The bit is used to indicate interrupt by cpu access  icache while the core0_ibus is disabled or icache is disabled which include speculative access.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              CORE0_IBUS_WR_ICACHE_ST
    +              The bit is used to indicate interrupt by ibus trying to write icache
    +              1
    +              1
    +              read-only
    +            
    +            
    +              CORE0_IBUS_REJECT_ST
    +              The bit is used to indicate interrupt by authentication fail.
    +              2
    +              1
    +              read-only
    +            
    +            
    +              CORE0_DBUS_ACS_MSK_ICACHE_ST
    +              The bit is used to indicate interrupt by cpu access icache while the core0_dbus is disabled or icache is disabled which include speculative access.
    +              3
    +              1
    +              read-only
    +            
    +            
    +              CORE0_DBUS_REJECT_ST
    +              The bit is used to indicate interrupt by authentication fail.
    +              4
    +              1
    +              read-only
    +            
    +            
    +              CORE0_DBUS_WR_ICACHE_ST
    +              The bit is used to indicate interrupt by dbus trying to write icache
    +              5
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          CORE0_DBUS_REJECT_ST
    +          This description will be updated in the near future.
    +          0x90
    +          0x20
    +          
    +            
    +              CORE0_DBUS_ATTR
    +              The bits are used to indicate the attribute of CPU access dbus when authentication fail. 0: invalidate, 1: execute-able, 2: read-able, 4: write-able.
    +              0
    +              3
    +              read-only
    +            
    +            
    +              CORE0_DBUS_WORLD
    +              The bit is used to indicate the world of CPU access dbus when authentication fail. 0: WORLD0, 1: WORLD1
    +              3
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          CORE0_DBUS_REJECT_VADDR
    +          This description will be updated in the near future.
    +          0x94
    +          0x20
    +          0xFFFFFFFF
    +          
    +            
    +              CORE0_DBUS_VADDR
    +              The bits are used to indicate the virtual address of CPU access dbus when authentication fail.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          CORE0_IBUS_REJECT_ST
    +          This description will be updated in the near future.
    +          0x98
    +          0x20
    +          
    +            
    +              CORE0_IBUS_ATTR
    +              The bits are used to indicate the attribute of CPU access ibus when authentication fail. 0: invalidate, 1: execute-able, 2: read-able
    +              0
    +              3
    +              read-only
    +            
    +            
    +              CORE0_IBUS_WORLD
    +              The bit is used to indicate the world of CPU access ibus when authentication fail. 0: WORLD0, 1: WORLD1
    +              3
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          CORE0_IBUS_REJECT_VADDR
    +          This description will be updated in the near future.
    +          0x9C
    +          0x20
    +          0xFFFFFFFF
    +          
    +            
    +              CORE0_IBUS_VADDR
    +              The bits are used to indicate the virtual address of CPU access  ibus when authentication fail.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          CACHE_MMU_FAULT_CONTENT
    +          This description will be updated in the near future.
    +          0xA0
    +          0x20
    +          
    +            
    +              CACHE_MMU_FAULT_CONTENT
    +              The bits are used to indicate the content of mmu entry which cause mmu fault..
    +              0
    +              10
    +              read-only
    +            
    +            
    +              CACHE_MMU_FAULT_CODE
    +              The right-most 3 bits are used to indicate the operations which cause mmu fault occurrence. 0: default, 1: cpu miss, 2: preload miss, 3: writeback, 4: cpu miss evict recovery address, 5: load miss evict recovery address, 6: external dma tx, 7: external dma rx. The most significant bit is used to indicate this operation occurs in which one icache.
    +              10
    +              4
    +              read-only
    +            
    +          
    +        
    +        
    +          CACHE_MMU_FAULT_VADDR
    +          This description will be updated in the near future.
    +          0xA4
    +          0x20
    +          
    +            
    +              CACHE_MMU_FAULT_VADDR
    +              The bits are used to indicate the virtual address which cause mmu fault..
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          CACHE_WRAP_AROUND_CTRL
    +          This description will be updated in the near future.
    +          0xA8
    +          0x20
    +          
    +            
    +              CACHE_FLASH_WRAP_AROUND
    +              The bit is used to enable wrap around mode when read data from flash.
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CACHE_MMU_POWER_CTRL
    +          This description will be updated in the near future.
    +          0xAC
    +          0x20
    +          0x00000005
    +          
    +            
    +              CACHE_MMU_MEM_FORCE_ON
    +              The bit is used to enable clock gating to save power when access mmu memory, 0: enable, 1: disable
    +              0
    +              1
    +              read-write
    +            
    +            
    +              CACHE_MMU_MEM_FORCE_PD
    +              The bit is used to power mmu memory down, 0: follow_rtc_lslp_pd, 1: power down
    +              1
    +              1
    +              read-write
    +            
    +            
    +              CACHE_MMU_MEM_FORCE_PU
    +              The bit is used to power mmu memory down, 0: follow_rtc_lslp_pd, 1: power up
    +              2
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CACHE_STATE
    +          This description will be updated in the near future.
    +          0xB0
    +          0x20
    +          0x00000001
    +          
    +            
    +              ICACHE_STATE
    +              The bit is used to indicate whether  icache main fsm is in idle state or not. 1: in idle state,  0: not in idle state
    +              0
    +              12
    +              read-only
    +            
    +          
    +        
    +        
    +          CACHE_ENCRYPT_DECRYPT_RECORD_DISABLE
    +          This description will be updated in the near future.
    +          0xB4
    +          0x20
    +          
    +            
    +              RECORD_DISABLE_DB_ENCRYPT
    +              Reserved.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              RECORD_DISABLE_G0CB_DECRYPT
    +              Reserved.
    +              1
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CACHE_ENCRYPT_DECRYPT_CLK_FORCE_ON
    +          This description will be updated in the near future.
    +          0xB8
    +          0x20
    +          0x00000007
    +          
    +            
    +              CLK_FORCE_ON_MANUAL_CRYPT
    +              The bit is used to close clock gating of manual crypt clock. 1: close gating, 0: open clock gating.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              CLK_FORCE_ON_AUTO_CRYPT
    +              The bit is used to close clock gating of automatic crypt clock. 1: close gating, 0: open clock gating.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              CLK_FORCE_ON_CRYPT
    +              The bit is used to close clock gating of external memory encrypt and decrypt clock. 1: close gating, 0: open clock gating.
    +              2
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CACHE_PRELOAD_INT_CTRL
    +          This description will be updated in the near future.
    +          0xBC
    +          0x20
    +          
    +            
    +              ICACHE_PRELOAD_INT_ST
    +              The bit is used to indicate the interrupt by  icache pre-load done.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              ICACHE_PRELOAD_INT_ENA
    +              The bit is used to enable the interrupt by  icache pre-load done.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              ICACHE_PRELOAD_INT_CLR
    +              The bit is used to clear the interrupt by  icache pre-load done.
    +              2
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          CACHE_SYNC_INT_CTRL
    +          This description will be updated in the near future.
    +          0xC0
    +          0x20
    +          
    +            
    +              ICACHE_SYNC_INT_ST
    +              The bit is used to indicate the interrupt by  icache sync done.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              ICACHE_SYNC_INT_ENA
    +              The bit is used to enable the interrupt by  icache sync done.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              ICACHE_SYNC_INT_CLR
    +              The bit is used to clear the interrupt by  icache sync done.
    +              2
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          CACHE_MMU_OWNER
    +          This description will be updated in the near future.
    +          0xC4
    +          0x20
    +          
    +            
    +              CACHE_MMU_OWNER
    +              The bits are used to specify the owner of MMU.bit0/bit2: ibus, bit1/bit3: dbus
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CACHE_CONF_MISC
    +          This description will be updated in the near future.
    +          0xC8
    +          0x20
    +          0x00000007
    +          
    +            
    +              CACHE_IGNORE_PRELOAD_MMU_ENTRY_FAULT
    +              The bit is used to disable checking mmu entry fault by preload operation.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              CACHE_IGNORE_SYNC_MMU_ENTRY_FAULT
    +              The bit is used to disable checking mmu entry fault by sync operation.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              CACHE_TRACE_ENA
    +              The bit is used to enable cache trace function.
    +              2
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          ICACHE_FREEZE
    +          This description will be updated in the near future.
    +          0xCC
    +          0x20
    +          
    +            
    +              ENA
    +              The bit is used to enable icache freeze mode
    +              0
    +              1
    +              read-write
    +            
    +            
    +              MODE
    +              The bit is used to configure freeze mode, 0:  assert busy if CPU miss 1: assert hit if CPU miss
    +              1
    +              1
    +              read-write
    +            
    +            
    +              DONE
    +              The bit is used to indicate icache freeze success
    +              2
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          ICACHE_ATOMIC_OPERATE_ENA
    +          This description will be updated in the near future.
    +          0xD0
    +          0x20
    +          0x00000001
    +          
    +            
    +              ICACHE_ATOMIC_OPERATE_ENA
    +              The bit is used to activate icache atomic operation protection. In this case, sync/lock operation can not interrupt miss-work. This feature does not work during invalidateAll operation.
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CACHE_REQUEST
    +          This description will be updated in the near future.
    +          0xD4
    +          0x20
    +          
    +            
    +              BYPASS
    +              The bit is used to disable request recording which could cause performance issue
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          IBUS_PMS_TBL_LOCK
    +          This description will be updated in the near future.
    +          0xD8
    +          0x20
    +          
    +            
    +              IBUS_PMS_LOCK
    +              The bit is used to configure the ibus permission control section boundary0
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          IBUS_PMS_TBL_BOUNDARY0
    +          This description will be updated in the near future.
    +          0xDC
    +          0x20
    +          
    +            
    +              IBUS_PMS_BOUNDARY0
    +              The bit is used to configure the ibus permission control section boundary0
    +              0
    +              12
    +              read-write
    +            
    +          
    +        
    +        
    +          IBUS_PMS_TBL_BOUNDARY1
    +          This description will be updated in the near future.
    +          0xE0
    +          0x20
    +          0x00000800
    +          
    +            
    +              IBUS_PMS_BOUNDARY1
    +              The bit is used to configure the ibus permission control section boundary1
    +              0
    +              12
    +              read-write
    +            
    +          
    +        
    +        
    +          IBUS_PMS_TBL_BOUNDARY2
    +          This description will be updated in the near future.
    +          0xE4
    +          0x20
    +          0x00000800
    +          
    +            
    +              IBUS_PMS_BOUNDARY2
    +              The bit is used to configure the ibus permission control section boundary2
    +              0
    +              12
    +              read-write
    +            
    +          
    +        
    +        
    +          IBUS_PMS_TBL_ATTR
    +          This description will be updated in the near future.
    +          0xE8
    +          0x20
    +          0x000000FF
    +          
    +            
    +              IBUS_PMS_SCT1_ATTR
    +              The bit is used to configure attribute of the ibus permission control section1, bit0: fetch in world0, bit1: load in world0, bit2: fetch in world1, bit3: load in world1
    +              0
    +              4
    +              read-write
    +            
    +            
    +              IBUS_PMS_SCT2_ATTR
    +              The bit is used to configure attribute of the ibus permission control section2, bit0: fetch in world0, bit1: load in world0, bit2: fetch in world1, bit3: load in world1
    +              4
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          DBUS_PMS_TBL_LOCK
    +          This description will be updated in the near future.
    +          0xEC
    +          0x20
    +          
    +            
    +              DBUS_PMS_LOCK
    +              The bit is used to configure the ibus permission control section boundary0
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DBUS_PMS_TBL_BOUNDARY0
    +          This description will be updated in the near future.
    +          0xF0
    +          0x20
    +          
    +            
    +              DBUS_PMS_BOUNDARY0
    +              The bit is used to configure the dbus permission control section boundary0
    +              0
    +              12
    +              read-write
    +            
    +          
    +        
    +        
    +          DBUS_PMS_TBL_BOUNDARY1
    +          This description will be updated in the near future.
    +          0xF4
    +          0x20
    +          0x00000800
    +          
    +            
    +              DBUS_PMS_BOUNDARY1
    +              The bit is used to configure the dbus permission control section boundary1
    +              0
    +              12
    +              read-write
    +            
    +          
    +        
    +        
    +          DBUS_PMS_TBL_BOUNDARY2
    +          This description will be updated in the near future.
    +          0xF8
    +          0x20
    +          0x00000800
    +          
    +            
    +              DBUS_PMS_BOUNDARY2
    +              The bit is used to configure the dbus permission control section boundary2
    +              0
    +              12
    +              read-write
    +            
    +          
    +        
    +        
    +          DBUS_PMS_TBL_ATTR
    +          This description will be updated in the near future.
    +          0xFC
    +          0x20
    +          0x0000000F
    +          
    +            
    +              DBUS_PMS_SCT1_ATTR
    +              The bit is used to configure attribute of the dbus permission control section1, bit0: load in world0, bit2: load in world1
    +              0
    +              2
    +              read-write
    +            
    +            
    +              DBUS_PMS_SCT2_ATTR
    +              The bit is used to configure attribute of the dbus permission control section2, bit0: load in world0, bit2: load in world1
    +              2
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          CLOCK_GATE
    +          This description will be updated in the near future.
    +          0x100
    +          0x20
    +          0x00000001
    +          
    +            
    +              CLK_EN
    +              clock gate enable.
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          REG_DATE
    +          This description will be updated in the near future.
    +          0x3FC
    +          0x20
    +          0x02007160
    +          
    +            
    +              DATE
    +              version information
    +              0
    +              28
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      GPIO
    +      General Purpose Input/Output
    +      GPIO
    +      0x60004000
    +      
    +        0x0
    +        0x31C
    +        registers
    +      
    +      
    +        GPIO
    +        16
    +      
    +      
    +        GPIO_NMI
    +        17
    +      
    +      
    +        
    +          BT_SELECT
    +          GPIO bit select register
    +          0x0
    +          0x20
    +          
    +            
    +              BT_SEL
    +              GPIO bit select register
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          OUT
    +          GPIO output register
    +          0x4
    +          0x20
    +          
    +            
    +              DATA_ORIG
    +              GPIO output register for GPIO0-25
    +              0
    +              26
    +              read-write
    +            
    +          
    +        
    +        
    +          OUT_W1TS
    +          GPIO output set register
    +          0x8
    +          0x20
    +          
    +            
    +              OUT_W1TS
    +              GPIO output set register for GPIO0-25
    +              0
    +              26
    +              write-only
    +            
    +          
    +        
    +        
    +          OUT_W1TC
    +          GPIO output clear register
    +          0xC
    +          0x20
    +          
    +            
    +              OUT_W1TC
    +              GPIO output clear register for GPIO0-25
    +              0
    +              26
    +              write-only
    +            
    +          
    +        
    +        
    +          SDIO_SELECT
    +          GPIO sdio select register
    +          0x1C
    +          0x20
    +          
    +            
    +              SDIO_SEL
    +              GPIO sdio select register
    +              0
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          ENABLE
    +          GPIO output enable register
    +          0x20
    +          0x20
    +          
    +            
    +              DATA
    +              GPIO output enable register for GPIO0-25
    +              0
    +              26
    +              read-write
    +            
    +          
    +        
    +        
    +          ENABLE_W1TS
    +          GPIO output enable set register
    +          0x24
    +          0x20
    +          
    +            
    +              ENABLE_W1TS
    +              GPIO output enable set register for GPIO0-25
    +              0
    +              26
    +              write-only
    +            
    +          
    +        
    +        
    +          ENABLE_W1TC
    +          GPIO output enable clear register
    +          0x28
    +          0x20
    +          
    +            
    +              ENABLE_W1TC
    +              GPIO output enable clear register for GPIO0-25
    +              0
    +              26
    +              write-only
    +            
    +          
    +        
    +        
    +          STRAP
    +          pad strapping register
    +          0x38
    +          0x20
    +          
    +            
    +              STRAPPING
    +              pad strapping register
    +              0
    +              16
    +              read-only
    +            
    +          
    +        
    +        
    +          IN
    +          GPIO input register
    +          0x3C
    +          0x20
    +          
    +            
    +              DATA_NEXT
    +              GPIO input register for GPIO0-25
    +              0
    +              26
    +              read-only
    +            
    +          
    +        
    +        
    +          STATUS
    +          GPIO interrupt status register
    +          0x44
    +          0x20
    +          
    +            
    +              INTERRUPT
    +              GPIO interrupt status register for GPIO0-25
    +              0
    +              26
    +              read-write
    +            
    +          
    +        
    +        
    +          STATUS_W1TS
    +          GPIO interrupt status set register
    +          0x48
    +          0x20
    +          
    +            
    +              STATUS_W1TS
    +              GPIO interrupt status set register for GPIO0-25
    +              0
    +              26
    +              write-only
    +            
    +          
    +        
    +        
    +          STATUS_W1TC
    +          GPIO interrupt status clear register
    +          0x4C
    +          0x20
    +          
    +            
    +              STATUS_W1TC
    +              GPIO interrupt status clear register for GPIO0-25
    +              0
    +              26
    +              write-only
    +            
    +          
    +        
    +        
    +          PCPU_INT
    +          GPIO PRO_CPU interrupt status register
    +          0x5C
    +          0x20
    +          
    +            
    +              PROCPU_INT
    +              GPIO PRO_CPU interrupt status register for GPIO0-25
    +              0
    +              26
    +              read-only
    +            
    +          
    +        
    +        
    +          PCPU_NMI_INT
    +          GPIO PRO_CPU(not shielded) interrupt status register
    +          0x60
    +          0x20
    +          
    +            
    +              PROCPU_NMI_INT
    +              GPIO PRO_CPU(not shielded) interrupt status register for GPIO0-25
    +              0
    +              26
    +              read-only
    +            
    +          
    +        
    +        
    +          CPUSDIO_INT
    +          GPIO CPUSDIO interrupt status register
    +          0x64
    +          0x20
    +          
    +            
    +              SDIO_INT
    +              GPIO CPUSDIO interrupt status register for GPIO0-25
    +              0
    +              26
    +              read-only
    +            
    +          
    +        
    +        
    +          26
    +          0x4
    +          PIN%s
    +          GPIO pin configuration register
    +          0x74
    +          0x20
    +          
    +            
    +              PIN_SYNC2_BYPASS
    +              set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger at posedge.
    +              0
    +              2
    +              read-write
    +            
    +            
    +              PIN_PAD_DRIVER
    +              set this bit to select pad driver. 1:open-drain. :normal.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              PIN_SYNC1_BYPASS
    +              set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger at posedge.
    +              3
    +              2
    +              read-write
    +            
    +            
    +              PIN_INT_TYPE
    +              set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level. 5:valid at high level
    +              7
    +              3
    +              read-write
    +            
    +            
    +              PIN_WAKEUP_ENABLE
    +              set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +              10
    +              1
    +              read-write
    +            
    +            
    +              PIN_CONFIG
    +              reserved
    +              11
    +              2
    +              read-write
    +            
    +            
    +              PIN_INT_ENA
    +              set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded) interrupt.
    +              13
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          STATUS_NEXT
    +          GPIO interrupt source register
    +          0x14C
    +          0x20
    +          
    +            
    +              STATUS_INTERRUPT_NEXT
    +              GPIO interrupt source register for GPIO0-25
    +              0
    +              26
    +              read-only
    +            
    +          
    +        
    +        
    +          128
    +          0x4
    +          FUNC%s_IN_SEL_CFG
    +          GPIO input function configuration register
    +          0x154
    +          0x20
    +          
    +            
    +              IN_SEL
    +              set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always high level. s=x3C: set this port always low level.
    +              0
    +              5
    +              read-write
    +            
    +            
    +              IN_INV_SEL
    +              set this bit to invert input signal. 1:invert. :not invert.
    +              5
    +              1
    +              read-write
    +            
    +            
    +              SEL
    +              set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +              6
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          26
    +          0x4
    +          FUNC%s_OUT_SEL_CFG
    +          GPIO output function select register
    +          0x554
    +          0x20
    +          0x00000080
    +          
    +            
    +              OUT_SEL
    +              The value of the bits: <=s<=256. Set the value to select output signal. s=-255: output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals GPIO_OUT_REG[n].
    +              0
    +              8
    +              read-write
    +            
    +            
    +              INV_SEL
    +              set this bit to invert output signal.1:invert.:not invert.
    +              8
    +              1
    +              read-write
    +            
    +            
    +              OEN_SEL
    +              set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output enable signal.:use peripheral output enable signal.
    +              9
    +              1
    +              read-write
    +            
    +            
    +              OEN_INV_SEL
    +              set this bit to invert output enable signal.1:invert.:not invert.
    +              10
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CLOCK_GATE
    +          GPIO clock gate register
    +          0x62C
    +          0x20
    +          0x00000001
    +          
    +            
    +              CLK_EN
    +              set this bit to enable GPIO clock gate
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          REG_DATE
    +          GPIO version register
    +          0x6FC
    +          0x20
    +          0x02006130
    +          
    +            
    +              REG_DATE
    +              version register
    +              0
    +              28
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      GPIOSD
    +      Sigma-Delta Modulation
    +      GPIOSD
    +      0x60004F00
    +      
    +        0x0
    +        0x1C
    +        registers
    +      
    +      
    +        
    +          4
    +          0x4
    +          SIGMADELTA%s
    +          Duty Cycle Configure Register of SDM%s
    +          0x0
    +          0x20
    +          0x0000FF00
    +          
    +            
    +              SD0_IN
    +              This field is used to configure the duty cycle of sigma delta modulation output.
    +              0
    +              8
    +              read-write
    +            
    +            
    +              SD0_PRESCALE
    +              This field is used to set a divider value to divide APB clock.
    +              8
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          SIGMADELTA_CG
    +          Clock Gating Configure Register
    +          0x20
    +          0x20
    +          
    +            
    +              CLK_EN
    +              Clock enable bit of configuration registers for sigma delta modulation.
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          SIGMADELTA_MISC
    +          MISC Register
    +          0x24
    +          0x20
    +          
    +            
    +              FUNCTION_CLK_EN
    +              Clock enable bit of sigma delta modulation.
    +              30
    +              1
    +              read-write
    +            
    +            
    +              SPI_SWAP
    +              Reserved.
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          SIGMADELTA_VERSION
    +          Version Control Register
    +          0x28
    +          0x20
    +          0x02006230
    +          
    +            
    +              GPIO_SD_DATE
    +              Version control register.
    +              0
    +              28
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      HMAC
    +      HMAC (Hash-based Message Authentication Code) Accelerator
    +      HMAC
    +      0x6003E000
    +      
    +        0x0
    +        0xA0
    +        registers
    +      
    +      
    +        
    +          SET_START
    +          Process control register 0.
    +          0x40
    +          0x20
    +          
    +            
    +              SET_START
    +              Start hmac operation.
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          SET_PARA_PURPOSE
    +          Configure purpose.
    +          0x44
    +          0x20
    +          
    +            
    +              PURPOSE_SET
    +              Set hmac parameter purpose.
    +              0
    +              4
    +              write-only
    +            
    +          
    +        
    +        
    +          SET_PARA_KEY
    +          Configure key.
    +          0x48
    +          0x20
    +          
    +            
    +              KEY_SET
    +              Set hmac parameter key.
    +              0
    +              3
    +              write-only
    +            
    +          
    +        
    +        
    +          SET_PARA_FINISH
    +          Finish initial configuration.
    +          0x4C
    +          0x20
    +          
    +            
    +              SET_PARA_END
    +              Finish hmac configuration.
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          SET_MESSAGE_ONE
    +          Process control register 1.
    +          0x50
    +          0x20
    +          
    +            
    +              SET_TEXT_ONE
    +              Call SHA to calculate one message block.
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          SET_MESSAGE_ING
    +          Process control register 2.
    +          0x54
    +          0x20
    +          
    +            
    +              SET_TEXT_ING
    +              Continue typical hmac.
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          SET_MESSAGE_END
    +          Process control register 3.
    +          0x58
    +          0x20
    +          
    +            
    +              SET_TEXT_END
    +              Start hardware padding.
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          SET_RESULT_FINISH
    +          Process control register 4.
    +          0x5C
    +          0x20
    +          
    +            
    +              SET_RESULT_END
    +              After read result from upstream, then let hmac back to idle.
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          SET_INVALIDATE_JTAG
    +          Invalidate register 0.
    +          0x60
    +          0x20
    +          
    +            
    +              SET_INVALIDATE_JTAG
    +              Clear result from hmac downstream JTAG.
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          SET_INVALIDATE_DS
    +          Invalidate register 1.
    +          0x64
    +          0x20
    +          
    +            
    +              SET_INVALIDATE_DS
    +              Clear result from hmac downstream DS.
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          QUERY_ERROR
    +          Error register.
    +          0x68
    +          0x20
    +          
    +            
    +              QUREY_CHECK
    +              Hmac configuration state. 0: key are agree with purpose. 1: error
    +              0
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          QUERY_BUSY
    +          Busy register.
    +          0x6C
    +          0x20
    +          
    +            
    +              BUSY_STATE
    +              Hmac state. 1'b0: idle. 1'b1: busy
    +              0
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          64
    +          0x1
    +          WR_MESSAGE_MEM[%s]
    +          Message block memory.
    +          0x80
    +          0x8
    +        
    +        
    +          32
    +          0x1
    +          RD_RESULT_MEM[%s]
    +          Result from upstream.
    +          0xC0
    +          0x8
    +        
    +        
    +          SET_MESSAGE_PAD
    +          Process control register 5.
    +          0xF0
    +          0x20
    +          
    +            
    +              SET_TEXT_PAD
    +              Start software padding.
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          ONE_BLOCK
    +          Process control register 6.
    +          0xF4
    +          0x20
    +          
    +            
    +              SET_ONE_BLOCK
    +              Don't have to do padding.
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          SOFT_JTAG_CTRL
    +          Jtag register 0.
    +          0xF8
    +          0x20
    +          
    +            
    +              SOFT_JTAG_CTRL
    +              Turn on JTAG verification.
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          WR_JTAG
    +          Jtag register 1.
    +          0xFC
    +          0x20
    +          
    +            
    +              WR_JTAG
    +              32-bit of key to be compared.
    +              0
    +              32
    +              write-only
    +            
    +          
    +        
    +      
    +    
    +    
    +      I2C0
    +      I2C (Inter-Integrated Circuit) Controller
    +      I2C
    +      0x60013000
    +      
    +        0x0
    +        0x90
    +        registers
    +      
    +      
    +        I2C_EXT0
    +        29
    +      
    +      
    +        
    +          SCL_LOW_PERIOD
    +          I2C_SCL_LOW_PERIOD_REG
    +          0x0
    +          0x20
    +          
    +            
    +              SCL_LOW_PERIOD
    +              reg_scl_low_period
    +              0
    +              9
    +              read-write
    +            
    +          
    +        
    +        
    +          CTR
    +          I2C_CTR_REG
    +          0x4
    +          0x20
    +          0x0000020B
    +          
    +            
    +              SDA_FORCE_OUT
    +              reg_sda_force_out
    +              0
    +              1
    +              read-write
    +            
    +            
    +              SCL_FORCE_OUT
    +              reg_scl_force_out
    +              1
    +              1
    +              read-write
    +            
    +            
    +              SAMPLE_SCL_LEVEL
    +              reg_sample_scl_level
    +              2
    +              1
    +              read-write
    +            
    +            
    +              RX_FULL_ACK_LEVEL
    +              reg_rx_full_ack_level
    +              3
    +              1
    +              read-write
    +            
    +            
    +              MS_MODE
    +              reg_ms_mode
    +              4
    +              1
    +              read-write
    +            
    +            
    +              TRANS_START
    +              reg_trans_start
    +              5
    +              1
    +              write-only
    +            
    +            
    +              TX_LSB_FIRST
    +              reg_tx_lsb_first
    +              6
    +              1
    +              read-write
    +            
    +            
    +              RX_LSB_FIRST
    +              reg_rx_lsb_first
    +              7
    +              1
    +              read-write
    +            
    +            
    +              CLK_EN
    +              reg_clk_en
    +              8
    +              1
    +              read-write
    +            
    +            
    +              ARBITRATION_EN
    +              reg_arbitration_en
    +              9
    +              1
    +              read-write
    +            
    +            
    +              FSM_RST
    +              reg_fsm_rst
    +              10
    +              1
    +              write-only
    +            
    +            
    +              CONF_UPGATE
    +              reg_conf_upgate
    +              11
    +              1
    +              write-only
    +            
    +            
    +              SLV_TX_AUTO_START_EN
    +              reg_slv_tx_auto_start_en
    +              12
    +              1
    +              read-write
    +            
    +            
    +              ADDR_10BIT_RW_CHECK_EN
    +              reg_addr_10bit_rw_check_en
    +              13
    +              1
    +              read-write
    +            
    +            
    +              ADDR_BROADCASTING_EN
    +              reg_addr_broadcasting_en
    +              14
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          SR
    +          I2C_SR_REG
    +          0x8
    +          0x20
    +          0x0000C000
    +          
    +            
    +              RESP_REC
    +              reg_resp_rec
    +              0
    +              1
    +              read-only
    +            
    +            
    +              SLAVE_RW
    +              reg_slave_rw
    +              1
    +              1
    +              read-only
    +            
    +            
    +              ARB_LOST
    +              reg_arb_lost
    +              3
    +              1
    +              read-only
    +            
    +            
    +              BUS_BUSY
    +              reg_bus_busy
    +              4
    +              1
    +              read-only
    +            
    +            
    +              SLAVE_ADDRESSED
    +              reg_slave_addressed
    +              5
    +              1
    +              read-only
    +            
    +            
    +              RXFIFO_CNT
    +              reg_rxfifo_cnt
    +              8
    +              6
    +              read-only
    +            
    +            
    +              STRETCH_CAUSE
    +              reg_stretch_cause
    +              14
    +              2
    +              read-only
    +            
    +            
    +              TXFIFO_CNT
    +              reg_txfifo_cnt
    +              18
    +              6
    +              read-only
    +            
    +            
    +              SCL_MAIN_STATE_LAST
    +              reg_scl_main_state_last
    +              24
    +              3
    +              read-only
    +            
    +            
    +              SCL_STATE_LAST
    +              reg_scl_state_last
    +              28
    +              3
    +              read-only
    +            
    +          
    +        
    +        
    +          TO
    +          I2C_TO_REG
    +          0xC
    +          0x20
    +          0x00000010
    +          
    +            
    +              TIME_OUT_VALUE
    +              reg_time_out_value
    +              0
    +              5
    +              read-write
    +            
    +            
    +              TIME_OUT_EN
    +              reg_time_out_en
    +              5
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          SLAVE_ADDR
    +          I2C_SLAVE_ADDR_REG
    +          0x10
    +          0x20
    +          
    +            
    +              SLAVE_ADDR
    +              reg_slave_addr
    +              0
    +              15
    +              read-write
    +            
    +            
    +              ADDR_10BIT_EN
    +              reg_addr_10bit_en
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          FIFO_ST
    +          I2C_FIFO_ST_REG
    +          0x14
    +          0x20
    +          
    +            
    +              RXFIFO_RADDR
    +              reg_rxfifo_raddr
    +              0
    +              5
    +              read-only
    +            
    +            
    +              RXFIFO_WADDR
    +              reg_rxfifo_waddr
    +              5
    +              5
    +              read-only
    +            
    +            
    +              TXFIFO_RADDR
    +              reg_txfifo_raddr
    +              10
    +              5
    +              read-only
    +            
    +            
    +              TXFIFO_WADDR
    +              reg_txfifo_waddr
    +              15
    +              5
    +              read-only
    +            
    +            
    +              SLAVE_RW_POINT
    +              reg_slave_rw_point
    +              22
    +              8
    +              read-only
    +            
    +          
    +        
    +        
    +          FIFO_CONF
    +          I2C_FIFO_CONF_REG
    +          0x18
    +          0x20
    +          0x0000408B
    +          
    +            
    +              RXFIFO_WM_THRHD
    +              reg_rxfifo_wm_thrhd
    +              0
    +              5
    +              read-write
    +            
    +            
    +              TXFIFO_WM_THRHD
    +              reg_txfifo_wm_thrhd
    +              5
    +              5
    +              read-write
    +            
    +            
    +              NONFIFO_EN
    +              reg_nonfifo_en
    +              10
    +              1
    +              read-write
    +            
    +            
    +              FIFO_ADDR_CFG_EN
    +              reg_fifo_addr_cfg_en
    +              11
    +              1
    +              read-write
    +            
    +            
    +              RX_FIFO_RST
    +              reg_rx_fifo_rst
    +              12
    +              1
    +              read-write
    +            
    +            
    +              TX_FIFO_RST
    +              reg_tx_fifo_rst
    +              13
    +              1
    +              read-write
    +            
    +            
    +              FIFO_PRT_EN
    +              reg_fifo_prt_en
    +              14
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DATA
    +          I2C_FIFO_DATA_REG
    +          0x1C
    +          0x20
    +          
    +            
    +              FIFO_RDATA
    +              reg_fifo_rdata
    +              0
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_RAW
    +          I2C_INT_RAW_REG
    +          0x20
    +          0x20
    +          0x00000002
    +          
    +            
    +              RXFIFO_WM_INT_RAW
    +              reg_rxfifo_wm_int_raw
    +              0
    +              1
    +              read-only
    +            
    +            
    +              TXFIFO_WM_INT_RAW
    +              reg_txfifo_wm_int_raw
    +              1
    +              1
    +              read-only
    +            
    +            
    +              RXFIFO_OVF_INT_RAW
    +              reg_rxfifo_ovf_int_raw
    +              2
    +              1
    +              read-only
    +            
    +            
    +              END_DETECT_INT_RAW
    +              reg_end_detect_int_raw
    +              3
    +              1
    +              read-only
    +            
    +            
    +              BYTE_TRANS_DONE_INT_RAW
    +              reg_byte_trans_done_int_raw
    +              4
    +              1
    +              read-only
    +            
    +            
    +              ARBITRATION_LOST_INT_RAW
    +              reg_arbitration_lost_int_raw
    +              5
    +              1
    +              read-only
    +            
    +            
    +              MST_TXFIFO_UDF_INT_RAW
    +              reg_mst_txfifo_udf_int_raw
    +              6
    +              1
    +              read-only
    +            
    +            
    +              TRANS_COMPLETE_INT_RAW
    +              reg_trans_complete_int_raw
    +              7
    +              1
    +              read-only
    +            
    +            
    +              TIME_OUT_INT_RAW
    +              reg_time_out_int_raw
    +              8
    +              1
    +              read-only
    +            
    +            
    +              TRANS_START_INT_RAW
    +              reg_trans_start_int_raw
    +              9
    +              1
    +              read-only
    +            
    +            
    +              NACK_INT_RAW
    +              reg_nack_int_raw
    +              10
    +              1
    +              read-only
    +            
    +            
    +              TXFIFO_OVF_INT_RAW
    +              reg_txfifo_ovf_int_raw
    +              11
    +              1
    +              read-only
    +            
    +            
    +              RXFIFO_UDF_INT_RAW
    +              reg_rxfifo_udf_int_raw
    +              12
    +              1
    +              read-only
    +            
    +            
    +              SCL_ST_TO_INT_RAW
    +              reg_scl_st_to_int_raw
    +              13
    +              1
    +              read-only
    +            
    +            
    +              SCL_MAIN_ST_TO_INT_RAW
    +              reg_scl_main_st_to_int_raw
    +              14
    +              1
    +              read-only
    +            
    +            
    +              DET_START_INT_RAW
    +              reg_det_start_int_raw
    +              15
    +              1
    +              read-only
    +            
    +            
    +              SLAVE_STRETCH_INT_RAW
    +              reg_slave_stretch_int_raw
    +              16
    +              1
    +              read-only
    +            
    +            
    +              GENERAL_CALL_INT_RAW
    +              reg_general_call_int_raw
    +              17
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_CLR
    +          I2C_INT_CLR_REG
    +          0x24
    +          0x20
    +          
    +            
    +              RXFIFO_WM_INT_CLR
    +              reg_rxfifo_wm_int_clr
    +              0
    +              1
    +              write-only
    +            
    +            
    +              TXFIFO_WM_INT_CLR
    +              reg_txfifo_wm_int_clr
    +              1
    +              1
    +              write-only
    +            
    +            
    +              RXFIFO_OVF_INT_CLR
    +              reg_rxfifo_ovf_int_clr
    +              2
    +              1
    +              write-only
    +            
    +            
    +              END_DETECT_INT_CLR
    +              reg_end_detect_int_clr
    +              3
    +              1
    +              write-only
    +            
    +            
    +              BYTE_TRANS_DONE_INT_CLR
    +              reg_byte_trans_done_int_clr
    +              4
    +              1
    +              write-only
    +            
    +            
    +              ARBITRATION_LOST_INT_CLR
    +              reg_arbitration_lost_int_clr
    +              5
    +              1
    +              write-only
    +            
    +            
    +              MST_TXFIFO_UDF_INT_CLR
    +              reg_mst_txfifo_udf_int_clr
    +              6
    +              1
    +              write-only
    +            
    +            
    +              TRANS_COMPLETE_INT_CLR
    +              reg_trans_complete_int_clr
    +              7
    +              1
    +              write-only
    +            
    +            
    +              TIME_OUT_INT_CLR
    +              reg_time_out_int_clr
    +              8
    +              1
    +              write-only
    +            
    +            
    +              TRANS_START_INT_CLR
    +              reg_trans_start_int_clr
    +              9
    +              1
    +              write-only
    +            
    +            
    +              NACK_INT_CLR
    +              reg_nack_int_clr
    +              10
    +              1
    +              write-only
    +            
    +            
    +              TXFIFO_OVF_INT_CLR
    +              reg_txfifo_ovf_int_clr
    +              11
    +              1
    +              write-only
    +            
    +            
    +              RXFIFO_UDF_INT_CLR
    +              reg_rxfifo_udf_int_clr
    +              12
    +              1
    +              write-only
    +            
    +            
    +              SCL_ST_TO_INT_CLR
    +              reg_scl_st_to_int_clr
    +              13
    +              1
    +              write-only
    +            
    +            
    +              SCL_MAIN_ST_TO_INT_CLR
    +              reg_scl_main_st_to_int_clr
    +              14
    +              1
    +              write-only
    +            
    +            
    +              DET_START_INT_CLR
    +              reg_det_start_int_clr
    +              15
    +              1
    +              write-only
    +            
    +            
    +              SLAVE_STRETCH_INT_CLR
    +              reg_slave_stretch_int_clr
    +              16
    +              1
    +              write-only
    +            
    +            
    +              GENERAL_CALL_INT_CLR
    +              reg_general_call_int_clr
    +              17
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          INT_ENA
    +          I2C_INT_ENA_REG
    +          0x28
    +          0x20
    +          
    +            
    +              RXFIFO_WM_INT_ENA
    +              reg_rxfifo_wm_int_ena
    +              0
    +              1
    +              read-write
    +            
    +            
    +              TXFIFO_WM_INT_ENA
    +              reg_txfifo_wm_int_ena
    +              1
    +              1
    +              read-write
    +            
    +            
    +              RXFIFO_OVF_INT_ENA
    +              reg_rxfifo_ovf_int_ena
    +              2
    +              1
    +              read-write
    +            
    +            
    +              END_DETECT_INT_ENA
    +              reg_end_detect_int_ena
    +              3
    +              1
    +              read-write
    +            
    +            
    +              BYTE_TRANS_DONE_INT_ENA
    +              reg_byte_trans_done_int_ena
    +              4
    +              1
    +              read-write
    +            
    +            
    +              ARBITRATION_LOST_INT_ENA
    +              reg_arbitration_lost_int_ena
    +              5
    +              1
    +              read-write
    +            
    +            
    +              MST_TXFIFO_UDF_INT_ENA
    +              reg_mst_txfifo_udf_int_ena
    +              6
    +              1
    +              read-write
    +            
    +            
    +              TRANS_COMPLETE_INT_ENA
    +              reg_trans_complete_int_ena
    +              7
    +              1
    +              read-write
    +            
    +            
    +              TIME_OUT_INT_ENA
    +              reg_time_out_int_ena
    +              8
    +              1
    +              read-write
    +            
    +            
    +              TRANS_START_INT_ENA
    +              reg_trans_start_int_ena
    +              9
    +              1
    +              read-write
    +            
    +            
    +              NACK_INT_ENA
    +              reg_nack_int_ena
    +              10
    +              1
    +              read-write
    +            
    +            
    +              TXFIFO_OVF_INT_ENA
    +              reg_txfifo_ovf_int_ena
    +              11
    +              1
    +              read-write
    +            
    +            
    +              RXFIFO_UDF_INT_ENA
    +              reg_rxfifo_udf_int_ena
    +              12
    +              1
    +              read-write
    +            
    +            
    +              SCL_ST_TO_INT_ENA
    +              reg_scl_st_to_int_ena
    +              13
    +              1
    +              read-write
    +            
    +            
    +              SCL_MAIN_ST_TO_INT_ENA
    +              reg_scl_main_st_to_int_ena
    +              14
    +              1
    +              read-write
    +            
    +            
    +              DET_START_INT_ENA
    +              reg_det_start_int_ena
    +              15
    +              1
    +              read-write
    +            
    +            
    +              SLAVE_STRETCH_INT_ENA
    +              reg_slave_stretch_int_ena
    +              16
    +              1
    +              read-write
    +            
    +            
    +              GENERAL_CALL_INT_ENA
    +              reg_general_call_int_ena
    +              17
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_STATUS
    +          I2C_INT_STATUS_REG
    +          0x2C
    +          0x20
    +          
    +            
    +              RXFIFO_WM_INT_ST
    +              reg_rxfifo_wm_int_st
    +              0
    +              1
    +              read-only
    +            
    +            
    +              TXFIFO_WM_INT_ST
    +              reg_txfifo_wm_int_st
    +              1
    +              1
    +              read-only
    +            
    +            
    +              RXFIFO_OVF_INT_ST
    +              reg_rxfifo_ovf_int_st
    +              2
    +              1
    +              read-only
    +            
    +            
    +              END_DETECT_INT_ST
    +              reg_end_detect_int_st
    +              3
    +              1
    +              read-only
    +            
    +            
    +              BYTE_TRANS_DONE_INT_ST
    +              reg_byte_trans_done_int_st
    +              4
    +              1
    +              read-only
    +            
    +            
    +              ARBITRATION_LOST_INT_ST
    +              reg_arbitration_lost_int_st
    +              5
    +              1
    +              read-only
    +            
    +            
    +              MST_TXFIFO_UDF_INT_ST
    +              reg_mst_txfifo_udf_int_st
    +              6
    +              1
    +              read-only
    +            
    +            
    +              TRANS_COMPLETE_INT_ST
    +              reg_trans_complete_int_st
    +              7
    +              1
    +              read-only
    +            
    +            
    +              TIME_OUT_INT_ST
    +              reg_time_out_int_st
    +              8
    +              1
    +              read-only
    +            
    +            
    +              TRANS_START_INT_ST
    +              reg_trans_start_int_st
    +              9
    +              1
    +              read-only
    +            
    +            
    +              NACK_INT_ST
    +              reg_nack_int_st
    +              10
    +              1
    +              read-only
    +            
    +            
    +              TXFIFO_OVF_INT_ST
    +              reg_txfifo_ovf_int_st
    +              11
    +              1
    +              read-only
    +            
    +            
    +              RXFIFO_UDF_INT_ST
    +              reg_rxfifo_udf_int_st
    +              12
    +              1
    +              read-only
    +            
    +            
    +              SCL_ST_TO_INT_ST
    +              reg_scl_st_to_int_st
    +              13
    +              1
    +              read-only
    +            
    +            
    +              SCL_MAIN_ST_TO_INT_ST
    +              reg_scl_main_st_to_int_st
    +              14
    +              1
    +              read-only
    +            
    +            
    +              DET_START_INT_ST
    +              reg_det_start_int_st
    +              15
    +              1
    +              read-only
    +            
    +            
    +              SLAVE_STRETCH_INT_ST
    +              reg_slave_stretch_int_st
    +              16
    +              1
    +              read-only
    +            
    +            
    +              GENERAL_CALL_INT_ST
    +              reg_general_call_int_st
    +              17
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          SDA_HOLD
    +          I2C_SDA_HOLD_REG
    +          0x30
    +          0x20
    +          
    +            
    +              TIME
    +              reg_sda_hold_time
    +              0
    +              9
    +              read-write
    +            
    +          
    +        
    +        
    +          SDA_SAMPLE
    +          I2C_SDA_SAMPLE_REG
    +          0x34
    +          0x20
    +          
    +            
    +              TIME
    +              reg_sda_sample_time
    +              0
    +              9
    +              read-write
    +            
    +          
    +        
    +        
    +          SCL_HIGH_PERIOD
    +          I2C_SCL_HIGH_PERIOD_REG
    +          0x38
    +          0x20
    +          
    +            
    +              SCL_HIGH_PERIOD
    +              reg_scl_high_period
    +              0
    +              9
    +              read-write
    +            
    +            
    +              SCL_WAIT_HIGH_PERIOD
    +              reg_scl_wait_high_period
    +              9
    +              7
    +              read-write
    +            
    +          
    +        
    +        
    +          SCL_START_HOLD
    +          I2C_SCL_START_HOLD_REG
    +          0x40
    +          0x20
    +          0x00000008
    +          
    +            
    +              TIME
    +              reg_scl_start_hold_time
    +              0
    +              9
    +              read-write
    +            
    +          
    +        
    +        
    +          SCL_RSTART_SETUP
    +          I2C_SCL_RSTART_SETUP_REG
    +          0x44
    +          0x20
    +          0x00000008
    +          
    +            
    +              TIME
    +              reg_scl_rstart_setup_time
    +              0
    +              9
    +              read-write
    +            
    +          
    +        
    +        
    +          SCL_STOP_HOLD
    +          I2C_SCL_STOP_HOLD_REG
    +          0x48
    +          0x20
    +          0x00000008
    +          
    +            
    +              TIME
    +              reg_scl_stop_hold_time
    +              0
    +              9
    +              read-write
    +            
    +          
    +        
    +        
    +          SCL_STOP_SETUP
    +          I2C_SCL_STOP_SETUP_REG
    +          0x4C
    +          0x20
    +          0x00000008
    +          
    +            
    +              TIME
    +              reg_scl_stop_setup_time
    +              0
    +              9
    +              read-write
    +            
    +          
    +        
    +        
    +          FILTER_CFG
    +          I2C_FILTER_CFG_REG
    +          0x50
    +          0x20
    +          0x00000300
    +          
    +            
    +              SCL_FILTER_THRES
    +              reg_scl_filter_thres
    +              0
    +              4
    +              read-write
    +            
    +            
    +              SDA_FILTER_THRES
    +              reg_sda_filter_thres
    +              4
    +              4
    +              read-write
    +            
    +            
    +              SCL_FILTER_EN
    +              reg_scl_filter_en
    +              8
    +              1
    +              read-write
    +            
    +            
    +              SDA_FILTER_EN
    +              reg_sda_filter_en
    +              9
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CLK_CONF
    +          I2C_CLK_CONF_REG
    +          0x54
    +          0x20
    +          0x00200000
    +          
    +            
    +              SCLK_DIV_NUM
    +              reg_sclk_div_num
    +              0
    +              8
    +              read-write
    +            
    +            
    +              SCLK_DIV_A
    +              reg_sclk_div_a
    +              8
    +              6
    +              read-write
    +            
    +            
    +              SCLK_DIV_B
    +              reg_sclk_div_b
    +              14
    +              6
    +              read-write
    +            
    +            
    +              SCLK_SEL
    +              reg_sclk_sel
    +              20
    +              1
    +              read-write
    +            
    +            
    +              SCLK_ACTIVE
    +              reg_sclk_active
    +              21
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          8
    +          0x4
    +          COMD%s
    +          I2C_COMD%s_REG
    +          0x58
    +          0x20
    +          
    +            
    +              COMMAND
    +              reg_command
    +              0
    +              14
    +              read-write
    +            
    +            
    +              COMMAND_DONE
    +              reg_command_done
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          SCL_ST_TIME_OUT
    +          I2C_SCL_ST_TIME_OUT_REG
    +          0x78
    +          0x20
    +          0x00000010
    +          
    +            
    +              SCL_ST_TO_I2C
    +              reg_scl_st_to_regno more than 23
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          SCL_MAIN_ST_TIME_OUT
    +          I2C_SCL_MAIN_ST_TIME_OUT_REG
    +          0x7C
    +          0x20
    +          0x00000010
    +          
    +            
    +              SCL_MAIN_ST_TO_I2C
    +              reg_scl_main_st_to_regno more than 23
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          SCL_SP_CONF
    +          I2C_SCL_SP_CONF_REG
    +          0x80
    +          0x20
    +          
    +            
    +              SCL_RST_SLV_EN
    +              reg_scl_rst_slv_en
    +              0
    +              1
    +              read-write
    +            
    +            
    +              SCL_RST_SLV_NUM
    +              reg_scl_rst_slv_num
    +              1
    +              5
    +              read-write
    +            
    +            
    +              SCL_PD_EN
    +              reg_scl_pd_en
    +              6
    +              1
    +              read-write
    +            
    +            
    +              SDA_PD_EN
    +              reg_sda_pd_en
    +              7
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          SCL_STRETCH_CONF
    +          I2C_SCL_STRETCH_CONF_REG
    +          0x84
    +          0x20
    +          
    +            
    +              STRETCH_PROTECT_NUM
    +              reg_stretch_protect_num
    +              0
    +              10
    +              read-write
    +            
    +            
    +              SLAVE_SCL_STRETCH_EN
    +              reg_slave_scl_stretch_en
    +              10
    +              1
    +              read-write
    +            
    +            
    +              SLAVE_SCL_STRETCH_CLR
    +              reg_slave_scl_stretch_clr
    +              11
    +              1
    +              write-only
    +            
    +            
    +              SLAVE_BYTE_ACK_CTL_EN
    +              reg_slave_byte_ack_ctl_en
    +              12
    +              1
    +              read-write
    +            
    +            
    +              SLAVE_BYTE_ACK_LVL
    +              reg_slave_byte_ack_lvl
    +              13
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DATE
    +          I2C_DATE_REG
    +          0xF8
    +          0x20
    +          0x20070201
    +          
    +            
    +              DATE
    +              reg_date
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          TXFIFO_START_ADDR
    +          I2C_TXFIFO_START_ADDR_REG
    +          0x100
    +          0x20
    +          
    +            
    +              TXFIFO_START_ADDR
    +              reg_txfifo_start_addr.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          RXFIFO_START_ADDR
    +          I2C_RXFIFO_START_ADDR_REG
    +          0x180
    +          0x20
    +          
    +            
    +              RXFIFO_START_ADDR
    +              reg_rxfifo_start_addr.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +      
    +    
    +    
    +      I2S
    +      I2S (Inter-IC Sound) Controller
    +      I2S
    +      0x6002D000
    +      
    +        0x0
    +        0x5C
    +        registers
    +      
    +      
    +        I2S
    +        20
    +      
    +      
    +        
    +          INT_RAW
    +          I2S interrupt raw register, valid in level.
    +          0xC
    +          0x20
    +          
    +            
    +              RX_DONE_INT_RAW
    +              The raw interrupt status bit  for the i2s_rx_done_int interrupt
    +              0
    +              1
    +              read-only
    +            
    +            
    +              TX_DONE_INT_RAW
    +              The raw interrupt status bit  for the i2s_tx_done_int interrupt
    +              1
    +              1
    +              read-only
    +            
    +            
    +              RX_HUNG_INT_RAW
    +              The raw interrupt status bit  for the i2s_rx_hung_int interrupt
    +              2
    +              1
    +              read-only
    +            
    +            
    +              TX_HUNG_INT_RAW
    +              The raw interrupt status bit  for the i2s_tx_hung_int interrupt
    +              3
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_ST
    +          I2S interrupt status register.
    +          0x10
    +          0x20
    +          
    +            
    +              RX_DONE_INT_ST
    +              The masked interrupt status bit  for the i2s_rx_done_int interrupt
    +              0
    +              1
    +              read-only
    +            
    +            
    +              TX_DONE_INT_ST
    +              The masked interrupt status bit  for the i2s_tx_done_int interrupt
    +              1
    +              1
    +              read-only
    +            
    +            
    +              RX_HUNG_INT_ST
    +              The masked interrupt status bit  for the i2s_rx_hung_int interrupt
    +              2
    +              1
    +              read-only
    +            
    +            
    +              TX_HUNG_INT_ST
    +              The masked interrupt status bit  for the i2s_tx_hung_int interrupt
    +              3
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_ENA
    +          I2S interrupt enable register.
    +          0x14
    +          0x20
    +          
    +            
    +              RX_DONE_INT_ENA
    +              The interrupt enable bit  for the i2s_rx_done_int interrupt
    +              0
    +              1
    +              read-write
    +            
    +            
    +              TX_DONE_INT_ENA
    +              The interrupt enable bit  for the i2s_tx_done_int interrupt
    +              1
    +              1
    +              read-write
    +            
    +            
    +              RX_HUNG_INT_ENA
    +              The interrupt enable bit  for the i2s_rx_hung_int interrupt
    +              2
    +              1
    +              read-write
    +            
    +            
    +              TX_HUNG_INT_ENA
    +              The interrupt enable bit  for the i2s_tx_hung_int interrupt
    +              3
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_CLR
    +          I2S interrupt clear register.
    +          0x18
    +          0x20
    +          
    +            
    +              RX_DONE_INT_CLR
    +              Set this bit to clear the i2s_rx_done_int interrupt
    +              0
    +              1
    +              write-only
    +            
    +            
    +              TX_DONE_INT_CLR
    +              Set this bit to clear the i2s_tx_done_int interrupt
    +              1
    +              1
    +              write-only
    +            
    +            
    +              RX_HUNG_INT_CLR
    +              Set this bit to clear the i2s_rx_hung_int interrupt
    +              2
    +              1
    +              write-only
    +            
    +            
    +              TX_HUNG_INT_CLR
    +              Set this bit to clear the i2s_tx_hung_int interrupt
    +              3
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          RX_CONF
    +          I2S RX configure register
    +          0x20
    +          0x20
    +          0x00009600
    +          
    +            
    +              RX_RESET
    +              Set this bit to reset receiver
    +              0
    +              1
    +              write-only
    +            
    +            
    +              RX_FIFO_RESET
    +              Set this bit to reset Rx AFIFO
    +              1
    +              1
    +              write-only
    +            
    +            
    +              RX_START
    +              Set this bit to start receiving data
    +              2
    +              1
    +              read-write
    +            
    +            
    +              RX_SLAVE_MOD
    +              Set this bit to enable slave receiver mode
    +              3
    +              1
    +              read-write
    +            
    +            
    +              RX_MONO
    +              Set this bit to enable receiver  in mono mode
    +              5
    +              1
    +              read-write
    +            
    +            
    +              RX_BIG_ENDIAN
    +              I2S Rx byte endian, 1: low addr value to high addr. 0: low addr with low addr value.
    +              7
    +              1
    +              read-write
    +            
    +            
    +              RX_UPDATE
    +              Set 1 to update I2S RX registers from APB clock domain to I2S RX clock domain. This bit will be cleared by hardware after update register done.
    +              8
    +              1
    +              read-write
    +            
    +            
    +              RX_MONO_FST_VLD
    +              1: The first channel data value is valid in I2S RX mono mode.   0: The second channel data value is valid in I2S RX mono mode.
    +              9
    +              1
    +              read-write
    +            
    +            
    +              RX_PCM_CONF
    +              I2S RX compress/decompress configuration bit. & 0 (atol): A-Law decompress, 1 (ltoa) : A-Law compress, 2 (utol) : u-Law decompress, 3 (ltou) : u-Law compress. &
    +              10
    +              2
    +              read-write
    +            
    +            
    +              RX_PCM_BYPASS
    +              Set this bit to bypass Compress/Decompress module for received data.
    +              12
    +              1
    +              read-write
    +            
    +            
    +              RX_STOP_MODE
    +              0  : I2S Rx only stop when reg_rx_start is cleared.   1: Stop when reg_rx_start is 0 or in_suc_eof is 1.   2:  Stop I2S RX when reg_rx_start is 0 or RX FIFO is full.
    +              13
    +              2
    +              read-write
    +            
    +            
    +              RX_LEFT_ALIGN
    +              1: I2S RX left alignment mode. 0: I2S RX right alignment mode.
    +              15
    +              1
    +              read-write
    +            
    +            
    +              RX_24_FILL_EN
    +              1: store 24 channel bits to 32 bits. 0:store 24 channel bits to 24 bits.
    +              16
    +              1
    +              read-write
    +            
    +            
    +              RX_WS_IDLE_POL
    +              0: WS should be 0 when receiving left channel data, and WS is 1in right channel.  1: WS should be 1 when receiving left channel data, and WS is 0in right channel.
    +              17
    +              1
    +              read-write
    +            
    +            
    +              RX_BIT_ORDER
    +              I2S Rx bit endian. 1:small endian, the LSB is received first. 0:big endian, the MSB is received first.
    +              18
    +              1
    +              read-write
    +            
    +            
    +              RX_TDM_EN
    +              1: Enable I2S TDM Rx mode . 0: Disable.
    +              19
    +              1
    +              read-write
    +            
    +            
    +              RX_PDM_EN
    +              1: Enable I2S PDM Rx mode . 0: Disable.
    +              20
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          TX_CONF
    +          I2S TX configure register
    +          0x24
    +          0x20
    +          0x0000B200
    +          
    +            
    +              TX_RESET
    +              Set this bit to reset transmitter
    +              0
    +              1
    +              write-only
    +            
    +            
    +              TX_FIFO_RESET
    +              Set this bit to reset Tx AFIFO
    +              1
    +              1
    +              write-only
    +            
    +            
    +              TX_START
    +              Set this bit to start transmitting data
    +              2
    +              1
    +              read-write
    +            
    +            
    +              TX_SLAVE_MOD
    +              Set this bit to enable slave transmitter mode
    +              3
    +              1
    +              read-write
    +            
    +            
    +              TX_MONO
    +              Set this bit to enable transmitter in mono mode
    +              5
    +              1
    +              read-write
    +            
    +            
    +              TX_CHAN_EQUAL
    +              1: The value of Left channel data is equal to the value of right channel data in I2S TX mono mode or TDM channel select mode. 0: The invalid channel data is reg_i2s_single_data in I2S TX mono mode or TDM channel select mode.
    +              6
    +              1
    +              read-write
    +            
    +            
    +              TX_BIG_ENDIAN
    +              I2S Tx byte endian, 1: low addr value to high addr.  0: low addr with low addr value.
    +              7
    +              1
    +              read-write
    +            
    +            
    +              TX_UPDATE
    +              Set 1 to update I2S TX registers from APB clock domain to I2S TX clock domain. This bit will be cleared by hardware after update register done.
    +              8
    +              1
    +              read-write
    +            
    +            
    +              TX_MONO_FST_VLD
    +              1: The first channel data value is valid in I2S TX mono mode.   0: The second channel data value is valid in I2S TX mono mode.
    +              9
    +              1
    +              read-write
    +            
    +            
    +              TX_PCM_CONF
    +              I2S TX compress/decompress configuration bit. & 0 (atol): A-Law decompress, 1 (ltoa) : A-Law compress, 2 (utol) : u-Law decompress, 3 (ltou) : u-Law compress. &
    +              10
    +              2
    +              read-write
    +            
    +            
    +              TX_PCM_BYPASS
    +              Set this bit to bypass  Compress/Decompress module for transmitted data.
    +              12
    +              1
    +              read-write
    +            
    +            
    +              TX_STOP_EN
    +              Set this bit to stop disable output BCK signal and WS signal when tx FIFO is emtpy
    +              13
    +              1
    +              read-write
    +            
    +            
    +              TX_LEFT_ALIGN
    +              1: I2S TX left alignment mode. 0: I2S TX right alignment mode.
    +              15
    +              1
    +              read-write
    +            
    +            
    +              TX_24_FILL_EN
    +              1: Sent 32 bits in 24 channel bits mode. 0: Sent 24 bits in 24 channel bits mode
    +              16
    +              1
    +              read-write
    +            
    +            
    +              TX_WS_IDLE_POL
    +              0: WS should be 0 when sending left channel data, and WS is 1in right channel.  1: WS should be 1 when sending left channel data, and WS is 0in right channel.
    +              17
    +              1
    +              read-write
    +            
    +            
    +              TX_BIT_ORDER
    +              I2S Tx bit endian. 1:small endian, the LSB is sent first. 0:big endian, the MSB is sent first.
    +              18
    +              1
    +              read-write
    +            
    +            
    +              TX_TDM_EN
    +              1: Enable I2S TDM Tx mode . 0: Disable.
    +              19
    +              1
    +              read-write
    +            
    +            
    +              TX_PDM_EN
    +              1: Enable I2S PDM Tx mode . 0: Disable.
    +              20
    +              1
    +              read-write
    +            
    +            
    +              TX_CHAN_MOD
    +              I2S transmitter channel mode configuration bits.
    +              24
    +              3
    +              read-write
    +            
    +            
    +              SIG_LOOPBACK
    +              Enable signal loop back mode with transmitter module and receiver module sharing the same WS and BCK signals.
    +              27
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          RX_CONF1
    +          I2S RX configure register 1
    +          0x28
    +          0x20
    +          0x2F3DE300
    +          
    +            
    +              RX_TDM_WS_WIDTH
    +              The width of rx_ws_out in TDM mode is (I2S_RX_TDM_WS_WIDTH[6:0] +1) * T_bck
    +              0
    +              7
    +              read-write
    +            
    +            
    +              RX_BCK_DIV_NUM
    +              Bit clock configuration bits in receiver mode.
    +              7
    +              6
    +              read-write
    +            
    +            
    +              RX_BITS_MOD
    +              Set the bits to configure the valid data bit length of I2S receiver channel. 7: all the valid channel data is in 8-bit-mode. 15: all the valid channel data is in 16-bit-mode. 23: all the valid channel data is in 24-bit-mode. 31:all the valid channel data is in 32-bit-mode.
    +              13
    +              5
    +              read-write
    +            
    +            
    +              RX_HALF_SAMPLE_BITS
    +              I2S Rx half sample bits -1.
    +              18
    +              6
    +              read-write
    +            
    +            
    +              RX_TDM_CHAN_BITS
    +              The Rx bit number for each channel minus 1in TDM mode.
    +              24
    +              5
    +              read-write
    +            
    +            
    +              RX_MSB_SHIFT
    +              Set this bit to enable receiver in Phillips standard mode
    +              29
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          TX_CONF1
    +          I2S TX configure register 1
    +          0x2C
    +          0x20
    +          0x6F3DE300
    +          
    +            
    +              TX_TDM_WS_WIDTH
    +              The width of tx_ws_out in TDM mode is (I2S_TX_TDM_WS_WIDTH[6:0] +1) * T_bck
    +              0
    +              7
    +              read-write
    +            
    +            
    +              TX_BCK_DIV_NUM
    +              Bit clock configuration bits in transmitter mode.
    +              7
    +              6
    +              read-write
    +            
    +            
    +              TX_BITS_MOD
    +              Set the bits to configure the valid data bit length of I2S transmitter channel. 7: all the valid channel data is in 8-bit-mode. 15: all the valid channel data is in 16-bit-mode. 23: all the valid channel data is in 24-bit-mode. 31:all the valid channel data is in 32-bit-mode.
    +              13
    +              5
    +              read-write
    +            
    +            
    +              TX_HALF_SAMPLE_BITS
    +              I2S Tx half sample bits -1.
    +              18
    +              6
    +              read-write
    +            
    +            
    +              TX_TDM_CHAN_BITS
    +              The Tx bit number for each channel minus 1in TDM mode.
    +              24
    +              5
    +              read-write
    +            
    +            
    +              TX_MSB_SHIFT
    +              Set this bit to enable transmitter in Phillips standard mode
    +              29
    +              1
    +              read-write
    +            
    +            
    +              TX_BCK_NO_DLY
    +              1: BCK is not delayed to generate pos/neg edge in master mode. 0: BCK is delayed to generate pos/neg edge in master mode.
    +              30
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          RX_CLKM_CONF
    +          I2S RX clock configure register
    +          0x30
    +          0x20
    +          0x00000002
    +          
    +            
    +              RX_CLKM_DIV_NUM
    +              Integral I2S clock divider value
    +              0
    +              8
    +              read-write
    +            
    +            
    +              RX_CLK_ACTIVE
    +              I2S Rx module clock enable signal.
    +              26
    +              1
    +              read-write
    +            
    +            
    +              RX_CLK_SEL
    +              Select I2S Rx module source clock. 0: no clock. 1: APLL. 2: CLK160. 3: I2S_MCLK_in.
    +              27
    +              2
    +              read-write
    +            
    +            
    +              MCLK_SEL
    +              0: UseI2S Tx module clock as I2S_MCLK_OUT.  1: UseI2S Rx module clock as I2S_MCLK_OUT.
    +              29
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          TX_CLKM_CONF
    +          I2S TX clock configure register
    +          0x34
    +          0x20
    +          0x00000002
    +          
    +            
    +              TX_CLKM_DIV_NUM
    +              Integral I2S TX clock divider value. f_I2S_CLK = f_I2S_CLK_S/(N+b/a). There will be (a-b) * n-div and b * (n+1)-div.  So the average combination will be:  for b <= a/2, z * [x * n-div + (n+1)-div] + y * n-div. For b > a/2, z * [n-div + x * (n+1)-div] + y * (n+1)-div.
    +              0
    +              8
    +              read-write
    +            
    +            
    +              TX_CLK_ACTIVE
    +              I2S Tx module clock enable signal.
    +              26
    +              1
    +              read-write
    +            
    +            
    +              TX_CLK_SEL
    +              Select I2S Tx module source clock. 0: XTAL clock. 1: APLL. 2: CLK160. 3: I2S_MCLK_in.
    +              27
    +              2
    +              read-write
    +            
    +            
    +              CLK_EN
    +              Set this bit to enable clk gate
    +              29
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          RX_CLKM_DIV_CONF
    +          I2S RX module clock divider configure register
    +          0x38
    +          0x20
    +          0x00000200
    +          
    +            
    +              RX_CLKM_DIV_Z
    +              For b <= a/2, the value of I2S_RX_CLKM_DIV_Z is b. For b > a/2, the value of I2S_RX_CLKM_DIV_Z is (a-b).
    +              0
    +              9
    +              read-write
    +            
    +            
    +              RX_CLKM_DIV_Y
    +              For b <= a/2, the value of I2S_RX_CLKM_DIV_Y is (a%b) . For b > a/2, the value of I2S_RX_CLKM_DIV_Y is (a%(a-b)).
    +              9
    +              9
    +              read-write
    +            
    +            
    +              RX_CLKM_DIV_X
    +              For b <= a/2, the value of I2S_RX_CLKM_DIV_X is (a/b) - 1. For b > a/2, the value of I2S_RX_CLKM_DIV_X is (a/(a-b)) - 1.
    +              18
    +              9
    +              read-write
    +            
    +            
    +              RX_CLKM_DIV_YN1
    +              For b <= a/2, the value of I2S_RX_CLKM_DIV_YN1 is 0 . For b > a/2, the value of I2S_RX_CLKM_DIV_YN1 is 1.
    +              27
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          TX_CLKM_DIV_CONF
    +          I2S TX module clock divider configure register
    +          0x3C
    +          0x20
    +          0x00000200
    +          
    +            
    +              TX_CLKM_DIV_Z
    +              For b <= a/2, the value of I2S_TX_CLKM_DIV_Z is b. For b > a/2, the value of I2S_TX_CLKM_DIV_Z is (a-b).
    +              0
    +              9
    +              read-write
    +            
    +            
    +              TX_CLKM_DIV_Y
    +              For b <= a/2, the value of I2S_TX_CLKM_DIV_Y is (a%b) . For b > a/2, the value of I2S_TX_CLKM_DIV_Y is (a%(a-b)).
    +              9
    +              9
    +              read-write
    +            
    +            
    +              TX_CLKM_DIV_X
    +              For b <= a/2, the value of I2S_TX_CLKM_DIV_X is (a/b) - 1. For b > a/2, the value of I2S_TX_CLKM_DIV_X is (a/(a-b)) - 1.
    +              18
    +              9
    +              read-write
    +            
    +            
    +              TX_CLKM_DIV_YN1
    +              For b <= a/2, the value of I2S_TX_CLKM_DIV_YN1 is 0 . For b > a/2, the value of I2S_TX_CLKM_DIV_YN1 is 1.
    +              27
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          TX_PCM2PDM_CONF
    +          I2S TX PCM2PDM configuration register
    +          0x40
    +          0x20
    +          0x004AA004
    +          
    +            
    +              TX_PDM_HP_BYPASS
    +              I2S TX PDM bypass hp filter or not. The option has been removed.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              TX_PDM_SINC_OSR2
    +              I2S TX PDM OSR2 value
    +              1
    +              4
    +              read-write
    +            
    +            
    +              TX_PDM_PRESCALE
    +              I2S TX PDM prescale for sigmadelta
    +              5
    +              8
    +              read-write
    +            
    +            
    +              TX_PDM_HP_IN_SHIFT
    +              I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4
    +              13
    +              2
    +              read-write
    +            
    +            
    +              TX_PDM_LP_IN_SHIFT
    +              I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4
    +              15
    +              2
    +              read-write
    +            
    +            
    +              TX_PDM_SINC_IN_SHIFT
    +              I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4
    +              17
    +              2
    +              read-write
    +            
    +            
    +              TX_PDM_SIGMADELTA_IN_SHIFT
    +              I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4
    +              19
    +              2
    +              read-write
    +            
    +            
    +              TX_PDM_SIGMADELTA_DITHER2
    +              I2S TX PDM sigmadelta dither2 value
    +              21
    +              1
    +              read-write
    +            
    +            
    +              TX_PDM_SIGMADELTA_DITHER
    +              I2S TX PDM sigmadelta dither value
    +              22
    +              1
    +              read-write
    +            
    +            
    +              TX_PDM_DAC_2OUT_EN
    +              I2S TX PDM dac mode enable
    +              23
    +              1
    +              read-write
    +            
    +            
    +              TX_PDM_DAC_MODE_EN
    +              I2S TX PDM dac 2channel enable
    +              24
    +              1
    +              read-write
    +            
    +            
    +              PCM2PDM_CONV_EN
    +              I2S TX PDM Converter enable
    +              25
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          TX_PCM2PDM_CONF1
    +          I2S TX PCM2PDM configuration register
    +          0x44
    +          0x20
    +          0x03F783C0
    +          
    +            
    +              TX_PDM_FP
    +              I2S TX PDM Fp
    +              0
    +              10
    +              read-write
    +            
    +            
    +              TX_PDM_FS
    +              I2S TX PDM Fs
    +              10
    +              10
    +              read-write
    +            
    +            
    +              TX_IIR_HP_MULT12_5
    +              The fourth parameter of PDM TX IIR_HP filter stage 2 is (504 + I2S_TX_IIR_HP_MULT12_5[2:0])
    +              20
    +              3
    +              read-write
    +            
    +            
    +              TX_IIR_HP_MULT12_0
    +              The fourth parameter of PDM TX IIR_HP filter stage 1 is (504 + I2S_TX_IIR_HP_MULT12_0[2:0])
    +              23
    +              3
    +              read-write
    +            
    +          
    +        
    +        
    +          RX_TDM_CTRL
    +          I2S TX TDM mode control register
    +          0x50
    +          0x20
    +          0x0000FFFF
    +          
    +            
    +              RX_TDM_PDM_CHAN0_EN
    +              1: Enable the valid data input of I2S RX TDM or PDM channel 0. 0:  Disable, just input 0 in this channel.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              RX_TDM_PDM_CHAN1_EN
    +              1: Enable the valid data input of I2S RX TDM or PDM channel 1. 0:  Disable, just input 0 in this channel.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              RX_TDM_PDM_CHAN2_EN
    +              1: Enable the valid data input of I2S RX TDM or PDM channel 2. 0:  Disable, just input 0 in this channel.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              RX_TDM_PDM_CHAN3_EN
    +              1: Enable the valid data input of I2S RX TDM or PDM channel 3. 0:  Disable, just input 0 in this channel.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              RX_TDM_PDM_CHAN4_EN
    +              1: Enable the valid data input of I2S RX TDM or PDM channel 4. 0:  Disable, just input 0 in this channel.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              RX_TDM_PDM_CHAN5_EN
    +              1: Enable the valid data input of I2S RX TDM or PDM channel 5. 0:  Disable, just input 0 in this channel.
    +              5
    +              1
    +              read-write
    +            
    +            
    +              RX_TDM_PDM_CHAN6_EN
    +              1: Enable the valid data input of I2S RX TDM or PDM channel 6. 0:  Disable, just input 0 in this channel.
    +              6
    +              1
    +              read-write
    +            
    +            
    +              RX_TDM_PDM_CHAN7_EN
    +              1: Enable the valid data input of I2S RX TDM or PDM channel 7. 0:  Disable, just input 0 in this channel.
    +              7
    +              1
    +              read-write
    +            
    +            
    +              RX_TDM_CHAN8_EN
    +              1: Enable the valid data input of I2S RX TDM channel 8. 0:  Disable, just input 0 in this channel.
    +              8
    +              1
    +              read-write
    +            
    +            
    +              RX_TDM_CHAN9_EN
    +              1: Enable the valid data input of I2S RX TDM channel 9. 0:  Disable, just input 0 in this channel.
    +              9
    +              1
    +              read-write
    +            
    +            
    +              RX_TDM_CHAN10_EN
    +              1: Enable the valid data input of I2S RX TDM channel 10. 0:  Disable, just input 0 in this channel.
    +              10
    +              1
    +              read-write
    +            
    +            
    +              RX_TDM_CHAN11_EN
    +              1: Enable the valid data input of I2S RX TDM channel 11. 0:  Disable, just input 0 in this channel.
    +              11
    +              1
    +              read-write
    +            
    +            
    +              RX_TDM_CHAN12_EN
    +              1: Enable the valid data input of I2S RX TDM channel 12. 0:  Disable, just input 0 in this channel.
    +              12
    +              1
    +              read-write
    +            
    +            
    +              RX_TDM_CHAN13_EN
    +              1: Enable the valid data input of I2S RX TDM channel 13. 0:  Disable, just input 0 in this channel.
    +              13
    +              1
    +              read-write
    +            
    +            
    +              RX_TDM_CHAN14_EN
    +              1: Enable the valid data input of I2S RX TDM channel 14. 0:  Disable, just input 0 in this channel.
    +              14
    +              1
    +              read-write
    +            
    +            
    +              RX_TDM_CHAN15_EN
    +              1: Enable the valid data input of I2S RX TDM channel 15. 0:  Disable, just input 0 in this channel.
    +              15
    +              1
    +              read-write
    +            
    +            
    +              RX_TDM_TOT_CHAN_NUM
    +              The total channel number of I2S TX TDM mode.
    +              16
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          TX_TDM_CTRL
    +          I2S TX TDM mode control register
    +          0x54
    +          0x20
    +          0x0000FFFF
    +          
    +            
    +              TX_TDM_CHAN0_EN
    +              1: Enable the valid data output of I2S TX TDM channel 0. 0:  Disable, just output 0 in this channel.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              TX_TDM_CHAN1_EN
    +              1: Enable the valid data output of I2S TX TDM channel 1. 0:  Disable, just output 0 in this channel.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              TX_TDM_CHAN2_EN
    +              1: Enable the valid data output of I2S TX TDM channel 2. 0:  Disable, just output 0 in this channel.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              TX_TDM_CHAN3_EN
    +              1: Enable the valid data output of I2S TX TDM channel 3. 0:  Disable, just output 0 in this channel.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              TX_TDM_CHAN4_EN
    +              1: Enable the valid data output of I2S TX TDM channel 4. 0:  Disable, just output 0 in this channel.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              TX_TDM_CHAN5_EN
    +              1: Enable the valid data output of I2S TX TDM channel 5. 0:  Disable, just output 0 in this channel.
    +              5
    +              1
    +              read-write
    +            
    +            
    +              TX_TDM_CHAN6_EN
    +              1: Enable the valid data output of I2S TX TDM channel 6. 0:  Disable, just output 0 in this channel.
    +              6
    +              1
    +              read-write
    +            
    +            
    +              TX_TDM_CHAN7_EN
    +              1: Enable the valid data output of I2S TX TDM channel 7. 0:  Disable, just output 0 in this channel.
    +              7
    +              1
    +              read-write
    +            
    +            
    +              TX_TDM_CHAN8_EN
    +              1: Enable the valid data output of I2S TX TDM channel 8. 0:  Disable, just output 0 in this channel.
    +              8
    +              1
    +              read-write
    +            
    +            
    +              TX_TDM_CHAN9_EN
    +              1: Enable the valid data output of I2S TX TDM channel 9. 0:  Disable, just output 0 in this channel.
    +              9
    +              1
    +              read-write
    +            
    +            
    +              TX_TDM_CHAN10_EN
    +              1: Enable the valid data output of I2S TX TDM channel 10. 0:  Disable, just output 0 in this channel.
    +              10
    +              1
    +              read-write
    +            
    +            
    +              TX_TDM_CHAN11_EN
    +              1: Enable the valid data output of I2S TX TDM channel 11. 0:  Disable, just output 0 in this channel.
    +              11
    +              1
    +              read-write
    +            
    +            
    +              TX_TDM_CHAN12_EN
    +              1: Enable the valid data output of I2S TX TDM channel 12. 0:  Disable, just output 0 in this channel.
    +              12
    +              1
    +              read-write
    +            
    +            
    +              TX_TDM_CHAN13_EN
    +              1: Enable the valid data output of I2S TX TDM channel 13. 0:  Disable, just output 0 in this channel.
    +              13
    +              1
    +              read-write
    +            
    +            
    +              TX_TDM_CHAN14_EN
    +              1: Enable the valid data output of I2S TX TDM channel 14. 0:  Disable, just output 0 in this channel.
    +              14
    +              1
    +              read-write
    +            
    +            
    +              TX_TDM_CHAN15_EN
    +              1: Enable the valid data output of I2S TX TDM channel 15. 0:  Disable, just output 0 in this channel.
    +              15
    +              1
    +              read-write
    +            
    +            
    +              TX_TDM_TOT_CHAN_NUM
    +              The total channel number of I2S TX TDM mode.
    +              16
    +              4
    +              read-write
    +            
    +            
    +              TX_TDM_SKIP_MSK_EN
    +              When DMA TX buffer stores the data of (REG_TX_TDM_TOT_CHAN_NUM + 1)  channels, and only the data of the enabled channels is sent, then this bit should be set. Clear it when all the data stored in DMA TX buffer is for enabled channels.
    +              20
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          RX_TIMING
    +          I2S RX timing control register
    +          0x58
    +          0x20
    +          
    +            
    +              RX_SD_IN_DM
    +              The delay mode of I2S Rx SD input signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.
    +              0
    +              2
    +              read-write
    +            
    +            
    +              RX_WS_OUT_DM
    +              The delay mode of I2S Rx WS output signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.
    +              16
    +              2
    +              read-write
    +            
    +            
    +              RX_BCK_OUT_DM
    +              The delay mode of I2S Rx BCK output signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.
    +              20
    +              2
    +              read-write
    +            
    +            
    +              RX_WS_IN_DM
    +              The delay mode of I2S Rx WS input signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.
    +              24
    +              2
    +              read-write
    +            
    +            
    +              RX_BCK_IN_DM
    +              The delay mode of I2S Rx BCK input signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.
    +              28
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          TX_TIMING
    +          I2S TX timing control register
    +          0x5C
    +          0x20
    +          
    +            
    +              TX_SD_OUT_DM
    +              The delay mode of I2S TX SD output signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.
    +              0
    +              2
    +              read-write
    +            
    +            
    +              TX_SD1_OUT_DM
    +              The delay mode of I2S TX SD1 output signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.
    +              4
    +              2
    +              read-write
    +            
    +            
    +              TX_WS_OUT_DM
    +              The delay mode of I2S TX WS output signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.
    +              16
    +              2
    +              read-write
    +            
    +            
    +              TX_BCK_OUT_DM
    +              The delay mode of I2S TX BCK output signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.
    +              20
    +              2
    +              read-write
    +            
    +            
    +              TX_WS_IN_DM
    +              The delay mode of I2S TX WS input signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.
    +              24
    +              2
    +              read-write
    +            
    +            
    +              TX_BCK_IN_DM
    +              The delay mode of I2S TX BCK input signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.
    +              28
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          LC_HUNG_CONF
    +          I2S HUNG configure register.
    +          0x60
    +          0x20
    +          0x00000810
    +          
    +            
    +              LC_FIFO_TIMEOUT
    +              the i2s_tx_hung_int interrupt or the i2s_rx_hung_int interrupt will be triggered when fifo hung counter is equal to this value
    +              0
    +              8
    +              read-write
    +            
    +            
    +              LC_FIFO_TIMEOUT_SHIFT
    +              The bits are used to scale tick counter threshold. The tick counter is reset when counter value >= 88000/2^i2s_lc_fifo_timeout_shift
    +              8
    +              3
    +              read-write
    +            
    +            
    +              LC_FIFO_TIMEOUT_ENA
    +              The enable bit for FIFO timeout
    +              11
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          RXEOF_NUM
    +          I2S RX data number control register.
    +          0x64
    +          0x20
    +          0x00000040
    +          
    +            
    +              RX_EOF_NUM
    +              The receive data bit length is (I2S_RX_BITS_MOD[4:0] + 1) * (REG_RX_EOF_NUM[11:0] + 1) . It will trigger in_suc_eof interrupt in the configured DMA RX channel.
    +              0
    +              12
    +              read-write
    +            
    +          
    +        
    +        
    +          CONF_SIGLE_DATA
    +          I2S signal data register
    +          0x68
    +          0x20
    +          
    +            
    +              SINGLE_DATA
    +              The configured constant channel data to be sent out.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          STATE
    +          I2S TX status register
    +          0x6C
    +          0x20
    +          0x00000001
    +          
    +            
    +              TX_IDLE
    +              1: i2s_tx is idle state. 0: i2s_tx is working.
    +              0
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          DATE
    +          Version control register
    +          0x80
    +          0x20
    +          0x02007220
    +          
    +            
    +              DATE
    +              I2S version control register
    +              0
    +              28
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      INTERRUPT_CORE0
    +      Interrupt Core
    +      INTERRUPT_CORE0
    +      0x600C2000
    +      
    +        0x0
    +        0x19C
    +        registers
    +      
    +      
    +        
    +          MAC_INTR_MAP
    +          mac intr map register
    +          0x0
    +          0x20
    +          
    +            
    +              MAC_INTR_MAP
    +              core0_mac_intr_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          MAC_NMI_MAP
    +          mac nmi_intr map register
    +          0x4
    +          0x20
    +          
    +            
    +              MAC_NMI_MAP
    +              reg_core0_mac_nmi_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          PWR_INTR_MAP
    +          pwr intr map register
    +          0x8
    +          0x20
    +          
    +            
    +              PWR_INTR_MAP
    +              reg_core0_pwr_intr_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          BB_INT_MAP
    +          bb intr map register
    +          0xC
    +          0x20
    +          
    +            
    +              BB_INT_MAP
    +              reg_core0_bb_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          BT_MAC_INT_MAP
    +          bt intr map register
    +          0x10
    +          0x20
    +          
    +            
    +              BT_MAC_INT_MAP
    +              reg_core0_bt_mac_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          BT_BB_INT_MAP
    +          bb_bt intr map register
    +          0x14
    +          0x20
    +          
    +            
    +              BT_BB_INT_MAP
    +              reg_core0_bt_bb_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          BT_BB_NMI_MAP
    +          bb_bt_nmi intr map register
    +          0x18
    +          0x20
    +          
    +            
    +              BT_BB_NMI_MAP
    +              reg_core0_bt_bb_nmi_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          RWBT_IRQ_MAP
    +          rwbt intr map register
    +          0x1C
    +          0x20
    +          
    +            
    +              RWBT_IRQ_MAP
    +              reg_core0_rwbt_irq_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          RWBLE_IRQ_MAP
    +          rwble intr map register
    +          0x20
    +          0x20
    +          
    +            
    +              RWBLE_IRQ_MAP
    +              reg_core0_rwble_irq_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          RWBT_NMI_MAP
    +          rwbt_nmi intr map register
    +          0x24
    +          0x20
    +          
    +            
    +              RWBT_NMI_MAP
    +              reg_core0_rwbt_nmi_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          RWBLE_NMI_MAP
    +          rwble_nmi intr map register
    +          0x28
    +          0x20
    +          
    +            
    +              RWBLE_NMI_MAP
    +              reg_core0_rwble_nmi_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          I2C_MST_INT_MAP
    +          i2c intr map register
    +          0x2C
    +          0x20
    +          
    +            
    +              I2C_MST_INT_MAP
    +              reg_core0_i2c_mst_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          SLC0_INTR_MAP
    +          slc0 intr map register
    +          0x30
    +          0x20
    +          
    +            
    +              SLC0_INTR_MAP
    +              reg_core0_slc0_intr_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          SLC1_INTR_MAP
    +          slc1 intr map register
    +          0x34
    +          0x20
    +          
    +            
    +              SLC1_INTR_MAP
    +              reg_core0_slc1_intr_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          APB_CTRL_INTR_MAP
    +          apb_ctrl intr map register
    +          0x38
    +          0x20
    +          
    +            
    +              APB_CTRL_INTR_MAP
    +              reg_core0_apb_ctrl_intr_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          UHCI0_INTR_MAP
    +          uchi0 intr map register
    +          0x3C
    +          0x20
    +          
    +            
    +              UHCI0_INTR_MAP
    +              reg_core0_uhci0_intr_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          GPIO_INTERRUPT_PRO_MAP
    +          gpio intr map register
    +          0x40
    +          0x20
    +          
    +            
    +              GPIO_INTERRUPT_PRO_MAP
    +              reg_core0_gpio_interrupt_pro_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          GPIO_INTERRUPT_PRO_NMI_MAP
    +          gpio_pro intr map register
    +          0x44
    +          0x20
    +          
    +            
    +              GPIO_INTERRUPT_PRO_NMI_MAP
    +              reg_core0_gpio_interrupt_pro_nmi_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          SPI_INTR_1_MAP
    +          gpio_pro_nmi intr map register
    +          0x48
    +          0x20
    +          
    +            
    +              SPI_INTR_1_MAP
    +              reg_core0_spi_intr_1_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          SPI_INTR_2_MAP
    +          spi1 intr map register
    +          0x4C
    +          0x20
    +          
    +            
    +              SPI_INTR_2_MAP
    +              reg_core0_spi_intr_2_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          I2S1_INT_MAP
    +          spi2 intr map register
    +          0x50
    +          0x20
    +          
    +            
    +              I2S1_INT_MAP
    +              reg_core0_i2s1_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          UART_INTR_MAP
    +          i2s1 intr map register
    +          0x54
    +          0x20
    +          
    +            
    +              UART_INTR_MAP
    +              reg_core0_uart_intr_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          UART1_INTR_MAP
    +          uart1 intr map register
    +          0x58
    +          0x20
    +          
    +            
    +              UART1_INTR_MAP
    +              reg_core0_uart1_intr_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          LEDC_INT_MAP
    +          ledc intr map register
    +          0x5C
    +          0x20
    +          
    +            
    +              LEDC_INT_MAP
    +              reg_core0_ledc_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          EFUSE_INT_MAP
    +          efuse intr map register
    +          0x60
    +          0x20
    +          
    +            
    +              EFUSE_INT_MAP
    +              reg_core0_efuse_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          CAN_INT_MAP
    +          can intr map register
    +          0x64
    +          0x20
    +          
    +            
    +              CAN_INT_MAP
    +              reg_core0_can_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          USB_INTR_MAP
    +          usb intr map register
    +          0x68
    +          0x20
    +          
    +            
    +              USB_INTR_MAP
    +              reg_core0_usb_intr_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          RTC_CORE_INTR_MAP
    +          rtc intr map register
    +          0x6C
    +          0x20
    +          
    +            
    +              RTC_CORE_INTR_MAP
    +              reg_core0_rtc_core_intr_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          RMT_INTR_MAP
    +          rmt intr map register
    +          0x70
    +          0x20
    +          
    +            
    +              RMT_INTR_MAP
    +              reg_core0_rmt_intr_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          I2C_EXT0_INTR_MAP
    +          i2c intr map register
    +          0x74
    +          0x20
    +          
    +            
    +              I2C_EXT0_INTR_MAP
    +              reg_core0_i2c_ext0_intr_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          TIMER_INT1_MAP
    +          timer1 intr map register
    +          0x78
    +          0x20
    +          
    +            
    +              TIMER_INT1_MAP
    +              reg_core0_timer_int1_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          TIMER_INT2_MAP
    +          timer2 intr map register
    +          0x7C
    +          0x20
    +          
    +            
    +              TIMER_INT2_MAP
    +              reg_core0_timer_int2_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          TG_T0_INT_MAP
    +          tg to intr map register
    +          0x80
    +          0x20
    +          
    +            
    +              TG_T0_INT_MAP
    +              reg_core0_tg_t0_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          TG_WDT_INT_MAP
    +          tg wdt intr map register
    +          0x84
    +          0x20
    +          
    +            
    +              TG_WDT_INT_MAP
    +              reg_core0_tg_wdt_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          TG1_T0_INT_MAP
    +          tg1 to intr map register
    +          0x88
    +          0x20
    +          
    +            
    +              TG1_T0_INT_MAP
    +              reg_core0_tg1_t0_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          TG1_WDT_INT_MAP
    +          tg1 wdt intr map register
    +          0x8C
    +          0x20
    +          
    +            
    +              TG1_WDT_INT_MAP
    +              reg_core0_tg1_wdt_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          CACHE_IA_INT_MAP
    +          cache ia intr map register
    +          0x90
    +          0x20
    +          
    +            
    +              CACHE_IA_INT_MAP
    +              reg_core0_cache_ia_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          SYSTIMER_TARGET0_INT_MAP
    +          systimer intr map register
    +          0x94
    +          0x20
    +          
    +            
    +              SYSTIMER_TARGET0_INT_MAP
    +              reg_core0_systimer_target0_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          SYSTIMER_TARGET1_INT_MAP
    +          systimer target1 intr map register
    +          0x98
    +          0x20
    +          
    +            
    +              SYSTIMER_TARGET1_INT_MAP
    +              reg_core0_systimer_target1_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          SYSTIMER_TARGET2_INT_MAP
    +          systimer target2 intr map register
    +          0x9C
    +          0x20
    +          
    +            
    +              SYSTIMER_TARGET2_INT_MAP
    +              reg_core0_systimer_target2_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          SPI_MEM_REJECT_INTR_MAP
    +          spi mem reject intr map register
    +          0xA0
    +          0x20
    +          
    +            
    +              SPI_MEM_REJECT_INTR_MAP
    +              reg_core0_spi_mem_reject_intr_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          ICACHE_PRELOAD_INT_MAP
    +          icache perload intr map register
    +          0xA4
    +          0x20
    +          
    +            
    +              ICACHE_PRELOAD_INT_MAP
    +              reg_core0_icache_preload_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          ICACHE_SYNC_INT_MAP
    +          icache sync intr map register
    +          0xA8
    +          0x20
    +          
    +            
    +              ICACHE_SYNC_INT_MAP
    +              reg_core0_icache_sync_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          APB_ADC_INT_MAP
    +          adc intr map register
    +          0xAC
    +          0x20
    +          
    +            
    +              APB_ADC_INT_MAP
    +              reg_core0_apb_adc_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_CH0_INT_MAP
    +          dma ch0 intr map register
    +          0xB0
    +          0x20
    +          
    +            
    +              DMA_CH0_INT_MAP
    +              reg_core0_dma_ch0_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_CH1_INT_MAP
    +          dma ch1 intr map register
    +          0xB4
    +          0x20
    +          
    +            
    +              DMA_CH1_INT_MAP
    +              reg_core0_dma_ch1_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_CH2_INT_MAP
    +          dma ch2 intr map register
    +          0xB8
    +          0x20
    +          
    +            
    +              DMA_CH2_INT_MAP
    +              reg_core0_dma_ch2_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          RSA_INT_MAP
    +          rsa intr map register
    +          0xBC
    +          0x20
    +          
    +            
    +              RSA_INT_MAP
    +              reg_core0_rsa_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          AES_INT_MAP
    +          aes intr map register
    +          0xC0
    +          0x20
    +          
    +            
    +              AES_INT_MAP
    +              reg_core0_aes_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          SHA_INT_MAP
    +          sha intr map register
    +          0xC4
    +          0x20
    +          
    +            
    +              SHA_INT_MAP
    +              reg_core0_sha_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INTR_FROM_CPU_0_MAP
    +          cpu from cpu 0 intr map register
    +          0xC8
    +          0x20
    +          
    +            
    +              CPU_INTR_FROM_CPU_0_MAP
    +              reg_core0_cpu_intr_from_cpu_0_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INTR_FROM_CPU_1_MAP
    +          cpu from cpu 0 intr map register
    +          0xCC
    +          0x20
    +          
    +            
    +              CPU_INTR_FROM_CPU_1_MAP
    +              reg_core0_cpu_intr_from_cpu_1_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INTR_FROM_CPU_2_MAP
    +          cpu from cpu 1 intr map register
    +          0xD0
    +          0x20
    +          
    +            
    +              CPU_INTR_FROM_CPU_2_MAP
    +              reg_core0_cpu_intr_from_cpu_2_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INTR_FROM_CPU_3_MAP
    +          cpu from cpu 3 intr map register
    +          0xD4
    +          0x20
    +          
    +            
    +              CPU_INTR_FROM_CPU_3_MAP
    +              reg_core0_cpu_intr_from_cpu_3_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          ASSIST_DEBUG_INTR_MAP
    +          assist debug intr map register
    +          0xD8
    +          0x20
    +          
    +            
    +              ASSIST_DEBUG_INTR_MAP
    +              reg_core0_assist_debug_intr_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_APBPERI_PMS_MONITOR_VIOLATE_INTR_MAP
    +          dma pms violatile intr map register
    +          0xDC
    +          0x20
    +          
    +            
    +              DMA_APBPERI_PMS_MONITOR_VIOLATE_INTR_MAP
    +              reg_core0_dma_apbperi_pms_monitor_violate_intr_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_IRAM0_PMS_MONITOR_VIOLATE_INTR_MAP
    +          iram0 pms violatile intr map register
    +          0xE0
    +          0x20
    +          
    +            
    +              CORE_0_IRAM0_PMS_MONITOR_VIOLATE_INTR_MAP
    +              reg_core0_core_0_iram0_pms_monitor_violate_intr_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_DRAM0_PMS_MONITOR_VIOLATE_INTR_MAP
    +          mac intr map register
    +          0xE4
    +          0x20
    +          
    +            
    +              CORE_0_DRAM0_PMS_MONITOR_VIOLATE_INTR_MAP
    +              reg_core0_core_0_dram0_pms_monitor_violate_intr_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_PIF_PMS_MONITOR_VIOLATE_INTR_MAP
    +          mac intr map register
    +          0xE8
    +          0x20
    +          
    +            
    +              CORE_0_PIF_PMS_MONITOR_VIOLATE_INTR_MAP
    +              reg_core0_core_0_pif_pms_monitor_violate_intr_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_PIF_PMS_MONITOR_VIOLATE_SIZE_INTR_MAP
    +          mac intr map register
    +          0xEC
    +          0x20
    +          
    +            
    +              CORE_0_PIF_PMS_MONITOR_VIOLATE_SIZE_INTR_MAP
    +              reg_core0_core_0_pif_pms_monitor_violate_size_intr_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          BACKUP_PMS_VIOLATE_INTR_MAP
    +          mac intr map register
    +          0xF0
    +          0x20
    +          
    +            
    +              BACKUP_PMS_VIOLATE_INTR_MAP
    +              reg_core0_backup_pms_violate_intr_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          CACHE_CORE0_ACS_INT_MAP
    +          mac intr map register
    +          0xF4
    +          0x20
    +          
    +            
    +              CACHE_CORE0_ACS_INT_MAP
    +              reg_core0_cache_core0_acs_int_map
    +              0
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          INTR_STATUS_REG_0
    +          mac intr map register
    +          0xF8
    +          0x20
    +          
    +            
    +              INTR_STATUS_0
    +              reg_core0_intr_status_0
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          INTR_STATUS_REG_1
    +          mac intr map register
    +          0xFC
    +          0x20
    +          
    +            
    +              INTR_STATUS_1
    +              reg_core0_intr_status_1
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          CLOCK_GATE
    +          mac intr map register
    +          0x100
    +          0x20
    +          0x00000001
    +          
    +            
    +              REG_CLK_EN
    +              reg_core0_reg_clk_en
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_ENABLE
    +          mac intr map register
    +          0x104
    +          0x20
    +          
    +            
    +              CPU_INT_ENABLE
    +              reg_core0_cpu_int_enable
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_TYPE
    +          mac intr map register
    +          0x108
    +          0x20
    +          
    +            
    +              CPU_INT_TYPE
    +              reg_core0_cpu_int_type
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_CLEAR
    +          mac intr map register
    +          0x10C
    +          0x20
    +          
    +            
    +              CPU_INT_CLEAR
    +              reg_core0_cpu_int_clear
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_EIP_STATUS
    +          mac intr map register
    +          0x110
    +          0x20
    +          
    +            
    +              CPU_INT_EIP_STATUS
    +              reg_core0_cpu_int_eip_status
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_0
    +          mac intr map register
    +          0x114
    +          0x20
    +          
    +            
    +              CPU_PRI_0_MAP
    +              reg_core0_cpu_pri_0_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_1
    +          mac intr map register
    +          0x118
    +          0x20
    +          
    +            
    +              CPU_PRI_1_MAP
    +              reg_core0_cpu_pri_1_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_2
    +          mac intr map register
    +          0x11C
    +          0x20
    +          
    +            
    +              CPU_PRI_2_MAP
    +              reg_core0_cpu_pri_2_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_3
    +          mac intr map register
    +          0x120
    +          0x20
    +          
    +            
    +              CPU_PRI_3_MAP
    +              reg_core0_cpu_pri_3_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_4
    +          mac intr map register
    +          0x124
    +          0x20
    +          
    +            
    +              CPU_PRI_4_MAP
    +              reg_core0_cpu_pri_4_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_5
    +          mac intr map register
    +          0x128
    +          0x20
    +          
    +            
    +              CPU_PRI_5_MAP
    +              reg_core0_cpu_pri_5_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_6
    +          mac intr map register
    +          0x12C
    +          0x20
    +          
    +            
    +              CPU_PRI_6_MAP
    +              reg_core0_cpu_pri_6_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_7
    +          mac intr map register
    +          0x130
    +          0x20
    +          
    +            
    +              CPU_PRI_7_MAP
    +              reg_core0_cpu_pri_7_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_8
    +          mac intr map register
    +          0x134
    +          0x20
    +          
    +            
    +              CPU_PRI_8_MAP
    +              reg_core0_cpu_pri_8_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_9
    +          mac intr map register
    +          0x138
    +          0x20
    +          
    +            
    +              CPU_PRI_9_MAP
    +              reg_core0_cpu_pri_9_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_10
    +          mac intr map register
    +          0x13C
    +          0x20
    +          
    +            
    +              CPU_PRI_10_MAP
    +              reg_core0_cpu_pri_10_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_11
    +          mac intr map register
    +          0x140
    +          0x20
    +          
    +            
    +              CPU_PRI_11_MAP
    +              reg_core0_cpu_pri_11_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_12
    +          mac intr map register
    +          0x144
    +          0x20
    +          
    +            
    +              CPU_PRI_12_MAP
    +              reg_core0_cpu_pri_12_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_13
    +          mac intr map register
    +          0x148
    +          0x20
    +          
    +            
    +              CPU_PRI_13_MAP
    +              reg_core0_cpu_pri_13_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_14
    +          mac intr map register
    +          0x14C
    +          0x20
    +          
    +            
    +              CPU_PRI_14_MAP
    +              reg_core0_cpu_pri_14_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_15
    +          mac intr map register
    +          0x150
    +          0x20
    +          
    +            
    +              CPU_PRI_15_MAP
    +              reg_core0_cpu_pri_15_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_16
    +          mac intr map register
    +          0x154
    +          0x20
    +          
    +            
    +              CPU_PRI_16_MAP
    +              reg_core0_cpu_pri_16_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_17
    +          mac intr map register
    +          0x158
    +          0x20
    +          
    +            
    +              CPU_PRI_17_MAP
    +              reg_core0_cpu_pri_17_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_18
    +          mac intr map register
    +          0x15C
    +          0x20
    +          
    +            
    +              CPU_PRI_18_MAP
    +              reg_core0_cpu_pri_18_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_19
    +          mac intr map register
    +          0x160
    +          0x20
    +          
    +            
    +              CPU_PRI_19_MAP
    +              reg_core0_cpu_pri_19_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_20
    +          mac intr map register
    +          0x164
    +          0x20
    +          
    +            
    +              CPU_PRI_20_MAP
    +              reg_core0_cpu_pri_20_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_21
    +          mac intr map register
    +          0x168
    +          0x20
    +          
    +            
    +              CPU_PRI_21_MAP
    +              reg_core0_cpu_pri_21_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_22
    +          mac intr map register
    +          0x16C
    +          0x20
    +          
    +            
    +              CPU_PRI_22_MAP
    +              reg_core0_cpu_pri_22_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_23
    +          mac intr map register
    +          0x170
    +          0x20
    +          
    +            
    +              CPU_PRI_23_MAP
    +              reg_core0_cpu_pri_23_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_24
    +          mac intr map register
    +          0x174
    +          0x20
    +          
    +            
    +              CPU_PRI_24_MAP
    +              reg_core0_cpu_pri_24_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_25
    +          mac intr map register
    +          0x178
    +          0x20
    +          
    +            
    +              CPU_PRI_25_MAP
    +              reg_core0_cpu_pri_25_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_26
    +          mac intr map register
    +          0x17C
    +          0x20
    +          
    +            
    +              CPU_PRI_26_MAP
    +              reg_core0_cpu_pri_26_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_27
    +          mac intr map register
    +          0x180
    +          0x20
    +          
    +            
    +              CPU_PRI_27_MAP
    +              reg_core0_cpu_pri_27_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_28
    +          mac intr map register
    +          0x184
    +          0x20
    +          
    +            
    +              CPU_PRI_28_MAP
    +              reg_core0_cpu_pri_28_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_29
    +          mac intr map register
    +          0x188
    +          0x20
    +          
    +            
    +              CPU_PRI_29_MAP
    +              reg_core0_cpu_pri_29_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_30
    +          mac intr map register
    +          0x18C
    +          0x20
    +          
    +            
    +              CPU_PRI_30_MAP
    +              reg_core0_cpu_pri_30_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_PRI_31
    +          mac intr map register
    +          0x190
    +          0x20
    +          
    +            
    +              CPU_PRI_31_MAP
    +              reg_core0_cpu_pri_31_map
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INT_THRESH
    +          mac intr map register
    +          0x194
    +          0x20
    +          
    +            
    +              CPU_INT_THRESH
    +              reg_core0_cpu_int_thresh
    +              0
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          INTERRUPT_REG_DATE
    +          mac intr map register
    +          0x7FC
    +          0x20
    +          0x02007210
    +          
    +            
    +              INTERRUPT_REG_DATE
    +              reg_core0_interrupt_reg_date
    +              0
    +              28
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      IO_MUX
    +      Input/Output Multiplexer
    +      IO_MUX
    +      0x60009000
    +      
    +        0x0
    +        0x60
    +        registers
    +      
    +      
    +        
    +          PIN_CTRL
    +          Clock Output Configuration Register
    +          0x0
    +          0x20
    +          0x000007FF
    +          
    +            
    +              CLK_OUT1
    +              If you want to output clock for I2S to CLK_OUT_out1, set this register to 0x0. CLK_OUT_out1 can be found in peripheral output signals.
    +              0
    +              4
    +              read-write
    +            
    +            
    +              CLK_OUT2
    +              If you want to output clock for I2S to CLK_OUT_out2, set this register to 0x0. CLK_OUT_out2 can be found in peripheral output signals.
    +              4
    +              4
    +              read-write
    +            
    +            
    +              CLK_OUT3
    +              If you want to output clock for I2S to CLK_OUT_out3, set this register to 0x0. CLK_OUT_out3 can be found in peripheral output signals.
    +              8
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          22
    +          0x4
    +          GPIO%s
    +          IO MUX Configure Register for pad XTAL_32K_P
    +          0x4
    +          0x20
    +          0x00000B00
    +          
    +            
    +              MCU_OE
    +              Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              SLP_SEL
    +              Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              MCU_WPD
    +              Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0: internal pull-down disabled.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              MCU_WPU
    +              Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0: internal pull-up disabled.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              MCU_IE
    +              Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              FUN_WPD
    +              Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal pull-down disabled.
    +              7
    +              1
    +              read-write
    +            
    +            
    +              FUN_WPU
    +              Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up disabled.
    +              8
    +              1
    +              read-write
    +            
    +            
    +              FUN_IE
    +              Input enable of the pad. 1: input enabled; 0: input disabled.
    +              9
    +              1
    +              read-write
    +            
    +            
    +              FUN_DRV
    +              Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    +              10
    +              2
    +              read-write
    +            
    +            
    +              MCU_SEL
    +              Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function 2; etc.
    +              12
    +              3
    +              read-write
    +            
    +            
    +              FILTER_EN
    +              Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    +              15
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DATE
    +          IO MUX Version Control Register
    +          0xFC
    +          0x20
    +          0x02006050
    +          
    +            
    +              REG_DATE
    +              Version control register
    +              0
    +              28
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      LEDC
    +      LED Control PWM (Pulse Width Modulation)
    +      LEDC
    +      0x60019000
    +      
    +        0x0
    +        0xB0
    +        registers
    +      
    +      
    +        LEDC
    +        23
    +      
    +      
    +        
    +          LSCH0_CONF0
    +          LEDC_LSCH0_CONF0.
    +          0x0
    +          0x20
    +          
    +            
    +              TIMER_SEL_LSCH0
    +              reg_timer_sel_lsch0.
    +              0
    +              2
    +              read-write
    +            
    +            
    +              SIG_OUT_EN_LSCH0
    +              reg_sig_out_en_lsch0.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              IDLE_LV_LSCH0
    +              reg_idle_lv_lsch0.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              PARA_UP_LSCH0
    +              reg_para_up_lsch0.
    +              4
    +              1
    +              write-only
    +            
    +            
    +              OVF_NUM_LSCH0
    +              reg_ovf_num_lsch0.
    +              5
    +              10
    +              read-write
    +            
    +            
    +              OVF_CNT_EN_LSCH0
    +              reg_ovf_cnt_en_lsch0.
    +              15
    +              1
    +              read-write
    +            
    +            
    +              OVF_CNT_RESET_LSCH0
    +              reg_ovf_cnt_reset_lsch0.
    +              16
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          LSCH0_HPOINT
    +          LEDC_LSCH0_HPOINT.
    +          0x4
    +          0x20
    +          
    +            
    +              HPOINT_LSCH0
    +              reg_hpoint_lsch0.
    +              0
    +              14
    +              read-write
    +            
    +          
    +        
    +        
    +          LSCH0_DUTY
    +          LEDC_LSCH0_DUTY.
    +          0x8
    +          0x20
    +          
    +            
    +              DUTY_LSCH0
    +              reg_duty_lsch0.
    +              0
    +              19
    +              read-write
    +            
    +          
    +        
    +        
    +          LSCH0_CONF1
    +          LEDC_LSCH0_CONF1.
    +          0xC
    +          0x20
    +          0x40000000
    +          
    +            
    +              DUTY_SCALE_LSCH0
    +              reg_duty_scale_lsch0.
    +              0
    +              10
    +              read-write
    +            
    +            
    +              DUTY_CYCLE_LSCH0
    +              reg_duty_cycle_lsch0.
    +              10
    +              10
    +              read-write
    +            
    +            
    +              DUTY_NUM_LSCH0
    +              reg_duty_num_lsch0.
    +              20
    +              10
    +              read-write
    +            
    +            
    +              DUTY_INC_LSCH0
    +              reg_duty_inc_lsch0.
    +              30
    +              1
    +              read-write
    +            
    +            
    +              DUTY_START_LSCH0
    +              reg_duty_start_lsch0.
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          LSCH0_DUTY_R
    +          LEDC_LSCH0_DUTY_R.
    +          0x10
    +          0x20
    +          
    +            
    +              DUTY_LSCH0_R
    +              reg_duty_lsch0_r.
    +              0
    +              19
    +              read-only
    +            
    +          
    +        
    +        
    +          LSCH1_CONF0
    +          LEDC_LSCH1_CONF0.
    +          0x14
    +          0x20
    +          
    +            
    +              TIMER_SEL_LSCH1
    +              reg_timer_sel_lsch1.
    +              0
    +              2
    +              read-write
    +            
    +            
    +              SIG_OUT_EN_LSCH1
    +              reg_sig_out_en_lsch1.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              IDLE_LV_LSCH1
    +              reg_idle_lv_lsch1.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              PARA_UP_LSCH1
    +              reg_para_up_lsch1.
    +              4
    +              1
    +              write-only
    +            
    +            
    +              OVF_NUM_LSCH1
    +              reg_ovf_num_lsch1.
    +              5
    +              10
    +              read-write
    +            
    +            
    +              OVF_CNT_EN_LSCH1
    +              reg_ovf_cnt_en_lsch1.
    +              15
    +              1
    +              read-write
    +            
    +            
    +              OVF_CNT_RESET_LSCH1
    +              reg_ovf_cnt_reset_lsch1.
    +              16
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          LSCH1_HPOINT
    +          LEDC_LSCH1_HPOINT.
    +          0x18
    +          0x20
    +          
    +            
    +              HPOINT_LSCH1
    +              reg_hpoint_lsch1.
    +              0
    +              14
    +              read-write
    +            
    +          
    +        
    +        
    +          LSCH1_DUTY
    +          LEDC_LSCH1_DUTY.
    +          0x1C
    +          0x20
    +          
    +            
    +              DUTY_LSCH1
    +              reg_duty_lsch1.
    +              0
    +              19
    +              read-write
    +            
    +          
    +        
    +        
    +          LSCH1_CONF1
    +          LEDC_LSCH1_CONF1.
    +          0x20
    +          0x20
    +          0x40000000
    +          
    +            
    +              DUTY_SCALE_LSCH1
    +              reg_duty_scale_lsch1.
    +              0
    +              10
    +              read-write
    +            
    +            
    +              DUTY_CYCLE_LSCH1
    +              reg_duty_cycle_lsch1.
    +              10
    +              10
    +              read-write
    +            
    +            
    +              DUTY_NUM_LSCH1
    +              reg_duty_num_lsch1.
    +              20
    +              10
    +              read-write
    +            
    +            
    +              DUTY_INC_LSCH1
    +              reg_duty_inc_lsch1.
    +              30
    +              1
    +              read-write
    +            
    +            
    +              DUTY_START_LSCH1
    +              reg_duty_start_lsch1.
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          LSCH1_DUTY_R
    +          LEDC_LSCH1_DUTY_R.
    +          0x24
    +          0x20
    +          
    +            
    +              DUTY_LSCH1_R
    +              reg_duty_lsch1_r.
    +              0
    +              19
    +              read-only
    +            
    +          
    +        
    +        
    +          LSCH2_CONF0
    +          LEDC_LSCH2_CONF0.
    +          0x28
    +          0x20
    +          
    +            
    +              TIMER_SEL_LSCH2
    +              reg_timer_sel_lsch2.
    +              0
    +              2
    +              read-write
    +            
    +            
    +              SIG_OUT_EN_LSCH2
    +              reg_sig_out_en_lsch2.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              IDLE_LV_LSCH2
    +              reg_idle_lv_lsch2.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              PARA_UP_LSCH2
    +              reg_para_up_lsch2.
    +              4
    +              1
    +              write-only
    +            
    +            
    +              OVF_NUM_LSCH2
    +              reg_ovf_num_lsch2.
    +              5
    +              10
    +              read-write
    +            
    +            
    +              OVF_CNT_EN_LSCH2
    +              reg_ovf_cnt_en_lsch2.
    +              15
    +              1
    +              read-write
    +            
    +            
    +              OVF_CNT_RESET_LSCH2
    +              reg_ovf_cnt_reset_lsch2.
    +              16
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          LSCH2_HPOINT
    +          LEDC_LSCH2_HPOINT.
    +          0x2C
    +          0x20
    +          
    +            
    +              HPOINT_LSCH2
    +              reg_hpoint_lsch2.
    +              0
    +              14
    +              read-write
    +            
    +          
    +        
    +        
    +          LSCH2_DUTY
    +          LEDC_LSCH2_DUTY.
    +          0x30
    +          0x20
    +          
    +            
    +              DUTY_LSCH2
    +              reg_duty_lsch2.
    +              0
    +              19
    +              read-write
    +            
    +          
    +        
    +        
    +          LSCH2_CONF1
    +          LEDC_LSCH2_CONF1.
    +          0x34
    +          0x20
    +          0x40000000
    +          
    +            
    +              DUTY_SCALE_LSCH2
    +              reg_duty_scale_lsch2.
    +              0
    +              10
    +              read-write
    +            
    +            
    +              DUTY_CYCLE_LSCH2
    +              reg_duty_cycle_lsch2.
    +              10
    +              10
    +              read-write
    +            
    +            
    +              DUTY_NUM_LSCH2
    +              reg_duty_num_lsch2.
    +              20
    +              10
    +              read-write
    +            
    +            
    +              DUTY_INC_LSCH2
    +              reg_duty_inc_lsch2.
    +              30
    +              1
    +              read-write
    +            
    +            
    +              DUTY_START_LSCH2
    +              reg_duty_start_lsch2.
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          LSCH2_DUTY_R
    +          LEDC_LSCH2_DUTY_R.
    +          0x38
    +          0x20
    +          
    +            
    +              DUTY_LSCH2_R
    +              reg_duty_lsch2_r.
    +              0
    +              19
    +              read-only
    +            
    +          
    +        
    +        
    +          LSCH3_CONF0
    +          LEDC_LSCH3_CONF0.
    +          0x3C
    +          0x20
    +          
    +            
    +              TIMER_SEL_LSCH3
    +              reg_timer_sel_lsch3.
    +              0
    +              2
    +              read-write
    +            
    +            
    +              SIG_OUT_EN_LSCH3
    +              reg_sig_out_en_lsch3.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              IDLE_LV_LSCH3
    +              reg_idle_lv_lsch3.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              PARA_UP_LSCH3
    +              reg_para_up_lsch3.
    +              4
    +              1
    +              write-only
    +            
    +            
    +              OVF_NUM_LSCH3
    +              reg_ovf_num_lsch3.
    +              5
    +              10
    +              read-write
    +            
    +            
    +              OVF_CNT_EN_LSCH3
    +              reg_ovf_cnt_en_lsch3.
    +              15
    +              1
    +              read-write
    +            
    +            
    +              OVF_CNT_RESET_LSCH3
    +              reg_ovf_cnt_reset_lsch3.
    +              16
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          LSCH3_HPOINT
    +          LEDC_LSCH3_HPOINT.
    +          0x40
    +          0x20
    +          
    +            
    +              HPOINT_LSCH3
    +              reg_hpoint_lsch3.
    +              0
    +              14
    +              read-write
    +            
    +          
    +        
    +        
    +          LSCH3_DUTY
    +          LEDC_LSCH3_DUTY.
    +          0x44
    +          0x20
    +          
    +            
    +              DUTY_LSCH3
    +              reg_duty_lsch3.
    +              0
    +              19
    +              read-write
    +            
    +          
    +        
    +        
    +          LSCH3_CONF1
    +          LEDC_LSCH3_CONF1.
    +          0x48
    +          0x20
    +          0x40000000
    +          
    +            
    +              DUTY_SCALE_LSCH3
    +              reg_duty_scale_lsch3.
    +              0
    +              10
    +              read-write
    +            
    +            
    +              DUTY_CYCLE_LSCH3
    +              reg_duty_cycle_lsch3.
    +              10
    +              10
    +              read-write
    +            
    +            
    +              DUTY_NUM_LSCH3
    +              reg_duty_num_lsch3.
    +              20
    +              10
    +              read-write
    +            
    +            
    +              DUTY_INC_LSCH3
    +              reg_duty_inc_lsch3.
    +              30
    +              1
    +              read-write
    +            
    +            
    +              DUTY_START_LSCH3
    +              reg_duty_start_lsch3.
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          LSCH3_DUTY_R
    +          LEDC_LSCH3_DUTY_R.
    +          0x4C
    +          0x20
    +          
    +            
    +              DUTY_LSCH3_R
    +              reg_duty_lsch3_r.
    +              0
    +              19
    +              read-only
    +            
    +          
    +        
    +        
    +          LSCH4_CONF0
    +          LEDC_LSCH4_CONF0.
    +          0x50
    +          0x20
    +          
    +            
    +              TIMER_SEL_LSCH4
    +              reg_timer_sel_lsch4.
    +              0
    +              2
    +              read-write
    +            
    +            
    +              SIG_OUT_EN_LSCH4
    +              reg_sig_out_en_lsch4.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              IDLE_LV_LSCH4
    +              reg_idle_lv_lsch4.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              PARA_UP_LSCH4
    +              reg_para_up_lsch4.
    +              4
    +              1
    +              write-only
    +            
    +            
    +              OVF_NUM_LSCH4
    +              reg_ovf_num_lsch4.
    +              5
    +              10
    +              read-write
    +            
    +            
    +              OVF_CNT_EN_LSCH4
    +              reg_ovf_cnt_en_lsch4.
    +              15
    +              1
    +              read-write
    +            
    +            
    +              OVF_CNT_RESET_LSCH4
    +              reg_ovf_cnt_reset_lsch4.
    +              16
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          LSCH4_HPOINT
    +          LEDC_LSCH4_HPOINT.
    +          0x54
    +          0x20
    +          
    +            
    +              HPOINT_LSCH4
    +              reg_hpoint_lsch4.
    +              0
    +              14
    +              read-write
    +            
    +          
    +        
    +        
    +          LSCH4_DUTY
    +          LEDC_LSCH4_DUTY.
    +          0x58
    +          0x20
    +          
    +            
    +              DUTY_LSCH4
    +              reg_duty_lsch4.
    +              0
    +              19
    +              read-write
    +            
    +          
    +        
    +        
    +          LSCH4_CONF1
    +          LEDC_LSCH4_CONF1.
    +          0x5C
    +          0x20
    +          0x40000000
    +          
    +            
    +              DUTY_SCALE_LSCH4
    +              reg_duty_scale_lsch4.
    +              0
    +              10
    +              read-write
    +            
    +            
    +              DUTY_CYCLE_LSCH4
    +              reg_duty_cycle_lsch4.
    +              10
    +              10
    +              read-write
    +            
    +            
    +              DUTY_NUM_LSCH4
    +              reg_duty_num_lsch4.
    +              20
    +              10
    +              read-write
    +            
    +            
    +              DUTY_INC_LSCH4
    +              reg_duty_inc_lsch4.
    +              30
    +              1
    +              read-write
    +            
    +            
    +              DUTY_START_LSCH4
    +              reg_duty_start_lsch4.
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          LSCH4_DUTY_R
    +          LEDC_LSCH4_DUTY_R.
    +          0x60
    +          0x20
    +          
    +            
    +              DUTY_LSCH4_R
    +              reg_duty_lsch4_r.
    +              0
    +              19
    +              read-only
    +            
    +          
    +        
    +        
    +          LSCH5_CONF0
    +          LEDC_LSCH5_CONF0.
    +          0x64
    +          0x20
    +          
    +            
    +              TIMER_SEL_LSCH5
    +              reg_timer_sel_lsch5.
    +              0
    +              2
    +              read-write
    +            
    +            
    +              SIG_OUT_EN_LSCH5
    +              reg_sig_out_en_lsch5.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              IDLE_LV_LSCH5
    +              reg_idle_lv_lsch5.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              PARA_UP_LSCH5
    +              reg_para_up_lsch5.
    +              4
    +              1
    +              write-only
    +            
    +            
    +              OVF_NUM_LSCH5
    +              reg_ovf_num_lsch5.
    +              5
    +              10
    +              read-write
    +            
    +            
    +              OVF_CNT_EN_LSCH5
    +              reg_ovf_cnt_en_lsch5.
    +              15
    +              1
    +              read-write
    +            
    +            
    +              OVF_CNT_RESET_LSCH5
    +              reg_ovf_cnt_reset_lsch5.
    +              16
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          LSCH5_HPOINT
    +          LEDC_LSCH5_HPOINT.
    +          0x68
    +          0x20
    +          
    +            
    +              HPOINT_LSCH5
    +              reg_hpoint_lsch5.
    +              0
    +              14
    +              read-write
    +            
    +          
    +        
    +        
    +          LSCH5_DUTY
    +          LEDC_LSCH5_DUTY.
    +          0x6C
    +          0x20
    +          
    +            
    +              DUTY_LSCH5
    +              reg_duty_lsch5.
    +              0
    +              19
    +              read-write
    +            
    +          
    +        
    +        
    +          LSCH5_CONF1
    +          LEDC_LSCH5_CONF1.
    +          0x70
    +          0x20
    +          0x40000000
    +          
    +            
    +              DUTY_SCALE_LSCH5
    +              reg_duty_scale_lsch5.
    +              0
    +              10
    +              read-write
    +            
    +            
    +              DUTY_CYCLE_LSCH5
    +              reg_duty_cycle_lsch5.
    +              10
    +              10
    +              read-write
    +            
    +            
    +              DUTY_NUM_LSCH5
    +              reg_duty_num_lsch5.
    +              20
    +              10
    +              read-write
    +            
    +            
    +              DUTY_INC_LSCH5
    +              reg_duty_inc_lsch5.
    +              30
    +              1
    +              read-write
    +            
    +            
    +              DUTY_START_LSCH5
    +              reg_duty_start_lsch5.
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          LSCH5_DUTY_R
    +          LEDC_LSCH5_DUTY_R.
    +          0x74
    +          0x20
    +          
    +            
    +              DUTY_LSCH5_R
    +              reg_duty_lsch5_r.
    +              0
    +              19
    +              read-only
    +            
    +          
    +        
    +        
    +          LSTIMER0_CONF
    +          LEDC_LSTIMER0_CONF.
    +          0xA0
    +          0x20
    +          0x00800000
    +          
    +            
    +              LSTIMER0_DUTY_RES
    +              reg_lstimer0_duty_res.
    +              0
    +              4
    +              read-write
    +            
    +            
    +              CLK_DIV_LSTIMER0
    +              reg_clk_div_lstimer0.
    +              4
    +              18
    +              read-write
    +            
    +            
    +              LSTIMER0_PAUSE
    +              reg_lstimer0_pause.
    +              22
    +              1
    +              read-write
    +            
    +            
    +              LSTIMER0_RST
    +              reg_lstimer0_rst.
    +              23
    +              1
    +              read-write
    +            
    +            
    +              TICK_SEL_LSTIMER0
    +              reg_tick_sel_lstimer0.
    +              24
    +              1
    +              read-write
    +            
    +            
    +              LSTIMER0_PARA_UP
    +              reg_lstimer0_para_up.
    +              25
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          LSTIMER0_VALUE
    +          LEDC_LSTIMER0_VALUE.
    +          0xA4
    +          0x20
    +          
    +            
    +              LSTIMER0_CNT
    +              reg_lstimer0_cnt.
    +              0
    +              14
    +              read-only
    +            
    +          
    +        
    +        
    +          LSTIMER1_CONF
    +          LEDC_LSTIMER1_CONF.
    +          0xA8
    +          0x20
    +          0x00800000
    +          
    +            
    +              LSTIMER1_DUTY_RES
    +              reg_lstimer1_duty_res.
    +              0
    +              4
    +              read-write
    +            
    +            
    +              CLK_DIV_LSTIMER1
    +              reg_clk_div_lstimer1.
    +              4
    +              18
    +              read-write
    +            
    +            
    +              LSTIMER1_PAUSE
    +              reg_lstimer1_pause.
    +              22
    +              1
    +              read-write
    +            
    +            
    +              LSTIMER1_RST
    +              reg_lstimer1_rst.
    +              23
    +              1
    +              read-write
    +            
    +            
    +              TICK_SEL_LSTIMER1
    +              reg_tick_sel_lstimer1.
    +              24
    +              1
    +              read-write
    +            
    +            
    +              LSTIMER1_PARA_UP
    +              reg_lstimer1_para_up.
    +              25
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          LSTIMER1_VALUE
    +          LEDC_LSTIMER1_VALUE.
    +          0xAC
    +          0x20
    +          
    +            
    +              LSTIMER1_CNT
    +              reg_lstimer1_cnt.
    +              0
    +              14
    +              read-only
    +            
    +          
    +        
    +        
    +          LSTIMER2_CONF
    +          LEDC_LSTIMER2_CONF.
    +          0xB0
    +          0x20
    +          0x00800000
    +          
    +            
    +              LSTIMER2_DUTY_RES
    +              reg_lstimer2_duty_res.
    +              0
    +              4
    +              read-write
    +            
    +            
    +              CLK_DIV_LSTIMER2
    +              reg_clk_div_lstimer2.
    +              4
    +              18
    +              read-write
    +            
    +            
    +              LSTIMER2_PAUSE
    +              reg_lstimer2_pause.
    +              22
    +              1
    +              read-write
    +            
    +            
    +              LSTIMER2_RST
    +              reg_lstimer2_rst.
    +              23
    +              1
    +              read-write
    +            
    +            
    +              TICK_SEL_LSTIMER2
    +              reg_tick_sel_lstimer2.
    +              24
    +              1
    +              read-write
    +            
    +            
    +              LSTIMER2_PARA_UP
    +              reg_lstimer2_para_up.
    +              25
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          LSTIMER2_VALUE
    +          LEDC_LSTIMER2_VALUE.
    +          0xB4
    +          0x20
    +          
    +            
    +              LSTIMER2_CNT
    +              reg_lstimer2_cnt.
    +              0
    +              14
    +              read-only
    +            
    +          
    +        
    +        
    +          LSTIMER3_CONF
    +          LEDC_LSTIMER3_CONF.
    +          0xB8
    +          0x20
    +          0x00800000
    +          
    +            
    +              LSTIMER3_DUTY_RES
    +              reg_lstimer3_duty_res.
    +              0
    +              4
    +              read-write
    +            
    +            
    +              CLK_DIV_LSTIMER3
    +              reg_clk_div_lstimer3.
    +              4
    +              18
    +              read-write
    +            
    +            
    +              LSTIMER3_PAUSE
    +              reg_lstimer3_pause.
    +              22
    +              1
    +              read-write
    +            
    +            
    +              LSTIMER3_RST
    +              reg_lstimer3_rst.
    +              23
    +              1
    +              read-write
    +            
    +            
    +              TICK_SEL_LSTIMER3
    +              reg_tick_sel_lstimer3.
    +              24
    +              1
    +              read-write
    +            
    +            
    +              LSTIMER3_PARA_UP
    +              reg_lstimer3_para_up.
    +              25
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          LSTIMER3_VALUE
    +          LEDC_LSTIMER3_VALUE.
    +          0xBC
    +          0x20
    +          
    +            
    +              LSTIMER3_CNT
    +              reg_lstimer3_cnt.
    +              0
    +              14
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_RAW
    +          LEDC_INT_RAW.
    +          0xC0
    +          0x20
    +          
    +            
    +              LSTIMER0_OVF_INT_RAW
    +              reg_lstimer0_ovf_int_raw.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              LSTIMER1_OVF_INT_RAW
    +              reg_lstimer1_ovf_int_raw.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              LSTIMER2_OVF_INT_RAW
    +              reg_lstimer2_ovf_int_raw.
    +              2
    +              1
    +              read-only
    +            
    +            
    +              LSTIMER3_OVF_INT_RAW
    +              reg_lstimer3_ovf_int_raw.
    +              3
    +              1
    +              read-only
    +            
    +            
    +              DUTY_CHNG_END_LSCH0_INT_RAW
    +              reg_duty_chng_end_lsch0_int_raw.
    +              4
    +              1
    +              read-only
    +            
    +            
    +              DUTY_CHNG_END_LSCH1_INT_RAW
    +              reg_duty_chng_end_lsch1_int_raw.
    +              5
    +              1
    +              read-only
    +            
    +            
    +              DUTY_CHNG_END_LSCH2_INT_RAW
    +              reg_duty_chng_end_lsch2_int_raw.
    +              6
    +              1
    +              read-only
    +            
    +            
    +              DUTY_CHNG_END_LSCH3_INT_RAW
    +              reg_duty_chng_end_lsch3_int_raw.
    +              7
    +              1
    +              read-only
    +            
    +            
    +              DUTY_CHNG_END_LSCH4_INT_RAW
    +              reg_duty_chng_end_lsch4_int_raw.
    +              8
    +              1
    +              read-only
    +            
    +            
    +              DUTY_CHNG_END_LSCH5_INT_RAW
    +              reg_duty_chng_end_lsch5_int_raw.
    +              9
    +              1
    +              read-only
    +            
    +            
    +              OVF_CNT_LSCH0_INT_RAW
    +              reg_ovf_cnt_lsch0_int_raw.
    +              10
    +              1
    +              read-only
    +            
    +            
    +              OVF_CNT_LSCH1_INT_RAW
    +              reg_ovf_cnt_lsch1_int_raw.
    +              11
    +              1
    +              read-only
    +            
    +            
    +              OVF_CNT_LSCH2_INT_RAW
    +              reg_ovf_cnt_lsch2_int_raw.
    +              12
    +              1
    +              read-only
    +            
    +            
    +              OVF_CNT_LSCH3_INT_RAW
    +              reg_ovf_cnt_lsch3_int_raw.
    +              13
    +              1
    +              read-only
    +            
    +            
    +              OVF_CNT_LSCH4_INT_RAW
    +              reg_ovf_cnt_lsch4_int_raw.
    +              14
    +              1
    +              read-only
    +            
    +            
    +              OVF_CNT_LSCH5_INT_RAW
    +              reg_ovf_cnt_lsch5_int_raw.
    +              15
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_ST
    +          LEDC_INT_ST.
    +          0xC4
    +          0x20
    +          
    +            
    +              LSTIMER0_OVF_INT_ST
    +              reg_lstimer0_ovf_int_st.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              LSTIMER1_OVF_INT_ST
    +              reg_lstimer1_ovf_int_st.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              LSTIMER2_OVF_INT_ST
    +              reg_lstimer2_ovf_int_st.
    +              2
    +              1
    +              read-only
    +            
    +            
    +              LSTIMER3_OVF_INT_ST
    +              reg_lstimer3_ovf_int_st.
    +              3
    +              1
    +              read-only
    +            
    +            
    +              DUTY_CHNG_END_LSCH0_INT_ST
    +              reg_duty_chng_end_lsch0_int_st.
    +              4
    +              1
    +              read-only
    +            
    +            
    +              DUTY_CHNG_END_LSCH1_INT_ST
    +              reg_duty_chng_end_lsch1_int_st.
    +              5
    +              1
    +              read-only
    +            
    +            
    +              DUTY_CHNG_END_LSCH2_INT_ST
    +              reg_duty_chng_end_lsch2_int_st.
    +              6
    +              1
    +              read-only
    +            
    +            
    +              DUTY_CHNG_END_LSCH3_INT_ST
    +              reg_duty_chng_end_lsch3_int_st.
    +              7
    +              1
    +              read-only
    +            
    +            
    +              DUTY_CHNG_END_LSCH4_INT_ST
    +              reg_duty_chng_end_lsch4_int_st.
    +              8
    +              1
    +              read-only
    +            
    +            
    +              DUTY_CHNG_END_LSCH5_INT_ST
    +              reg_duty_chng_end_lsch5_int_st.
    +              9
    +              1
    +              read-only
    +            
    +            
    +              OVF_CNT_LSCH0_INT_ST
    +              reg_ovf_cnt_lsch0_int_st.
    +              10
    +              1
    +              read-only
    +            
    +            
    +              OVF_CNT_LSCH1_INT_ST
    +              reg_ovf_cnt_lsch1_int_st.
    +              11
    +              1
    +              read-only
    +            
    +            
    +              OVF_CNT_LSCH2_INT_ST
    +              reg_ovf_cnt_lsch2_int_st.
    +              12
    +              1
    +              read-only
    +            
    +            
    +              OVF_CNT_LSCH3_INT_ST
    +              reg_ovf_cnt_lsch3_int_st.
    +              13
    +              1
    +              read-only
    +            
    +            
    +              OVF_CNT_LSCH4_INT_ST
    +              reg_ovf_cnt_lsch4_int_st.
    +              14
    +              1
    +              read-only
    +            
    +            
    +              OVF_CNT_LSCH5_INT_ST
    +              reg_ovf_cnt_lsch5_int_st.
    +              15
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_ENA
    +          LEDC_INT_ENA.
    +          0xC8
    +          0x20
    +          
    +            
    +              LSTIMER0_OVF_INT_ENA
    +              reg_lstimer0_ovf_int_ena.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              LSTIMER1_OVF_INT_ENA
    +              reg_lstimer1_ovf_int_ena.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              LSTIMER2_OVF_INT_ENA
    +              reg_lstimer2_ovf_int_ena.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              LSTIMER3_OVF_INT_ENA
    +              reg_lstimer3_ovf_int_ena.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              DUTY_CHNG_END_LSCH0_INT_ENA
    +              reg_duty_chng_end_lsch0_int_ena.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              DUTY_CHNG_END_LSCH1_INT_ENA
    +              reg_duty_chng_end_lsch1_int_ena.
    +              5
    +              1
    +              read-write
    +            
    +            
    +              DUTY_CHNG_END_LSCH2_INT_ENA
    +              reg_duty_chng_end_lsch2_int_ena.
    +              6
    +              1
    +              read-write
    +            
    +            
    +              DUTY_CHNG_END_LSCH3_INT_ENA
    +              reg_duty_chng_end_lsch3_int_ena.
    +              7
    +              1
    +              read-write
    +            
    +            
    +              DUTY_CHNG_END_LSCH4_INT_ENA
    +              reg_duty_chng_end_lsch4_int_ena.
    +              8
    +              1
    +              read-write
    +            
    +            
    +              DUTY_CHNG_END_LSCH5_INT_ENA
    +              reg_duty_chng_end_lsch5_int_ena.
    +              9
    +              1
    +              read-write
    +            
    +            
    +              OVF_CNT_LSCH0_INT_ENA
    +              reg_ovf_cnt_lsch0_int_ena.
    +              10
    +              1
    +              read-write
    +            
    +            
    +              OVF_CNT_LSCH1_INT_ENA
    +              reg_ovf_cnt_lsch1_int_ena.
    +              11
    +              1
    +              read-write
    +            
    +            
    +              OVF_CNT_LSCH2_INT_ENA
    +              reg_ovf_cnt_lsch2_int_ena.
    +              12
    +              1
    +              read-write
    +            
    +            
    +              OVF_CNT_LSCH3_INT_ENA
    +              reg_ovf_cnt_lsch3_int_ena.
    +              13
    +              1
    +              read-write
    +            
    +            
    +              OVF_CNT_LSCH4_INT_ENA
    +              reg_ovf_cnt_lsch4_int_ena.
    +              14
    +              1
    +              read-write
    +            
    +            
    +              OVF_CNT_LSCH5_INT_ENA
    +              reg_ovf_cnt_lsch5_int_ena.
    +              15
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_CLR
    +          LEDC_INT_CLR.
    +          0xCC
    +          0x20
    +          
    +            
    +              LSTIMER0_OVF_INT_CLR
    +              reg_lstimer0_ovf_int_clr.
    +              0
    +              1
    +              write-only
    +            
    +            
    +              LSTIMER1_OVF_INT_CLR
    +              reg_lstimer1_ovf_int_clr.
    +              1
    +              1
    +              write-only
    +            
    +            
    +              LSTIMER2_OVF_INT_CLR
    +              reg_lstimer2_ovf_int_clr.
    +              2
    +              1
    +              write-only
    +            
    +            
    +              LSTIMER3_OVF_INT_CLR
    +              reg_lstimer3_ovf_int_clr.
    +              3
    +              1
    +              write-only
    +            
    +            
    +              DUTY_CHNG_END_LSCH0_INT_CLR
    +              reg_duty_chng_end_lsch0_int_clr.
    +              4
    +              1
    +              write-only
    +            
    +            
    +              DUTY_CHNG_END_LSCH1_INT_CLR
    +              reg_duty_chng_end_lsch1_int_clr.
    +              5
    +              1
    +              write-only
    +            
    +            
    +              DUTY_CHNG_END_LSCH2_INT_CLR
    +              reg_duty_chng_end_lsch2_int_clr.
    +              6
    +              1
    +              write-only
    +            
    +            
    +              DUTY_CHNG_END_LSCH3_INT_CLR
    +              reg_duty_chng_end_lsch3_int_clr.
    +              7
    +              1
    +              write-only
    +            
    +            
    +              DUTY_CHNG_END_LSCH4_INT_CLR
    +              reg_duty_chng_end_lsch4_int_clr.
    +              8
    +              1
    +              write-only
    +            
    +            
    +              DUTY_CHNG_END_LSCH5_INT_CLR
    +              reg_duty_chng_end_lsch5_int_clr.
    +              9
    +              1
    +              write-only
    +            
    +            
    +              OVF_CNT_LSCH0_INT_CLR
    +              reg_ovf_cnt_lsch0_int_clr.
    +              10
    +              1
    +              write-only
    +            
    +            
    +              OVF_CNT_LSCH1_INT_CLR
    +              reg_ovf_cnt_lsch1_int_clr.
    +              11
    +              1
    +              write-only
    +            
    +            
    +              OVF_CNT_LSCH2_INT_CLR
    +              reg_ovf_cnt_lsch2_int_clr.
    +              12
    +              1
    +              write-only
    +            
    +            
    +              OVF_CNT_LSCH3_INT_CLR
    +              reg_ovf_cnt_lsch3_int_clr.
    +              13
    +              1
    +              write-only
    +            
    +            
    +              OVF_CNT_LSCH4_INT_CLR
    +              reg_ovf_cnt_lsch4_int_clr.
    +              14
    +              1
    +              write-only
    +            
    +            
    +              OVF_CNT_LSCH5_INT_CLR
    +              reg_ovf_cnt_lsch5_int_clr.
    +              15
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          CONF
    +          LEDC_CONF.
    +          0xD0
    +          0x20
    +          
    +            
    +              APB_CLK_SEL
    +              reg_apb_clk_sel.
    +              0
    +              2
    +              read-write
    +            
    +            
    +              CLK_EN
    +              reg_clk_en.
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DATE
    +          LEDC_DATE.
    +          0xFC
    +          0x20
    +          0x19061700
    +          
    +            
    +              LEDC_DATE
    +              reg_ledc_date.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      RMT
    +      Remote Control Peripheral
    +      RMT
    +      0x60016000
    +      
    +        0x0
    +        0x78
    +        registers
    +      
    +      
    +        RMT
    +        28
    +      
    +      
    +        
    +          CH0DATA
    +          RMT_CH0DATA_REG.
    +          0x0
    +          0x20
    +          
    +            
    +              DATA
    +              Reserved.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          CH1DATA
    +          RMT_CH1DATA_REG.
    +          0x4
    +          0x20
    +          
    +            
    +              DATA
    +              Reserved.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          CH2DATA
    +          RMT_CH2DATA_REG.
    +          0x8
    +          0x20
    +          
    +            
    +              DATA
    +              Reserved.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          CH3DATA
    +          RMT_CH3DATA_REG.
    +          0xC
    +          0x20
    +          
    +            
    +              DATA
    +              Reserved.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          2
    +          0x4
    +          0-1
    +          CH%s_TX_CONF0
    +          RMT_CH%sCONF%s_REG.
    +          0x10
    +          0x20
    +          0x00710200
    +          
    +            
    +              TX_START
    +              reg_tx_start_ch0.
    +              0
    +              1
    +              write-only
    +            
    +            
    +              MEM_RD_RST
    +              reg_mem_rd_rst_ch0.
    +              1
    +              1
    +              write-only
    +            
    +            
    +              APB_MEM_RST
    +              reg_apb_mem_rst_ch0.
    +              2
    +              1
    +              write-only
    +            
    +            
    +              TX_CONTI_MODE
    +              reg_tx_conti_mode_ch0.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              MEM_TX_WRAP_EN
    +              reg_mem_tx_wrap_en_ch0.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              IDLE_OUT_LV
    +              reg_idle_out_lv_ch0.
    +              5
    +              1
    +              read-write
    +            
    +            
    +              IDLE_OUT_EN
    +              reg_idle_out_en_ch0.
    +              6
    +              1
    +              read-write
    +            
    +            
    +              TX_STOP
    +              reg_tx_stop_ch0.
    +              7
    +              1
    +              read-write
    +            
    +            
    +              DIV_CNT
    +              reg_div_cnt_ch0.
    +              8
    +              8
    +              read-write
    +            
    +            
    +              MEM_SIZE
    +              reg_mem_size_ch0.
    +              16
    +              3
    +              read-write
    +            
    +            
    +              CARRIER_EFF_EN
    +              reg_carrier_eff_en_ch0.
    +              20
    +              1
    +              read-write
    +            
    +            
    +              CARRIER_EN
    +              reg_carrier_en_ch0.
    +              21
    +              1
    +              read-write
    +            
    +            
    +              CARRIER_OUT_LV
    +              reg_carrier_out_lv_ch0.
    +              22
    +              1
    +              read-write
    +            
    +            
    +              AFIFO_RST
    +              reg_afifo_rst_ch0.
    +              23
    +              1
    +              write-only
    +            
    +            
    +              CONF_UPDATE
    +              reg_reg_conf_update_ch0.
    +              24
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          2
    +          0x8
    +          2-3
    +          CH%s_RX_CONF0
    +          RMT_CH2CONF0_REG.
    +          0x18
    +          0x20
    +          0x30FFFF02
    +          
    +            
    +              DIV_CNT
    +              reg_div_cnt_ch2.
    +              0
    +              8
    +              read-write
    +            
    +            
    +              IDLE_THRES
    +              reg_idle_thres_ch2.
    +              8
    +              15
    +              read-write
    +            
    +            
    +              MEM_SIZE
    +              reg_mem_size_ch2.
    +              23
    +              3
    +              read-write
    +            
    +            
    +              CARRIER_EN
    +              reg_carrier_en_ch2.
    +              28
    +              1
    +              read-write
    +            
    +            
    +              CARRIER_OUT_LV
    +              reg_carrier_out_lv_ch2.
    +              29
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CH2CONF1
    +          RMT_CH2CONF1_REG.
    +          0x1C
    +          0x20
    +          0x000001E8
    +          
    +            
    +              RX_EN
    +              reg_rx_en_ch2.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              MEM_WR_RST
    +              reg_mem_wr_rst_ch2.
    +              1
    +              1
    +              write-only
    +            
    +            
    +              APB_MEM_RST
    +              reg_apb_mem_rst_ch2.
    +              2
    +              1
    +              write-only
    +            
    +            
    +              MEM_OWNER
    +              reg_mem_owner_ch2.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              RX_FILTER_EN
    +              reg_rx_filter_en_ch2.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              RX_FILTER_THRES
    +              reg_rx_filter_thres_ch2.
    +              5
    +              8
    +              read-write
    +            
    +            
    +              MEM_RX_WRAP_EN
    +              reg_mem_rx_wrap_en_ch2.
    +              13
    +              1
    +              read-write
    +            
    +            
    +              AFIFO_RST
    +              reg_afifo_rst_ch2.
    +              14
    +              1
    +              write-only
    +            
    +            
    +              CONF_UPDATE
    +              reg_conf_update_ch2.
    +              15
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          CH3CONF1
    +          RMT_CH3CONF1_REG.
    +          0x24
    +          0x20
    +          0x000001E8
    +          
    +            
    +              RX_EN
    +              reg_rx_en_ch3.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              MEM_WR_RST
    +              reg_mem_wr_rst_ch3.
    +              1
    +              1
    +              write-only
    +            
    +            
    +              APB_MEM_RST
    +              reg_apb_mem_rst_ch3.
    +              2
    +              1
    +              write-only
    +            
    +            
    +              MEM_OWNER
    +              reg_mem_owner_ch3.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              RX_FILTER_EN
    +              reg_rx_filter_en_ch3.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              RX_FILTER_THRES
    +              reg_rx_filter_thres_ch3.
    +              5
    +              8
    +              read-write
    +            
    +            
    +              MEM_RX_WRAP_EN
    +              reg_mem_rx_wrap_en_ch3.
    +              13
    +              1
    +              read-write
    +            
    +            
    +              AFIFO_RST
    +              reg_afifo_rst_ch3.
    +              14
    +              1
    +              write-only
    +            
    +            
    +              CONF_UPDATE
    +              reg_conf_update_ch3.
    +              15
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          CH0STATUS
    +          RMT_CH0STATUS_REG.
    +          0x28
    +          0x20
    +          
    +            
    +              MEM_RADDR_EX
    +              reg_mem_raddr_ex_ch0.
    +              0
    +              9
    +              read-only
    +            
    +            
    +              STATE
    +              reg_state_ch0.
    +              9
    +              3
    +              read-only
    +            
    +            
    +              APB_MEM_WADDR
    +              reg_apb_mem_waddr_ch0.
    +              12
    +              9
    +              read-only
    +            
    +            
    +              APB_MEM_RD_ERR
    +              reg_apb_mem_rd_err_ch0.
    +              21
    +              1
    +              read-only
    +            
    +            
    +              MEM_EMPTY
    +              reg_mem_empty_ch0.
    +              22
    +              1
    +              read-only
    +            
    +            
    +              APB_MEM_WR_ERR
    +              reg_apb_mem_wr_err_ch0.
    +              23
    +              1
    +              read-only
    +            
    +            
    +              APB_MEM_RADDR
    +              reg_apb_mem_raddr_ch0.
    +              24
    +              8
    +              read-only
    +            
    +          
    +        
    +        
    +          CH1STATUS
    +          RMT_CH1STATUS_REG.
    +          0x2C
    +          0x20
    +          
    +            
    +              MEM_RADDR_EX
    +              reg_mem_raddr_ex_ch1.
    +              0
    +              9
    +              read-only
    +            
    +            
    +              STATE
    +              reg_state_ch1.
    +              9
    +              3
    +              read-only
    +            
    +            
    +              APB_MEM_WADDR
    +              reg_apb_mem_waddr_ch1.
    +              12
    +              9
    +              read-only
    +            
    +            
    +              APB_MEM_RD_ERR
    +              reg_apb_mem_rd_err_ch1.
    +              21
    +              1
    +              read-only
    +            
    +            
    +              MEM_EMPTY
    +              reg_mem_empty_ch1.
    +              22
    +              1
    +              read-only
    +            
    +            
    +              APB_MEM_WR_ERR
    +              reg_apb_mem_wr_err_ch1.
    +              23
    +              1
    +              read-only
    +            
    +            
    +              APB_MEM_RADDR
    +              reg_apb_mem_raddr_ch1.
    +              24
    +              8
    +              read-only
    +            
    +          
    +        
    +        
    +          CH2STATUS
    +          RMT_CH2STATUS_REG.
    +          0x30
    +          0x20
    +          
    +            
    +              MEM_WADDR_EX
    +              reg_mem_waddr_ex_ch2.
    +              0
    +              9
    +              read-only
    +            
    +            
    +              APB_MEM_RADDR
    +              reg_apb_mem_raddr_ch2.
    +              12
    +              9
    +              read-only
    +            
    +            
    +              STATE
    +              reg_state_ch2.
    +              22
    +              3
    +              read-only
    +            
    +            
    +              MEM_OWNER_ERR
    +              reg_mem_owner_err_ch2.
    +              25
    +              1
    +              read-only
    +            
    +            
    +              MEM_FULL
    +              reg_mem_full_ch2.
    +              26
    +              1
    +              read-only
    +            
    +            
    +              APB_MEM_RD_ERR
    +              reg_apb_mem_rd_err_ch2.
    +              27
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          CH3STATUS
    +          RMT_CH3STATUS_REG.
    +          0x34
    +          0x20
    +          
    +            
    +              MEM_WADDR_EX
    +              reg_mem_waddr_ex_ch3.
    +              0
    +              9
    +              read-only
    +            
    +            
    +              APB_MEM_RADDR
    +              reg_apb_mem_raddr_ch3.
    +              12
    +              9
    +              read-only
    +            
    +            
    +              STATE
    +              reg_state_ch3.
    +              22
    +              3
    +              read-only
    +            
    +            
    +              MEM_OWNER_ERR
    +              reg_mem_owner_err_ch3.
    +              25
    +              1
    +              read-only
    +            
    +            
    +              MEM_FULL
    +              reg_mem_full_ch3.
    +              26
    +              1
    +              read-only
    +            
    +            
    +              APB_MEM_RD_ERR
    +              reg_apb_mem_rd_err_ch3.
    +              27
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_RAW
    +          RMT_INT_RAW_REG.
    +          0x38
    +          0x20
    +          
    +            
    +              2
    +              0x1
    +              0-1
    +              CH%s_TX_END_INT_RAW
    +              reg_ch%s_tx_end_int_raw.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              2
    +              0x1
    +              2-3
    +              CH%s_RX_END_INT_RAW
    +              reg_ch2_rx_end_int_raw.
    +              2
    +              1
    +              read-only
    +            
    +            
    +              2
    +              0x1
    +              0-1
    +              CH%s_TX_ERR_INT_RAW
    +              reg_ch%s_err_int_raw.
    +              4
    +              1
    +              read-only
    +            
    +            
    +              2
    +              0x1
    +              2-3
    +              CH%s_RX_ERR_INT_RAW
    +              reg_ch2_err_int_raw.
    +              6
    +              1
    +              read-only
    +            
    +            
    +              2
    +              0x1
    +              0-1
    +              CH%s_TX_THR_EVENT_INT_RAW
    +              reg_ch%s_tx_thr_event_int_raw.
    +              8
    +              1
    +              read-only
    +            
    +            
    +              CH2_RX_THR_EVENT_INT_RAW
    +              reg_ch2_rx_thr_event_int_raw.
    +              10
    +              1
    +              read-only
    +            
    +            
    +              CH3_RX_THR_EVENT_INT_RAW
    +              reg_ch3_rx_thr_event_int_raw.
    +              11
    +              1
    +              read-only
    +            
    +            
    +              2
    +              0x1
    +              0-1
    +              CH%s_TX_LOOP_INT_RAW
    +              reg_ch%s_tx_loop_int_raw.
    +              12
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_ST
    +          RMT_INT_ST_REG.
    +          0x3C
    +          0x20
    +          
    +            
    +              2
    +              0x1
    +              0-1
    +              CH%s_TX_END_INT_ST
    +              reg_ch%s_tx_end_int_st.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              2
    +              0x1
    +              2-3
    +              CH%s_RX_END_INT_ST
    +              reg_ch2_rx_end_int_st.
    +              2
    +              1
    +              read-only
    +            
    +            
    +              2
    +              0x1
    +              0-1
    +              CH%s_TX_ERR_INT_ST
    +              reg_ch%s_err_int_st.
    +              4
    +              1
    +              read-only
    +            
    +            
    +              2
    +              0x1
    +              2-3
    +              CH%s_RX_ERR_INT_ST
    +              reg_ch2_err_int_st.
    +              6
    +              1
    +              read-only
    +            
    +            
    +              2
    +              0x1
    +              0-1
    +              CH%s_TX_THR_EVENT_INT_ST
    +              reg_ch%s_tx_thr_event_int_st.
    +              8
    +              1
    +              read-only
    +            
    +            
    +              CH2_RX_THR_EVENT_INT_ST
    +              reg_ch2_rx_thr_event_int_st.
    +              10
    +              1
    +              read-only
    +            
    +            
    +              CH3_RX_THR_EVENT_INT_ST
    +              reg_ch3_rx_thr_event_int_st.
    +              11
    +              1
    +              read-only
    +            
    +            
    +              2
    +              0x1
    +              0-1
    +              CH%s_TX_LOOP_INT_ST
    +              reg_ch%s_tx_loop_int_st.
    +              12
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_ENA
    +          RMT_INT_ENA_REG.
    +          0x40
    +          0x20
    +          
    +            
    +              2
    +              0x1
    +              0-1
    +              CH%s_TX_END_INT_ENA
    +              reg_ch%s_tx_end_int_ena.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              2
    +              0x1
    +              2-3
    +              CH%s_RX_END_INT_ENA
    +              reg_ch2_rx_end_int_ena.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              2
    +              0x1
    +              0-1
    +              CH%s_TX_ERR_INT_ENA
    +              reg_ch%s_err_int_ena.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              2
    +              0x1
    +              2-3
    +              CH%s_RX_ERR_INT_ENA
    +              reg_ch2_err_int_ena.
    +              6
    +              1
    +              read-write
    +            
    +            
    +              2
    +              0x1
    +              0-1
    +              CH%s_TX_THR_EVENT_INT_ENA
    +              reg_ch%s_tx_thr_event_int_ena.
    +              8
    +              1
    +              read-write
    +            
    +            
    +              CH2_RX_THR_EVENT_INT_ENA
    +              reg_ch2_rx_thr_event_int_ena.
    +              10
    +              1
    +              read-write
    +            
    +            
    +              CH3_RX_THR_EVENT_INT_ENA
    +              reg_ch3_rx_thr_event_int_ena.
    +              11
    +              1
    +              read-write
    +            
    +            
    +              2
    +              0x1
    +              0-1
    +              CH%s_TX_LOOP_INT_ENA
    +              reg_ch%s_tx_loop_int_ena.
    +              12
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_CLR
    +          RMT_INT_CLR_REG.
    +          0x44
    +          0x20
    +          
    +            
    +              2
    +              0x1
    +              0-1
    +              CH%s_TX_END_INT_CLR
    +              reg_ch%s_tx_end_int_clr.
    +              0
    +              1
    +              write-only
    +            
    +            
    +              2
    +              0x1
    +              2-3
    +              CH%s_RX_END_INT_CLR
    +              reg_ch2_rx_end_int_clr.
    +              2
    +              1
    +              write-only
    +            
    +            
    +              2
    +              0x1
    +              0-1
    +              CH%s_TX_ERR_INT_CLR
    +              reg_ch%s_err_int_clr.
    +              4
    +              1
    +              write-only
    +            
    +            
    +              2
    +              0x1
    +              2-3
    +              CH%s_RX_ERR_INT_CLR
    +              reg_ch2_err_int_clr.
    +              6
    +              1
    +              write-only
    +            
    +            
    +              2
    +              0x1
    +              0-1
    +              CH%s_TX_THR_EVENT_INT_CLR
    +              reg_ch%s_tx_thr_event_int_clr.
    +              8
    +              1
    +              write-only
    +            
    +            
    +              CH2_RX_THR_EVENT_INT_CLR
    +              reg_ch2_rx_thr_event_int_clr.
    +              10
    +              1
    +              write-only
    +            
    +            
    +              CH3_RX_THR_EVENT_INT_CLR
    +              reg_ch3_rx_thr_event_int_clr.
    +              11
    +              1
    +              write-only
    +            
    +            
    +              2
    +              0x1
    +              0-1
    +              CH%s_TX_LOOP_INT_CLR
    +              reg_ch%s_tx_loop_int_clr.
    +              12
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          CH0CARRIER_DUTY
    +          RMT_CH0CARRIER_DUTY_REG.
    +          0x48
    +          0x20
    +          0x00400040
    +          
    +            
    +              CARRIER_LOW
    +              reg_carrier_low_ch0.
    +              0
    +              16
    +              read-write
    +            
    +            
    +              CARRIER_HIGH
    +              reg_carrier_high_ch0.
    +              16
    +              16
    +              read-write
    +            
    +          
    +        
    +        
    +          CH1CARRIER_DUTY
    +          RMT_CH1CARRIER_DUTY_REG.
    +          0x4C
    +          0x20
    +          0x00400040
    +          
    +            
    +              CARRIER_LOW
    +              reg_carrier_low_ch1.
    +              0
    +              16
    +              read-write
    +            
    +            
    +              CARRIER_HIGH
    +              reg_carrier_high_ch1.
    +              16
    +              16
    +              read-write
    +            
    +          
    +        
    +        
    +          CH2_RX_CARRIER_RM
    +          RMT_CH2_RX_CARRIER_RM_REG.
    +          0x50
    +          0x20
    +          
    +            
    +              CARRIER_LOW_THRES
    +              reg_carrier_low_thres_ch2.
    +              0
    +              16
    +              read-write
    +            
    +            
    +              CARRIER_HIGH_THRES
    +              reg_carrier_high_thres_ch2.
    +              16
    +              16
    +              read-write
    +            
    +          
    +        
    +        
    +          CH3_RX_CARRIER_RM
    +          RMT_CH3_RX_CARRIER_RM_REG.
    +          0x54
    +          0x20
    +          
    +            
    +              CARRIER_LOW_THRES
    +              reg_carrier_low_thres_ch3.
    +              0
    +              16
    +              read-write
    +            
    +            
    +              CARRIER_HIGH_THRES
    +              reg_carrier_high_thres_ch3.
    +              16
    +              16
    +              read-write
    +            
    +          
    +        
    +        
    +          2
    +          0x4
    +          0-1
    +          CH%s_TX_LIM
    +          RMT_CH%s_TX_LIM_REG.
    +          0x58
    +          0x20
    +          0x00000080
    +          
    +            
    +              TX_LIM
    +              reg_rmt_tx_lim_ch0.
    +              0
    +              9
    +              read-write
    +            
    +            
    +              TX_LOOP_NUM
    +              reg_rmt_tx_loop_num_ch0.
    +              9
    +              10
    +              read-write
    +            
    +            
    +              TX_LOOP_CNT_EN
    +              reg_rmt_tx_loop_cnt_en_ch0.
    +              19
    +              1
    +              read-write
    +            
    +            
    +              LOOP_COUNT_RESET
    +              reg_loop_count_reset_ch0.
    +              20
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          2
    +          0x4
    +          2-3
    +          CH%s_RX_LIM
    +          RMT_CH2_RX_LIM_REG.
    +          0x60
    +          0x20
    +          0x00000080
    +          
    +            
    +              RX_LIM
    +              reg_rmt_rx_lim_ch2.
    +              0
    +              9
    +              read-write
    +            
    +          
    +        
    +        
    +          SYS_CONF
    +          RMT_SYS_CONF_REG.
    +          0x68
    +          0x20
    +          0x05000010
    +          
    +            
    +              APB_FIFO_MASK
    +              reg_apb_fifo_mask.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              MEM_CLK_FORCE_ON
    +              reg_mem_clk_force_on.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              MEM_FORCE_PD
    +              reg_rmt_mem_force_pd.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              MEM_FORCE_PU
    +              reg_rmt_mem_force_pu.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              SCLK_DIV_NUM
    +              reg_rmt_sclk_div_num.
    +              4
    +              8
    +              read-write
    +            
    +            
    +              SCLK_DIV_A
    +              reg_rmt_sclk_div_a.
    +              12
    +              6
    +              read-write
    +            
    +            
    +              SCLK_DIV_B
    +              reg_rmt_sclk_div_b.
    +              18
    +              6
    +              read-write
    +            
    +            
    +              SCLK_SEL
    +              reg_rmt_sclk_sel.
    +              24
    +              2
    +              read-write
    +            
    +            
    +              SCLK_ACTIVE
    +              reg_rmt_sclk_active.
    +              26
    +              1
    +              read-write
    +            
    +            
    +              CLK_EN
    +              reg_clk_en.
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          TX_SIM
    +          RMT_TX_SIM_REG.
    +          0x6C
    +          0x20
    +          
    +            
    +              TX_SIM_CH0
    +              reg_rmt_tx_sim_ch0.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              TX_SIM_CH1
    +              reg_rmt_tx_sim_ch1.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              TX_SIM_EN
    +              reg_rmt_tx_sim_en.
    +              2
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          REF_CNT_RST
    +          RMT_REF_CNT_RST_REG.
    +          0x70
    +          0x20
    +          
    +            
    +              CH0
    +              reg_ref_cnt_rst_ch0.
    +              0
    +              1
    +              write-only
    +            
    +            
    +              CH1
    +              reg_ref_cnt_rst_ch1.
    +              1
    +              1
    +              write-only
    +            
    +            
    +              CH2
    +              reg_ref_cnt_rst_ch2.
    +              2
    +              1
    +              write-only
    +            
    +            
    +              CH3
    +              reg_ref_cnt_rst_ch3.
    +              3
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          DATE
    +          RMT_DATE_REG.
    +          0xCC
    +          0x20
    +          0x02006231
    +          
    +            
    +              DATE
    +              reg_rmt_date.
    +              0
    +              28
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      RNG
    +      Hardware random number generator
    +      RNG
    +      0x60026000
    +      
    +        0x0
    +        0x4
    +        registers
    +      
    +      
    +        
    +          DATA
    +          Random number data
    +          0xB0
    +          0x20
    +        
    +      
    +    
    +    
    +      RSA
    +      RSA (Rivest Shamir Adleman) Accelerator
    +      RSA
    +      0x6003C000
    +      
    +        0x0
    +        0x74
    +        registers
    +      
    +      
    +        RSA
    +        47
    +      
    +      
    +        
    +          16
    +          0x1
    +          M_MEM[%s]
    +          The memory that stores M
    +          0x0
    +          0x8
    +        
    +        
    +          16
    +          0x1
    +          Z_MEM[%s]
    +          The memory that stores Z
    +          0x200
    +          0x8
    +        
    +        
    +          16
    +          0x1
    +          Y_MEM[%s]
    +          The memory that stores Y
    +          0x400
    +          0x8
    +        
    +        
    +          16
    +          0x1
    +          X_MEM[%s]
    +          The memory that stores X
    +          0x600
    +          0x8
    +        
    +        
    +          M_PRIME
    +          RSA M_prime register
    +          0x800
    +          0x20
    +          
    +            
    +              M_PRIME
    +              Those bits stores m'
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          MODE
    +          RSA mode register
    +          0x804
    +          0x20
    +          
    +            
    +              MODE
    +              rsa mode (rsa length).
    +              0
    +              7
    +              read-write
    +            
    +          
    +        
    +        
    +          QUERY_CLEAN
    +          RSA query clean register
    +          0x808
    +          0x20
    +          
    +            
    +              QUERY_CLEAN
    +              query clean
    +              0
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          SET_START_MODEXP
    +          RSA modular exponentiation trigger register.
    +          0x80C
    +          0x20
    +          
    +            
    +              SET_START_MODEXP
    +              start modular exponentiation
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          SET_START_MODMULT
    +          RSA modular multiplication trigger register.
    +          0x810
    +          0x20
    +          
    +            
    +              SET_START_MODMULT
    +              start modular multiplication
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          SET_START_MULT
    +          RSA normal multiplication trigger register.
    +          0x814
    +          0x20
    +          
    +            
    +              SET_START_MULT
    +              start multiplicaiton
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          QUERY_IDLE
    +          RSA query idle register
    +          0x818
    +          0x20
    +          
    +            
    +              QUERY_IDLE
    +              query rsa idle. 1'b0: busy, 1'b1: idle
    +              0
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_CLR
    +          RSA interrupt clear register
    +          0x81C
    +          0x20
    +          
    +            
    +              CLEAR_INTERRUPT
    +              set this bit to clear RSA interrupt.
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          CONSTANT_TIME
    +          RSA constant time option register
    +          0x820
    +          0x20
    +          0x00000001
    +          
    +            
    +              CONSTANT_TIME
    +              Configure this bit to 0 for acceleration. 0: with acceleration, 1: without acceleration(defalut).
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          SEARCH_ENABLE
    +          RSA search option
    +          0x824
    +          0x20
    +          
    +            
    +              SEARCH_ENABLE
    +              Configure this bit to 1 for acceleration. 1: with acceleration, 0: without acceleration(default). This option should be used together with RSA_SEARCH_POS.
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          SEARCH_POS
    +          RSA search position configure register
    +          0x828
    +          0x20
    +          
    +            
    +              SEARCH_POS
    +              Configure this field to set search position. This field should be used together with RSA_SEARCH_ENABLE. The field is only meaningful when RSA_SEARCH_ENABLE is high.
    +              0
    +              12
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_ENA
    +          RSA interrupt enable register
    +          0x82C
    +          0x20
    +          
    +            
    +              INT_ENA
    +              Set this bit to enable interrupt that occurs when rsa calculation is done. 1'b0: disable, 1'b1: enable(default).
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DATE
    +          RSA version control register
    +          0x830
    +          0x20
    +          0x20200618
    +          
    +            
    +              DATE
    +              rsa version information
    +              0
    +              30
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      RTC_CNTL
    +      Real-Time Clock Control
    +      RTC_CNTL
    +      0x60008000
    +      
    +        0x0
    +        0x12C
    +        registers
    +      
    +      
    +        RTC_CORE
    +        27
    +      
    +      
    +        
    +          OPTIONS0
    +          rtc configure register
    +          0x0
    +          0x20
    +          0x1C00A000
    +          
    +            
    +              SW_STALL_APPCPU_C0
    +              {reg_sw_stall_appcpu_c1[5:0],  reg_sw_stall_appcpu_c0[1:0]} == 0x86 will stall APP CPU
    +              0
    +              2
    +              read-write
    +            
    +            
    +              SW_STALL_PROCPU_C0
    +              {reg_sw_stall_procpu_c1[5:0],  reg_sw_stall_procpu_c0[1:0]} == 0x86 will stall PRO CPU
    +              2
    +              2
    +              read-write
    +            
    +            
    +              SW_APPCPU_RST
    +              APP CPU SW reset
    +              4
    +              1
    +              write-only
    +            
    +            
    +              SW_PROCPU_RST
    +              PRO CPU SW reset
    +              5
    +              1
    +              write-only
    +            
    +            
    +              BB_I2C_FORCE_PD
    +              BB_I2C force power down
    +              6
    +              1
    +              read-write
    +            
    +            
    +              BB_I2C_FORCE_PU
    +              BB_I2C force power up
    +              7
    +              1
    +              read-write
    +            
    +            
    +              BBPLL_I2C_FORCE_PD
    +              BB_PLL _I2C force power down
    +              8
    +              1
    +              read-write
    +            
    +            
    +              BBPLL_I2C_FORCE_PU
    +              BB_PLL_I2C force power up
    +              9
    +              1
    +              read-write
    +            
    +            
    +              BBPLL_FORCE_PD
    +              BB_PLL force power down
    +              10
    +              1
    +              read-write
    +            
    +            
    +              BBPLL_FORCE_PU
    +              BB_PLL force power up
    +              11
    +              1
    +              read-write
    +            
    +            
    +              XTL_FORCE_PD
    +              crystall force power down
    +              12
    +              1
    +              read-write
    +            
    +            
    +              XTL_FORCE_PU
    +              crystall force power up
    +              13
    +              1
    +              read-write
    +            
    +            
    +              XTL_EN_WAIT
    +              wait bias_sleep and current source wakeup
    +              14
    +              4
    +              read-write
    +            
    +            
    +              XTL_EXT_CTR_SEL
    +              analog configure
    +              20
    +              3
    +              read-write
    +            
    +            
    +              XTL_FORCE_ISO
    +              analog configure
    +              23
    +              1
    +              read-write
    +            
    +            
    +              PLL_FORCE_ISO
    +              analog configure
    +              24
    +              1
    +              read-write
    +            
    +            
    +              ANALOG_FORCE_ISO
    +              analog configure
    +              25
    +              1
    +              read-write
    +            
    +            
    +              XTL_FORCE_NOISO
    +              analog configure
    +              26
    +              1
    +              read-write
    +            
    +            
    +              PLL_FORCE_NOISO
    +              analog configure
    +              27
    +              1
    +              read-write
    +            
    +            
    +              ANALOG_FORCE_NOISO
    +              analog configure
    +              28
    +              1
    +              read-write
    +            
    +            
    +              DG_WRAP_FORCE_RST
    +              digital wrap force reset in deep sleep
    +              29
    +              1
    +              read-write
    +            
    +            
    +              DG_WRAP_FORCE_NORST
    +              digital core force no reset in deep sleep
    +              30
    +              1
    +              read-write
    +            
    +            
    +              SW_SYS_RST
    +              SW system reset
    +              31
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          SLP_TIMER0
    +          rtc configure register
    +          0x4
    +          0x20
    +          
    +            
    +              SLP_VAL_LO
    +              configure the  sleep time
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          SLP_TIMER1
    +          rtc configure register
    +          0x8
    +          0x20
    +          
    +            
    +              SLP_VAL_HI
    +              RTC sleep timer high 16 bits
    +              0
    +              16
    +              read-write
    +            
    +            
    +              RTC_MAIN_TIMER_ALARM_EN
    +              timer alarm enable bit
    +              16
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          TIME_UPDATE
    +          rtc configure register
    +          0xC
    +          0x20
    +          
    +            
    +              TIMER_SYS_STALL
    +              Enable to record system stall time
    +              27
    +              1
    +              read-write
    +            
    +            
    +              TIMER_XTL_OFF
    +              Enable to record 40M XTAL OFF time
    +              28
    +              1
    +              read-write
    +            
    +            
    +              TIMER_SYS_RST
    +              enable to record system reset time
    +              29
    +              1
    +              read-write
    +            
    +            
    +              RTC_TIME_UPDATE
    +              Set 1: to update register with RTC timer
    +              31
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          TIME_LOW0
    +          rtc configure register
    +          0x10
    +          0x20
    +          
    +            
    +              RTC_TIMER_VALUE0_LOW
    +              RTC timer low 32 bits
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          TIME_HIGH0
    +          rtc configure register
    +          0x14
    +          0x20
    +          
    +            
    +              RTC_TIMER_VALUE0_HIGH
    +              RTC timer high 16 bits
    +              0
    +              16
    +              read-only
    +            
    +          
    +        
    +        
    +          STATE0
    +          rtc configure register
    +          0x18
    +          0x20
    +          
    +            
    +              RTC_SW_CPU_INT
    +              rtc software interrupt to main cpu
    +              0
    +              1
    +              write-only
    +            
    +            
    +              RTC_SLP_REJECT_CAUSE_CLR
    +              clear rtc sleep reject cause
    +              1
    +              1
    +              write-only
    +            
    +            
    +              APB2RTC_BRIDGE_SEL
    +              1: APB to RTC using bridge
    +              22
    +              1
    +              read-write
    +            
    +            
    +              SDIO_ACTIVE_IND
    +              SDIO active indication
    +              28
    +              1
    +              read-only
    +            
    +            
    +              SLP_WAKEUP
    +              leep wakeup bit
    +              29
    +              1
    +              read-write
    +            
    +            
    +              SLP_REJECT
    +              leep reject bit
    +              30
    +              1
    +              read-write
    +            
    +            
    +              SLEEP_EN
    +              sleep enable bit
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          TIMER1
    +          rtc configure register
    +          0x1C
    +          0x20
    +          0x28140403
    +          
    +            
    +              CPU_STALL_EN
    +              CPU stall enable bit
    +              0
    +              1
    +              read-write
    +            
    +            
    +              CPU_STALL_WAIT
    +              CPU stall wait cycles in fast_clk_rtc
    +              1
    +              5
    +              read-write
    +            
    +            
    +              CK8M_WAIT
    +              CK8M wait cycles in slow_clk_rtc
    +              6
    +              8
    +              read-write
    +            
    +            
    +              XTL_BUF_WAIT
    +              XTAL wait cycles in slow_clk_rtc
    +              14
    +              10
    +              read-write
    +            
    +            
    +              PLL_BUF_WAIT
    +              PLL wait cycles in slow_clk_rtc
    +              24
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          TIMER2
    +          rtc configure register
    +          0x20
    +          0x20
    +          0x01000000
    +          
    +            
    +              MIN_TIME_CK8M_OFF
    +              minimal cycles in slow_clk_rtc for CK8M in power down state
    +              24
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          TIMER3
    +          rtc configure register
    +          0x24
    +          0x20
    +          0x0A080A08
    +          
    +            
    +              WIFI_WAIT_TIMER
    +              wifi power domain wakeup time
    +              0
    +              9
    +              read-write
    +            
    +            
    +              WIFI_POWERUP_TIMER
    +              wifi power domain power on time
    +              9
    +              7
    +              read-write
    +            
    +            
    +              BT_WAIT_TIMER
    +              bt power domain wakeup time
    +              16
    +              9
    +              read-write
    +            
    +            
    +              BT_POWERUP_TIMER
    +              bt power domain power on time
    +              25
    +              7
    +              read-write
    +            
    +          
    +        
    +        
    +          TIMER4
    +          rtc configure register
    +          0x28
    +          0x20
    +          0x10200A08
    +          
    +            
    +              CPU_TOP_WAIT_TIMER
    +              cpu top power domain wakeup time
    +              0
    +              9
    +              read-write
    +            
    +            
    +              CPU_TOP_POWERUP_TIMER
    +              cpu top power domain power on time
    +              9
    +              7
    +              read-write
    +            
    +            
    +              DG_WRAP_WAIT_TIMER
    +              digital wrap power domain wakeup time
    +              16
    +              9
    +              read-write
    +            
    +            
    +              DG_WRAP_POWERUP_TIMER
    +              digital wrap power domain power on time
    +              25
    +              7
    +              read-write
    +            
    +          
    +        
    +        
    +          TIMER5
    +          rtc configure register
    +          0x2C
    +          0x20
    +          0x00008000
    +          
    +            
    +              MIN_SLP_VAL
    +              minimal sleep cycles in slow_clk_rtc
    +              8
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          TIMER6
    +          rtc configure register
    +          0x30
    +          0x20
    +          0x0A080000
    +          
    +            
    +              DG_PERI_WAIT_TIMER
    +              digital peri power domain wakeup time
    +              16
    +              9
    +              read-write
    +            
    +            
    +              DG_PERI_POWERUP_TIMER
    +              digital peri power domain power on time
    +              25
    +              7
    +              read-write
    +            
    +          
    +        
    +        
    +          ANA_CONF
    +          rtc configure register
    +          0x34
    +          0x20
    +          0x00C40000
    +          
    +            
    +              RESET_POR_FORCE_PD
    +              force no bypass i2c power on reset
    +              18
    +              1
    +              read-write
    +            
    +            
    +              RESET_POR_FORCE_PU
    +              force bypass i2c power on reset
    +              19
    +              1
    +              read-write
    +            
    +            
    +              GLITCH_RST_EN
    +              enable glitch reset
    +              20
    +              1
    +              read-write
    +            
    +            
    +              SAR_I2C_PU
    +              PLLA force power up
    +              22
    +              1
    +              read-write
    +            
    +            
    +              PLLA_FORCE_PD
    +              PLLA force power down
    +              23
    +              1
    +              read-write
    +            
    +            
    +              PLLA_FORCE_PU
    +              PLLA force power up
    +              24
    +              1
    +              read-write
    +            
    +            
    +              BBPLL_CAL_SLP_START
    +              start BBPLL calibration during sleep
    +              25
    +              1
    +              read-write
    +            
    +            
    +              PVTMON_PU
    +              1: PVTMON power up
    +              26
    +              1
    +              read-write
    +            
    +            
    +              TXRF_I2C_PU
    +              1: TXRF_I2C power up
    +              27
    +              1
    +              read-write
    +            
    +            
    +              RFRX_PBUS_PU
    +              1: RFRX_PBUS power up
    +              28
    +              1
    +              read-write
    +            
    +            
    +              CKGEN_I2C_PU
    +              1: CKGEN_I2C power up
    +              30
    +              1
    +              read-write
    +            
    +            
    +              PLL_I2C_PU
    +              power up pll i2c
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          RESET_STATE
    +          rtc configure register
    +          0x38
    +          0x20
    +          0x00003000
    +          
    +            
    +              RESET_CAUSE_PROCPU
    +              reset cause of PRO CPU
    +              0
    +              6
    +              read-only
    +            
    +            
    +              RESET_CAUSE_APPCPU
    +              reset cause of APP CPU
    +              6
    +              6
    +              read-only
    +            
    +            
    +              STAT_VECTOR_SEL_APPCPU
    +              APP CPU state vector sel
    +              12
    +              1
    +              read-write
    +            
    +            
    +              STAT_VECTOR_SEL_PROCPU
    +              PRO CPU state vector sel
    +              13
    +              1
    +              read-write
    +            
    +            
    +              ALL_RESET_FLAG_PROCPU
    +              PRO CPU reset_flag
    +              14
    +              1
    +              read-only
    +            
    +            
    +              ALL_RESET_FLAG_APPCPU
    +              APP CPU reset flag
    +              15
    +              1
    +              read-only
    +            
    +            
    +              ALL_RESET_FLAG_CLR_PROCPU
    +              clear PRO CPU reset_flag
    +              16
    +              1
    +              write-only
    +            
    +            
    +              ALL_RESET_FLAG_CLR_APPCPU
    +              clear APP CPU reset flag
    +              17
    +              1
    +              write-only
    +            
    +            
    +              OCD_HALT_ON_RESET_APPCPU
    +              APPCPU OcdHaltOnReset
    +              18
    +              1
    +              read-write
    +            
    +            
    +              OCD_HALT_ON_RESET_PROCPU
    +              PROCPU OcdHaltOnReset
    +              19
    +              1
    +              read-write
    +            
    +            
    +              JTAG_RESET_FLAG_PROCPU
    +              configure jtag reset configure
    +              20
    +              1
    +              read-only
    +            
    +            
    +              JTAG_RESET_FLAG_APPCPU
    +              configure jtag reset configure
    +              21
    +              1
    +              read-only
    +            
    +            
    +              JTAG_RESET_FLAG_CLR_PROCPU
    +              configure jtag reset configure
    +              22
    +              1
    +              write-only
    +            
    +            
    +              JTAG_RESET_FLAG_CLR_APPCPU
    +              configure jtag reset configure
    +              23
    +              1
    +              write-only
    +            
    +            
    +              RTC_DRESET_MASK_APPCPU
    +              configure dreset configure
    +              24
    +              1
    +              read-write
    +            
    +            
    +              RTC_DRESET_MASK_PROCPU
    +              configure dreset configure
    +              25
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          WAKEUP_STATE
    +          rtc configure register
    +          0x3C
    +          0x20
    +          0x00060000
    +          
    +            
    +              RTC_WAKEUP_ENA
    +              wakeup enable bitmap
    +              15
    +              17
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_ENA_RTC
    +          rtc configure register
    +          0x40
    +          0x20
    +          
    +            
    +              SLP_WAKEUP_INT_ENA
    +              enable sleep wakeup interrupt
    +              0
    +              1
    +              read-write
    +            
    +            
    +              SLP_REJECT_INT_ENA
    +              enable sleep reject interrupt
    +              1
    +              1
    +              read-write
    +            
    +            
    +              RTC_WDT_INT_ENA
    +              enable RTC WDT interrupt
    +              3
    +              1
    +              read-write
    +            
    +            
    +              RTC_BROWN_OUT_INT_ENA
    +              enable brown out interrupt
    +              9
    +              1
    +              read-write
    +            
    +            
    +              RTC_MAIN_TIMER_INT_ENA
    +              enable RTC main timer interrupt
    +              10
    +              1
    +              read-write
    +            
    +            
    +              RTC_SWD_INT_ENA
    +              enable super watch dog interrupt
    +              15
    +              1
    +              read-write
    +            
    +            
    +              RTC_XTAL32K_DEAD_INT_ENA
    +              enable xtal32k_dead  interrupt
    +              16
    +              1
    +              read-write
    +            
    +            
    +              RTC_GLITCH_DET_INT_ENA
    +              enbale gitch det interrupt
    +              19
    +              1
    +              read-write
    +            
    +            
    +              RTC_BBPLL_CAL_INT_ENA
    +              enbale bbpll cal end interrupt
    +              20
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_RAW_RTC
    +          rtc configure register
    +          0x44
    +          0x20
    +          
    +            
    +              SLP_WAKEUP_INT_RAW
    +              sleep wakeup interrupt raw
    +              0
    +              1
    +              read-only
    +            
    +            
    +              SLP_REJECT_INT_RAW
    +              sleep reject interrupt raw
    +              1
    +              1
    +              read-only
    +            
    +            
    +              RTC_WDT_INT_RAW
    +              RTC WDT interrupt raw
    +              3
    +              1
    +              read-only
    +            
    +            
    +              RTC_BROWN_OUT_INT_RAW
    +              brown out interrupt raw
    +              9
    +              1
    +              read-only
    +            
    +            
    +              RTC_MAIN_TIMER_INT_RAW
    +              RTC main timer interrupt raw
    +              10
    +              1
    +              read-only
    +            
    +            
    +              RTC_SWD_INT_RAW
    +              super watch dog interrupt raw
    +              15
    +              1
    +              read-only
    +            
    +            
    +              RTC_XTAL32K_DEAD_INT_RAW
    +              xtal32k dead detection interrupt raw
    +              16
    +              1
    +              read-only
    +            
    +            
    +              RTC_GLITCH_DET_INT_RAW
    +              glitch_det_interrupt_raw
    +              19
    +              1
    +              read-only
    +            
    +            
    +              RTC_BBPLL_CAL_INT_RAW
    +              bbpll cal end interrupt state
    +              20
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_ST_RTC
    +          rtc configure register
    +          0x48
    +          0x20
    +          
    +            
    +              SLP_WAKEUP_INT_ST
    +              sleep wakeup interrupt state
    +              0
    +              1
    +              read-only
    +            
    +            
    +              SLP_REJECT_INT_ST
    +              sleep reject interrupt state
    +              1
    +              1
    +              read-only
    +            
    +            
    +              RTC_WDT_INT_ST
    +              RTC WDT interrupt state
    +              3
    +              1
    +              read-only
    +            
    +            
    +              RTC_BROWN_OUT_INT_ST
    +              brown out interrupt state
    +              9
    +              1
    +              read-only
    +            
    +            
    +              RTC_MAIN_TIMER_INT_ST
    +              RTC main timer interrupt state
    +              10
    +              1
    +              read-only
    +            
    +            
    +              RTC_SWD_INT_ST
    +              super watch dog interrupt state
    +              15
    +              1
    +              read-only
    +            
    +            
    +              RTC_XTAL32K_DEAD_INT_ST
    +              xtal32k dead detection interrupt state
    +              16
    +              1
    +              read-only
    +            
    +            
    +              RTC_GLITCH_DET_INT_ST
    +              glitch_det_interrupt state
    +              19
    +              1
    +              read-only
    +            
    +            
    +              RTC_BBPLL_CAL_INT_ST
    +              bbpll cal end interrupt state
    +              20
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_CLR_RTC
    +          rtc configure register
    +          0x4C
    +          0x20
    +          
    +            
    +              SLP_WAKEUP_INT_CLR
    +              Clear sleep wakeup interrupt state
    +              0
    +              1
    +              write-only
    +            
    +            
    +              SLP_REJECT_INT_CLR
    +              Clear sleep reject interrupt state
    +              1
    +              1
    +              write-only
    +            
    +            
    +              RTC_WDT_INT_CLR
    +              Clear RTC WDT interrupt state
    +              3
    +              1
    +              write-only
    +            
    +            
    +              RTC_BROWN_OUT_INT_CLR
    +              Clear brown out interrupt state
    +              9
    +              1
    +              write-only
    +            
    +            
    +              RTC_MAIN_TIMER_INT_CLR
    +              Clear RTC main timer interrupt state
    +              10
    +              1
    +              write-only
    +            
    +            
    +              RTC_SWD_INT_CLR
    +              Clear super watch dog interrupt state
    +              15
    +              1
    +              write-only
    +            
    +            
    +              RTC_XTAL32K_DEAD_INT_CLR
    +              Clear RTC WDT interrupt state
    +              16
    +              1
    +              write-only
    +            
    +            
    +              RTC_GLITCH_DET_INT_CLR
    +              Clear glitch det interrupt state
    +              19
    +              1
    +              write-only
    +            
    +            
    +              RTC_BBPLL_CAL_INT_CLR
    +              clear bbpll cal end interrupt state
    +              20
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          STORE0
    +          rtc configure register
    +          0x50
    +          0x20
    +          
    +            
    +              RTC_SCRATCH0
    +              reserved register
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          STORE1
    +          rtc configure register
    +          0x54
    +          0x20
    +          
    +            
    +              RTC_SCRATCH1
    +              reserved register
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          STORE2
    +          rtc configure register
    +          0x58
    +          0x20
    +          
    +            
    +              RTC_SCRATCH2
    +              reserved register
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          STORE3
    +          rtc configure register
    +          0x5C
    +          0x20
    +          
    +            
    +              RTC_SCRATCH3
    +              reserved register
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          EXT_XTL_CONF
    +          rtc configure register
    +          0x60
    +          0x20
    +          0x00066C80
    +          
    +            
    +              XTAL32K_WDT_EN
    +              xtal 32k watch dog enable
    +              0
    +              1
    +              read-write
    +            
    +            
    +              XTAL32K_WDT_CLK_FO
    +              xtal 32k watch dog clock force on
    +              1
    +              1
    +              read-write
    +            
    +            
    +              XTAL32K_WDT_RESET
    +              xtal 32k watch dog sw reset
    +              2
    +              1
    +              read-write
    +            
    +            
    +              XTAL32K_EXT_CLK_FO
    +              xtal 32k external xtal clock force on
    +              3
    +              1
    +              read-write
    +            
    +            
    +              XTAL32K_AUTO_BACKUP
    +              xtal 32k switch to back up clock when xtal is dead
    +              4
    +              1
    +              read-write
    +            
    +            
    +              XTAL32K_AUTO_RESTART
    +              xtal 32k restart xtal when xtal is dead
    +              5
    +              1
    +              read-write
    +            
    +            
    +              XTAL32K_AUTO_RETURN
    +              xtal 32k switch back xtal when xtal is restarted
    +              6
    +              1
    +              read-write
    +            
    +            
    +              XTAL32K_XPD_FORCE
    +              Xtal 32k xpd control by sw or fsm
    +              7
    +              1
    +              read-write
    +            
    +            
    +              ENCKINIT_XTAL_32K
    +              apply an internal clock to help xtal 32k to start
    +              8
    +              1
    +              read-write
    +            
    +            
    +              DBUF_XTAL_32K
    +              0: single-end buffer 1: differential buffer
    +              9
    +              1
    +              read-write
    +            
    +            
    +              DGM_XTAL_32K
    +              xtal_32k gm control
    +              10
    +              3
    +              read-write
    +            
    +            
    +              DRES_XTAL_32K
    +              DRES_XTAL_32K
    +              13
    +              3
    +              read-write
    +            
    +            
    +              XPD_XTAL_32K
    +              XPD_XTAL_32K
    +              16
    +              1
    +              read-write
    +            
    +            
    +              DAC_XTAL_32K
    +              DAC_XTAL_32K
    +              17
    +              3
    +              read-write
    +            
    +            
    +              RTC_WDT_STATE
    +              state of 32k_wdt
    +              20
    +              3
    +              read-only
    +            
    +            
    +              RTC_XTAL32K_GPIO_SEL
    +              XTAL_32K sel. 0: external XTAL_32K
    +              23
    +              1
    +              read-write
    +            
    +            
    +              XTL_EXT_CTR_LV
    +              0: power down XTAL at high level
    +              30
    +              1
    +              read-write
    +            
    +            
    +              XTL_EXT_CTR_EN
    +              enable gpio configure xtal power on
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          EXT_WAKEUP_CONF
    +          rtc configure register
    +          0x64
    +          0x20
    +          
    +            
    +              GPIO_WAKEUP_FILTER
    +              enable filter for gpio wakeup event
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          SLP_REJECT_CONF
    +          rtc configure register
    +          0x68
    +          0x20
    +          
    +            
    +              RTC_SLEEP_REJECT_ENA
    +              sleep reject enable
    +              12
    +              18
    +              read-write
    +            
    +            
    +              LIGHT_SLP_REJECT_EN
    +              enable reject for light sleep
    +              30
    +              1
    +              read-write
    +            
    +            
    +              DEEP_SLP_REJECT_EN
    +              enable reject for deep sleep
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_PERIOD_CONF
    +          rtc configure register
    +          0x6C
    +          0x20
    +          
    +            
    +              RTC_CPUSEL_CONF
    +              CPU sel option
    +              29
    +              1
    +              read-write
    +            
    +            
    +              RTC_CPUPERIOD_SEL
    +              CPU clk sel option
    +              30
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          CLK_CONF
    +          rtc configure register
    +          0x70
    +          0x20
    +          0x11583218
    +          
    +            
    +              EFUSE_CLK_FORCE_GATING
    +              efuse_clk_force_gating
    +              1
    +              1
    +              read-write
    +            
    +            
    +              EFUSE_CLK_FORCE_NOGATING
    +              efuse_clk_force_nogating
    +              2
    +              1
    +              read-write
    +            
    +            
    +              CK8M_DIV_SEL_VLD
    +              used to sync reg_ck8m_div_sel bus. Clear vld before set reg_ck8m_div_sel
    +              3
    +              1
    +              read-write
    +            
    +            
    +              CK8M_DIV
    +              CK8M_D256_OUT divider. 00: div128
    +              4
    +              2
    +              read-write
    +            
    +            
    +              ENB_CK8M
    +              disable CK8M and CK8M_D256_OUT
    +              6
    +              1
    +              read-write
    +            
    +            
    +              ENB_CK8M_DIV
    +              1: CK8M_D256_OUT is actually CK8M
    +              7
    +              1
    +              read-write
    +            
    +            
    +              DIG_XTAL32K_EN
    +              enable CK_XTAL_32K for digital core (no relationship with RTC core)
    +              8
    +              1
    +              read-write
    +            
    +            
    +              DIG_CLK8M_D256_EN
    +              enable CK8M_D256_OUT for digital core (no relationship with RTC core)
    +              9
    +              1
    +              read-write
    +            
    +            
    +              DIG_CLK8M_EN
    +              enable CK8M for digital core (no relationship with RTC core)
    +              10
    +              1
    +              read-write
    +            
    +            
    +              CK8M_DIV_SEL
    +              divider = reg_ck8m_div_sel + 1
    +              12
    +              3
    +              read-write
    +            
    +            
    +              XTAL_FORCE_NOGATING
    +              XTAL force no gating during sleep
    +              15
    +              1
    +              read-write
    +            
    +            
    +              CK8M_FORCE_NOGATING
    +              CK8M force no gating during sleep
    +              16
    +              1
    +              read-write
    +            
    +            
    +              CK8M_DFREQ
    +              CK8M_DFREQ
    +              17
    +              8
    +              read-write
    +            
    +            
    +              CK8M_FORCE_PD
    +              CK8M force power down
    +              25
    +              1
    +              read-write
    +            
    +            
    +              CK8M_FORCE_PU
    +              CK8M force power up
    +              26
    +              1
    +              read-write
    +            
    +            
    +              XTAL_GLOBAL_FORCE_GATING
    +              force enable xtal clk gating
    +              27
    +              1
    +              read-write
    +            
    +            
    +              XTAL_GLOBAL_FORCE_NOGATING
    +              force bypass xtal clk gating
    +              28
    +              1
    +              read-write
    +            
    +            
    +              FAST_CLK_RTC_SEL
    +              fast_clk_rtc sel. 0: XTAL div 4
    +              29
    +              1
    +              read-write
    +            
    +            
    +              ANA_CLK_RTC_SEL
    +              slelect rtc slow clk
    +              30
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          SLOW_CLK_CONF
    +          rtc configure register
    +          0x74
    +          0x20
    +          0x00400000
    +          
    +            
    +              RTC_ANA_CLK_DIV_VLD
    +              used to sync div bus. clear vld before set reg_rtc_ana_clk_div
    +              22
    +              1
    +              read-write
    +            
    +            
    +              RTC_ANA_CLK_DIV
    +              the clk divider num of RTC_CLK
    +              23
    +              8
    +              read-write
    +            
    +            
    +              RTC_SLOW_CLK_NEXT_EDGE
    +              flag rtc_slow_clk_next_edge
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          SDIO_CONF
    +          rtc configure register
    +          0x78
    +          0x20
    +          0x0AB0BE0A
    +          
    +            
    +              SDIO_TIMER_TARGET
    +              timer count to apply reg_sdio_dcap after sdio power on
    +              0
    +              8
    +              read-write
    +            
    +            
    +              SDIO_DTHDRV
    +              Tieh = 1 mode drive ability. Initially set to 0 to limit charge current
    +              9
    +              2
    +              read-write
    +            
    +            
    +              SDIO_DCAP
    +              ability to prevent LDO from overshoot
    +              11
    +              2
    +              read-write
    +            
    +            
    +              SDIO_INITI
    +              add resistor from ldo output to ground. 0: no res
    +              13
    +              2
    +              read-write
    +            
    +            
    +              SDIO_EN_INITI
    +              0 to set init[1:0]=0
    +              15
    +              1
    +              read-write
    +            
    +            
    +              SDIO_DCURLIM
    +              tune current limit threshold when tieh = 0. About 800mA/(8+d)
    +              16
    +              3
    +              read-write
    +            
    +            
    +              SDIO_MODECURLIM
    +              select current limit mode
    +              19
    +              1
    +              read-write
    +            
    +            
    +              SDIO_ENCURLIM
    +              enable current limit
    +              20
    +              1
    +              read-write
    +            
    +            
    +              SDIO_REG_PD_EN
    +              power down SDIO_REG in sleep. Only active when reg_sdio_force = 0
    +              21
    +              1
    +              read-write
    +            
    +            
    +              SDIO_FORCE
    +              1: use SW option to control SDIO_REG
    +              22
    +              1
    +              read-write
    +            
    +            
    +              SDIO_TIEH
    +              SW option for SDIO_TIEH. Only active when reg_sdio_force = 1
    +              23
    +              1
    +              read-write
    +            
    +            
    +              _1P8_READY
    +              read only register for REG1P8_READY
    +              24
    +              1
    +              read-only
    +            
    +            
    +              DREFL_SDIO
    +              SW option for DREFL_SDIO. Only active when reg_sdio_force = 1
    +              25
    +              2
    +              read-write
    +            
    +            
    +              DREFM_SDIO
    +              SW option for DREFM_SDIO. Only active when reg_sdio_force = 1
    +              27
    +              2
    +              read-write
    +            
    +            
    +              DREFH_SDIO
    +              SW option for DREFH_SDIO. Only active when reg_sdio_force = 1
    +              29
    +              2
    +              read-write
    +            
    +            
    +              XPD_SDIO
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          BIAS_CONF
    +          rtc configure register
    +          0x7C
    +          0x20
    +          0x00010800
    +          
    +            
    +              DG_VDD_DRV_B_SLP
    +              0
    +              8
    +              read-write
    +            
    +            
    +              DG_VDD_DRV_B_SLP_EN
    +              8
    +              1
    +              read-write
    +            
    +            
    +              BIAS_BUF_IDLE
    +              bias buf when rtc in normal work state
    +              10
    +              1
    +              read-write
    +            
    +            
    +              BIAS_BUF_WAKE
    +              bias buf when rtc in wakeup state
    +              11
    +              1
    +              read-write
    +            
    +            
    +              BIAS_BUF_DEEP_SLP
    +              bias buf when rtc in sleep state
    +              12
    +              1
    +              read-write
    +            
    +            
    +              BIAS_BUF_MONITOR
    +              bias buf when rtc in monitor state
    +              13
    +              1
    +              read-write
    +            
    +            
    +              PD_CUR_DEEP_SLP
    +              xpd cur when rtc in sleep_state
    +              14
    +              1
    +              read-write
    +            
    +            
    +              PD_CUR_MONITOR
    +              xpd cur when rtc in monitor state
    +              15
    +              1
    +              read-write
    +            
    +            
    +              BIAS_SLEEP_DEEP_SLP
    +              bias_sleep when rtc in sleep_state
    +              16
    +              1
    +              read-write
    +            
    +            
    +              BIAS_SLEEP_MONITOR
    +              bias_sleep when rtc in monitor state
    +              17
    +              1
    +              read-write
    +            
    +            
    +              DBG_ATTEN_DEEP_SLP
    +              DBG_ATTEN when rtc in sleep state
    +              18
    +              4
    +              read-write
    +            
    +            
    +              DBG_ATTEN_MONITOR
    +              DBG_ATTEN when rtc in monitor state
    +              22
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          RTC_CNTL
    +          rtc configure register
    +          0x80
    +          0x20
    +          0xA0000000
    +          
    +            
    +              DIG_REG_CAL_EN
    +              software enable digital regulator cali
    +              7
    +              1
    +              read-write
    +            
    +            
    +              SCK_DCAP
    +              SCK_DCAP
    +              14
    +              8
    +              read-write
    +            
    +            
    +              DBOOST_FORCE_PD
    +              RTC_DBOOST force power down
    +              28
    +              1
    +              read-write
    +            
    +            
    +              DBOOST_FORCE_PU
    +              RTC_DBOOST force power up
    +              29
    +              1
    +              read-write
    +            
    +            
    +              REGULATOR_FORCE_PD
    +              RTC_REG force power down (for RTC_REG power down means decrease the voltage to 0.8v or lower )
    +              30
    +              1
    +              read-write
    +            
    +            
    +              REGULATOR_FORCE_PU
    +              RTC_REG force power up
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          PWC
    +          rtc configure register
    +          0x84
    +          0x20
    +          
    +            
    +              RTC_PAD_FORCE_HOLD
    +              rtc pad force hold
    +              21
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DIG_PWC
    +          rtc configure register
    +          0x88
    +          0x20
    +          0x00555010
    +          
    +            
    +              VDD_SPI_PWR_DRV
    +              vdd_spi drv's software value
    +              0
    +              2
    +              read-write
    +            
    +            
    +              VDD_SPI_PWR_FORCE
    +              vdd_spi drv use software value
    +              2
    +              1
    +              read-write
    +            
    +            
    +              LSLP_MEM_FORCE_PD
    +              memories in digital core force PD in sleep
    +              3
    +              1
    +              read-write
    +            
    +            
    +              LSLP_MEM_FORCE_PU
    +              memories in digital core force PU in sleep
    +              4
    +              1
    +              read-write
    +            
    +            
    +              BT_FORCE_PD
    +              bt force power down
    +              11
    +              1
    +              read-write
    +            
    +            
    +              BT_FORCE_PU
    +              bt force power up
    +              12
    +              1
    +              read-write
    +            
    +            
    +              DG_PERI_FORCE_PD
    +              digital peri force power down
    +              13
    +              1
    +              read-write
    +            
    +            
    +              DG_PERI_FORCE_PU
    +              digital peri force power up
    +              14
    +              1
    +              read-write
    +            
    +            
    +              RTC_FASTMEM_FORCE_LPD
    +              fastmemory  retention mode in sleep
    +              15
    +              1
    +              read-write
    +            
    +            
    +              RTC_FASTMEM_FORCE_LPU
    +              fastmemory donlt entry retention mode in sleep
    +              16
    +              1
    +              read-write
    +            
    +            
    +              WIFI_FORCE_PD
    +              wifi force power down
    +              17
    +              1
    +              read-write
    +            
    +            
    +              WIFI_FORCE_PU
    +              wifi force power up
    +              18
    +              1
    +              read-write
    +            
    +            
    +              DG_WRAP_FORCE_PD
    +              digital core force power down
    +              19
    +              1
    +              read-write
    +            
    +            
    +              DG_WRAP_FORCE_PU
    +              digital core force power up
    +              20
    +              1
    +              read-write
    +            
    +            
    +              CPU_TOP_FORCE_PD
    +              cpu core force power down
    +              21
    +              1
    +              read-write
    +            
    +            
    +              CPU_TOP_FORCE_PU
    +              cpu force power up
    +              22
    +              1
    +              read-write
    +            
    +            
    +              BT_PD_EN
    +              enable power down bt in sleep
    +              27
    +              1
    +              read-write
    +            
    +            
    +              DG_PERI_PD_EN
    +              enable power down digital peri in sleep
    +              28
    +              1
    +              read-write
    +            
    +            
    +              CPU_TOP_PD_EN
    +              enable power down cpu in sleep
    +              29
    +              1
    +              read-write
    +            
    +            
    +              WIFI_PD_EN
    +              enable power down wifi in sleep
    +              30
    +              1
    +              read-write
    +            
    +            
    +              DG_WRAP_PD_EN
    +              enable power down digital wrap in sleep
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DIG_ISO
    +          rtc configure register
    +          0x8C
    +          0x20
    +          0xAA805080
    +          
    +            
    +              FORCE_OFF
    +              DIG_ISO force off
    +              7
    +              1
    +              read-write
    +            
    +            
    +              FORCE_ON
    +              DIG_ISO force on
    +              8
    +              1
    +              read-write
    +            
    +            
    +              DG_PAD_AUTOHOLD
    +              read only register to indicate digital pad auto-hold status
    +              9
    +              1
    +              read-only
    +            
    +            
    +              CLR_DG_PAD_AUTOHOLD
    +              wtite only register to clear digital pad auto-hold
    +              10
    +              1
    +              write-only
    +            
    +            
    +              DG_PAD_AUTOHOLD_EN
    +              digital pad enable auto-hold
    +              11
    +              1
    +              read-write
    +            
    +            
    +              DG_PAD_FORCE_NOISO
    +              digital pad force no ISO
    +              12
    +              1
    +              read-write
    +            
    +            
    +              DG_PAD_FORCE_ISO
    +              digital pad force ISO
    +              13
    +              1
    +              read-write
    +            
    +            
    +              DG_PAD_FORCE_UNHOLD
    +              digital pad force un-hold
    +              14
    +              1
    +              read-write
    +            
    +            
    +              DG_PAD_FORCE_HOLD
    +              digital pad force hold
    +              15
    +              1
    +              read-write
    +            
    +            
    +              BT_FORCE_ISO
    +              bt force ISO
    +              22
    +              1
    +              read-write
    +            
    +            
    +              BT_FORCE_NOISO
    +              bt force no ISO
    +              23
    +              1
    +              read-write
    +            
    +            
    +              DG_PERI_FORCE_ISO
    +              Digital peri force ISO
    +              24
    +              1
    +              read-write
    +            
    +            
    +              DG_PERI_FORCE_NOISO
    +              digital peri force no ISO
    +              25
    +              1
    +              read-write
    +            
    +            
    +              CPU_TOP_FORCE_ISO
    +              cpu force ISO
    +              26
    +              1
    +              read-write
    +            
    +            
    +              CPU_TOP_FORCE_NOISO
    +              cpu force no ISO
    +              27
    +              1
    +              read-write
    +            
    +            
    +              WIFI_FORCE_ISO
    +              wifi force ISO
    +              28
    +              1
    +              read-write
    +            
    +            
    +              WIFI_FORCE_NOISO
    +              wifi force no ISO
    +              29
    +              1
    +              read-write
    +            
    +            
    +              DG_WRAP_FORCE_ISO
    +              digital core force ISO
    +              30
    +              1
    +              read-write
    +            
    +            
    +              DG_WRAP_FORCE_NOISO
    +              digital core force no ISO
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          WDTCONFIG0
    +          rtc configure register
    +          0x90
    +          0x20
    +          0x00013214
    +          
    +            
    +              WDT_CHIP_RESET_WIDTH
    +              chip reset siginal pulse width
    +              0
    +              8
    +              read-write
    +            
    +            
    +              WDT_CHIP_RESET_EN
    +              wdt reset whole chip enable
    +              8
    +              1
    +              read-write
    +            
    +            
    +              WDT_PAUSE_IN_SLP
    +              pause WDT in sleep
    +              9
    +              1
    +              read-write
    +            
    +            
    +              WDT_APPCPU_RESET_EN
    +              enable WDT reset APP CPU
    +              10
    +              1
    +              read-write
    +            
    +            
    +              WDT_PROCPU_RESET_EN
    +              enable WDT reset PRO CPU
    +              11
    +              1
    +              read-write
    +            
    +            
    +              WDT_FLASHBOOT_MOD_EN
    +              enable WDT in flash boot
    +              12
    +              1
    +              read-write
    +            
    +            
    +              WDT_SYS_RESET_LENGTH
    +              system reset counter length
    +              13
    +              3
    +              read-write
    +            
    +            
    +              WDT_CPU_RESET_LENGTH
    +              CPU reset counter length
    +              16
    +              3
    +              read-write
    +            
    +            
    +              WDT_STG3
    +              1: interrupt stage en
    +              19
    +              3
    +              read-write
    +            
    +            
    +              WDT_STG2
    +              1: interrupt stage en
    +              22
    +              3
    +              read-write
    +            
    +            
    +              WDT_STG1
    +              1: interrupt stage en
    +              25
    +              3
    +              read-write
    +            
    +            
    +              WDT_STG0
    +              1: interrupt stage en
    +              28
    +              3
    +              read-write
    +            
    +            
    +              WDT_EN
    +              enable rtc wdt
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          WDTCONFIG1
    +          rtc configure register
    +          0x94
    +          0x20
    +          0x00030D40
    +          
    +            
    +              WDT_STG0_HOLD
    +              the hold time of stage0
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          WDTCONFIG2
    +          rtc configure register
    +          0x98
    +          0x20
    +          0x00013880
    +          
    +            
    +              WDT_STG1_HOLD
    +              the hold time of stage1
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          WDTCONFIG3
    +          rtc configure register
    +          0x9C
    +          0x20
    +          0x00000FFF
    +          
    +            
    +              WDT_STG2_HOLD
    +              the hold time of stage2
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          WDTCONFIG4
    +          rtc configure register
    +          0xA0
    +          0x20
    +          0x00000FFF
    +          
    +            
    +              WDT_STG3_HOLD
    +              the hold time of stage3
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          WDTFEED
    +          rtc configure register
    +          0xA4
    +          0x20
    +          
    +            
    +              RTC_WDT_FEED
    +              sw feed rtc wdt
    +              31
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          WDTWPROTECT
    +          rtc configure register
    +          0xA8
    +          0x20
    +          
    +            
    +              WDT_WKEY
    +              the key of rtc wdt
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          SWD_CONF
    +          rtc configure register
    +          0xAC
    +          0x20
    +          0x04B00000
    +          
    +            
    +              SWD_RESET_FLAG
    +              swd reset flag
    +              0
    +              1
    +              read-only
    +            
    +            
    +              SWD_FEED_INT
    +              swd interrupt for feeding
    +              1
    +              1
    +              read-only
    +            
    +            
    +              SWD_BYPASS_RST
    +              Bypass swd rst
    +              17
    +              1
    +              read-write
    +            
    +            
    +              SWD_SIGNAL_WIDTH
    +              adjust signal width send to swd
    +              18
    +              10
    +              read-write
    +            
    +            
    +              SWD_RST_FLAG_CLR
    +              reset swd reset flag
    +              28
    +              1
    +              write-only
    +            
    +            
    +              SWD_FEED
    +              Sw feed swd
    +              29
    +              1
    +              write-only
    +            
    +            
    +              SWD_DISABLE
    +              disabel SWD
    +              30
    +              1
    +              read-write
    +            
    +            
    +              SWD_AUTO_FEED_EN
    +              automatically feed swd when int comes
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          SWD_WPROTECT
    +          rtc configure register
    +          0xB0
    +          0x20
    +          
    +            
    +              SWD_WKEY
    +              the key of super wdt
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          SW_CPU_STALL
    +          rtc configure register
    +          0xB4
    +          0x20
    +          
    +            
    +              SW_STALL_APPCPU_C1
    +              {reg_sw_stall_appcpu_c1[5:0]
    +              20
    +              6
    +              read-write
    +            
    +            
    +              SW_STALL_PROCPU_C1
    +              stall cpu by software
    +              26
    +              6
    +              read-write
    +            
    +          
    +        
    +        
    +          STORE4
    +          rtc configure register
    +          0xB8
    +          0x20
    +          
    +            
    +              RTC_SCRATCH4
    +              reserved register
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          STORE5
    +          rtc configure register
    +          0xBC
    +          0x20
    +          
    +            
    +              RTC_SCRATCH5
    +              reserved register
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          STORE6
    +          rtc configure register
    +          0xC0
    +          0x20
    +          
    +            
    +              RTC_SCRATCH6
    +              reserved register
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          STORE7
    +          rtc configure register
    +          0xC4
    +          0x20
    +          
    +            
    +              RTC_SCRATCH7
    +              reserved register
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          LOW_POWER_ST
    +          rtc configure register
    +          0xC8
    +          0x20
    +          
    +            
    +              XPD_ROM0
    +              rom0 power down
    +              0
    +              1
    +              read-only
    +            
    +            
    +              XPD_DIG_DCDC
    +              External DCDC power down
    +              2
    +              1
    +              read-only
    +            
    +            
    +              RTC_PERI_ISO
    +              rtc peripheral iso
    +              3
    +              1
    +              read-only
    +            
    +            
    +              XPD_RTC_PERI
    +              rtc peripheral power down
    +              4
    +              1
    +              read-only
    +            
    +            
    +              WIFI_ISO
    +              wifi iso
    +              5
    +              1
    +              read-only
    +            
    +            
    +              XPD_WIFI
    +              wifi wrap power down
    +              6
    +              1
    +              read-only
    +            
    +            
    +              DIG_ISO
    +              digital wrap iso
    +              7
    +              1
    +              read-only
    +            
    +            
    +              XPD_DIG
    +              digital wrap power down
    +              8
    +              1
    +              read-only
    +            
    +            
    +              RTC_TOUCH_STATE_START
    +              touch should start to work
    +              9
    +              1
    +              read-only
    +            
    +            
    +              RTC_TOUCH_STATE_SWITCH
    +              touch is about to working. Switch rtc main state
    +              10
    +              1
    +              read-only
    +            
    +            
    +              RTC_TOUCH_STATE_SLP
    +              touch is in sleep state
    +              11
    +              1
    +              read-only
    +            
    +            
    +              RTC_TOUCH_STATE_DONE
    +              touch is done
    +              12
    +              1
    +              read-only
    +            
    +            
    +              RTC_COCPU_STATE_START
    +              ulp/cocpu should start to work
    +              13
    +              1
    +              read-only
    +            
    +            
    +              RTC_COCPU_STATE_SWITCH
    +              ulp/cocpu is about to working. Switch rtc main state
    +              14
    +              1
    +              read-only
    +            
    +            
    +              RTC_COCPU_STATE_SLP
    +              ulp/cocpu is in sleep state
    +              15
    +              1
    +              read-only
    +            
    +            
    +              RTC_COCPU_STATE_DONE
    +              ulp/cocpu is done
    +              16
    +              1
    +              read-only
    +            
    +            
    +              RTC_MAIN_STATE_XTAL_ISO
    +              no use any more
    +              17
    +              1
    +              read-only
    +            
    +            
    +              RTC_MAIN_STATE_PLL_ON
    +              rtc main state machine is in states that pll should be running
    +              18
    +              1
    +              read-only
    +            
    +            
    +              RTC_RDY_FOR_WAKEUP
    +              rtc is ready to receive wake up trigger from wake up source
    +              19
    +              1
    +              read-only
    +            
    +            
    +              RTC_MAIN_STATE_WAIT_END
    +              rtc main state machine has been waited for some cycles
    +              20
    +              1
    +              read-only
    +            
    +            
    +              RTC_IN_WAKEUP_STATE
    +              rtc main state machine is in the states of wakeup process
    +              21
    +              1
    +              read-only
    +            
    +            
    +              RTC_IN_LOW_POWER_STATE
    +              rtc main state machine is in the states of low power
    +              22
    +              1
    +              read-only
    +            
    +            
    +              RTC_MAIN_STATE_IN_WAIT_8M
    +              rtc main state machine is in wait 8m state
    +              23
    +              1
    +              read-only
    +            
    +            
    +              RTC_MAIN_STATE_IN_WAIT_PLL
    +              rtc main state machine is in wait pll state
    +              24
    +              1
    +              read-only
    +            
    +            
    +              RTC_MAIN_STATE_IN_WAIT_XTL
    +              rtc main state machine is in wait xtal state
    +              25
    +              1
    +              read-only
    +            
    +            
    +              RTC_MAIN_STATE_IN_SLP
    +              rtc main state machine is in sleep state
    +              26
    +              1
    +              read-only
    +            
    +            
    +              RTC_MAIN_STATE_IN_IDLE
    +              rtc main state machine is in idle state
    +              27
    +              1
    +              read-only
    +            
    +            
    +              RTC_MAIN_STATE
    +              rtc main state machine status
    +              28
    +              4
    +              read-only
    +            
    +          
    +        
    +        
    +          DIAG0
    +          rtc configure register
    +          0xCC
    +          0x20
    +          
    +            
    +              RTC_LOW_POWER_DIAG1
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          PAD_HOLD
    +          rtc configure register
    +          0xD0
    +          0x20
    +          
    +            
    +              RTC_GPIO_PIN0_HOLD
    +              the hold configure of rtc gpio0
    +              0
    +              1
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN1_HOLD
    +              the hold configure of rtc gpio1
    +              1
    +              1
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN2_HOLD
    +              the hold configure of rtc gpio2
    +              2
    +              1
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN3_HOLD
    +              the hold configure of rtc gpio3
    +              3
    +              1
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN4_HOLD
    +              the hold configure of rtc gpio4
    +              4
    +              1
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN5_HOLD
    +              the hold configure of rtc gpio5
    +              5
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DIG_PAD_HOLD
    +          rtc configure register
    +          0xD4
    +          0x20
    +          
    +            
    +              DIG_PAD_HOLD
    +              the configure of digital pad
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          BROWN_OUT
    +          rtc configure register
    +          0xD8
    +          0x20
    +          0x43FF0010
    +          
    +            
    +              INT_WAIT
    +              brown out interrupt wait cycles
    +              4
    +              10
    +              read-write
    +            
    +            
    +              CLOSE_FLASH_ENA
    +              enable close flash when brown out happens
    +              14
    +              1
    +              read-write
    +            
    +            
    +              PD_RF_ENA
    +              enable power down RF when brown out happens
    +              15
    +              1
    +              read-write
    +            
    +            
    +              RST_WAIT
    +              brown out reset wait cycles
    +              16
    +              10
    +              read-write
    +            
    +            
    +              RST_ENA
    +              enable brown out reset
    +              26
    +              1
    +              read-write
    +            
    +            
    +              RST_SEL
    +              1:  4-pos reset
    +              27
    +              1
    +              read-write
    +            
    +            
    +              ANA_RST_EN
    +              brown_out origin reset enable
    +              28
    +              1
    +              read-write
    +            
    +            
    +              CNT_CLR
    +              clear brown out counter
    +              29
    +              1
    +              write-only
    +            
    +            
    +              ENA
    +              enable brown out
    +              30
    +              1
    +              read-write
    +            
    +            
    +              DET
    +              the flag of brown det from analog
    +              31
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          TIME_LOW1
    +          rtc configure register
    +          0xDC
    +          0x20
    +          
    +            
    +              RTC_TIMER_VALUE1_LOW
    +              RTC timer low 32 bits
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          TIME_HIGH1
    +          rtc configure register
    +          0xE0
    +          0x20
    +          
    +            
    +              RTC_TIMER_VALUE1_HIGH
    +              RTC timer high 16 bits
    +              0
    +              16
    +              read-only
    +            
    +          
    +        
    +        
    +          XTAL32K_CLK_FACTOR
    +          rtc configure register
    +          0xE4
    +          0x20
    +          
    +            
    +              XTAL32K_CLK_FACTOR
    +              xtal 32k watch dog backup clock factor
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          XTAL32K_CONF
    +          rtc configure register
    +          0xE8
    +          0x20
    +          0x0FF00000
    +          
    +            
    +              XTAL32K_RETURN_WAIT
    +              cycles to wait to return noral xtal 32k
    +              0
    +              4
    +              read-write
    +            
    +            
    +              XTAL32K_RESTART_WAIT
    +              cycles to wait to repower on xtal 32k
    +              4
    +              16
    +              read-write
    +            
    +            
    +              XTAL32K_WDT_TIMEOUT
    +              If no clock detected for this amount of time
    +              20
    +              8
    +              read-write
    +            
    +            
    +              XTAL32K_STABLE_THRES
    +              if restarted xtal32k period is smaller than this
    +              28
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          USB_CONF
    +          rtc configure register
    +          0xEC
    +          0x20
    +          
    +            
    +              IO_MUX_RESET_DISABLE
    +              disable io_mux reset
    +              18
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          SLP_REJECT_CAUSE
    +          RTC_CNTL_RTC_SLP_REJECT_CAUSE_REG
    +          0xF0
    +          0x20
    +          
    +            
    +              REJECT_CAUSE
    +              sleep reject cause
    +              0
    +              18
    +              read-only
    +            
    +          
    +        
    +        
    +          OPTION1
    +          rtc configure register
    +          0xF4
    +          0x20
    +          
    +            
    +              FORCE_DOWNLOAD_BOOT
    +              force chip entry download mode
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          SLP_WAKEUP_CAUSE
    +          RTC_CNTL_RTC_SLP_WAKEUP_CAUSE_REG
    +          0xF8
    +          0x20
    +          
    +            
    +              WAKEUP_CAUSE
    +              sleep wakeup cause
    +              0
    +              17
    +              read-only
    +            
    +          
    +        
    +        
    +          ULP_CP_TIMER_1
    +          rtc configure register
    +          0xFC
    +          0x20
    +          0x0000C800
    +          
    +            
    +              ULP_CP_TIMER_SLP_CYCLE
    +              sleep cycles for ULP-coprocessor timer
    +              8
    +              24
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_ENA_RTC_W1TS
    +          rtc configure register
    +          0x100
    +          0x20
    +          
    +            
    +              SLP_WAKEUP_INT_ENA_W1TS
    +              enable sleep wakeup interrupt
    +              0
    +              1
    +              write-only
    +            
    +            
    +              SLP_REJECT_INT_ENA_W1TS
    +              enable sleep reject interrupt
    +              1
    +              1
    +              write-only
    +            
    +            
    +              RTC_WDT_INT_ENA_W1TS
    +              enable RTC WDT interrupt
    +              3
    +              1
    +              write-only
    +            
    +            
    +              RTC_BROWN_OUT_INT_ENA_W1TS
    +              enable brown out interrupt
    +              9
    +              1
    +              write-only
    +            
    +            
    +              RTC_MAIN_TIMER_INT_ENA_W1TS
    +              enable RTC main timer interrupt
    +              10
    +              1
    +              write-only
    +            
    +            
    +              RTC_SWD_INT_ENA_W1TS
    +              enable super watch dog interrupt
    +              15
    +              1
    +              write-only
    +            
    +            
    +              RTC_XTAL32K_DEAD_INT_ENA_W1TS
    +              enable xtal32k_dead  interrupt
    +              16
    +              1
    +              write-only
    +            
    +            
    +              RTC_GLITCH_DET_INT_ENA_W1TS
    +              enbale gitch det interrupt
    +              19
    +              1
    +              write-only
    +            
    +            
    +              RTC_BBPLL_CAL_INT_ENA_W1TS
    +              enbale bbpll cal interrupt
    +              20
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          INT_ENA_RTC_W1TC
    +          rtc configure register
    +          0x104
    +          0x20
    +          
    +            
    +              SLP_WAKEUP_INT_ENA_W1TC
    +              clear sleep wakeup interrupt enable
    +              0
    +              1
    +              write-only
    +            
    +            
    +              SLP_REJECT_INT_ENA_W1TC
    +              clear sleep reject interrupt enable
    +              1
    +              1
    +              write-only
    +            
    +            
    +              RTC_WDT_INT_ENA_W1TC
    +              clear RTC WDT interrupt enable
    +              3
    +              1
    +              write-only
    +            
    +            
    +              RTC_BROWN_OUT_INT_ENA_W1TC
    +              clear brown out interrupt enable
    +              9
    +              1
    +              write-only
    +            
    +            
    +              RTC_MAIN_TIMER_INT_ENA_W1TC
    +              Clear RTC main timer interrupt enable
    +              10
    +              1
    +              write-only
    +            
    +            
    +              RTC_SWD_INT_ENA_W1TC
    +              clear super watch dog interrupt enable
    +              15
    +              1
    +              write-only
    +            
    +            
    +              RTC_XTAL32K_DEAD_INT_ENA_W1TC
    +              clear xtal32k_dead  interrupt enable
    +              16
    +              1
    +              write-only
    +            
    +            
    +              RTC_GLITCH_DET_INT_ENA_W1TC
    +              clear gitch det interrupt enable
    +              19
    +              1
    +              write-only
    +            
    +            
    +              RTC_BBPLL_CAL_INT_ENA_W1TC
    +              clear bbpll cal interrupt enable
    +              20
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          RETENTION_CTRL
    +          rtc configure register
    +          0x108
    +          0x20
    +          0xA0D00000
    +          
    +            
    +              RETENTION_CLK_SEL
    +              Retention clk sel
    +              18
    +              1
    +              read-write
    +            
    +            
    +              RETENTION_DONE_WAIT
    +              Retention done wait time
    +              19
    +              3
    +              read-write
    +            
    +            
    +              RETENTION_CLKOFF_WAIT
    +              Retention clkoff wait time
    +              22
    +              4
    +              read-write
    +            
    +            
    +              RETENTION_EN
    +              enable cpu retention when light sleep
    +              26
    +              1
    +              read-write
    +            
    +            
    +              RETENTION_WAIT
    +              wait cycles for rention operation
    +              27
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          FIB_SEL
    +          rtc configure register
    +          0x10C
    +          0x20
    +          0x00000007
    +          
    +            
    +              RTC_FIB_SEL
    +              select use analog fib signal
    +              0
    +              3
    +              read-write
    +            
    +          
    +        
    +        
    +          GPIO_WAKEUP
    +          rtc configure register
    +          0x110
    +          0x20
    +          
    +            
    +              RTC_GPIO_WAKEUP_STATUS
    +              rtc gpio wakeup flag
    +              0
    +              6
    +              read-only
    +            
    +            
    +              RTC_GPIO_WAKEUP_STATUS_CLR
    +              clear rtc gpio wakeup flag
    +              6
    +              1
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN_CLK_GATE
    +              enable rtc io clk gate
    +              7
    +              1
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN5_INT_TYPE
    +              configure gpio wakeup type
    +              8
    +              3
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN4_INT_TYPE
    +              configure gpio wakeup type
    +              11
    +              3
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN3_INT_TYPE
    +              configure gpio wakeup type
    +              14
    +              3
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN2_INT_TYPE
    +              configure gpio wakeup type
    +              17
    +              3
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN1_INT_TYPE
    +              configure gpio wakeup type
    +              20
    +              3
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN0_INT_TYPE
    +              configure gpio wakeup type
    +              23
    +              3
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN5_WAKEUP_ENABLE
    +              enable wakeup from rtc gpio5
    +              26
    +              1
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN4_WAKEUP_ENABLE
    +              enable wakeup from rtc gpio4
    +              27
    +              1
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN3_WAKEUP_ENABLE
    +              enable wakeup from rtc gpio3
    +              28
    +              1
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN2_WAKEUP_ENABLE
    +              enable wakeup from rtc gpio2
    +              29
    +              1
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN1_WAKEUP_ENABLE
    +              enable wakeup from rtc gpio1
    +              30
    +              1
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN0_WAKEUP_ENABLE
    +              enable wakeup from rtc gpio0
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DBG_SEL
    +          rtc configure register
    +          0x114
    +          0x20
    +          
    +            
    +              RTC_DEBUG_12M_NO_GATING
    +              use for debug
    +              1
    +              1
    +              read-write
    +            
    +            
    +              RTC_DEBUG_BIT_SEL
    +              use for debug
    +              2
    +              5
    +              read-write
    +            
    +            
    +              RTC_DEBUG_SEL0
    +              use for debug
    +              7
    +              5
    +              read-write
    +            
    +            
    +              RTC_DEBUG_SEL1
    +              use for debug
    +              12
    +              5
    +              read-write
    +            
    +            
    +              RTC_DEBUG_SEL2
    +              use for debug
    +              17
    +              5
    +              read-write
    +            
    +            
    +              RTC_DEBUG_SEL3
    +              use for debug
    +              22
    +              5
    +              read-write
    +            
    +            
    +              RTC_DEBUG_SEL4
    +              use for debug
    +              27
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          DBG_MAP
    +          rtc configure register
    +          0x118
    +          0x20
    +          
    +            
    +              RTC_GPIO_PIN5_MUX_SEL
    +              use for debug
    +              2
    +              1
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN4_MUX_SEL
    +              use for debug
    +              3
    +              1
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN3_MUX_SEL
    +              use for debug
    +              4
    +              1
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN2_MUX_SEL
    +              use for debug
    +              5
    +              1
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN1_MUX_SEL
    +              use for debug
    +              6
    +              1
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN0_MUX_SEL
    +              use for debug
    +              7
    +              1
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN5_FUN_SEL
    +              use for debug
    +              8
    +              4
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN4_FUN_SEL
    +              use for debug
    +              12
    +              4
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN3_FUN_SEL
    +              use for debug
    +              16
    +              4
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN2_FUN_SEL
    +              use for debug
    +              20
    +              4
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN1_FUN_SEL
    +              use for debug
    +              24
    +              4
    +              read-write
    +            
    +            
    +              RTC_GPIO_PIN0_FUN_SEL
    +              use for debug
    +              28
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          SENSOR_CTRL
    +          rtc configure register
    +          0x11C
    +          0x20
    +          
    +            
    +              SAR2_PWDET_CCT
    +              reg_sar2_pwdet_cct
    +              27
    +              3
    +              read-write
    +            
    +            
    +              FORCE_XPD_SAR
    +              force power up SAR
    +              30
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          DBG_SAR_SEL
    +          rtc configure register
    +          0x120
    +          0x20
    +          
    +            
    +              SAR_DEBUG_SEL
    +              use for debug
    +              27
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          PG_CTRL
    +          rtc configure register
    +          0x124
    +          0x20
    +          
    +            
    +              POWER_GLITCH_DSENSE
    +              power glitch desense
    +              26
    +              2
    +              read-write
    +            
    +            
    +              POWER_GLITCH_FORCE_PD
    +              force disable power glitch
    +              28
    +              1
    +              read-write
    +            
    +            
    +              POWER_GLITCH_FORCE_PU
    +              force enable power glitch
    +              29
    +              1
    +              read-write
    +            
    +            
    +              POWER_GLITCH_EFUSE_SEL
    +              use efuse value control power glitch enable
    +              30
    +              1
    +              read-write
    +            
    +            
    +              POWER_GLITCH_EN
    +              enable power glitch
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DATE
    +          rtc configure register
    +          0x1FC
    +          0x20
    +          0x02007270
    +          
    +            
    +              RTC_CNTL_DATE
    +              verision
    +              0
    +              28
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      SENSITIVE
    +      Sensitive
    +      SENSITIVE
    +      0x600C1000
    +      
    +        0x0
    +        0x178
    +        registers
    +      
    +      
    +        
    +          ROM_TABLE_LOCK
    +          SENSITIVE_ROM_TABLE_LOCK_REG
    +          0x0
    +          0x20
    +          
    +            
    +              ROM_TABLE_LOCK
    +              rom_table_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          ROM_TABLE
    +          SENSITIVE_ROM_TABLE_REG
    +          0x4
    +          0x20
    +          
    +            
    +              ROM_TABLE
    +              rom_table
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          PRIVILEGE_MODE_SEL_LOCK
    +          SENSITIVE_PRIVILEGE_MODE_SEL_LOCK_REG
    +          0x8
    +          0x20
    +          
    +            
    +              PRIVILEGE_MODE_SEL_LOCK
    +              privilege_mode_sel_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          PRIVILEGE_MODE_SEL
    +          SENSITIVE_PRIVILEGE_MODE_SEL_REG
    +          0xC
    +          0x20
    +          
    +            
    +              PRIVILEGE_MODE_SEL
    +              privilege_mode_sel
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          APB_PERIPHERAL_ACCESS_0
    +          SENSITIVE_APB_PERIPHERAL_ACCESS_0_REG
    +          0x10
    +          0x20
    +          
    +            
    +              APB_PERIPHERAL_ACCESS_LOCK
    +              apb_peripheral_access_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          APB_PERIPHERAL_ACCESS_1
    +          SENSITIVE_APB_PERIPHERAL_ACCESS_1_REG
    +          0x14
    +          0x20
    +          0x00000001
    +          
    +            
    +              APB_PERIPHERAL_ACCESS_SPLIT_BURST
    +              apb_peripheral_access_split_burst
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INTERNAL_SRAM_USAGE_0
    +          SENSITIVE_INTERNAL_SRAM_USAGE_0_REG
    +          0x18
    +          0x20
    +          
    +            
    +              INTERNAL_SRAM_USAGE_LOCK
    +              internal_sram_usage_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INTERNAL_SRAM_USAGE_1
    +          SENSITIVE_INTERNAL_SRAM_USAGE_1_REG
    +          0x1C
    +          0x20
    +          0x0000000F
    +          
    +            
    +              INTERNAL_SRAM_USAGE_CPU_CACHE
    +              internal_sram_usage_cpu_cache
    +              0
    +              1
    +              read-write
    +            
    +            
    +              INTERNAL_SRAM_USAGE_CPU_SRAM
    +              internal_sram_usage_cpu_sram
    +              1
    +              3
    +              read-write
    +            
    +          
    +        
    +        
    +          INTERNAL_SRAM_USAGE_3
    +          SENSITIVE_INTERNAL_SRAM_USAGE_3_REG
    +          0x20
    +          0x20
    +          
    +            
    +              INTERNAL_SRAM_USAGE_MAC_DUMP_SRAM
    +              internal_sram_usage_mac_dump_sram
    +              0
    +              3
    +              read-write
    +            
    +            
    +              INTERNAL_SRAM_ALLOC_MAC_DUMP
    +              internal_sram_alloc_mac_dump
    +              3
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INTERNAL_SRAM_USAGE_4
    +          SENSITIVE_INTERNAL_SRAM_USAGE_4_REG
    +          0x24
    +          0x20
    +          
    +            
    +              INTERNAL_SRAM_USAGE_LOG_SRAM
    +              internal_sram_usage_log_sram
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CACHE_TAG_ACCESS_0
    +          SENSITIVE_CACHE_TAG_ACCESS_0_REG
    +          0x28
    +          0x20
    +          
    +            
    +              CACHE_TAG_ACCESS_LOCK
    +              cache_tag_access_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CACHE_TAG_ACCESS_1
    +          SENSITIVE_CACHE_TAG_ACCESS_1_REG
    +          0x2C
    +          0x20
    +          0x0000000F
    +          
    +            
    +              PRO_I_TAG_RD_ACS
    +              pro_i_tag_rd_acs
    +              0
    +              1
    +              read-write
    +            
    +            
    +              PRO_I_TAG_WR_ACS
    +              pro_i_tag_wr_acs
    +              1
    +              1
    +              read-write
    +            
    +            
    +              PRO_D_TAG_RD_ACS
    +              pro_d_tag_rd_acs
    +              2
    +              1
    +              read-write
    +            
    +            
    +              PRO_D_TAG_WR_ACS
    +              pro_d_tag_wr_acs
    +              3
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CACHE_MMU_ACCESS_0
    +          SENSITIVE_CACHE_MMU_ACCESS_0_REG
    +          0x30
    +          0x20
    +          
    +            
    +              CACHE_MMU_ACCESS_LOCK
    +              cache_mmu_access_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CACHE_MMU_ACCESS_1
    +          SENSITIVE_CACHE_MMU_ACCESS_1_REG
    +          0x34
    +          0x20
    +          0x00000003
    +          
    +            
    +              PRO_MMU_RD_ACS
    +              pro_mmu_rd_acs
    +              0
    +              1
    +              read-write
    +            
    +            
    +              PRO_MMU_WR_ACS
    +              pro_mmu_wr_acs
    +              1
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_APBPERI_SPI2_PMS_CONSTRAIN_0
    +          SENSITIVE_DMA_APBPERI_SPI2_PMS_CONSTRAIN_0_REG
    +          0x38
    +          0x20
    +          
    +            
    +              DMA_APBPERI_SPI2_PMS_CONSTRAIN_LOCK
    +              dma_apbperi_spi2_pms_constrain_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_APBPERI_SPI2_PMS_CONSTRAIN_1
    +          SENSITIVE_DMA_APBPERI_SPI2_PMS_CONSTRAIN_1_REG
    +          0x3C
    +          0x20
    +          0x000FF0FF
    +          
    +            
    +              DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0
    +              dma_apbperi_spi2_pms_constrain_sram_world_0_pms_0
    +              0
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1
    +              dma_apbperi_spi2_pms_constrain_sram_world_0_pms_1
    +              2
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2
    +              dma_apbperi_spi2_pms_constrain_sram_world_0_pms_2
    +              4
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3
    +              dma_apbperi_spi2_pms_constrain_sram_world_0_pms_3
    +              6
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0
    +              dma_apbperi_spi2_pms_constrain_sram_world_1_pms_0
    +              12
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1
    +              dma_apbperi_spi2_pms_constrain_sram_world_1_pms_1
    +              14
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2
    +              dma_apbperi_spi2_pms_constrain_sram_world_1_pms_2
    +              16
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3
    +              dma_apbperi_spi2_pms_constrain_sram_world_1_pms_3
    +              18
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_APBPERI_UCHI0_PMS_CONSTRAIN_0
    +          SENSITIVE_DMA_APBPERI_UCHI0_PMS_CONSTRAIN_0_REG
    +          0x40
    +          0x20
    +          
    +            
    +              DMA_APBPERI_UCHI0_PMS_CONSTRAIN_LOCK
    +              dma_apbperi_uchi0_pms_constrain_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_APBPERI_UCHI0_PMS_CONSTRAIN_1
    +          SENSITIVE_DMA_APBPERI_UCHI0_PMS_CONSTRAIN_1_REG
    +          0x44
    +          0x20
    +          0x000FF0FF
    +          
    +            
    +              DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0
    +              dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_0
    +              0
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1
    +              dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_1
    +              2
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2
    +              dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_2
    +              4
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3
    +              dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_3
    +              6
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0
    +              dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_0
    +              12
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1
    +              dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_1
    +              14
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2
    +              dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_2
    +              16
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3
    +              dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_3
    +              18
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_APBPERI_I2S0_PMS_CONSTRAIN_0
    +          SENSITIVE_DMA_APBPERI_I2S0_PMS_CONSTRAIN_0_REG
    +          0x48
    +          0x20
    +          
    +            
    +              DMA_APBPERI_I2S0_PMS_CONSTRAIN_LOCK
    +              dma_apbperi_i2s0_pms_constrain_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_APBPERI_I2S0_PMS_CONSTRAIN_1
    +          SENSITIVE_DMA_APBPERI_I2S0_PMS_CONSTRAIN_1_REG
    +          0x4C
    +          0x20
    +          0x000FF0FF
    +          
    +            
    +              DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0
    +              dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_0
    +              0
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1
    +              dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_1
    +              2
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2
    +              dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_2
    +              4
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3
    +              dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_3
    +              6
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0
    +              dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_0
    +              12
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1
    +              dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_1
    +              14
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2
    +              dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_2
    +              16
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3
    +              dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_3
    +              18
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_APBPERI_MAC_PMS_CONSTRAIN_0
    +          SENSITIVE_DMA_APBPERI_MAC_PMS_CONSTRAIN_0_REG
    +          0x50
    +          0x20
    +          
    +            
    +              DMA_APBPERI_MAC_PMS_CONSTRAIN_LOCK
    +              dma_apbperi_mac_pms_constrain_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_APBPERI_MAC_PMS_CONSTRAIN_1
    +          SENSITIVE_DMA_APBPERI_MAC_PMS_CONSTRAIN_1_REG
    +          0x54
    +          0x20
    +          0x000FF0FF
    +          
    +            
    +              DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0
    +              dma_apbperi_mac_pms_constrain_sram_world_0_pms_0
    +              0
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1
    +              dma_apbperi_mac_pms_constrain_sram_world_0_pms_1
    +              2
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2
    +              dma_apbperi_mac_pms_constrain_sram_world_0_pms_2
    +              4
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3
    +              dma_apbperi_mac_pms_constrain_sram_world_0_pms_3
    +              6
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0
    +              dma_apbperi_mac_pms_constrain_sram_world_1_pms_0
    +              12
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1
    +              dma_apbperi_mac_pms_constrain_sram_world_1_pms_1
    +              14
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2
    +              dma_apbperi_mac_pms_constrain_sram_world_1_pms_2
    +              16
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3
    +              dma_apbperi_mac_pms_constrain_sram_world_1_pms_3
    +              18
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_APBPERI_BACKUP_PMS_CONSTRAIN_0
    +          SENSITIVE_DMA_APBPERI_BACKUP_PMS_CONSTRAIN_0_REG
    +          0x58
    +          0x20
    +          
    +            
    +              DMA_APBPERI_BACKUP_PMS_CONSTRAIN_LOCK
    +              dma_apbperi_backup_pms_constrain_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_APBPERI_BACKUP_PMS_CONSTRAIN_1
    +          SENSITIVE_DMA_APBPERI_BACKUP_PMS_CONSTRAIN_1_REG
    +          0x5C
    +          0x20
    +          0x000FF0FF
    +          
    +            
    +              DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0
    +              dma_apbperi_backup_pms_constrain_sram_world_0_pms_0
    +              0
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1
    +              dma_apbperi_backup_pms_constrain_sram_world_0_pms_1
    +              2
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2
    +              dma_apbperi_backup_pms_constrain_sram_world_0_pms_2
    +              4
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3
    +              dma_apbperi_backup_pms_constrain_sram_world_0_pms_3
    +              6
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0
    +              dma_apbperi_backup_pms_constrain_sram_world_1_pms_0
    +              12
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1
    +              dma_apbperi_backup_pms_constrain_sram_world_1_pms_1
    +              14
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2
    +              dma_apbperi_backup_pms_constrain_sram_world_1_pms_2
    +              16
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3
    +              dma_apbperi_backup_pms_constrain_sram_world_1_pms_3
    +              18
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_APBPERI_LC_PMS_CONSTRAIN_0
    +          SENSITIVE_DMA_APBPERI_LC_PMS_CONSTRAIN_0_REG
    +          0x60
    +          0x20
    +          
    +            
    +              DMA_APBPERI_LC_PMS_CONSTRAIN_LOCK
    +              dma_apbperi_lc_pms_constrain_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_APBPERI_LC_PMS_CONSTRAIN_1
    +          SENSITIVE_DMA_APBPERI_LC_PMS_CONSTRAIN_1_REG
    +          0x64
    +          0x20
    +          0x000FF0FF
    +          
    +            
    +              DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0
    +              dma_apbperi_lc_pms_constrain_sram_world_0_pms_0
    +              0
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1
    +              dma_apbperi_lc_pms_constrain_sram_world_0_pms_1
    +              2
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2
    +              dma_apbperi_lc_pms_constrain_sram_world_0_pms_2
    +              4
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3
    +              dma_apbperi_lc_pms_constrain_sram_world_0_pms_3
    +              6
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0
    +              dma_apbperi_lc_pms_constrain_sram_world_1_pms_0
    +              12
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1
    +              dma_apbperi_lc_pms_constrain_sram_world_1_pms_1
    +              14
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2
    +              dma_apbperi_lc_pms_constrain_sram_world_1_pms_2
    +              16
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3
    +              dma_apbperi_lc_pms_constrain_sram_world_1_pms_3
    +              18
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_APBPERI_AES_PMS_CONSTRAIN_0
    +          SENSITIVE_DMA_APBPERI_AES_PMS_CONSTRAIN_0_REG
    +          0x68
    +          0x20
    +          
    +            
    +              DMA_APBPERI_AES_PMS_CONSTRAIN_LOCK
    +              dma_apbperi_aes_pms_constrain_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_APBPERI_AES_PMS_CONSTRAIN_1
    +          SENSITIVE_DMA_APBPERI_AES_PMS_CONSTRAIN_1_REG
    +          0x6C
    +          0x20
    +          0x000FF0FF
    +          
    +            
    +              DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0
    +              dma_apbperi_aes_pms_constrain_sram_world_0_pms_0
    +              0
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1
    +              dma_apbperi_aes_pms_constrain_sram_world_0_pms_1
    +              2
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2
    +              dma_apbperi_aes_pms_constrain_sram_world_0_pms_2
    +              4
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3
    +              dma_apbperi_aes_pms_constrain_sram_world_0_pms_3
    +              6
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0
    +              dma_apbperi_aes_pms_constrain_sram_world_1_pms_0
    +              12
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1
    +              dma_apbperi_aes_pms_constrain_sram_world_1_pms_1
    +              14
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2
    +              dma_apbperi_aes_pms_constrain_sram_world_1_pms_2
    +              16
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3
    +              dma_apbperi_aes_pms_constrain_sram_world_1_pms_3
    +              18
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_APBPERI_SHA_PMS_CONSTRAIN_0
    +          SENSITIVE_DMA_APBPERI_SHA_PMS_CONSTRAIN_0_REG
    +          0x70
    +          0x20
    +          
    +            
    +              DMA_APBPERI_SHA_PMS_CONSTRAIN_LOCK
    +              dma_apbperi_sha_pms_constrain_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_APBPERI_SHA_PMS_CONSTRAIN_1
    +          SENSITIVE_DMA_APBPERI_SHA_PMS_CONSTRAIN_1_REG
    +          0x74
    +          0x20
    +          0x000FF0FF
    +          
    +            
    +              DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0
    +              dma_apbperi_sha_pms_constrain_sram_world_0_pms_0
    +              0
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1
    +              dma_apbperi_sha_pms_constrain_sram_world_0_pms_1
    +              2
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2
    +              dma_apbperi_sha_pms_constrain_sram_world_0_pms_2
    +              4
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3
    +              dma_apbperi_sha_pms_constrain_sram_world_0_pms_3
    +              6
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0
    +              dma_apbperi_sha_pms_constrain_sram_world_1_pms_0
    +              12
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1
    +              dma_apbperi_sha_pms_constrain_sram_world_1_pms_1
    +              14
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2
    +              dma_apbperi_sha_pms_constrain_sram_world_1_pms_2
    +              16
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3
    +              dma_apbperi_sha_pms_constrain_sram_world_1_pms_3
    +              18
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_0
    +          SENSITIVE_DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_0_REG
    +          0x78
    +          0x20
    +          
    +            
    +              DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_LOCK
    +              dma_apbperi_adc_dac_pms_constrain_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_1
    +          SENSITIVE_DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_1_REG
    +          0x7C
    +          0x20
    +          0x000FF0FF
    +          
    +            
    +              DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0
    +              dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_0
    +              0
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1
    +              dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_1
    +              2
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2
    +              dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_2
    +              4
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3
    +              dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_3
    +              6
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0
    +              dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_0
    +              12
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1
    +              dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_1
    +              14
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2
    +              dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_2
    +              16
    +              2
    +              read-write
    +            
    +            
    +              DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3
    +              dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_3
    +              18
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_APBPERI_PMS_MONITOR_0
    +          SENSITIVE_DMA_APBPERI_PMS_MONITOR_0_REG
    +          0x80
    +          0x20
    +          
    +            
    +              DMA_APBPERI_PMS_MONITOR_LOCK
    +              dma_apbperi_pms_monitor_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_APBPERI_PMS_MONITOR_1
    +          SENSITIVE_DMA_APBPERI_PMS_MONITOR_1_REG
    +          0x84
    +          0x20
    +          0x00000003
    +          
    +            
    +              DMA_APBPERI_PMS_MONITOR_VIOLATE_CLR
    +              dma_apbperi_pms_monitor_violate_clr
    +              0
    +              1
    +              read-write
    +            
    +            
    +              DMA_APBPERI_PMS_MONITOR_VIOLATE_EN
    +              dma_apbperi_pms_monitor_violate_en
    +              1
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_APBPERI_PMS_MONITOR_2
    +          SENSITIVE_DMA_APBPERI_PMS_MONITOR_2_REG
    +          0x88
    +          0x20
    +          
    +            
    +              DMA_APBPERI_PMS_MONITOR_VIOLATE_INTR
    +              dma_apbperi_pms_monitor_violate_intr
    +              0
    +              1
    +              read-only
    +            
    +            
    +              DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_WORLD
    +              dma_apbperi_pms_monitor_violate_status_world
    +              1
    +              2
    +              read-only
    +            
    +            
    +              DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_ADDR
    +              dma_apbperi_pms_monitor_violate_status_addr
    +              3
    +              24
    +              read-only
    +            
    +          
    +        
    +        
    +          DMA_APBPERI_PMS_MONITOR_3
    +          SENSITIVE_DMA_APBPERI_PMS_MONITOR_3_REG
    +          0x8C
    +          0x20
    +          
    +            
    +              DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_WR
    +              dma_apbperi_pms_monitor_violate_status_wr
    +              0
    +              1
    +              read-only
    +            
    +            
    +              DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_BYTEEN
    +              dma_apbperi_pms_monitor_violate_status_byteen
    +              1
    +              4
    +              read-only
    +            
    +          
    +        
    +        
    +          CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_0
    +          SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_0_REG
    +          0x90
    +          0x20
    +          
    +            
    +              CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_LOCK
    +              core_x_iram0_dram0_dma_split_line_constrain_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_1
    +          SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_1_REG
    +          0x94
    +          0x20
    +          
    +            
    +              CORE_X_IRAM0_DRAM0_DMA_SRAM_CATEGORY_0
    +              core_x_iram0_dram0_dma_sram_category_0
    +              0
    +              2
    +              read-write
    +            
    +            
    +              CORE_X_IRAM0_DRAM0_DMA_SRAM_CATEGORY_1
    +              core_x_iram0_dram0_dma_sram_category_1
    +              2
    +              2
    +              read-write
    +            
    +            
    +              CORE_X_IRAM0_DRAM0_DMA_SRAM_CATEGORY_2
    +              core_x_iram0_dram0_dma_sram_category_2
    +              4
    +              2
    +              read-write
    +            
    +            
    +              CORE_X_IRAM0_DRAM0_DMA_SRAM_SPLITADDR
    +              core_x_iram0_dram0_dma_sram_splitaddr
    +              14
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_2
    +          SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_2_REG
    +          0x98
    +          0x20
    +          
    +            
    +              CORE_X_IRAM0_SRAM_LINE_0_CATEGORY_0
    +              core_x_iram0_sram_line_0_category_0
    +              0
    +              2
    +              read-write
    +            
    +            
    +              CORE_X_IRAM0_SRAM_LINE_0_CATEGORY_1
    +              core_x_iram0_sram_line_0_category_1
    +              2
    +              2
    +              read-write
    +            
    +            
    +              CORE_X_IRAM0_SRAM_LINE_0_CATEGORY_2
    +              core_x_iram0_sram_line_0_category_2
    +              4
    +              2
    +              read-write
    +            
    +            
    +              CORE_X_IRAM0_SRAM_LINE_0_SPLITADDR
    +              core_x_iram0_sram_line_0_splitaddr
    +              14
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_3
    +          SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_3_REG
    +          0x9C
    +          0x20
    +          
    +            
    +              CORE_X_IRAM0_SRAM_LINE_1_CATEGORY_0
    +              core_x_iram0_sram_line_1_category_0
    +              0
    +              2
    +              read-write
    +            
    +            
    +              CORE_X_IRAM0_SRAM_LINE_1_CATEGORY_1
    +              core_x_iram0_sram_line_1_category_1
    +              2
    +              2
    +              read-write
    +            
    +            
    +              CORE_X_IRAM0_SRAM_LINE_1_CATEGORY_2
    +              core_x_iram0_sram_line_1_category_2
    +              4
    +              2
    +              read-write
    +            
    +            
    +              CORE_X_IRAM0_SRAM_LINE_1_SPLITADDR
    +              core_x_iram0_sram_line_1_splitaddr
    +              14
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_4
    +          SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_4_REG
    +          0xA0
    +          0x20
    +          
    +            
    +              CORE_X_DRAM0_DMA_SRAM_LINE_0_CATEGORY_0
    +              core_x_dram0_dma_sram_line_0_category_0
    +              0
    +              2
    +              read-write
    +            
    +            
    +              CORE_X_DRAM0_DMA_SRAM_LINE_0_CATEGORY_1
    +              core_x_dram0_dma_sram_line_0_category_1
    +              2
    +              2
    +              read-write
    +            
    +            
    +              CORE_X_DRAM0_DMA_SRAM_LINE_0_CATEGORY_2
    +              core_x_dram0_dma_sram_line_0_category_2
    +              4
    +              2
    +              read-write
    +            
    +            
    +              CORE_X_DRAM0_DMA_SRAM_LINE_0_SPLITADDR
    +              core_x_dram0_dma_sram_line_0_splitaddr
    +              14
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_5
    +          SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_5_REG
    +          0xA4
    +          0x20
    +          
    +            
    +              CORE_X_DRAM0_DMA_SRAM_LINE_1_CATEGORY_0
    +              core_x_dram0_dma_sram_line_1_category_0
    +              0
    +              2
    +              read-write
    +            
    +            
    +              CORE_X_DRAM0_DMA_SRAM_LINE_1_CATEGORY_1
    +              core_x_dram0_dma_sram_line_1_category_1
    +              2
    +              2
    +              read-write
    +            
    +            
    +              CORE_X_DRAM0_DMA_SRAM_LINE_1_CATEGORY_2
    +              core_x_dram0_dma_sram_line_1_category_2
    +              4
    +              2
    +              read-write
    +            
    +            
    +              CORE_X_DRAM0_DMA_SRAM_LINE_1_SPLITADDR
    +              core_x_dram0_dma_sram_line_1_splitaddr
    +              14
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_X_IRAM0_PMS_CONSTRAIN_0
    +          SENSITIVE_CORE_X_IRAM0_PMS_CONSTRAIN_0_REG
    +          0xA8
    +          0x20
    +          
    +            
    +              CORE_X_IRAM0_PMS_CONSTRAIN_LOCK
    +              core_x_iram0_pms_constrain_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_X_IRAM0_PMS_CONSTRAIN_1
    +          SENSITIVE_CORE_X_IRAM0_PMS_CONSTRAIN_1_REG
    +          0xAC
    +          0x20
    +          0x001C7FFF
    +          
    +            
    +              CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0
    +              core_x_iram0_pms_constrain_sram_world_1_pms_0
    +              0
    +              3
    +              read-write
    +            
    +            
    +              CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1
    +              core_x_iram0_pms_constrain_sram_world_1_pms_1
    +              3
    +              3
    +              read-write
    +            
    +            
    +              CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2
    +              core_x_iram0_pms_constrain_sram_world_1_pms_2
    +              6
    +              3
    +              read-write
    +            
    +            
    +              CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3
    +              core_x_iram0_pms_constrain_sram_world_1_pms_3
    +              9
    +              3
    +              read-write
    +            
    +            
    +              CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_CACHEDATAARRAY_PMS_0
    +              core_x_iram0_pms_constrain_sram_world_1_cachedataarray_pms_0
    +              12
    +              3
    +              read-write
    +            
    +            
    +              CORE_X_IRAM0_PMS_CONSTRAIN_ROM_WORLD_1_PMS
    +              core_x_iram0_pms_constrain_rom_world_1_pms
    +              18
    +              3
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_X_IRAM0_PMS_CONSTRAIN_2
    +          SENSITIVE_CORE_X_IRAM0_PMS_CONSTRAIN_2_REG
    +          0xB0
    +          0x20
    +          0x001C7FFF
    +          
    +            
    +              CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0
    +              core_x_iram0_pms_constrain_sram_world_0_pms_0
    +              0
    +              3
    +              read-write
    +            
    +            
    +              CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1
    +              core_x_iram0_pms_constrain_sram_world_0_pms_1
    +              3
    +              3
    +              read-write
    +            
    +            
    +              CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2
    +              core_x_iram0_pms_constrain_sram_world_0_pms_2
    +              6
    +              3
    +              read-write
    +            
    +            
    +              CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3
    +              core_x_iram0_pms_constrain_sram_world_0_pms_3
    +              9
    +              3
    +              read-write
    +            
    +            
    +              CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_CACHEDATAARRAY_PMS_0
    +              core_x_iram0_pms_constrain_sram_world_0_cachedataarray_pms_0
    +              12
    +              3
    +              read-write
    +            
    +            
    +              CORE_X_IRAM0_PMS_CONSTRAIN_ROM_WORLD_0_PMS
    +              core_x_iram0_pms_constrain_rom_world_0_pms
    +              18
    +              3
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_IRAM0_PMS_MONITOR_0
    +          SENSITIVE_CORE_0_IRAM0_PMS_MONITOR_0_REG
    +          0xB4
    +          0x20
    +          
    +            
    +              CORE_0_IRAM0_PMS_MONITOR_LOCK
    +              core_0_iram0_pms_monitor_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_IRAM0_PMS_MONITOR_1
    +          SENSITIVE_CORE_0_IRAM0_PMS_MONITOR_1_REG
    +          0xB8
    +          0x20
    +          0x00000003
    +          
    +            
    +              CORE_0_IRAM0_PMS_MONITOR_VIOLATE_CLR
    +              core_0_iram0_pms_monitor_violate_clr
    +              0
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_IRAM0_PMS_MONITOR_VIOLATE_EN
    +              core_0_iram0_pms_monitor_violate_en
    +              1
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_IRAM0_PMS_MONITOR_2
    +          SENSITIVE_CORE_0_IRAM0_PMS_MONITOR_2_REG
    +          0xBC
    +          0x20
    +          
    +            
    +              CORE_0_IRAM0_PMS_MONITOR_VIOLATE_INTR
    +              core_0_iram0_pms_monitor_violate_intr
    +              0
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_WR
    +              core_0_iram0_pms_monitor_violate_status_wr
    +              1
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_LOADSTORE
    +              core_0_iram0_pms_monitor_violate_status_loadstore
    +              2
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_WORLD
    +              core_0_iram0_pms_monitor_violate_status_world
    +              3
    +              2
    +              read-only
    +            
    +            
    +              CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_ADDR
    +              core_0_iram0_pms_monitor_violate_status_addr
    +              5
    +              24
    +              read-only
    +            
    +          
    +        
    +        
    +          CORE_X_DRAM0_PMS_CONSTRAIN_0
    +          SENSITIVE_CORE_X_DRAM0_PMS_CONSTRAIN_0_REG
    +          0xC0
    +          0x20
    +          
    +            
    +              CORE_X_DRAM0_PMS_CONSTRAIN_LOCK
    +              core_x_dram0_pms_constrain_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_X_DRAM0_PMS_CONSTRAIN_1
    +          SENSITIVE_CORE_X_DRAM0_PMS_CONSTRAIN_1_REG
    +          0xC4
    +          0x20
    +          0x0F0FF0FF
    +          
    +            
    +              CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0
    +              core_x_dram0_pms_constrain_sram_world_0_pms_0
    +              0
    +              2
    +              read-write
    +            
    +            
    +              CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1
    +              core_x_dram0_pms_constrain_sram_world_0_pms_1
    +              2
    +              2
    +              read-write
    +            
    +            
    +              CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2
    +              core_x_dram0_pms_constrain_sram_world_0_pms_2
    +              4
    +              2
    +              read-write
    +            
    +            
    +              CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3
    +              core_x_dram0_pms_constrain_sram_world_0_pms_3
    +              6
    +              2
    +              read-write
    +            
    +            
    +              CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0
    +              core_x_dram0_pms_constrain_sram_world_1_pms_0
    +              12
    +              2
    +              read-write
    +            
    +            
    +              CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1
    +              core_x_dram0_pms_constrain_sram_world_1_pms_1
    +              14
    +              2
    +              read-write
    +            
    +            
    +              CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2
    +              core_x_dram0_pms_constrain_sram_world_1_pms_2
    +              16
    +              2
    +              read-write
    +            
    +            
    +              CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3
    +              core_x_dram0_pms_constrain_sram_world_1_pms_3
    +              18
    +              2
    +              read-write
    +            
    +            
    +              CORE_X_DRAM0_PMS_CONSTRAIN_ROM_WORLD_0_PMS
    +              core_x_dram0_pms_constrain_rom_world_0_pms
    +              24
    +              2
    +              read-write
    +            
    +            
    +              CORE_X_DRAM0_PMS_CONSTRAIN_ROM_WORLD_1_PMS
    +              core_x_dram0_pms_constrain_rom_world_1_pms
    +              26
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_DRAM0_PMS_MONITOR_0
    +          SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_0_REG
    +          0xC8
    +          0x20
    +          
    +            
    +              CORE_0_DRAM0_PMS_MONITOR_LOCK
    +              core_0_dram0_pms_monitor_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_DRAM0_PMS_MONITOR_1
    +          SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_1_REG
    +          0xCC
    +          0x20
    +          0x00000003
    +          
    +            
    +              CORE_0_DRAM0_PMS_MONITOR_VIOLATE_CLR
    +              core_0_dram0_pms_monitor_violate_clr
    +              0
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_DRAM0_PMS_MONITOR_VIOLATE_EN
    +              core_0_dram0_pms_monitor_violate_en
    +              1
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_DRAM0_PMS_MONITOR_2
    +          SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_2_REG
    +          0xD0
    +          0x20
    +          
    +            
    +              CORE_0_DRAM0_PMS_MONITOR_VIOLATE_INTR
    +              core_0_dram0_pms_monitor_violate_intr
    +              0
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_LOCK
    +              core_0_dram0_pms_monitor_violate_status_lock
    +              1
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_WORLD
    +              core_0_dram0_pms_monitor_violate_status_world
    +              2
    +              2
    +              read-only
    +            
    +            
    +              CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_ADDR
    +              core_0_dram0_pms_monitor_violate_status_addr
    +              4
    +              24
    +              read-only
    +            
    +          
    +        
    +        
    +          CORE_0_DRAM0_PMS_MONITOR_3
    +          SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_3_REG
    +          0xD4
    +          0x20
    +          
    +            
    +              CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_WR
    +              core_0_dram0_pms_monitor_violate_status_wr
    +              0
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_BYTEEN
    +              core_0_dram0_pms_monitor_violate_status_byteen
    +              1
    +              4
    +              read-only
    +            
    +          
    +        
    +        
    +          CORE_0_PIF_PMS_CONSTRAIN_0
    +          SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_0_REG
    +          0xD8
    +          0x20
    +          
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_LOCK
    +              core_0_pif_pms_constrain_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_PIF_PMS_CONSTRAIN_1
    +          SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_1_REG
    +          0xDC
    +          0x20
    +          0xCF0FFFFF
    +          
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_UART
    +              core_0_pif_pms_constrain_world_0_uart
    +              0
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_G0SPI_1
    +              core_0_pif_pms_constrain_world_0_g0spi_1
    +              2
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_G0SPI_0
    +              core_0_pif_pms_constrain_world_0_g0spi_0
    +              4
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_GPIO
    +              core_0_pif_pms_constrain_world_0_gpio
    +              6
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_FE2
    +              core_0_pif_pms_constrain_world_0_fe2
    +              8
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_FE
    +              core_0_pif_pms_constrain_world_0_fe
    +              10
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_TIMER
    +              core_0_pif_pms_constrain_world_0_timer
    +              12
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_RTC
    +              core_0_pif_pms_constrain_world_0_rtc
    +              14
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_IO_MUX
    +              core_0_pif_pms_constrain_world_0_io_mux
    +              16
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_WDG
    +              core_0_pif_pms_constrain_world_0_wdg
    +              18
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_MISC
    +              core_0_pif_pms_constrain_world_0_misc
    +              24
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_I2C
    +              core_0_pif_pms_constrain_world_0_i2c
    +              26
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_UART1
    +              core_0_pif_pms_constrain_world_0_uart1
    +              30
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_PIF_PMS_CONSTRAIN_2
    +          SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_2_REG
    +          0xE0
    +          0x20
    +          0xFCC30CF3
    +          
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_BT
    +              core_0_pif_pms_constrain_world_0_bt
    +              0
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_I2C_EXT0
    +              core_0_pif_pms_constrain_world_0_i2c_ext0
    +              4
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_UHCI0
    +              core_0_pif_pms_constrain_world_0_uhci0
    +              6
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_RMT
    +              core_0_pif_pms_constrain_world_0_rmt
    +              10
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_LEDC
    +              core_0_pif_pms_constrain_world_0_ledc
    +              16
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_BB
    +              core_0_pif_pms_constrain_world_0_bb
    +              22
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_TIMERGROUP
    +              core_0_pif_pms_constrain_world_0_timergroup
    +              26
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_TIMERGROUP1
    +              core_0_pif_pms_constrain_world_0_timergroup1
    +              28
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SYSTIMER
    +              core_0_pif_pms_constrain_world_0_systimer
    +              30
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_PIF_PMS_CONSTRAIN_3
    +          SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_3_REG
    +          0xE4
    +          0x20
    +          0x3CC0CC33
    +          
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SPI_2
    +              core_0_pif_pms_constrain_world_0_spi_2
    +              0
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_APB_CTRL
    +              core_0_pif_pms_constrain_world_0_apb_ctrl
    +              4
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CAN
    +              core_0_pif_pms_constrain_world_0_can
    +              10
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_I2S1
    +              core_0_pif_pms_constrain_world_0_i2s1
    +              14
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_RWBT
    +              core_0_pif_pms_constrain_world_0_rwbt
    +              22
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_WIFIMAC
    +              core_0_pif_pms_constrain_world_0_wifimac
    +              26
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_PWR
    +              core_0_pif_pms_constrain_world_0_pwr
    +              28
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_PIF_PMS_CONSTRAIN_4
    +          SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_4_REG
    +          0xE8
    +          0x20
    +          0xFFFFF3FC
    +          
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_USB_WRAP
    +              core_0_pif_pms_constrain_world_0_usb_wrap
    +              2
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CRYPTO_PERI
    +              core_0_pif_pms_constrain_world_0_crypto_peri
    +              4
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CRYPTO_DMA
    +              core_0_pif_pms_constrain_world_0_crypto_dma
    +              6
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_APB_ADC
    +              core_0_pif_pms_constrain_world_0_apb_adc
    +              8
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_BT_PWR
    +              core_0_pif_pms_constrain_world_0_bt_pwr
    +              12
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_USB_DEVICE
    +              core_0_pif_pms_constrain_world_0_usb_device
    +              14
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SYSTEM
    +              core_0_pif_pms_constrain_world_0_system
    +              16
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SENSITIVE
    +              core_0_pif_pms_constrain_world_0_sensitive
    +              18
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_INTERRUPT
    +              core_0_pif_pms_constrain_world_0_interrupt
    +              20
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_DMA_COPY
    +              core_0_pif_pms_constrain_world_0_dma_copy
    +              22
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CACHE_CONFIG
    +              core_0_pif_pms_constrain_world_0_cache_config
    +              24
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_AD
    +              core_0_pif_pms_constrain_world_0_ad
    +              26
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_DIO
    +              core_0_pif_pms_constrain_world_0_dio
    +              28
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_WORLD_CONTROLLER
    +              core_0_pif_pms_constrain_world_0_world_controller
    +              30
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_PIF_PMS_CONSTRAIN_5
    +          SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_5_REG
    +          0xEC
    +          0x20
    +          0xCF0FFFFF
    +          
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_UART
    +              core_0_pif_pms_constrain_world_1_uart
    +              0
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_G0SPI_1
    +              core_0_pif_pms_constrain_world_1_g0spi_1
    +              2
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_G0SPI_0
    +              core_0_pif_pms_constrain_world_1_g0spi_0
    +              4
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_GPIO
    +              core_0_pif_pms_constrain_world_1_gpio
    +              6
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_FE2
    +              core_0_pif_pms_constrain_world_1_fe2
    +              8
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_FE
    +              core_0_pif_pms_constrain_world_1_fe
    +              10
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_TIMER
    +              core_0_pif_pms_constrain_world_1_timer
    +              12
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_RTC
    +              core_0_pif_pms_constrain_world_1_rtc
    +              14
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_IO_MUX
    +              core_0_pif_pms_constrain_world_1_io_mux
    +              16
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_WDG
    +              core_0_pif_pms_constrain_world_1_wdg
    +              18
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_MISC
    +              core_0_pif_pms_constrain_world_1_misc
    +              24
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_I2C
    +              core_0_pif_pms_constrain_world_1_i2c
    +              26
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_UART1
    +              core_0_pif_pms_constrain_world_1_uart1
    +              30
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_PIF_PMS_CONSTRAIN_6
    +          SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_6_REG
    +          0xF0
    +          0x20
    +          0xFCC30CF3
    +          
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_BT
    +              core_0_pif_pms_constrain_world_1_bt
    +              0
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_I2C_EXT0
    +              core_0_pif_pms_constrain_world_1_i2c_ext0
    +              4
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_UHCI0
    +              core_0_pif_pms_constrain_world_1_uhci0
    +              6
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_RMT
    +              core_0_pif_pms_constrain_world_1_rmt
    +              10
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_LEDC
    +              core_0_pif_pms_constrain_world_1_ledc
    +              16
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_BB
    +              core_0_pif_pms_constrain_world_1_bb
    +              22
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_TIMERGROUP
    +              core_0_pif_pms_constrain_world_1_timergroup
    +              26
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_TIMERGROUP1
    +              core_0_pif_pms_constrain_world_1_timergroup1
    +              28
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SYSTIMER
    +              core_0_pif_pms_constrain_world_1_systimer
    +              30
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_PIF_PMS_CONSTRAIN_7
    +          SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_7_REG
    +          0xF4
    +          0x20
    +          0x3CC0CC33
    +          
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SPI_2
    +              core_0_pif_pms_constrain_world_1_spi_2
    +              0
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_APB_CTRL
    +              core_0_pif_pms_constrain_world_1_apb_ctrl
    +              4
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CAN
    +              core_0_pif_pms_constrain_world_1_can
    +              10
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_I2S1
    +              core_0_pif_pms_constrain_world_1_i2s1
    +              14
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_RWBT
    +              core_0_pif_pms_constrain_world_1_rwbt
    +              22
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_WIFIMAC
    +              core_0_pif_pms_constrain_world_1_wifimac
    +              26
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_PWR
    +              core_0_pif_pms_constrain_world_1_pwr
    +              28
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_PIF_PMS_CONSTRAIN_8
    +          SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_8_REG
    +          0xF8
    +          0x20
    +          0xFFFFF3FC
    +          
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_USB_WRAP
    +              core_0_pif_pms_constrain_world_1_usb_wrap
    +              2
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CRYPTO_PERI
    +              core_0_pif_pms_constrain_world_1_crypto_peri
    +              4
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CRYPTO_DMA
    +              core_0_pif_pms_constrain_world_1_crypto_dma
    +              6
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_APB_ADC
    +              core_0_pif_pms_constrain_world_1_apb_adc
    +              8
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_BT_PWR
    +              core_0_pif_pms_constrain_world_1_bt_pwr
    +              12
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_USB_DEVICE
    +              core_0_pif_pms_constrain_world_1_usb_device
    +              14
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SYSTEM
    +              core_0_pif_pms_constrain_world_1_system
    +              16
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SENSITIVE
    +              core_0_pif_pms_constrain_world_1_sensitive
    +              18
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_INTERRUPT
    +              core_0_pif_pms_constrain_world_1_interrupt
    +              20
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_DMA_COPY
    +              core_0_pif_pms_constrain_world_1_dma_copy
    +              22
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CACHE_CONFIG
    +              core_0_pif_pms_constrain_world_1_cache_config
    +              24
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_AD
    +              core_0_pif_pms_constrain_world_1_ad
    +              26
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_DIO
    +              core_0_pif_pms_constrain_world_1_dio
    +              28
    +              2
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_WORLD_CONTROLLER
    +              core_0_pif_pms_constrain_world_1_world_controller
    +              30
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_PIF_PMS_CONSTRAIN_9
    +          SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_9_REG
    +          0xFC
    +          0x20
    +          0x003FFFFF
    +          
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_SPLTADDR_WORLD_0
    +              core_0_pif_pms_constrain_rtcfast_spltaddr_world_0
    +              0
    +              11
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_SPLTADDR_WORLD_1
    +              core_0_pif_pms_constrain_rtcfast_spltaddr_world_1
    +              11
    +              11
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_PIF_PMS_CONSTRAIN_10
    +          SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_10_REG
    +          0x100
    +          0x20
    +          0x00000FFF
    +          
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_0_L
    +              core_0_pif_pms_constrain_rtcfast_world_0_l
    +              0
    +              3
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_0_H
    +              core_0_pif_pms_constrain_rtcfast_world_0_h
    +              3
    +              3
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_1_L
    +              core_0_pif_pms_constrain_rtcfast_world_1_l
    +              6
    +              3
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_1_H
    +              core_0_pif_pms_constrain_rtcfast_world_1_h
    +              9
    +              3
    +              read-write
    +            
    +          
    +        
    +        
    +          REGION_PMS_CONSTRAIN_0
    +          SENSITIVE_REGION_PMS_CONSTRAIN_0_REG
    +          0x104
    +          0x20
    +          
    +            
    +              REGION_PMS_CONSTRAIN_LOCK
    +              region_pms_constrain_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          REGION_PMS_CONSTRAIN_1
    +          SENSITIVE_REGION_PMS_CONSTRAIN_1_REG
    +          0x108
    +          0x20
    +          0x00003FFF
    +          
    +            
    +              REGION_PMS_CONSTRAIN_WORLD_0_AREA_0
    +              region_pms_constrain_world_0_area_0
    +              0
    +              2
    +              read-write
    +            
    +            
    +              REGION_PMS_CONSTRAIN_WORLD_0_AREA_1
    +              region_pms_constrain_world_0_area_1
    +              2
    +              2
    +              read-write
    +            
    +            
    +              REGION_PMS_CONSTRAIN_WORLD_0_AREA_2
    +              region_pms_constrain_world_0_area_2
    +              4
    +              2
    +              read-write
    +            
    +            
    +              REGION_PMS_CONSTRAIN_WORLD_0_AREA_3
    +              region_pms_constrain_world_0_area_3
    +              6
    +              2
    +              read-write
    +            
    +            
    +              REGION_PMS_CONSTRAIN_WORLD_0_AREA_4
    +              region_pms_constrain_world_0_area_4
    +              8
    +              2
    +              read-write
    +            
    +            
    +              REGION_PMS_CONSTRAIN_WORLD_0_AREA_5
    +              region_pms_constrain_world_0_area_5
    +              10
    +              2
    +              read-write
    +            
    +            
    +              REGION_PMS_CONSTRAIN_WORLD_0_AREA_6
    +              region_pms_constrain_world_0_area_6
    +              12
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          REGION_PMS_CONSTRAIN_2
    +          SENSITIVE_REGION_PMS_CONSTRAIN_2_REG
    +          0x10C
    +          0x20
    +          0x00003FFF
    +          
    +            
    +              REGION_PMS_CONSTRAIN_WORLD_1_AREA_0
    +              region_pms_constrain_world_1_area_0
    +              0
    +              2
    +              read-write
    +            
    +            
    +              REGION_PMS_CONSTRAIN_WORLD_1_AREA_1
    +              region_pms_constrain_world_1_area_1
    +              2
    +              2
    +              read-write
    +            
    +            
    +              REGION_PMS_CONSTRAIN_WORLD_1_AREA_2
    +              region_pms_constrain_world_1_area_2
    +              4
    +              2
    +              read-write
    +            
    +            
    +              REGION_PMS_CONSTRAIN_WORLD_1_AREA_3
    +              region_pms_constrain_world_1_area_3
    +              6
    +              2
    +              read-write
    +            
    +            
    +              REGION_PMS_CONSTRAIN_WORLD_1_AREA_4
    +              region_pms_constrain_world_1_area_4
    +              8
    +              2
    +              read-write
    +            
    +            
    +              REGION_PMS_CONSTRAIN_WORLD_1_AREA_5
    +              region_pms_constrain_world_1_area_5
    +              10
    +              2
    +              read-write
    +            
    +            
    +              REGION_PMS_CONSTRAIN_WORLD_1_AREA_6
    +              region_pms_constrain_world_1_area_6
    +              12
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          REGION_PMS_CONSTRAIN_3
    +          SENSITIVE_REGION_PMS_CONSTRAIN_3_REG
    +          0x110
    +          0x20
    +          
    +            
    +              REGION_PMS_CONSTRAIN_ADDR_0
    +              region_pms_constrain_addr_0
    +              0
    +              30
    +              read-write
    +            
    +          
    +        
    +        
    +          REGION_PMS_CONSTRAIN_4
    +          SENSITIVE_REGION_PMS_CONSTRAIN_4_REG
    +          0x114
    +          0x20
    +          
    +            
    +              REGION_PMS_CONSTRAIN_ADDR_1
    +              region_pms_constrain_addr_1
    +              0
    +              30
    +              read-write
    +            
    +          
    +        
    +        
    +          REGION_PMS_CONSTRAIN_5
    +          SENSITIVE_REGION_PMS_CONSTRAIN_5_REG
    +          0x118
    +          0x20
    +          
    +            
    +              REGION_PMS_CONSTRAIN_ADDR_2
    +              region_pms_constrain_addr_2
    +              0
    +              30
    +              read-write
    +            
    +          
    +        
    +        
    +          REGION_PMS_CONSTRAIN_6
    +          SENSITIVE_REGION_PMS_CONSTRAIN_6_REG
    +          0x11C
    +          0x20
    +          
    +            
    +              REGION_PMS_CONSTRAIN_ADDR_3
    +              region_pms_constrain_addr_3
    +              0
    +              30
    +              read-write
    +            
    +          
    +        
    +        
    +          REGION_PMS_CONSTRAIN_7
    +          SENSITIVE_REGION_PMS_CONSTRAIN_7_REG
    +          0x120
    +          0x20
    +          
    +            
    +              REGION_PMS_CONSTRAIN_ADDR_4
    +              region_pms_constrain_addr_4
    +              0
    +              30
    +              read-write
    +            
    +          
    +        
    +        
    +          REGION_PMS_CONSTRAIN_8
    +          SENSITIVE_REGION_PMS_CONSTRAIN_8_REG
    +          0x124
    +          0x20
    +          
    +            
    +              REGION_PMS_CONSTRAIN_ADDR_5
    +              region_pms_constrain_addr_5
    +              0
    +              30
    +              read-write
    +            
    +          
    +        
    +        
    +          REGION_PMS_CONSTRAIN_9
    +          SENSITIVE_REGION_PMS_CONSTRAIN_9_REG
    +          0x128
    +          0x20
    +          
    +            
    +              REGION_PMS_CONSTRAIN_ADDR_6
    +              region_pms_constrain_addr_6
    +              0
    +              30
    +              read-write
    +            
    +          
    +        
    +        
    +          REGION_PMS_CONSTRAIN_10
    +          SENSITIVE_REGION_PMS_CONSTRAIN_10_REG
    +          0x12C
    +          0x20
    +          
    +            
    +              REGION_PMS_CONSTRAIN_ADDR_7
    +              region_pms_constrain_addr_7
    +              0
    +              30
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_PIF_PMS_MONITOR_0
    +          SENSITIVE_CORE_0_PIF_PMS_MONITOR_0_REG
    +          0x130
    +          0x20
    +          
    +            
    +              CORE_0_PIF_PMS_MONITOR_LOCK
    +              core_0_pif_pms_monitor_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_PIF_PMS_MONITOR_1
    +          SENSITIVE_CORE_0_PIF_PMS_MONITOR_1_REG
    +          0x134
    +          0x20
    +          0x00000003
    +          
    +            
    +              CORE_0_PIF_PMS_MONITOR_VIOLATE_CLR
    +              core_0_pif_pms_monitor_violate_clr
    +              0
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_MONITOR_VIOLATE_EN
    +              core_0_pif_pms_monitor_violate_en
    +              1
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_PIF_PMS_MONITOR_2
    +          SENSITIVE_CORE_0_PIF_PMS_MONITOR_2_REG
    +          0x138
    +          0x20
    +          
    +            
    +              CORE_0_PIF_PMS_MONITOR_VIOLATE_INTR
    +              core_0_pif_pms_monitor_violate_intr
    +              0
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HPORT_0
    +              core_0_pif_pms_monitor_violate_status_hport_0
    +              1
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HSIZE
    +              core_0_pif_pms_monitor_violate_status_hsize
    +              2
    +              3
    +              read-only
    +            
    +            
    +              CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HWRITE
    +              core_0_pif_pms_monitor_violate_status_hwrite
    +              5
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HWORLD
    +              core_0_pif_pms_monitor_violate_status_hworld
    +              6
    +              2
    +              read-only
    +            
    +          
    +        
    +        
    +          CORE_0_PIF_PMS_MONITOR_3
    +          SENSITIVE_CORE_0_PIF_PMS_MONITOR_3_REG
    +          0x13C
    +          0x20
    +          
    +            
    +              CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HADDR
    +              core_0_pif_pms_monitor_violate_status_haddr
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          CORE_0_PIF_PMS_MONITOR_4
    +          SENSITIVE_CORE_0_PIF_PMS_MONITOR_4_REG
    +          0x140
    +          0x20
    +          0x00000003
    +          
    +            
    +              CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_CLR
    +              core_0_pif_pms_monitor_nonword_violate_clr
    +              0
    +              1
    +              read-write
    +            
    +            
    +              CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_EN
    +              core_0_pif_pms_monitor_nonword_violate_en
    +              1
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_0_PIF_PMS_MONITOR_5
    +          SENSITIVE_CORE_0_PIF_PMS_MONITOR_5_REG
    +          0x144
    +          0x20
    +          
    +            
    +              CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_INTR
    +              core_0_pif_pms_monitor_nonword_violate_intr
    +              0
    +              1
    +              read-only
    +            
    +            
    +              CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_STATUS_HSIZE
    +              core_0_pif_pms_monitor_nonword_violate_status_hsize
    +              1
    +              2
    +              read-only
    +            
    +            
    +              CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_STATUS_HWORLD
    +              core_0_pif_pms_monitor_nonword_violate_status_hworld
    +              3
    +              2
    +              read-only
    +            
    +          
    +        
    +        
    +          CORE_0_PIF_PMS_MONITOR_6
    +          SENSITIVE_CORE_0_PIF_PMS_MONITOR_6_REG
    +          0x148
    +          0x20
    +          
    +            
    +              CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_STATUS_HADDR
    +              core_0_pif_pms_monitor_nonword_violate_status_haddr
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          BACKUP_BUS_PMS_CONSTRAIN_0
    +          SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_0_REG
    +          0x14C
    +          0x20
    +          
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_LOCK
    +              backup_bus_pms_constrain_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          BACKUP_BUS_PMS_CONSTRAIN_1
    +          SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_1_REG
    +          0x150
    +          0x20
    +          0xCF0FFFFF
    +          
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_UART
    +              backup_bus_pms_constrain_uart
    +              0
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_G0SPI_1
    +              backup_bus_pms_constrain_g0spi_1
    +              2
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_G0SPI_0
    +              backup_bus_pms_constrain_g0spi_0
    +              4
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_GPIO
    +              backup_bus_pms_constrain_gpio
    +              6
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_FE2
    +              backup_bus_pms_constrain_fe2
    +              8
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_FE
    +              backup_bus_pms_constrain_fe
    +              10
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_TIMER
    +              backup_bus_pms_constrain_timer
    +              12
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_RTC
    +              backup_bus_pms_constrain_rtc
    +              14
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_IO_MUX
    +              backup_bus_pms_constrain_io_mux
    +              16
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_WDG
    +              backup_bus_pms_constrain_wdg
    +              18
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_MISC
    +              backup_bus_pms_constrain_misc
    +              24
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_I2C
    +              backup_bus_pms_constrain_i2c
    +              26
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_UART1
    +              backup_bus_pms_constrain_uart1
    +              30
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          BACKUP_BUS_PMS_CONSTRAIN_2
    +          SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_2_REG
    +          0x154
    +          0x20
    +          0xFCC30CF3
    +          
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_BT
    +              backup_bus_pms_constrain_bt
    +              0
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_I2C_EXT0
    +              backup_bus_pms_constrain_i2c_ext0
    +              4
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_UHCI0
    +              backup_bus_pms_constrain_uhci0
    +              6
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_RMT
    +              backup_bus_pms_constrain_rmt
    +              10
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_LEDC
    +              backup_bus_pms_constrain_ledc
    +              16
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_BB
    +              backup_bus_pms_constrain_bb
    +              22
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_TIMERGROUP
    +              backup_bus_pms_constrain_timergroup
    +              26
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_TIMERGROUP1
    +              backup_bus_pms_constrain_timergroup1
    +              28
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_SYSTIMER
    +              backup_bus_pms_constrain_systimer
    +              30
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          BACKUP_BUS_PMS_CONSTRAIN_3
    +          SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_3_REG
    +          0x158
    +          0x20
    +          0x3CC0CC33
    +          
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_SPI_2
    +              backup_bus_pms_constrain_spi_2
    +              0
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_APB_CTRL
    +              backup_bus_pms_constrain_apb_ctrl
    +              4
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_CAN
    +              backup_bus_pms_constrain_can
    +              10
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_I2S1
    +              backup_bus_pms_constrain_i2s1
    +              14
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_RWBT
    +              backup_bus_pms_constrain_rwbt
    +              22
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_WIFIMAC
    +              backup_bus_pms_constrain_wifimac
    +              26
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_PWR
    +              backup_bus_pms_constrain_pwr
    +              28
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          BACKUP_BUS_PMS_CONSTRAIN_4
    +          SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_4_REG
    +          0x15C
    +          0x20
    +          0x0000F3FC
    +          
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_USB_WRAP
    +              backup_bus_pms_constrain_usb_wrap
    +              2
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_CRYPTO_PERI
    +              backup_bus_pms_constrain_crypto_peri
    +              4
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_CRYPTO_DMA
    +              backup_bus_pms_constrain_crypto_dma
    +              6
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_APB_ADC
    +              backup_bus_pms_constrain_apb_adc
    +              8
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_BT_PWR
    +              backup_bus_pms_constrain_bt_pwr
    +              12
    +              2
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_CONSTRAIN_USB_DEVICE
    +              backup_bus_pms_constrain_usb_device
    +              14
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          BACKUP_BUS_PMS_MONITOR_0
    +          SENSITIVE_BACKUP_BUS_PMS_MONITOR_0_REG
    +          0x160
    +          0x20
    +          
    +            
    +              BACKUP_BUS_PMS_MONITOR_LOCK
    +              backup_bus_pms_monitor_lock
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          BACKUP_BUS_PMS_MONITOR_1
    +          SENSITIVE_BACKUP_BUS_PMS_MONITOR_1_REG
    +          0x164
    +          0x20
    +          0x00000003
    +          
    +            
    +              BACKUP_BUS_PMS_MONITOR_VIOLATE_CLR
    +              backup_bus_pms_monitor_violate_clr
    +              0
    +              1
    +              read-write
    +            
    +            
    +              BACKUP_BUS_PMS_MONITOR_VIOLATE_EN
    +              backup_bus_pms_monitor_violate_en
    +              1
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          BACKUP_BUS_PMS_MONITOR_2
    +          SENSITIVE_BACKUP_BUS_PMS_MONITOR_2_REG
    +          0x168
    +          0x20
    +          
    +            
    +              BACKUP_BUS_PMS_MONITOR_VIOLATE_INTR
    +              backup_bus_pms_monitor_violate_intr
    +              0
    +              1
    +              read-only
    +            
    +            
    +              BACKUP_BUS_PMS_MONITOR_VIOLATE_STATUS_HTRANS
    +              backup_bus_pms_monitor_violate_status_htrans
    +              1
    +              2
    +              read-only
    +            
    +            
    +              BACKUP_BUS_PMS_MONITOR_VIOLATE_STATUS_HSIZE
    +              backup_bus_pms_monitor_violate_status_hsize
    +              3
    +              3
    +              read-only
    +            
    +            
    +              BACKUP_BUS_PMS_MONITOR_VIOLATE_STATUS_HWRITE
    +              backup_bus_pms_monitor_violate_status_hwrite
    +              6
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          BACKUP_BUS_PMS_MONITOR_3
    +          SENSITIVE_BACKUP_BUS_PMS_MONITOR_3_REG
    +          0x16C
    +          0x20
    +          
    +            
    +              BACKUP_BUS_PMS_MONITOR_VIOLATE_HADDR
    +              backup_bus_pms_monitor_violate_haddr
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          CLOCK_GATE
    +          SENSITIVE_CLOCK_GATE_REG
    +          0x170
    +          0x20
    +          0x00000001
    +          
    +            
    +              CLK_EN
    +              clk_en
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DATE
    +          SENSITIVE_DATE_REG
    +          0xFFC
    +          0x20
    +          0x02010200
    +          
    +            
    +              DATE
    +              reg_date
    +              0
    +              28
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      SHA
    +      SHA (Secure Hash Algorithm) Accelerator
    +      SHA
    +      0x6003B000
    +      
    +        0x0
    +        0xB0
    +        registers
    +      
    +      
    +        SHA
    +        49
    +      
    +      
    +        
    +          MODE
    +          Initial configuration register.
    +          0x0
    +          0x20
    +          
    +            
    +              MODE
    +              Sha mode.
    +              0
    +              3
    +              read-write
    +            
    +          
    +        
    +        
    +          T_STRING
    +          SHA 512/t configuration register 0.
    +          0x4
    +          0x20
    +          
    +            
    +              T_STRING
    +              Sha t_string (used if and only if mode == SHA_512/t).
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          T_LENGTH
    +          SHA 512/t configuration register 1.
    +          0x8
    +          0x20
    +          
    +            
    +              T_LENGTH
    +              Sha t_length (used if and only if mode == SHA_512/t).
    +              0
    +              6
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_BLOCK_NUM
    +          DMA configuration register 0.
    +          0xC
    +          0x20
    +          
    +            
    +              DMA_BLOCK_NUM
    +              Dma-sha block number.
    +              0
    +              6
    +              read-write
    +            
    +          
    +        
    +        
    +          START
    +          Typical SHA configuration register 0.
    +          0x10
    +          0x20
    +          
    +            
    +              START
    +              Reserved.
    +              1
    +              31
    +              read-only
    +            
    +          
    +        
    +        
    +          CONTINUE
    +          Typical SHA configuration register 1.
    +          0x14
    +          0x20
    +          
    +            
    +              CONTINUE
    +              Reserved.
    +              1
    +              31
    +              read-only
    +            
    +          
    +        
    +        
    +          BUSY
    +          Busy register.
    +          0x18
    +          0x20
    +          
    +            
    +              STATE
    +              Sha busy state. 1'b0: idle. 1'b1: busy.
    +              0
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          DMA_START
    +          DMA configuration register 1.
    +          0x1C
    +          0x20
    +          
    +            
    +              DMA_START
    +              Start dma-sha.
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          DMA_CONTINUE
    +          DMA configuration register 2.
    +          0x20
    +          0x20
    +          
    +            
    +              DMA_CONTINUE
    +              Continue dma-sha.
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          CLEAR_IRQ
    +          Interrupt clear register.
    +          0x24
    +          0x20
    +          
    +            
    +              CLEAR_INTERRUPT
    +              Clear sha interrupt.
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          IRQ_ENA
    +          Interrupt enable register.
    +          0x28
    +          0x20
    +          
    +            
    +              INTERRUPT_ENA
    +              Sha interrupt enable register. 1'b0: disable(default). 1'b1: enable.
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DATE
    +          Date register.
    +          0x2C
    +          0x20
    +          0x20200616
    +          
    +            
    +              DATE
    +              Sha date information/ sha version information.
    +              0
    +              30
    +              read-write
    +            
    +          
    +        
    +        
    +          64
    +          0x1
    +          H_MEM[%s]
    +          Sha H memory which contains intermediate hash or finial hash.
    +          0x40
    +          0x8
    +        
    +        
    +          64
    +          0x1
    +          M_MEM[%s]
    +          Sha M memory which contains message.
    +          0x80
    +          0x8
    +        
    +      
    +    
    +    
    +      SPI0
    +      SPI (Serial Peripheral Interface) Controller
    +      SPI0
    +      0x60003000
    +      
    +        0x0
    +        0x48
    +        registers
    +      
    +      
    +        
    +          CTRL
    +          SPI0 control register.
    +          0x8
    +          0x20
    +          0x002C2000
    +          
    +            
    +              FDUMMY_OUT
    +              In the dummy phase the signal level of spi is output by the spi controller.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              FCMD_DUAL
    +              Apply 2 signals during command phase 1:enable 0: disable
    +              7
    +              1
    +              read-write
    +            
    +            
    +              FCMD_QUAD
    +              Apply 4 signals during command phase 1:enable 0: disable
    +              8
    +              1
    +              read-write
    +            
    +            
    +              FASTRD_MODE
    +              This bit enable the bits: spi_mem_fread_qio, spi_mem_fread_dio, spi_mem_fread_qout and spi_mem_fread_dout. 1: enable 0: disable.
    +              13
    +              1
    +              read-write
    +            
    +            
    +              FREAD_DUAL
    +              In the read operations, read-data phase apply 2 signals. 1: enable 0: disable.
    +              14
    +              1
    +              read-write
    +            
    +            
    +              Q_POL
    +              The bit is used to set MISO line polarity, 1: high 0, low
    +              18
    +              1
    +              read-write
    +            
    +            
    +              D_POL
    +              The bit is used to set MOSI line polarity, 1: high 0, low
    +              19
    +              1
    +              read-write
    +            
    +            
    +              FREAD_QUAD
    +              In the read operations read-data phase apply 4 signals. 1: enable 0: disable.
    +              20
    +              1
    +              read-write
    +            
    +            
    +              WP
    +              Write protect signal output when SPI is idle.  1: output high, 0: output low.
    +              21
    +              1
    +              read-write
    +            
    +            
    +              FREAD_DIO
    +              In the read operations address phase and read-data phase apply 2 signals. 1: enable 0: disable.
    +              23
    +              1
    +              read-write
    +            
    +            
    +              FREAD_QIO
    +              In the read operations address phase and read-data phase apply 4 signals. 1: enable 0: disable.
    +              24
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CTRL1
    +          SPI0 control1 register.
    +          0xC
    +          0x20
    +          
    +            
    +              CLK_MODE
    +              SPI clock mode bits. 0: SPI clock is off when CS inactive 1: SPI clock is delayed one cycle after CS inactive 2: SPI clock is delayed two cycles after CS inactive 3: SPI clock is alwasy on.
    +              0
    +              2
    +              read-write
    +            
    +            
    +              RXFIFO_RST
    +              SPI0 RX FIFO reset signal.
    +              30
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          CTRL2
    +          SPI0 control2 register.
    +          0x10
    +          0x20
    +          0x00000021
    +          
    +            
    +              CS_SETUP_TIME
    +              (cycles-1) of prepare phase by spi clock this bits are combined with spi_mem_cs_setup bit.
    +              0
    +              5
    +              read-write
    +            
    +            
    +              CS_HOLD_TIME
    +              Spi cs signal is delayed to inactive by spi clock this bits are combined with spi_mem_cs_hold bit.
    +              5
    +              5
    +              read-write
    +            
    +            
    +              CS_HOLD_DELAY
    +              These bits are used to set the minimum CS high time tSHSL between SPI burst transfer when accesses to flash. tSHSL is (SPI_MEM_CS_HOLD_DELAY[5:0] + 1) MSPI core clock cycles.
    +              25
    +              6
    +              read-write
    +            
    +            
    +              SYNC_RESET
    +              The FSM will be reset.
    +              31
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          CLOCK
    +          SPI clock division control register.
    +          0x14
    +          0x20
    +          0x00030103
    +          
    +            
    +              CLKCNT_L
    +              In the master mode it must be equal to spi_mem_clkcnt_N.
    +              0
    +              8
    +              read-write
    +            
    +            
    +              CLKCNT_H
    +              In the master mode it must be floor((spi_mem_clkcnt_N+1)/2-1).
    +              8
    +              8
    +              read-write
    +            
    +            
    +              CLKCNT_N
    +              In the master mode it is the divider of spi_mem_clk. So spi_mem_clk frequency is system/(spi_mem_clkcnt_N+1)
    +              16
    +              8
    +              read-write
    +            
    +            
    +              CLK_EQU_SYSCLK
    +              Set this bit in 1-division mode.
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          USER
    +          SPI0 user register.
    +          0x18
    +          0x20
    +          
    +            
    +              CS_HOLD
    +              spi cs keep low when spi is in  done  phase. 1: enable 0: disable.
    +              6
    +              1
    +              read-write
    +            
    +            
    +              CS_SETUP
    +              spi cs is enable when spi is in  prepare  phase. 1: enable 0: disable.
    +              7
    +              1
    +              read-write
    +            
    +            
    +              CK_OUT_EDGE
    +              the bit combined with spi_mem_mosi_delay_mode bits to set mosi signal delay mode.
    +              9
    +              1
    +              read-write
    +            
    +            
    +              USR_DUMMY_IDLE
    +              spi clock is disable in dummy phase when the bit is enable.
    +              26
    +              1
    +              read-write
    +            
    +            
    +              USR_DUMMY
    +              This bit enable the dummy phase of an operation.
    +              29
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          USER1
    +          SPI0 user1 register.
    +          0x1C
    +          0x20
    +          0x5C000007
    +          
    +            
    +              USR_DUMMY_CYCLELEN
    +              The length in spi_mem_clk cycles of dummy phase. The register value shall be (cycle_num-1).
    +              0
    +              6
    +              read-write
    +            
    +            
    +              USR_ADDR_BITLEN
    +              The length in bits of address phase. The register value shall be (bit_num-1).
    +              26
    +              6
    +              read-write
    +            
    +          
    +        
    +        
    +          USER2
    +          SPI0 user2 register.
    +          0x20
    +          0x20
    +          0x70000000
    +          
    +            
    +              USR_COMMAND_VALUE
    +              The value of  command.
    +              0
    +              16
    +              read-write
    +            
    +            
    +              USR_COMMAND_BITLEN
    +              The length in bits of command phase. The register value shall be (bit_num-1)
    +              28
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          RD_STATUS
    +          SPI0 read control register.
    +          0x2C
    +          0x20
    +          
    +            
    +              WB_MODE
    +              Mode bits in the flash fast read mode  it is combined with spi_mem_fastrd_mode bit.
    +              16
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          MISC
    +          SPI0 misc register
    +          0x34
    +          0x20
    +          
    +            
    +              TRANS_END
    +              The bit is used to indicate the  spi0_mst_st controlled transmitting is done.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              TRANS_END_INT_ENA
    +              The bit is used to enable the interrupt of  spi0_mst_st controlled transmitting is done.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              CSPI_ST_TRANS_END
    +              The bit is used to indicate the  spi0_slv_st controlled transmitting is done.
    +              5
    +              1
    +              read-write
    +            
    +            
    +              CSPI_ST_TRANS_END_INT_ENA
    +              The bit is used to enable the interrupt of spi0_slv_st controlled transmitting is done.
    +              6
    +              1
    +              read-write
    +            
    +            
    +              CK_IDLE_EDGE
    +              1: spi clk line is high when idle     0: spi clk line is low when idle
    +              9
    +              1
    +              read-write
    +            
    +            
    +              CS_KEEP_ACTIVE
    +              spi cs line keep low when the bit is set.
    +              10
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CACHE_FCTRL
    +          SPI0 bit mode control register.
    +          0x3C
    +          0x20
    +          
    +            
    +              CACHE_REQ_EN
    +              For SPI0, Cache access enable, 1: enable, 0:disable.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              CACHE_USR_ADDR_4BYTE
    +              For SPI0,  cache  read flash with 4 bytes address, 1: enable, 0:disable.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              CACHE_FLASH_USR_CMD
    +              For SPI0,  cache  read flash for user define command, 1: enable, 0:disable.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              FDIN_DUAL
    +              For SPI0 flash, din phase apply 2 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_dio.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              FDOUT_DUAL
    +              For SPI0 flash, dout phase apply 2 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_dio.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              FADDR_DUAL
    +              For SPI0 flash, address phase apply 2 signals. 1: enable 0: disable.  The bit is the same with spi_mem_fread_dio.
    +              5
    +              1
    +              read-write
    +            
    +            
    +              FDIN_QUAD
    +              For SPI0 flash, din phase apply 4 signals. 1: enable 0: disable.  The bit is the same with spi_mem_fread_qio.
    +              6
    +              1
    +              read-write
    +            
    +            
    +              FDOUT_QUAD
    +              For SPI0 flash, dout phase apply 4 signals. 1: enable 0: disable.  The bit is the same with spi_mem_fread_qio.
    +              7
    +              1
    +              read-write
    +            
    +            
    +              FADDR_QUAD
    +              For SPI0 flash, address phase apply 4 signals. 1: enable 0: disable.  The bit is the same with spi_mem_fread_qio.
    +              8
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          FSM
    +          SPI0 FSM status register
    +          0x54
    +          0x20
    +          0x00000200
    +          
    +            
    +              CSPI_ST
    +              The current status of SPI0 slave FSM: spi0_slv_st. 0: idle state, 1: preparation state, 2: send command state, 3: send address state, 4: wait state, 5: read data state, 6:write data state, 7: done state, 8: read data end state.
    +              0
    +              4
    +              read-only
    +            
    +            
    +              EM_ST
    +              The current status of SPI0 master FSM: spi0_mst_st. 0: idle state, 1:EM_CACHE_GRANT , 2: program/erase suspend state, 3: SPI0 read data state, 4: wait cache/EDMA sent data is stored in SPI0 TX FIFO, 5: SPI0 write data state.
    +              4
    +              3
    +              read-only
    +            
    +            
    +              CSPI_LOCK_DELAY_TIME
    +              The lock delay time of SPI0/1 arbiter by spi0_slv_st, after PER is sent by SPI1.
    +              7
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          TIMING_CALI
    +          SPI0 timing calibration register
    +          0xA8
    +          0x20
    +          0x00000001
    +          
    +            
    +              TIMING_CLK_ENA
    +              The bit is used to enable timing adjust clock for all reading operations.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              TIMING_CALI
    +              The bit is used to enable timing auto-calibration for all reading operations.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              EXTRA_DUMMY_CYCLELEN
    +              add extra dummy spi clock cycle length for spi clock calibration.
    +              2
    +              3
    +              read-write
    +            
    +          
    +        
    +        
    +          DIN_MODE
    +          SPI0 input delay mode control register
    +          0xAC
    +          0x20
    +          
    +            
    +              DIN0_MODE
    +              the input signals are delayed by system clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb,  3: input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input with the spi_clk high edge,  6: input with the spi_clk low edge
    +              0
    +              2
    +              read-write
    +            
    +            
    +              DIN1_MODE
    +              the input signals are delayed by system clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb,  3: input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input with the spi_clk high edge,  6: input with the spi_clk low edge
    +              2
    +              2
    +              read-write
    +            
    +            
    +              DIN2_MODE
    +              the input signals are delayed by system clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb,  3: input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input with the spi_clk high edge,  6: input with the spi_clk low edge
    +              4
    +              2
    +              read-write
    +            
    +            
    +              DIN3_MODE
    +              the input signals are delayed by system clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb,  3: input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input with the spi_clk high edge,  6: input with the spi_clk low edge
    +              6
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          DIN_NUM
    +          SPI0 input delay number control register
    +          0xB0
    +          0x20
    +          
    +            
    +              DIN0_NUM
    +              the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...
    +              0
    +              2
    +              read-write
    +            
    +            
    +              DIN1_NUM
    +              the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...
    +              2
    +              2
    +              read-write
    +            
    +            
    +              DIN2_NUM
    +              the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...
    +              4
    +              2
    +              read-write
    +            
    +            
    +              DIN3_NUM
    +              the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...
    +              6
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          DOUT_MODE
    +          SPI0 output delay mode control register
    +          0xB4
    +          0x20
    +          
    +            
    +              DOUT0_MODE
    +              the output signals are delayed by system clock cycles, 0: output without delayed, 1: output with the posedge of clk_apb,2 output with the negedge of clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low edge
    +              0
    +              1
    +              read-write
    +            
    +            
    +              DOUT1_MODE
    +              the output signals are delayed by system clock cycles, 0: output without delayed, 1: output with the posedge of clk_apb,2 output with the negedge of clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low edge
    +              1
    +              1
    +              read-write
    +            
    +            
    +              DOUT2_MODE
    +              the output signals are delayed by system clock cycles, 0: output without delayed, 1: output with the posedge of clk_apb,2 output with the negedge of clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low edge
    +              2
    +              1
    +              read-write
    +            
    +            
    +              DOUT3_MODE
    +              the output signals are delayed by system clock cycles, 0: output without delayed, 1: output with the posedge of clk_apb,2 output with the negedge of clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low edge
    +              3
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CLOCK_GATE
    +          SPI0 clk_gate register
    +          0xDC
    +          0x20
    +          0x00000001
    +          
    +            
    +              CLK_EN
    +              Register clock gate enable signal. 1: Enable. 0: Disable.
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CORE_CLK_SEL
    +          SPI0 module clock select register
    +          0xE0
    +          0x20
    +          
    +            
    +              SPI01_CLK_SEL
    +              When the digital system clock selects PLL clock and the frequency of PLL clock is 480MHz, the value of reg_spi01_clk_sel:  0: SPI0/1 module clock (clk) is 80MHz. 1: SPI0/1 module clock (clk) is 120MHz.  2: SPI0/1 module clock (clk) 160MHz. 3: Not used. When the digital system clock selects PLL clock and the frequency of PLL clock is 320MHz, the value of reg_spi01_clk_sel:  0: SPI0/1 module clock (clk) is 80MHz. 1: SPI0/1 module clock (clk) is 80MHz.  2: SPI0/1 module clock (clk) 160MHz. 3: Not used.
    +              0
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          DATE
    +          Version control register
    +          0x3FC
    +          0x20
    +          0x02007130
    +          
    +            
    +              DATE
    +              SPI register version.
    +              0
    +              28
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      SPI1
    +      SPI (Serial Peripheral Interface) Controller
    +      SPI1
    +      0x60002000
    +      
    +        0x0
    +        0xA8
    +        registers
    +      
    +      
    +        
    +          CMD
    +          SPI1 memory command register
    +          0x0
    +          0x20
    +          
    +            
    +              SPI1_MST_ST
    +              The current status of SPI1 master FSM.
    +              0
    +              4
    +              read-only
    +            
    +            
    +              MSPI_ST
    +              The current status of SPI1 slave FSM: mspi_st. 0: idle state, 1: preparation state, 2: send command state, 3: send address state, 4: wait state, 5: read data state, 6:write data state, 7: done state, 8: read data end state.
    +              4
    +              4
    +              read-only
    +            
    +            
    +              FLASH_PE
    +              In user mode, it is set to indicate that program/erase operation will be triggered. The bit is combined with spi_mem_usr bit. The bit will be cleared once the operation done.1: enable 0: disable.
    +              17
    +              1
    +              read-write
    +            
    +            
    +              USR
    +              User define command enable.  An operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    +              18
    +              1
    +              read-write
    +            
    +            
    +              FLASH_HPM
    +              Drive Flash into high performance mode.  The bit will be cleared once the operation done.1: enable 0: disable.
    +              19
    +              1
    +              read-write
    +            
    +            
    +              FLASH_RES
    +              This bit combined with reg_resandres bit releases Flash from the power-down state or high performance mode and obtains the devices ID. The bit will be cleared once the operation done.1: enable 0: disable.
    +              20
    +              1
    +              read-write
    +            
    +            
    +              FLASH_DP
    +              Drive Flash into power down.  An operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    +              21
    +              1
    +              read-write
    +            
    +            
    +              FLASH_CE
    +              Chip erase enable. Chip erase operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    +              22
    +              1
    +              read-write
    +            
    +            
    +              FLASH_BE
    +              Block erase enable(32KB) .  Block erase operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    +              23
    +              1
    +              read-write
    +            
    +            
    +              FLASH_SE
    +              Sector erase enable(4KB). Sector erase operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    +              24
    +              1
    +              read-write
    +            
    +            
    +              FLASH_PP
    +              Page program enable(1 byte ~256 bytes data to be programmed). Page program operation  will be triggered when the bit is set. The bit will be cleared once the operation done .1: enable 0: disable.
    +              25
    +              1
    +              read-write
    +            
    +            
    +              FLASH_WRSR
    +              Write status register enable.   Write status operation  will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    +              26
    +              1
    +              read-write
    +            
    +            
    +              FLASH_RDSR
    +              Read status register-1.  Read status operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    +              27
    +              1
    +              read-write
    +            
    +            
    +              FLASH_RDID
    +              Read JEDEC ID . Read ID command will be sent when the bit is set. The bit will be cleared once the operation done. 1: enable 0: disable.
    +              28
    +              1
    +              read-write
    +            
    +            
    +              FLASH_WRDI
    +              Write flash disable. Write disable command will be sent when the bit is set. The bit will be cleared once the operation done. 1: enable 0: disable.
    +              29
    +              1
    +              read-write
    +            
    +            
    +              FLASH_WREN
    +              Write flash enable.  Write enable command will be sent when the bit is set. The bit will be cleared once the operation done. 1: enable 0: disable.
    +              30
    +              1
    +              read-write
    +            
    +            
    +              FLASH_READ
    +              Read flash enable. Read flash operation will be triggered when the bit is set. The bit will be cleared once the operation done. 1: enable 0: disable.
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          ADDR
    +          SPI1 address register
    +          0x4
    +          0x20
    +          
    +            
    +              USR_ADDR_VALUE
    +              In user mode, it is the memory address. other then the bit0-bit23 is the memory address, the bit24-bit31 are the byte length of a transfer.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          CTRL
    +          SPI1 control register.
    +          0x8
    +          0x20
    +          0x002CA000
    +          
    +            
    +              FDUMMY_OUT
    +              In the dummy phase the signal level of spi is output by the spi controller.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              FCMD_DUAL
    +              Apply 2 signals during command phase 1:enable 0: disable
    +              7
    +              1
    +              read-write
    +            
    +            
    +              FCMD_QUAD
    +              Apply 4 signals during command phase 1:enable 0: disable
    +              8
    +              1
    +              read-write
    +            
    +            
    +              FCS_CRC_EN
    +              For SPI1,  initialize crc32 module before writing encrypted data to flash. Active low.
    +              10
    +              1
    +              read-write
    +            
    +            
    +              TX_CRC_EN
    +              For SPI1,  enable crc32 when writing encrypted data to flash. 1: enable 0:disable
    +              11
    +              1
    +              read-write
    +            
    +            
    +              FASTRD_MODE
    +              This bit enable the bits: spi_mem_fread_qio, spi_mem_fread_dio, spi_mem_fread_qout and spi_mem_fread_dout. 1: enable 0: disable.
    +              13
    +              1
    +              read-write
    +            
    +            
    +              FREAD_DUAL
    +              In the read operations, read-data phase apply 2 signals. 1: enable 0: disable.
    +              14
    +              1
    +              read-write
    +            
    +            
    +              RESANDRES
    +              The Device ID is read out to SPI_MEM_RD_STATUS register,  this bit combine with spi_mem_flash_res bit. 1: enable 0: disable.
    +              15
    +              1
    +              read-write
    +            
    +            
    +              Q_POL
    +              The bit is used to set MISO line polarity, 1: high 0, low
    +              18
    +              1
    +              read-write
    +            
    +            
    +              D_POL
    +              The bit is used to set MOSI line polarity, 1: high 0, low
    +              19
    +              1
    +              read-write
    +            
    +            
    +              FREAD_QUAD
    +              In the read operations read-data phase apply 4 signals. 1: enable 0: disable.
    +              20
    +              1
    +              read-write
    +            
    +            
    +              WP
    +              Write protect signal output when SPI is idle.  1: output high, 0: output low.
    +              21
    +              1
    +              read-write
    +            
    +            
    +              WRSR_2B
    +              two bytes data will be written to status register when it is set. 1: enable 0: disable.
    +              22
    +              1
    +              read-write
    +            
    +            
    +              FREAD_DIO
    +              In the read operations address phase and read-data phase apply 2 signals. 1: enable 0: disable.
    +              23
    +              1
    +              read-write
    +            
    +            
    +              FREAD_QIO
    +              In the read operations address phase and read-data phase apply 4 signals. 1: enable 0: disable.
    +              24
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CTRL1
    +          SPI1 control1 register.
    +          0xC
    +          0x20
    +          0x00000FFC
    +          
    +            
    +              CLK_MODE
    +              SPI clock mode bits. 0: SPI clock is off when CS inactive 1: SPI clock is delayed one cycle after CS inactive 2: SPI clock is delayed two cycles after CS inactive 3: SPI clock is alwasy on.
    +              0
    +              2
    +              read-write
    +            
    +            
    +              CS_HOLD_DLY_RES
    +              After RES/DP/HPM command is sent, SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 512) SPI_CLK cycles.
    +              2
    +              10
    +              read-write
    +            
    +          
    +        
    +        
    +          CTRL2
    +          SPI1 control2 register.
    +          0x10
    +          0x20
    +          
    +            
    +              SYNC_RESET
    +              The FSM will be reset.
    +              31
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          CLOCK
    +          SPI1 clock division control register.
    +          0x14
    +          0x20
    +          0x00030103
    +          
    +            
    +              CLKCNT_L
    +              In the master mode it must be equal to spi_mem_clkcnt_N.
    +              0
    +              8
    +              read-write
    +            
    +            
    +              CLKCNT_H
    +              In the master mode it must be floor((spi_mem_clkcnt_N+1)/2-1).
    +              8
    +              8
    +              read-write
    +            
    +            
    +              CLKCNT_N
    +              In the master mode it is the divider of spi_mem_clk. So spi_mem_clk frequency is system/(spi_mem_clkcnt_N+1)
    +              16
    +              8
    +              read-write
    +            
    +            
    +              CLK_EQU_SYSCLK
    +              reserved
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          USER
    +          SPI1 user register.
    +          0x18
    +          0x20
    +          0x80000000
    +          
    +            
    +              CK_OUT_EDGE
    +              the bit combined with spi_mem_mosi_delay_mode bits to set mosi signal delay mode.
    +              9
    +              1
    +              read-write
    +            
    +            
    +              FWRITE_DUAL
    +              In the write operations read-data phase apply 2 signals
    +              12
    +              1
    +              read-write
    +            
    +            
    +              FWRITE_QUAD
    +              In the write operations read-data phase apply 4 signals
    +              13
    +              1
    +              read-write
    +            
    +            
    +              FWRITE_DIO
    +              In the write operations address phase and read-data phase apply 2 signals.
    +              14
    +              1
    +              read-write
    +            
    +            
    +              FWRITE_QIO
    +              In the write operations address phase and read-data phase apply 4 signals.
    +              15
    +              1
    +              read-write
    +            
    +            
    +              USR_MISO_HIGHPART
    +              read-data phase only access to high-part of the buffer spi_mem_w8~spi_mem_w15. 1: enable 0: disable.
    +              24
    +              1
    +              read-write
    +            
    +            
    +              USR_MOSI_HIGHPART
    +              write-data phase only access to high-part of the buffer spi_mem_w8~spi_mem_w15. 1: enable 0: disable.
    +              25
    +              1
    +              read-write
    +            
    +            
    +              USR_DUMMY_IDLE
    +              SPI clock is disable in dummy phase when the bit is enable.
    +              26
    +              1
    +              read-write
    +            
    +            
    +              USR_MOSI
    +              This bit enable the write-data phase of an operation.
    +              27
    +              1
    +              read-write
    +            
    +            
    +              USR_MISO
    +              This bit enable the read-data phase of an operation.
    +              28
    +              1
    +              read-write
    +            
    +            
    +              USR_DUMMY
    +              This bit enable the dummy phase of an operation.
    +              29
    +              1
    +              read-write
    +            
    +            
    +              USR_ADDR
    +              This bit enable the address phase of an operation.
    +              30
    +              1
    +              read-write
    +            
    +            
    +              USR_COMMAND
    +              This bit enable the command phase of an operation.
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          USER1
    +          SPI1 user1 register.
    +          0x1C
    +          0x20
    +          0x5C000007
    +          
    +            
    +              USR_DUMMY_CYCLELEN
    +              The length in spi_mem_clk cycles of dummy phase. The register value shall be (cycle_num-1).
    +              0
    +              6
    +              read-write
    +            
    +            
    +              USR_ADDR_BITLEN
    +              The length in bits of address phase. The register value shall be (bit_num-1).
    +              26
    +              6
    +              read-write
    +            
    +          
    +        
    +        
    +          USER2
    +          SPI1 user2 register.
    +          0x20
    +          0x20
    +          0x70000000
    +          
    +            
    +              USR_COMMAND_VALUE
    +              The value of  command.
    +              0
    +              16
    +              read-write
    +            
    +            
    +              USR_COMMAND_BITLEN
    +              The length in bits of command phase. The register value shall be (bit_num-1)
    +              28
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          MOSI_DLEN
    +          SPI1 send data bit length control register.
    +          0x24
    +          0x20
    +          
    +            
    +              USR_MOSI_DBITLEN
    +              The length in bits of write-data. The register value shall be (bit_num-1).
    +              0
    +              10
    +              read-write
    +            
    +          
    +        
    +        
    +          MISO_DLEN
    +          SPI1 receive data bit length control register.
    +          0x28
    +          0x20
    +          
    +            
    +              USR_MISO_DBITLEN
    +              The length in bits of  read-data. The register value shall be (bit_num-1).
    +              0
    +              10
    +              read-write
    +            
    +          
    +        
    +        
    +          RD_STATUS
    +          SPI1 status register.
    +          0x2C
    +          0x20
    +          
    +            
    +              STATUS
    +              The value is stored when set spi_mem_flash_rdsr bit and spi_mem_flash_res bit.
    +              0
    +              16
    +              read-write
    +            
    +            
    +              WB_MODE
    +              Mode bits in the flash fast read mode  it is combined with spi_mem_fastrd_mode bit.
    +              16
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          MISC
    +          SPI1 misc register
    +          0x34
    +          0x20
    +          0x00000002
    +          
    +            
    +              CS0_DIS
    +              SPI_CS0 pin enable, 1: disable SPI_CS0, 0: SPI_CS0 pin is active to select SPI device, such as flash, external RAM and so on.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              CS1_DIS
    +              SPI_CS1 pin enable, 1: disable SPI_CS1, 0: SPI_CS1 pin is active to select SPI device, such as flash, external RAM and so on.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              CK_IDLE_EDGE
    +              1: spi clk line is high when idle     0: spi clk line is low when idle
    +              9
    +              1
    +              read-write
    +            
    +            
    +              CS_KEEP_ACTIVE
    +              spi cs line keep low when the bit is set.
    +              10
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          TX_CRC
    +          SPI1 TX CRC data register.
    +          0x38
    +          0x20
    +          0xFFFFFFFF
    +          
    +            
    +              DATA
    +              For SPI1, the value of crc32.
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          CACHE_FCTRL
    +          SPI1 bit mode control register.
    +          0x3C
    +          0x20
    +          
    +            
    +              CACHE_USR_ADDR_4BYTE
    +              For SPI1,  cache  read flash with 4 bytes address, 1: enable, 0:disable.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              FDIN_DUAL
    +              For SPI1, din phase apply 2 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_dio.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              FDOUT_DUAL
    +              For SPI1, dout phase apply 2 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_dio.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              FADDR_DUAL
    +              For SPI1, address phase apply 2 signals. 1: enable 0: disable.  The bit is the same with spi_mem_fread_dio.
    +              5
    +              1
    +              read-write
    +            
    +            
    +              FDIN_QUAD
    +              For SPI1, din phase apply 4 signals. 1: enable 0: disable.  The bit is the same with spi_mem_fread_qio.
    +              6
    +              1
    +              read-write
    +            
    +            
    +              FDOUT_QUAD
    +              For SPI1, dout phase apply 4 signals. 1: enable 0: disable.  The bit is the same with spi_mem_fread_qio.
    +              7
    +              1
    +              read-write
    +            
    +            
    +              FADDR_QUAD
    +              For SPI1, address phase apply 4 signals. 1: enable 0: disable.  The bit is the same with spi_mem_fread_qio.
    +              8
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          W0
    +          SPI1 memory data buffer0
    +          0x58
    +          0x20
    +          
    +            
    +              BUF0
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W1
    +          SPI1 memory data buffer1
    +          0x5C
    +          0x20
    +          
    +            
    +              BUF1
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W2
    +          SPI1 memory data buffer2
    +          0x60
    +          0x20
    +          
    +            
    +              BUF2
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W3
    +          SPI1 memory data buffer3
    +          0x64
    +          0x20
    +          
    +            
    +              BUF3
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W4
    +          SPI1 memory data buffer4
    +          0x68
    +          0x20
    +          
    +            
    +              BUF4
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W5
    +          SPI1 memory data buffer5
    +          0x6C
    +          0x20
    +          
    +            
    +              BUF5
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W6
    +          SPI1 memory data buffer6
    +          0x70
    +          0x20
    +          
    +            
    +              BUF6
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W7
    +          SPI1 memory data buffer7
    +          0x74
    +          0x20
    +          
    +            
    +              BUF7
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W8
    +          SPI1 memory data buffer8
    +          0x78
    +          0x20
    +          
    +            
    +              BUF8
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W9
    +          SPI1 memory data buffer9
    +          0x7C
    +          0x20
    +          
    +            
    +              BUF9
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W10
    +          SPI1 memory data buffer10
    +          0x80
    +          0x20
    +          
    +            
    +              BUF10
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W11
    +          SPI1 memory data buffer11
    +          0x84
    +          0x20
    +          
    +            
    +              BUF11
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W12
    +          SPI1 memory data buffer12
    +          0x88
    +          0x20
    +          
    +            
    +              BUF12
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W13
    +          SPI1 memory data buffer13
    +          0x8C
    +          0x20
    +          
    +            
    +              BUF13
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W14
    +          SPI1 memory data buffer14
    +          0x90
    +          0x20
    +          
    +            
    +              BUF14
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W15
    +          SPI1 memory data buffer15
    +          0x94
    +          0x20
    +          
    +            
    +              BUF15
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          FLASH_WAITI_CTRL
    +          SPI1 wait idle control register
    +          0x98
    +          0x20
    +          0x00000014
    +          
    +            
    +              WAITI_DUMMY
    +              The dummy phase enable when wait flash idle (RDSR)
    +              1
    +              1
    +              read-write
    +            
    +            
    +              WAITI_CMD
    +              The command to wait flash idle(RDSR).
    +              2
    +              8
    +              read-write
    +            
    +            
    +              WAITI_DUMMY_CYCLELEN
    +              The dummy cycle length when wait flash idle(RDSR).
    +              10
    +              6
    +              read-write
    +            
    +          
    +        
    +        
    +          FLASH_SUS_CTRL
    +          SPI1 flash suspend control register
    +          0x9C
    +          0x20
    +          0x08002000
    +          
    +            
    +              FLASH_PER
    +              program erase resume bit, program erase suspend operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              FLASH_PES
    +              program erase suspend bit, program erase suspend operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              FLASH_PER_WAIT_EN
    +              1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4 or *128) SPI_CLK cycles after program erase resume command is sent. 0: SPI1 does not wait after program erase resume command is sent.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              FLASH_PES_WAIT_EN
    +              1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4 or *128) SPI_CLK cycles after program erase suspend command is sent. 0: SPI1 does not wait after program erase suspend command is sent.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              PES_PER_EN
    +              Set this bit to enable PES end triggers PER transfer option. If this bit is 0, application should send PER after PES is done.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              FLASH_PES_EN
    +              Set this bit to enable Auto-suspending function.
    +              5
    +              1
    +              read-write
    +            
    +            
    +              PESR_END_MSK
    +              The mask value when check SUS/SUS1/SUS2 status bit. If the read status value is status_in[15:0](only status_in[7:0] is valid when only one byte of data is read out, status_in[15:0] is valid when two bytes of data are read out), SUS/SUS1/SUS2 = status_in[15:0]^ SPI_MEM_PESR_END_MSK[15:0].
    +              6
    +              16
    +              read-write
    +            
    +            
    +              RD_SUS_2B
    +              1: Read two bytes when check flash SUS/SUS1/SUS2 status bit. 0:  Read one byte when check flash SUS/SUS1/SUS2 status bit
    +              22
    +              1
    +              read-write
    +            
    +            
    +              PER_END_EN
    +              1: Both WIP and SUS/SUS1/SUS2 bits should be checked to insure the resume status of flash. 0: Only need to check WIP is 0.
    +              23
    +              1
    +              read-write
    +            
    +            
    +              PES_END_EN
    +              1: Both WIP and SUS/SUS1/SUS2 bits should be checked to insure the suspend status of flash. 0: Only need to check WIP is 0.
    +              24
    +              1
    +              read-write
    +            
    +            
    +              SUS_TIMEOUT_CNT
    +              When SPI1 checks SUS/SUS1/SUS2 bits fail for SPI_MEM_SUS_TIMEOUT_CNT[6:0] times, it will be treated as check pass.
    +              25
    +              7
    +              read-write
    +            
    +          
    +        
    +        
    +          FLASH_SUS_CMD
    +          SPI1 flash suspend command register
    +          0xA0
    +          0x20
    +          0x0005757A
    +          
    +            
    +              FLASH_PER_COMMAND
    +              Program/Erase resume command.
    +              0
    +              8
    +              read-write
    +            
    +            
    +              FLASH_PES_COMMAND
    +              Program/Erase suspend command.
    +              8
    +              8
    +              read-write
    +            
    +            
    +              WAIT_PESR_COMMAND
    +              Flash SUS/SUS1/SUS2 status bit read command. The command should be sent when SUS/SUS1/SUS2 bit should be checked to insure the suspend or resume status of flash.
    +              16
    +              16
    +              read-write
    +            
    +          
    +        
    +        
    +          SUS_STATUS
    +          SPI1 flash suspend status register
    +          0xA4
    +          0x20
    +          
    +            
    +              FLASH_SUS
    +              The status of flash suspend, only used in SPI1.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              WAIT_PESR_CMD_2B
    +              1: SPI1 sends out SPI_MEM_WAIT_PESR_COMMAND[15:0] to check SUS/SUS1/SUS2 bit. 0: SPI1 sends out SPI_MEM_WAIT_PESR_COMMAND[7:0] to check SUS/SUS1/SUS2 bit.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              FLASH_HPM_DLY_128
    +              1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after HPM command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after HPM command is sent.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              FLASH_RES_DLY_128
    +              1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after RES command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after RES command is sent.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              FLASH_DP_DLY_128
    +              1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after DP command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after DP command is sent.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              FLASH_PER_DLY_128
    +              Valid when SPI_MEM_FLASH_PER_WAIT_EN is 1. 1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after PER command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after PER command is sent.
    +              5
    +              1
    +              read-write
    +            
    +            
    +              FLASH_PES_DLY_128
    +              Valid when SPI_MEM_FLASH_PES_WAIT_EN is 1. 1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after PES command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after PES command is sent.
    +              6
    +              1
    +              read-write
    +            
    +            
    +              SPI0_LOCK_EN
    +              1: Enable SPI0 lock SPI0/1 arbiter option. 0: Disable it.
    +              7
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          TIMING_CALI
    +          SPI1 timing control register
    +          0xA8
    +          0x20
    +          
    +            
    +              TIMING_CALI
    +              The bit is used to enable timing auto-calibration for all reading operations.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              EXTRA_DUMMY_CYCLELEN
    +              add extra dummy spi clock cycle length for spi clock calibration.
    +              2
    +              3
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_ENA
    +          SPI1 interrupt enable register
    +          0xC0
    +          0x20
    +          
    +            
    +              PER_END_INT_ENA
    +              The enable bit for SPI_MEM_PER_END_INT interrupt.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              PES_END_INT_ENA
    +              The enable bit for SPI_MEM_PES_END_INT interrupt.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              WPE_END_INT_ENA
    +              The enable bit for SPI_MEM_WPE_END_INT interrupt.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              SLV_ST_END_INT_ENA
    +              The enable bit for SPI_MEM_SLV_ST_END_INT interrupt.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              MST_ST_END_INT_ENA
    +              The enable bit for SPI_MEM_MST_ST_END_INT interrupt.
    +              4
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_CLR
    +          SPI1 interrupt clear register
    +          0xC4
    +          0x20
    +          
    +            
    +              PER_END_INT_CLR
    +              The clear bit for SPI_MEM_PER_END_INT interrupt.
    +              0
    +              1
    +              write-only
    +            
    +            
    +              PES_END_INT_CLR
    +              The clear bit for SPI_MEM_PES_END_INT interrupt.
    +              1
    +              1
    +              write-only
    +            
    +            
    +              WPE_END_INT_CLR
    +              The clear bit for SPI_MEM_WPE_END_INT interrupt.
    +              2
    +              1
    +              write-only
    +            
    +            
    +              SLV_ST_END_INT_CLR
    +              The clear bit for SPI_MEM_SLV_ST_END_INT interrupt.
    +              3
    +              1
    +              write-only
    +            
    +            
    +              MST_ST_END_INT_CLR
    +              The clear bit for SPI_MEM_MST_ST_END_INT interrupt.
    +              4
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          INT_RAW
    +          SPI1 interrupt raw register
    +          0xC8
    +          0x20
    +          
    +            
    +              PER_END_INT_RAW
    +              The raw bit for SPI_MEM_PER_END_INT interrupt. 1: Triggered when Auto Resume command (0x7A) is sent and flash is resumed. 0: Others.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              PES_END_INT_RAW
    +              The raw bit for SPI_MEM_PES_END_INT interrupt.1: Triggered when Auto Suspend command (0x75) is sent and flash is suspended. 0: Others.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              WPE_END_INT_RAW
    +              The raw bit for SPI_MEM_WPE_END_INT interrupt. 1: Triggered when WRSR/PP/SE/BE/CE is sent and flash is already idle. 0: Others.
    +              2
    +              1
    +              read-only
    +            
    +            
    +              SLV_ST_END_INT_RAW
    +              The raw bit for SPI_MEM_SLV_ST_END_INT interrupt. 1: Triggered when spi1_slv_st is changed from non idle state to idle state. It means that SPI_CS raises high. 0: Others
    +              3
    +              1
    +              read-only
    +            
    +            
    +              MST_ST_END_INT_RAW
    +              The raw bit for SPI_MEM_MST_ST_END_INT interrupt. 1: Triggered when spi1_mst_st is changed from non idle state to idle state. 0: Others.
    +              4
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_ST
    +          SPI1 interrupt status register
    +          0xCC
    +          0x20
    +          
    +            
    +              PER_END_INT_ST
    +              The status bit for SPI_MEM_PER_END_INT interrupt.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              PES_END_INT_ST
    +              The status bit for SPI_MEM_PES_END_INT interrupt.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              WPE_END_INT_ST
    +              The status bit for SPI_MEM_WPE_END_INT interrupt.
    +              2
    +              1
    +              read-only
    +            
    +            
    +              SLV_ST_END_INT_ST
    +              The status bit for SPI_MEM_SLV_ST_END_INT interrupt.
    +              3
    +              1
    +              read-only
    +            
    +            
    +              MST_ST_END_INT_ST
    +              The status bit for SPI_MEM_MST_ST_END_INT interrupt.
    +              4
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          CLOCK_GATE
    +          SPI1 clk_gate register
    +          0xDC
    +          0x20
    +          0x00000001
    +          
    +            
    +              CLK_EN
    +              Register clock gate enable signal. 1: Enable. 0: Disable.
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DATE
    +          Version control register
    +          0x3FC
    +          0x20
    +          0x02007170
    +          
    +            
    +              DATE
    +              Version control register
    +              0
    +              28
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      SPI2
    +      SPI (Serial Peripheral Interface) Controller
    +      SPI2
    +      0x60024000
    +      
    +        0x0
    +        0x94
    +        registers
    +      
    +      
    +        SPI2
    +        19
    +      
    +      
    +        
    +          CMD
    +          Command control register
    +          0x0
    +          0x20
    +          
    +            
    +              CONF_BITLEN
    +              Define the APB cycles of  SPI_CONF state. Can be configured in CONF state.
    +              0
    +              18
    +              read-write
    +            
    +            
    +              UPDATE
    +              Set this bit to synchronize SPI registers from APB clock domain into SPI module clock domain, which is only used in SPI master mode.
    +              23
    +              1
    +              read-write
    +            
    +            
    +              USR
    +              User define command enable.  An operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable. Can not be changed by CONF_buf.
    +              24
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          ADDR
    +          Address value register
    +          0x4
    +          0x20
    +          
    +            
    +              USR_ADDR_VALUE
    +              Address to slave. Can be configured in CONF state.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          CTRL
    +          SPI control register
    +          0x8
    +          0x20
    +          0x003C0000
    +          
    +            
    +              DUMMY_OUT
    +              In the dummy phase the signal level of spi is output by the spi controller. Can be configured in CONF state.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              FADDR_DUAL
    +              Apply 2 signals during addr phase 1:enable 0: disable. Can be configured in CONF state.
    +              5
    +              1
    +              read-write
    +            
    +            
    +              FADDR_QUAD
    +              Apply 4 signals during addr phase 1:enable 0: disable. Can be configured in CONF state.
    +              6
    +              1
    +              read-write
    +            
    +            
    +              FCMD_DUAL
    +              Apply 2 signals during command phase 1:enable 0: disable. Can be configured in CONF state.
    +              8
    +              1
    +              read-write
    +            
    +            
    +              FCMD_QUAD
    +              Apply 4 signals during command phase 1:enable 0: disable. Can be configured in CONF state.
    +              9
    +              1
    +              read-write
    +            
    +            
    +              FREAD_DUAL
    +              In the read operations, read-data phase apply 2 signals. 1: enable 0: disable. Can be configured in CONF state.
    +              14
    +              1
    +              read-write
    +            
    +            
    +              FREAD_QUAD
    +              In the read operations read-data phase apply 4 signals. 1: enable 0: disable.  Can be configured in CONF state.
    +              15
    +              1
    +              read-write
    +            
    +            
    +              Q_POL
    +              The bit is used to set MISO line polarity, 1: high 0, low. Can be configured in CONF state.
    +              18
    +              1
    +              read-write
    +            
    +            
    +              D_POL
    +              The bit is used to set MOSI line polarity, 1: high 0, low. Can be configured in CONF state.
    +              19
    +              1
    +              read-write
    +            
    +            
    +              HOLD_POL
    +              SPI_HOLD output value when SPI is idle. 1: output high, 0: output low. Can be configured in CONF state.
    +              20
    +              1
    +              read-write
    +            
    +            
    +              WP_POL
    +              Write protect signal output when SPI is idle.  1: output high, 0: output low.  Can be configured in CONF state.
    +              21
    +              1
    +              read-write
    +            
    +            
    +              RD_BIT_ORDER
    +              In read-data (MISO) phase 1: LSB first 0: MSB first. Can be configured in CONF state.
    +              25
    +              1
    +              read-write
    +            
    +            
    +              WR_BIT_ORDER
    +              In command address write-data (MOSI) phases 1: LSB firs 0: MSB first. Can be configured in CONF state.
    +              26
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CLOCK
    +          SPI clock control register
    +          0xC
    +          0x20
    +          0x80003043
    +          
    +            
    +              CLKCNT_L
    +              In the master mode it must be equal to spi_clkcnt_N. In the slave mode it must be 0. Can be configured in CONF state.
    +              0
    +              6
    +              read-write
    +            
    +            
    +              CLKCNT_H
    +              In the master mode it must be floor((spi_clkcnt_N+1)/2-1). In the slave mode it must be 0. Can be configured in CONF state.
    +              6
    +              6
    +              read-write
    +            
    +            
    +              CLKCNT_N
    +              In the master mode it is the divider of spi_clk. So spi_clk frequency is system/(spi_clkdiv_pre+1)/(spi_clkcnt_N+1). Can be configured in CONF state.
    +              12
    +              6
    +              read-write
    +            
    +            
    +              CLKDIV_PRE
    +              In the master mode it is pre-divider of spi_clk.  Can be configured in CONF state.
    +              18
    +              4
    +              read-write
    +            
    +            
    +              CLK_EQU_SYSCLK
    +              In the master mode 1: spi_clk is eqaul to system 0: spi_clk is divided from system clock. Can be configured in CONF state.
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          USER
    +          SPI USER control register
    +          0x10
    +          0x20
    +          0x800000C0
    +          
    +            
    +              DOUTDIN
    +              Set the bit to enable full duplex communication. 1: enable 0: disable. Can be configured in CONF state.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              QPI_MODE
    +              Both for master mode and slave mode. 1: spi controller is in QPI mode. 0: others. Can be configured in CONF state.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              TSCK_I_EDGE
    +              In the slave mode, this bit can be used to change the polarity of tsck. 0: tsck = spi_ck_i. 1:tsck = !spi_ck_i.
    +              5
    +              1
    +              read-write
    +            
    +            
    +              CS_HOLD
    +              spi cs keep low when spi is in  done  phase. 1: enable 0: disable. Can be configured in CONF state.
    +              6
    +              1
    +              read-write
    +            
    +            
    +              CS_SETUP
    +              spi cs is enable when spi is in  prepare  phase. 1: enable 0: disable. Can be configured in CONF state.
    +              7
    +              1
    +              read-write
    +            
    +            
    +              RSCK_I_EDGE
    +              In the slave mode, this bit can be used to change the polarity of rsck. 0: rsck = !spi_ck_i. 1:rsck = spi_ck_i.
    +              8
    +              1
    +              read-write
    +            
    +            
    +              CK_OUT_EDGE
    +              the bit combined with spi_mosi_delay_mode bits to set mosi signal delay mode. Can be configured in CONF state.
    +              9
    +              1
    +              read-write
    +            
    +            
    +              FWRITE_DUAL
    +              In the write operations read-data phase apply 2 signals. Can be configured in CONF state.
    +              12
    +              1
    +              read-write
    +            
    +            
    +              FWRITE_QUAD
    +              In the write operations read-data phase apply 4 signals. Can be configured in CONF state.
    +              13
    +              1
    +              read-write
    +            
    +            
    +              USR_CONF_NXT
    +              1: Enable the DMA CONF phase of next seg-trans operation, which means seg-trans will continue. 0: The seg-trans will end after the current SPI seg-trans or this is not seg-trans mode. Can be configured in CONF state.
    +              15
    +              1
    +              read-write
    +            
    +            
    +              SIO
    +              Set the bit to enable 3-line half duplex communication mosi and miso signals share the same pin. 1: enable 0: disable. Can be configured in CONF state.
    +              17
    +              1
    +              read-write
    +            
    +            
    +              USR_MISO_HIGHPART
    +              read-data phase only access to high-part of the buffer spi_w8~spi_w15. 1: enable 0: disable. Can be configured in CONF state.
    +              24
    +              1
    +              read-write
    +            
    +            
    +              USR_MOSI_HIGHPART
    +              write-data phase only access to high-part of the buffer spi_w8~spi_w15. 1: enable 0: disable.  Can be configured in CONF state.
    +              25
    +              1
    +              read-write
    +            
    +            
    +              USR_DUMMY_IDLE
    +              spi clock is disable in dummy phase when the bit is enable. Can be configured in CONF state.
    +              26
    +              1
    +              read-write
    +            
    +            
    +              USR_MOSI
    +              This bit enable the write-data phase of an operation. Can be configured in CONF state.
    +              27
    +              1
    +              read-write
    +            
    +            
    +              USR_MISO
    +              This bit enable the read-data phase of an operation. Can be configured in CONF state.
    +              28
    +              1
    +              read-write
    +            
    +            
    +              USR_DUMMY
    +              This bit enable the dummy phase of an operation. Can be configured in CONF state.
    +              29
    +              1
    +              read-write
    +            
    +            
    +              USR_ADDR
    +              This bit enable the address phase of an operation. Can be configured in CONF state.
    +              30
    +              1
    +              read-write
    +            
    +            
    +              USR_COMMAND
    +              This bit enable the command phase of an operation. Can be configured in CONF state.
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          USER1
    +          SPI USER control register 1
    +          0x14
    +          0x20
    +          0xB8410007
    +          
    +            
    +              USR_DUMMY_CYCLELEN
    +              The length in spi_clk cycles of dummy phase. The register value shall be (cycle_num-1). Can be configured in CONF state.
    +              0
    +              8
    +              read-write
    +            
    +            
    +              MST_WFULL_ERR_END_EN
    +              1: SPI transfer is ended when SPI RX AFIFO wfull error is valid in GP-SPI master FD/HD-mode. 0: SPI transfer is not ended when SPI RX AFIFO wfull error is valid in GP-SPI master FD/HD-mode.
    +              16
    +              1
    +              read-write
    +            
    +            
    +              CS_SETUP_TIME
    +              (cycles+1) of prepare phase by spi clock this bits are combined with spi_cs_setup bit. Can be configured in CONF state.
    +              17
    +              5
    +              read-write
    +            
    +            
    +              CS_HOLD_TIME
    +              delay cycles of cs pin by spi clock this bits are combined with spi_cs_hold bit. Can be configured in CONF state.
    +              22
    +              5
    +              read-write
    +            
    +            
    +              USR_ADDR_BITLEN
    +              The length in bits of address phase. The register value shall be (bit_num-1). Can be configured in CONF state.
    +              27
    +              5
    +              read-write
    +            
    +          
    +        
    +        
    +          USER2
    +          SPI USER control register 2
    +          0x18
    +          0x20
    +          0x78000000
    +          
    +            
    +              USR_COMMAND_VALUE
    +              The value of  command. Can be configured in CONF state.
    +              0
    +              16
    +              read-write
    +            
    +            
    +              MST_REMPTY_ERR_END_EN
    +              1: SPI transfer is ended when SPI TX AFIFO read empty error is valid in GP-SPI master FD/HD-mode. 0: SPI transfer is not ended when SPI TX AFIFO read empty error is valid in GP-SPI master FD/HD-mode.
    +              27
    +              1
    +              read-write
    +            
    +            
    +              USR_COMMAND_BITLEN
    +              The length in bits of command phase. The register value shall be (bit_num-1). Can be configured in CONF state.
    +              28
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          MS_DLEN
    +          SPI data bit length control register
    +          0x1C
    +          0x20
    +          
    +            
    +              MS_DATA_BITLEN
    +              The value of these bits is the configured SPI transmission data bit length in master mode DMA controlled transfer or CPU controlled transfer. The value is also the configured bit length in slave mode DMA RX controlled transfer. The register value shall be (bit_num-1). Can be configured in CONF state.
    +              0
    +              18
    +              read-write
    +            
    +          
    +        
    +        
    +          MISC
    +          SPI misc register
    +          0x20
    +          0x20
    +          0x0000003E
    +          
    +            
    +              CS0_DIS
    +              SPI CS0 pin enable, 1: disable CS0, 0: spi_cs0 signal is from/to CS0 pin. Can be configured in CONF state.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              CS1_DIS
    +              SPI CS1 pin enable, 1: disable CS1, 0: spi_cs1 signal is from/to CS1 pin. Can be configured in CONF state.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              CS2_DIS
    +              SPI CS2 pin enable, 1: disable CS2, 0: spi_cs2 signal is from/to CS2 pin. Can be configured in CONF state.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              CS3_DIS
    +              SPI CS3 pin enable, 1: disable CS3, 0: spi_cs3 signal is from/to CS3 pin. Can be configured in CONF state.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              CS4_DIS
    +              SPI CS4 pin enable, 1: disable CS4, 0: spi_cs4 signal is from/to CS4 pin. Can be configured in CONF state.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              CS5_DIS
    +              SPI CS5 pin enable, 1: disable CS5, 0: spi_cs5 signal is from/to CS5 pin. Can be configured in CONF state.
    +              5
    +              1
    +              read-write
    +            
    +            
    +              CK_DIS
    +              1: spi clk out disable,  0: spi clk out enable. Can be configured in CONF state.
    +              6
    +              1
    +              read-write
    +            
    +            
    +              MASTER_CS_POL
    +              In the master mode the bits are the polarity of spi cs line, the value is equivalent to spi_cs ^ spi_master_cs_pol. Can be configured in CONF state.
    +              7
    +              6
    +              read-write
    +            
    +            
    +              SLAVE_CS_POL
    +              spi slave input cs polarity select. 1: inv  0: not change. Can be configured in CONF state.
    +              23
    +              1
    +              read-write
    +            
    +            
    +              CK_IDLE_EDGE
    +              1: spi clk line is high when idle     0: spi clk line is low when idle. Can be configured in CONF state.
    +              29
    +              1
    +              read-write
    +            
    +            
    +              CS_KEEP_ACTIVE
    +              spi cs line keep low when the bit is set. Can be configured in CONF state.
    +              30
    +              1
    +              read-write
    +            
    +            
    +              QUAD_DIN_PIN_SWAP
    +              1:  spi quad input swap enable  0:  spi quad input swap disable. Can be configured in CONF state.
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DIN_MODE
    +          SPI input delay mode configuration
    +          0x24
    +          0x20
    +          
    +            
    +              DIN0_MODE
    +              the input signals are delayed by SPI module clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the spi_clk. Can be configured in CONF state.
    +              0
    +              2
    +              read-write
    +            
    +            
    +              DIN1_MODE
    +              the input signals are delayed by SPI module clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the spi_clk. Can be configured in CONF state.
    +              2
    +              2
    +              read-write
    +            
    +            
    +              DIN2_MODE
    +              the input signals are delayed by SPI module clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the spi_clk. Can be configured in CONF state.
    +              4
    +              2
    +              read-write
    +            
    +            
    +              DIN3_MODE
    +              the input signals are delayed by SPI module clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the spi_clk. Can be configured in CONF state.
    +              6
    +              2
    +              read-write
    +            
    +            
    +              TIMING_HCLK_ACTIVE
    +              1:enable hclk in SPI input timing module.  0: disable it. Can be configured in CONF state.
    +              16
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DIN_NUM
    +          SPI input delay number configuration
    +          0x28
    +          0x20
    +          
    +            
    +              DIN0_NUM
    +              the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...  Can be configured in CONF state.
    +              0
    +              2
    +              read-write
    +            
    +            
    +              DIN1_NUM
    +              the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...  Can be configured in CONF state.
    +              2
    +              2
    +              read-write
    +            
    +            
    +              DIN2_NUM
    +              the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...  Can be configured in CONF state.
    +              4
    +              2
    +              read-write
    +            
    +            
    +              DIN3_NUM
    +              the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...  Can be configured in CONF state.
    +              6
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          DOUT_MODE
    +          SPI output delay mode configuration
    +          0x2C
    +          0x20
    +          
    +            
    +              DOUT0_MODE
    +              The output signal 0 is delayed by the SPI module clock, 0: output without delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can be configured in CONF state.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              DOUT1_MODE
    +              The output signal 1 is delayed by the SPI module clock, 0: output without delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can be configured in CONF state.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              DOUT2_MODE
    +              The output signal 2 is delayed by the SPI module clock, 0: output without delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can be configured in CONF state.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              DOUT3_MODE
    +              The output signal 3 is delayed by the SPI module clock, 0: output without delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can be configured in CONF state.
    +              3
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_CONF
    +          SPI DMA control register
    +          0x30
    +          0x20
    +          
    +            
    +              DMA_SLV_SEG_TRANS_EN
    +              Enable dma segment transfer in spi dma half slave mode. 1: enable. 0: disable.
    +              18
    +              1
    +              read-write
    +            
    +            
    +              SLV_RX_SEG_TRANS_CLR_EN
    +              1: spi_dma_infifo_full_vld is cleared by spi slave cmd 5. 0: spi_dma_infifo_full_vld is cleared by spi_trans_done.
    +              19
    +              1
    +              read-write
    +            
    +            
    +              SLV_TX_SEG_TRANS_CLR_EN
    +              1: spi_dma_outfifo_empty_vld is cleared by spi slave cmd 6. 0: spi_dma_outfifo_empty_vld is cleared by spi_trans_done.
    +              20
    +              1
    +              read-write
    +            
    +            
    +              RX_EOF_EN
    +              1: spi_dma_inlink_eof is set when the number of dma pushed data bytes is equal to the value of spi_slv/mst_dma_rd_bytelen[19:0] in spi dma transition.  0: spi_dma_inlink_eof is set by spi_trans_done in non-seg-trans or spi_dma_seg_trans_done in seg-trans.
    +              21
    +              1
    +              read-write
    +            
    +            
    +              DMA_RX_ENA
    +              Set this bit to enable SPI DMA controlled receive data mode.
    +              27
    +              1
    +              read-write
    +            
    +            
    +              DMA_TX_ENA
    +              Set this bit to enable SPI DMA controlled send data mode.
    +              28
    +              1
    +              read-write
    +            
    +            
    +              RX_AFIFO_RST
    +              Set this bit to reset RX AFIFO, which is used to receive data in SPI master and slave mode transfer.
    +              29
    +              1
    +              write-only
    +            
    +            
    +              BUF_AFIFO_RST
    +              Set this bit to reset BUF TX AFIFO, which is used send data out in SPI slave CPU controlled mode transfer and master mode transfer.
    +              30
    +              1
    +              write-only
    +            
    +            
    +              DMA_AFIFO_RST
    +              Set this bit to reset DMA TX AFIFO, which is used to send data out in SPI slave DMA controlled mode transfer.
    +              31
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          DMA_INT_ENA
    +          SPI DMA interrupt enable register
    +          0x34
    +          0x20
    +          
    +            
    +              DMA_INFIFO_FULL_ERR_INT_ENA
    +              The enable bit for SPI_DMA_INFIFO_FULL_ERR_INT interrupt.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              DMA_OUTFIFO_EMPTY_ERR_INT_ENA
    +              The enable bit for SPI_DMA_OUTFIFO_EMPTY_ERR_INT interrupt.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              SLV_EX_QPI_INT_ENA
    +              The enable bit for SPI slave Ex_QPI interrupt.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              SLV_EN_QPI_INT_ENA
    +              The enable bit for SPI slave En_QPI interrupt.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              SLV_CMD7_INT_ENA
    +              The enable bit for SPI slave CMD7 interrupt.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              SLV_CMD8_INT_ENA
    +              The enable bit for SPI slave CMD8 interrupt.
    +              5
    +              1
    +              read-write
    +            
    +            
    +              SLV_CMD9_INT_ENA
    +              The enable bit for SPI slave CMD9 interrupt.
    +              6
    +              1
    +              read-write
    +            
    +            
    +              SLV_CMDA_INT_ENA
    +              The enable bit for SPI slave CMDA interrupt.
    +              7
    +              1
    +              read-write
    +            
    +            
    +              SLV_RD_DMA_DONE_INT_ENA
    +              The enable bit for SPI_SLV_RD_DMA_DONE_INT interrupt.
    +              8
    +              1
    +              read-write
    +            
    +            
    +              SLV_WR_DMA_DONE_INT_ENA
    +              The enable bit for SPI_SLV_WR_DMA_DONE_INT interrupt.
    +              9
    +              1
    +              read-write
    +            
    +            
    +              SLV_RD_BUF_DONE_INT_ENA
    +              The enable bit for SPI_SLV_RD_BUF_DONE_INT interrupt.
    +              10
    +              1
    +              read-write
    +            
    +            
    +              SLV_WR_BUF_DONE_INT_ENA
    +              The enable bit for SPI_SLV_WR_BUF_DONE_INT interrupt.
    +              11
    +              1
    +              read-write
    +            
    +            
    +              TRANS_DONE_INT_ENA
    +              The enable bit for SPI_TRANS_DONE_INT interrupt.
    +              12
    +              1
    +              read-write
    +            
    +            
    +              DMA_SEG_TRANS_DONE_INT_ENA
    +              The enable bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt.
    +              13
    +              1
    +              read-write
    +            
    +            
    +              SEG_MAGIC_ERR_INT_ENA
    +              The enable bit for SPI_SEG_MAGIC_ERR_INT interrupt.
    +              14
    +              1
    +              read-write
    +            
    +            
    +              SLV_BUF_ADDR_ERR_INT_ENA
    +              The enable bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt.
    +              15
    +              1
    +              read-write
    +            
    +            
    +              SLV_CMD_ERR_INT_ENA
    +              The enable bit for SPI_SLV_CMD_ERR_INT interrupt.
    +              16
    +              1
    +              read-write
    +            
    +            
    +              MST_RX_AFIFO_WFULL_ERR_INT_ENA
    +              The enable bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt.
    +              17
    +              1
    +              read-write
    +            
    +            
    +              MST_TX_AFIFO_REMPTY_ERR_INT_ENA
    +              The enable bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt.
    +              18
    +              1
    +              read-write
    +            
    +            
    +              APP2_INT_ENA
    +              The enable bit for SPI_APP2_INT interrupt.
    +              19
    +              1
    +              read-write
    +            
    +            
    +              APP1_INT_ENA
    +              The enable bit for SPI_APP1_INT interrupt.
    +              20
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_INT_CLR
    +          SPI DMA interrupt clear register
    +          0x38
    +          0x20
    +          
    +            
    +              DMA_INFIFO_FULL_ERR_INT_CLR
    +              The clear bit for SPI_DMA_INFIFO_FULL_ERR_INT interrupt.
    +              0
    +              1
    +              write-only
    +            
    +            
    +              DMA_OUTFIFO_EMPTY_ERR_INT_CLR
    +              The clear bit for SPI_DMA_OUTFIFO_EMPTY_ERR_INT interrupt.
    +              1
    +              1
    +              write-only
    +            
    +            
    +              SLV_EX_QPI_INT_CLR
    +              The clear bit for SPI slave Ex_QPI interrupt.
    +              2
    +              1
    +              write-only
    +            
    +            
    +              SLV_EN_QPI_INT_CLR
    +              The clear bit for SPI slave En_QPI interrupt.
    +              3
    +              1
    +              write-only
    +            
    +            
    +              SLV_CMD7_INT_CLR
    +              The clear bit for SPI slave CMD7 interrupt.
    +              4
    +              1
    +              write-only
    +            
    +            
    +              SLV_CMD8_INT_CLR
    +              The clear bit for SPI slave CMD8 interrupt.
    +              5
    +              1
    +              write-only
    +            
    +            
    +              SLV_CMD9_INT_CLR
    +              The clear bit for SPI slave CMD9 interrupt.
    +              6
    +              1
    +              write-only
    +            
    +            
    +              SLV_CMDA_INT_CLR
    +              The clear bit for SPI slave CMDA interrupt.
    +              7
    +              1
    +              write-only
    +            
    +            
    +              SLV_RD_DMA_DONE_INT_CLR
    +              The clear bit for SPI_SLV_RD_DMA_DONE_INT interrupt.
    +              8
    +              1
    +              write-only
    +            
    +            
    +              SLV_WR_DMA_DONE_INT_CLR
    +              The clear bit for SPI_SLV_WR_DMA_DONE_INT interrupt.
    +              9
    +              1
    +              write-only
    +            
    +            
    +              SLV_RD_BUF_DONE_INT_CLR
    +              The clear bit for SPI_SLV_RD_BUF_DONE_INT interrupt.
    +              10
    +              1
    +              write-only
    +            
    +            
    +              SLV_WR_BUF_DONE_INT_CLR
    +              The clear bit for SPI_SLV_WR_BUF_DONE_INT interrupt.
    +              11
    +              1
    +              write-only
    +            
    +            
    +              TRANS_DONE_INT_CLR
    +              The clear bit for SPI_TRANS_DONE_INT interrupt.
    +              12
    +              1
    +              write-only
    +            
    +            
    +              DMA_SEG_TRANS_DONE_INT_CLR
    +              The clear bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt.
    +              13
    +              1
    +              write-only
    +            
    +            
    +              SEG_MAGIC_ERR_INT_CLR
    +              The clear bit for SPI_SEG_MAGIC_ERR_INT interrupt.
    +              14
    +              1
    +              write-only
    +            
    +            
    +              SLV_BUF_ADDR_ERR_INT_CLR
    +              The clear bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt.
    +              15
    +              1
    +              write-only
    +            
    +            
    +              SLV_CMD_ERR_INT_CLR
    +              The clear bit for SPI_SLV_CMD_ERR_INT interrupt.
    +              16
    +              1
    +              write-only
    +            
    +            
    +              MST_RX_AFIFO_WFULL_ERR_INT_CLR
    +              The clear bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt.
    +              17
    +              1
    +              write-only
    +            
    +            
    +              MST_TX_AFIFO_REMPTY_ERR_INT_CLR
    +              The clear bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt.
    +              18
    +              1
    +              write-only
    +            
    +            
    +              APP2_INT_CLR
    +              The clear bit for SPI_APP2_INT interrupt.
    +              19
    +              1
    +              write-only
    +            
    +            
    +              APP1_INT_CLR
    +              The clear bit for SPI_APP1_INT interrupt.
    +              20
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          DMA_INT_RAW
    +          SPI DMA interrupt raw register
    +          0x3C
    +          0x20
    +          
    +            
    +              DMA_INFIFO_FULL_ERR_INT_RAW
    +              1: The current data rate of DMA Rx is smaller than that of SPI, which will lose the receive data.  0: Others.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              DMA_OUTFIFO_EMPTY_ERR_INT_RAW
    +              1: The current data rate of DMA TX is smaller than that of SPI. SPI will stop in master mode and send out all 0 in slave mode.  0: Others.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              SLV_EX_QPI_INT_RAW
    +              The raw bit for SPI slave Ex_QPI interrupt. 1: SPI slave mode Ex_QPI transmission is ended. 0: Others.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              SLV_EN_QPI_INT_RAW
    +              The raw bit for SPI slave En_QPI interrupt. 1: SPI slave mode En_QPI transmission is ended. 0: Others.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              SLV_CMD7_INT_RAW
    +              The raw bit for SPI slave CMD7 interrupt. 1: SPI slave mode CMD7 transmission is ended. 0: Others.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              SLV_CMD8_INT_RAW
    +              The raw bit for SPI slave CMD8 interrupt. 1: SPI slave mode CMD8 transmission is ended. 0: Others.
    +              5
    +              1
    +              read-write
    +            
    +            
    +              SLV_CMD9_INT_RAW
    +              The raw bit for SPI slave CMD9 interrupt. 1: SPI slave mode CMD9 transmission is ended. 0: Others.
    +              6
    +              1
    +              read-write
    +            
    +            
    +              SLV_CMDA_INT_RAW
    +              The raw bit for SPI slave CMDA interrupt. 1: SPI slave mode CMDA transmission is ended. 0: Others.
    +              7
    +              1
    +              read-write
    +            
    +            
    +              SLV_RD_DMA_DONE_INT_RAW
    +              The raw bit for SPI_SLV_RD_DMA_DONE_INT interrupt. 1: SPI slave mode Rd_DMA transmission is ended. 0: Others.
    +              8
    +              1
    +              read-write
    +            
    +            
    +              SLV_WR_DMA_DONE_INT_RAW
    +              The raw bit for SPI_SLV_WR_DMA_DONE_INT interrupt. 1: SPI slave mode Wr_DMA transmission is ended. 0: Others.
    +              9
    +              1
    +              read-write
    +            
    +            
    +              SLV_RD_BUF_DONE_INT_RAW
    +              The raw bit for SPI_SLV_RD_BUF_DONE_INT interrupt. 1: SPI slave mode Rd_BUF transmission is ended. 0: Others.
    +              10
    +              1
    +              read-write
    +            
    +            
    +              SLV_WR_BUF_DONE_INT_RAW
    +              The raw bit for SPI_SLV_WR_BUF_DONE_INT interrupt. 1: SPI slave mode Wr_BUF transmission is ended. 0: Others.
    +              11
    +              1
    +              read-write
    +            
    +            
    +              TRANS_DONE_INT_RAW
    +              The raw bit for SPI_TRANS_DONE_INT interrupt. 1: SPI master mode transmission is ended. 0: others.
    +              12
    +              1
    +              read-write
    +            
    +            
    +              DMA_SEG_TRANS_DONE_INT_RAW
    +              The raw bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt. 1:  spi master DMA full-duplex/half-duplex seg-conf-trans ends or slave half-duplex seg-trans ends. And data has been pushed to corresponding memory.  0:  seg-conf-trans or seg-trans is not ended or not occurred.
    +              13
    +              1
    +              read-write
    +            
    +            
    +              SEG_MAGIC_ERR_INT_RAW
    +              The raw bit for SPI_SEG_MAGIC_ERR_INT interrupt. 1: The magic value in CONF buffer is error in the DMA seg-conf-trans. 0: others.
    +              14
    +              1
    +              read-write
    +            
    +            
    +              SLV_BUF_ADDR_ERR_INT_RAW
    +              The raw bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt. 1: The accessing data address of the current SPI slave mode CPU controlled FD, Wr_BUF or Rd_BUF transmission is bigger than 63. 0: Others.
    +              15
    +              1
    +              read-write
    +            
    +            
    +              SLV_CMD_ERR_INT_RAW
    +              The raw bit for SPI_SLV_CMD_ERR_INT interrupt. 1: The slave command value in the current SPI slave HD mode transmission is not supported. 0: Others.
    +              16
    +              1
    +              read-write
    +            
    +            
    +              MST_RX_AFIFO_WFULL_ERR_INT_RAW
    +              The raw bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt. 1: There is a RX AFIFO write-full error when SPI inputs data in master mode. 0: Others.
    +              17
    +              1
    +              read-write
    +            
    +            
    +              MST_TX_AFIFO_REMPTY_ERR_INT_RAW
    +              The raw bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt. 1: There is a TX BUF AFIFO read-empty error when SPI outputs data in master mode. 0: Others.
    +              18
    +              1
    +              read-write
    +            
    +            
    +              APP2_INT_RAW
    +              The raw bit for SPI_APP2_INT interrupt. The value is only controlled by application.
    +              19
    +              1
    +              read-write
    +            
    +            
    +              APP1_INT_RAW
    +              The raw bit for SPI_APP1_INT interrupt. The value is only controlled by application.
    +              20
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DMA_INT_ST
    +          SPI DMA interrupt status register
    +          0x40
    +          0x20
    +          
    +            
    +              DMA_INFIFO_FULL_ERR_INT_ST
    +              The status bit for SPI_DMA_INFIFO_FULL_ERR_INT interrupt.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              DMA_OUTFIFO_EMPTY_ERR_INT_ST
    +              The status bit for SPI_DMA_OUTFIFO_EMPTY_ERR_INT interrupt.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              SLV_EX_QPI_INT_ST
    +              The status bit for SPI slave Ex_QPI interrupt.
    +              2
    +              1
    +              read-only
    +            
    +            
    +              SLV_EN_QPI_INT_ST
    +              The status bit for SPI slave En_QPI interrupt.
    +              3
    +              1
    +              read-only
    +            
    +            
    +              SLV_CMD7_INT_ST
    +              The status bit for SPI slave CMD7 interrupt.
    +              4
    +              1
    +              read-only
    +            
    +            
    +              SLV_CMD8_INT_ST
    +              The status bit for SPI slave CMD8 interrupt.
    +              5
    +              1
    +              read-only
    +            
    +            
    +              SLV_CMD9_INT_ST
    +              The status bit for SPI slave CMD9 interrupt.
    +              6
    +              1
    +              read-only
    +            
    +            
    +              SLV_CMDA_INT_ST
    +              The status bit for SPI slave CMDA interrupt.
    +              7
    +              1
    +              read-only
    +            
    +            
    +              SLV_RD_DMA_DONE_INT_ST
    +              The status bit for SPI_SLV_RD_DMA_DONE_INT interrupt.
    +              8
    +              1
    +              read-only
    +            
    +            
    +              SLV_WR_DMA_DONE_INT_ST
    +              The status bit for SPI_SLV_WR_DMA_DONE_INT interrupt.
    +              9
    +              1
    +              read-only
    +            
    +            
    +              SLV_RD_BUF_DONE_INT_ST
    +              The status bit for SPI_SLV_RD_BUF_DONE_INT interrupt.
    +              10
    +              1
    +              read-only
    +            
    +            
    +              SLV_WR_BUF_DONE_INT_ST
    +              The status bit for SPI_SLV_WR_BUF_DONE_INT interrupt.
    +              11
    +              1
    +              read-only
    +            
    +            
    +              TRANS_DONE_INT_ST
    +              The status bit for SPI_TRANS_DONE_INT interrupt.
    +              12
    +              1
    +              read-only
    +            
    +            
    +              DMA_SEG_TRANS_DONE_INT_ST
    +              The status bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt.
    +              13
    +              1
    +              read-only
    +            
    +            
    +              SEG_MAGIC_ERR_INT_ST
    +              The status bit for SPI_SEG_MAGIC_ERR_INT interrupt.
    +              14
    +              1
    +              read-only
    +            
    +            
    +              SLV_BUF_ADDR_ERR_INT_ST
    +              The status bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt.
    +              15
    +              1
    +              read-only
    +            
    +            
    +              SLV_CMD_ERR_INT_ST
    +              The status bit for SPI_SLV_CMD_ERR_INT interrupt.
    +              16
    +              1
    +              read-only
    +            
    +            
    +              MST_RX_AFIFO_WFULL_ERR_INT_ST
    +              The status bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt.
    +              17
    +              1
    +              read-only
    +            
    +            
    +              MST_TX_AFIFO_REMPTY_ERR_INT_ST
    +              The status bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt.
    +              18
    +              1
    +              read-only
    +            
    +            
    +              APP2_INT_ST
    +              The status bit for SPI_APP2_INT interrupt.
    +              19
    +              1
    +              read-only
    +            
    +            
    +              APP1_INT_ST
    +              The status bit for SPI_APP1_INT interrupt.
    +              20
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          W0
    +          SPI CPU-controlled buffer0
    +          0x98
    +          0x20
    +          
    +            
    +              BUF0
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W1
    +          SPI CPU-controlled buffer1
    +          0x9C
    +          0x20
    +          
    +            
    +              BUF1
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W2
    +          SPI CPU-controlled buffer2
    +          0xA0
    +          0x20
    +          
    +            
    +              BUF2
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W3
    +          SPI CPU-controlled buffer3
    +          0xA4
    +          0x20
    +          
    +            
    +              BUF3
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W4
    +          SPI CPU-controlled buffer4
    +          0xA8
    +          0x20
    +          
    +            
    +              BUF4
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W5
    +          SPI CPU-controlled buffer5
    +          0xAC
    +          0x20
    +          
    +            
    +              BUF5
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W6
    +          SPI CPU-controlled buffer6
    +          0xB0
    +          0x20
    +          
    +            
    +              BUF6
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W7
    +          SPI CPU-controlled buffer7
    +          0xB4
    +          0x20
    +          
    +            
    +              BUF7
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W8
    +          SPI CPU-controlled buffer8
    +          0xB8
    +          0x20
    +          
    +            
    +              BUF8
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W9
    +          SPI CPU-controlled buffer9
    +          0xBC
    +          0x20
    +          
    +            
    +              BUF9
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W10
    +          SPI CPU-controlled buffer10
    +          0xC0
    +          0x20
    +          
    +            
    +              BUF10
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W11
    +          SPI CPU-controlled buffer11
    +          0xC4
    +          0x20
    +          
    +            
    +              BUF11
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W12
    +          SPI CPU-controlled buffer12
    +          0xC8
    +          0x20
    +          
    +            
    +              BUF12
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W13
    +          SPI CPU-controlled buffer13
    +          0xCC
    +          0x20
    +          
    +            
    +              BUF13
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W14
    +          SPI CPU-controlled buffer14
    +          0xD0
    +          0x20
    +          
    +            
    +              BUF14
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          W15
    +          SPI CPU-controlled buffer15
    +          0xD4
    +          0x20
    +          
    +            
    +              BUF15
    +              data buffer
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          SLAVE
    +          SPI slave control register
    +          0xE0
    +          0x20
    +          0x02800000
    +          
    +            
    +              CLK_MODE
    +              SPI clock mode bits. 0: SPI clock is off when CS inactive 1: SPI clock is delayed one cycle after CS inactive 2: SPI clock is delayed two cycles after CS inactive 3: SPI clock is alwasy on. Can be configured in CONF state.
    +              0
    +              2
    +              read-write
    +            
    +            
    +              CLK_MODE_13
    +              {CPOL, CPHA},1: support spi clk mode 1 and 3, first edge output data B[0]/B[7].  0: support spi clk mode 0 and 2, first edge output data B[1]/B[6].
    +              2
    +              1
    +              read-write
    +            
    +            
    +              RSCK_DATA_OUT
    +              It saves half a cycle when tsck is the same as rsck. 1: output data at rsck posedge   0: output data at tsck posedge
    +              3
    +              1
    +              read-write
    +            
    +            
    +              SLV_RDDMA_BITLEN_EN
    +              1: SPI_SLV_DATA_BITLEN stores data bit length of master-read-slave data length in DMA controlled mode(Rd_DMA). 0: others
    +              8
    +              1
    +              read-write
    +            
    +            
    +              SLV_WRDMA_BITLEN_EN
    +              1: SPI_SLV_DATA_BITLEN stores data bit length of master-write-to-slave data length in DMA controlled mode(Wr_DMA). 0: others
    +              9
    +              1
    +              read-write
    +            
    +            
    +              SLV_RDBUF_BITLEN_EN
    +              1: SPI_SLV_DATA_BITLEN stores data bit length of master-read-slave data length in CPU controlled mode(Rd_BUF). 0: others
    +              10
    +              1
    +              read-write
    +            
    +            
    +              SLV_WRBUF_BITLEN_EN
    +              1: SPI_SLV_DATA_BITLEN stores data bit length of master-write-to-slave data length in CPU controlled mode(Wr_BUF). 0: others
    +              11
    +              1
    +              read-write
    +            
    +            
    +              DMA_SEG_MAGIC_VALUE
    +              The magic value of BM table in master DMA seg-trans.
    +              22
    +              4
    +              read-write
    +            
    +            
    +              MODE
    +              Set SPI work mode. 1: slave mode 0: master mode.
    +              26
    +              1
    +              read-write
    +            
    +            
    +              SOFT_RESET
    +              Software reset enable, reset the spi clock line cs line and data lines. Can be configured in CONF state.
    +              27
    +              1
    +              write-only
    +            
    +            
    +              USR_CONF
    +              1: Enable the DMA CONF phase of current seg-trans operation, which means seg-trans will start. 0: This is not seg-trans mode.
    +              28
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          SLAVE1
    +          SPI slave control register 1
    +          0xE4
    +          0x20
    +          
    +            
    +              SLV_DATA_BITLEN
    +              The transferred data bit length in SPI slave FD and HD mode.
    +              0
    +              18
    +              read-write
    +            
    +            
    +              SLV_LAST_COMMAND
    +              In the slave mode it is the value of command.
    +              18
    +              8
    +              read-write
    +            
    +            
    +              SLV_LAST_ADDR
    +              In the slave mode it is the value of address.
    +              26
    +              6
    +              read-write
    +            
    +          
    +        
    +        
    +          CLK_GATE
    +          SPI module clock and register clock control
    +          0xE8
    +          0x20
    +          
    +            
    +              CLK_EN
    +              Set this bit to enable clk gate
    +              0
    +              1
    +              read-write
    +            
    +            
    +              MST_CLK_ACTIVE
    +              Set this bit to power on the SPI module clock.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              MST_CLK_SEL
    +              This bit is used to select SPI module clock source in master mode. 1: PLL_CLK_80M. 0: XTAL CLK.
    +              2
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DATE
    +          Version control
    +          0xF0
    +          0x20
    +          0x02007220
    +          
    +            
    +              DATE
    +              SPI register version.
    +              0
    +              28
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      SYSTEM
    +      System
    +      SYSTEM
    +      0x600C0000
    +      
    +        0x0
    +        0xA0
    +        registers
    +      
    +      
    +        
    +          CPU_PERI_CLK_EN
    +          cpu_peripheral clock gating register
    +          0x0
    +          0x20
    +          
    +            
    +              CLK_EN_ASSIST_DEBUG
    +              reg_clk_en_assist_debug
    +              6
    +              1
    +              read-write
    +            
    +            
    +              CLK_EN_DEDICATED_GPIO
    +              reg_clk_en_dedicated_gpio
    +              7
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_PERI_RST_EN
    +          cpu_peripheral reset register
    +          0x4
    +          0x20
    +          0x000000C0
    +          
    +            
    +              RST_EN_ASSIST_DEBUG
    +              reg_rst_en_assist_debug
    +              6
    +              1
    +              read-write
    +            
    +            
    +              RST_EN_DEDICATED_GPIO
    +              reg_rst_en_dedicated_gpio
    +              7
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_PER_CONF
    +          cpu clock config register
    +          0x8
    +          0x20
    +          0x0000000C
    +          
    +            
    +              CPUPERIOD_SEL
    +              reg_cpuperiod_sel
    +              0
    +              2
    +              read-write
    +            
    +            
    +              PLL_FREQ_SEL
    +              reg_pll_freq_sel
    +              2
    +              1
    +              read-write
    +            
    +            
    +              CPU_WAIT_MODE_FORCE_ON
    +              reg_cpu_wait_mode_force_on
    +              3
    +              1
    +              read-write
    +            
    +            
    +              CPU_WAITI_DELAY_NUM
    +              reg_cpu_waiti_delay_num
    +              4
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          MEM_PD_MASK
    +          memory power down mask register
    +          0xC
    +          0x20
    +          0x00000001
    +          
    +            
    +              LSLP_MEM_PD_MASK
    +              reg_lslp_mem_pd_mask
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          PERIP_CLK_EN0
    +          peripheral clock gating register
    +          0x10
    +          0x20
    +          0xF9C1E06F
    +          
    +            
    +              TIMERS_CLK_EN
    +              reg_timers_clk_en
    +              0
    +              1
    +              read-write
    +            
    +            
    +              SPI01_CLK_EN
    +              reg_spi01_clk_en
    +              1
    +              1
    +              read-write
    +            
    +            
    +              UART_CLK_EN
    +              reg_uart_clk_en
    +              2
    +              1
    +              read-write
    +            
    +            
    +              WDG_CLK_EN
    +              reg_wdg_clk_en
    +              3
    +              1
    +              read-write
    +            
    +            
    +              I2S0_CLK_EN
    +              reg_i2s0_clk_en
    +              4
    +              1
    +              read-write
    +            
    +            
    +              UART1_CLK_EN
    +              reg_uart1_clk_en
    +              5
    +              1
    +              read-write
    +            
    +            
    +              SPI2_CLK_EN
    +              reg_spi2_clk_en
    +              6
    +              1
    +              read-write
    +            
    +            
    +              I2C_EXT0_CLK_EN
    +              reg_ext0_clk_en
    +              7
    +              1
    +              read-write
    +            
    +            
    +              UHCI0_CLK_EN
    +              reg_uhci0_clk_en
    +              8
    +              1
    +              read-write
    +            
    +            
    +              RMT_CLK_EN
    +              reg_rmt_clk_en
    +              9
    +              1
    +              read-write
    +            
    +            
    +              PCNT_CLK_EN
    +              reg_pcnt_clk_en
    +              10
    +              1
    +              read-write
    +            
    +            
    +              LEDC_CLK_EN
    +              reg_ledc_clk_en
    +              11
    +              1
    +              read-write
    +            
    +            
    +              UHCI1_CLK_EN
    +              reg_uhci1_clk_en
    +              12
    +              1
    +              read-write
    +            
    +            
    +              TIMERGROUP_CLK_EN
    +              reg_timergroup_clk_en
    +              13
    +              1
    +              read-write
    +            
    +            
    +              EFUSE_CLK_EN
    +              reg_efuse_clk_en
    +              14
    +              1
    +              read-write
    +            
    +            
    +              TIMERGROUP1_CLK_EN
    +              reg_timergroup1_clk_en
    +              15
    +              1
    +              read-write
    +            
    +            
    +              SPI3_CLK_EN
    +              reg_spi3_clk_en
    +              16
    +              1
    +              read-write
    +            
    +            
    +              PWM0_CLK_EN
    +              reg_pwm0_clk_en
    +              17
    +              1
    +              read-write
    +            
    +            
    +              EXT1_CLK_EN
    +              reg_ext1_clk_en
    +              18
    +              1
    +              read-write
    +            
    +            
    +              CAN_CLK_EN
    +              reg_can_clk_en
    +              19
    +              1
    +              read-write
    +            
    +            
    +              PWM1_CLK_EN
    +              reg_pwm1_clk_en
    +              20
    +              1
    +              read-write
    +            
    +            
    +              I2S1_CLK_EN
    +              reg_i2s1_clk_en
    +              21
    +              1
    +              read-write
    +            
    +            
    +              SPI2_DMA_CLK_EN
    +              reg_spi2_dma_clk_en
    +              22
    +              1
    +              read-write
    +            
    +            
    +              USB_DEVICE_CLK_EN
    +              reg_usb_device_clk_en
    +              23
    +              1
    +              read-write
    +            
    +            
    +              UART_MEM_CLK_EN
    +              reg_uart_mem_clk_en
    +              24
    +              1
    +              read-write
    +            
    +            
    +              PWM2_CLK_EN
    +              reg_pwm2_clk_en
    +              25
    +              1
    +              read-write
    +            
    +            
    +              PWM3_CLK_EN
    +              reg_pwm3_clk_en
    +              26
    +              1
    +              read-write
    +            
    +            
    +              SPI3_DMA_CLK_EN
    +              reg_spi3_dma_clk_en
    +              27
    +              1
    +              read-write
    +            
    +            
    +              APB_SARADC_CLK_EN
    +              reg_apb_saradc_clk_en
    +              28
    +              1
    +              read-write
    +            
    +            
    +              SYSTIMER_CLK_EN
    +              reg_systimer_clk_en
    +              29
    +              1
    +              read-write
    +            
    +            
    +              ADC2_ARB_CLK_EN
    +              reg_adc2_arb_clk_en
    +              30
    +              1
    +              read-write
    +            
    +            
    +              SPI4_CLK_EN
    +              reg_spi4_clk_en
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          PERIP_CLK_EN1
    +          peripheral clock gating register
    +          0x14
    +          0x20
    +          0x00000200
    +          
    +            
    +              CRYPTO_AES_CLK_EN
    +              reg_crypto_aes_clk_en
    +              1
    +              1
    +              read-write
    +            
    +            
    +              CRYPTO_SHA_CLK_EN
    +              reg_crypto_sha_clk_en
    +              2
    +              1
    +              read-write
    +            
    +            
    +              CRYPTO_RSA_CLK_EN
    +              reg_crypto_rsa_clk_en
    +              3
    +              1
    +              read-write
    +            
    +            
    +              CRYPTO_DS_CLK_EN
    +              reg_crypto_ds_clk_en
    +              4
    +              1
    +              read-write
    +            
    +            
    +              CRYPTO_HMAC_CLK_EN
    +              reg_crypto_hmac_clk_en
    +              5
    +              1
    +              read-write
    +            
    +            
    +              DMA_CLK_EN
    +              reg_dma_clk_en
    +              6
    +              1
    +              read-write
    +            
    +            
    +              SDIO_HOST_CLK_EN
    +              reg_sdio_host_clk_en
    +              7
    +              1
    +              read-write
    +            
    +            
    +              LCD_CAM_CLK_EN
    +              reg_lcd_cam_clk_en
    +              8
    +              1
    +              read-write
    +            
    +            
    +              UART2_CLK_EN
    +              reg_uart2_clk_en
    +              9
    +              1
    +              read-write
    +            
    +            
    +              TSENS_CLK_EN
    +              reg_tsens_clk_en
    +              10
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          PERIP_RST_EN0
    +          reserved
    +          0x18
    +          0x20
    +          
    +            
    +              TIMERS_RST
    +              reg_timers_rst
    +              0
    +              1
    +              read-write
    +            
    +            
    +              SPI01_RST
    +              reg_spi01_rst
    +              1
    +              1
    +              read-write
    +            
    +            
    +              UART_RST
    +              reg_uart_rst
    +              2
    +              1
    +              read-write
    +            
    +            
    +              WDG_RST
    +              reg_wdg_rst
    +              3
    +              1
    +              read-write
    +            
    +            
    +              I2S0_RST
    +              reg_i2s0_rst
    +              4
    +              1
    +              read-write
    +            
    +            
    +              UART1_RST
    +              reg_uart1_rst
    +              5
    +              1
    +              read-write
    +            
    +            
    +              SPI2_RST
    +              reg_spi2_rst
    +              6
    +              1
    +              read-write
    +            
    +            
    +              I2C_EXT0_RST
    +              reg_ext0_rst
    +              7
    +              1
    +              read-write
    +            
    +            
    +              UHCI0_RST
    +              reg_uhci0_rst
    +              8
    +              1
    +              read-write
    +            
    +            
    +              RMT_RST
    +              reg_rmt_rst
    +              9
    +              1
    +              read-write
    +            
    +            
    +              PCNT_RST
    +              reg_pcnt_rst
    +              10
    +              1
    +              read-write
    +            
    +            
    +              LEDC_RST
    +              reg_ledc_rst
    +              11
    +              1
    +              read-write
    +            
    +            
    +              UHCI1_RST
    +              reg_uhci1_rst
    +              12
    +              1
    +              read-write
    +            
    +            
    +              TIMERGROUP_RST
    +              reg_timergroup_rst
    +              13
    +              1
    +              read-write
    +            
    +            
    +              EFUSE_RST
    +              reg_efuse_rst
    +              14
    +              1
    +              read-write
    +            
    +            
    +              TIMERGROUP1_RST
    +              reg_timergroup1_rst
    +              15
    +              1
    +              read-write
    +            
    +            
    +              SPI3_RST
    +              reg_spi3_rst
    +              16
    +              1
    +              read-write
    +            
    +            
    +              PWM0_RST
    +              reg_pwm0_rst
    +              17
    +              1
    +              read-write
    +            
    +            
    +              EXT1_RST
    +              reg_ext1_rst
    +              18
    +              1
    +              read-write
    +            
    +            
    +              CAN_RST
    +              reg_can_rst
    +              19
    +              1
    +              read-write
    +            
    +            
    +              PWM1_RST
    +              reg_pwm1_rst
    +              20
    +              1
    +              read-write
    +            
    +            
    +              I2S1_RST
    +              reg_i2s1_rst
    +              21
    +              1
    +              read-write
    +            
    +            
    +              SPI2_DMA_RST
    +              reg_spi2_dma_rst
    +              22
    +              1
    +              read-write
    +            
    +            
    +              USB_DEVICE_RST
    +              reg_usb_device_rst
    +              23
    +              1
    +              read-write
    +            
    +            
    +              UART_MEM_RST
    +              reg_uart_mem_rst
    +              24
    +              1
    +              read-write
    +            
    +            
    +              PWM2_RST
    +              reg_pwm2_rst
    +              25
    +              1
    +              read-write
    +            
    +            
    +              PWM3_RST
    +              reg_pwm3_rst
    +              26
    +              1
    +              read-write
    +            
    +            
    +              SPI3_DMA_RST
    +              reg_spi3_dma_rst
    +              27
    +              1
    +              read-write
    +            
    +            
    +              APB_SARADC_RST
    +              reg_apb_saradc_rst
    +              28
    +              1
    +              read-write
    +            
    +            
    +              SYSTIMER_RST
    +              reg_systimer_rst
    +              29
    +              1
    +              read-write
    +            
    +            
    +              ADC2_ARB_RST
    +              reg_adc2_arb_rst
    +              30
    +              1
    +              read-write
    +            
    +            
    +              SPI4_RST
    +              reg_spi4_rst
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          PERIP_RST_EN1
    +          peripheral reset register
    +          0x1C
    +          0x20
    +          0x000001FE
    +          
    +            
    +              CRYPTO_AES_RST
    +              reg_crypto_aes_rst
    +              1
    +              1
    +              read-write
    +            
    +            
    +              CRYPTO_SHA_RST
    +              reg_crypto_sha_rst
    +              2
    +              1
    +              read-write
    +            
    +            
    +              CRYPTO_RSA_RST
    +              reg_crypto_rsa_rst
    +              3
    +              1
    +              read-write
    +            
    +            
    +              CRYPTO_DS_RST
    +              reg_crypto_ds_rst
    +              4
    +              1
    +              read-write
    +            
    +            
    +              CRYPTO_HMAC_RST
    +              reg_crypto_hmac_rst
    +              5
    +              1
    +              read-write
    +            
    +            
    +              DMA_RST
    +              reg_dma_rst
    +              6
    +              1
    +              read-write
    +            
    +            
    +              SDIO_HOST_RST
    +              reg_sdio_host_rst
    +              7
    +              1
    +              read-write
    +            
    +            
    +              LCD_CAM_RST
    +              reg_lcd_cam_rst
    +              8
    +              1
    +              read-write
    +            
    +            
    +              UART2_RST
    +              reg_uart2_rst
    +              9
    +              1
    +              read-write
    +            
    +            
    +              TSENS_RST
    +              reg_tsens_rst
    +              10
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          BT_LPCK_DIV_INT
    +          clock config register
    +          0x20
    +          0x20
    +          0x000000FF
    +          
    +            
    +              BT_LPCK_DIV_NUM
    +              reg_bt_lpck_div_num
    +              0
    +              12
    +              read-write
    +            
    +          
    +        
    +        
    +          BT_LPCK_DIV_FRAC
    +          clock config register
    +          0x24
    +          0x20
    +          0x02001001
    +          
    +            
    +              BT_LPCK_DIV_B
    +              reg_bt_lpck_div_b
    +              0
    +              12
    +              read-write
    +            
    +            
    +              BT_LPCK_DIV_A
    +              reg_bt_lpck_div_a
    +              12
    +              12
    +              read-write
    +            
    +            
    +              LPCLK_SEL_RTC_SLOW
    +              reg_lpclk_sel_rtc_slow
    +              24
    +              1
    +              read-write
    +            
    +            
    +              LPCLK_SEL_8M
    +              reg_lpclk_sel_8m
    +              25
    +              1
    +              read-write
    +            
    +            
    +              LPCLK_SEL_XTAL
    +              reg_lpclk_sel_xtal
    +              26
    +              1
    +              read-write
    +            
    +            
    +              LPCLK_SEL_XTAL32K
    +              reg_lpclk_sel_xtal32k
    +              27
    +              1
    +              read-write
    +            
    +            
    +              LPCLK_RTC_EN
    +              reg_lpclk_rtc_en
    +              28
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INTR_FROM_CPU_0
    +          interrupt generate register
    +          0x28
    +          0x20
    +          
    +            
    +              CPU_INTR_FROM_CPU_0
    +              reg_cpu_intr_from_cpu_0
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INTR_FROM_CPU_1
    +          interrupt generate register
    +          0x2C
    +          0x20
    +          
    +            
    +              CPU_INTR_FROM_CPU_1
    +              reg_cpu_intr_from_cpu_1
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INTR_FROM_CPU_2
    +          interrupt generate register
    +          0x30
    +          0x20
    +          
    +            
    +              CPU_INTR_FROM_CPU_2
    +              reg_cpu_intr_from_cpu_2
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CPU_INTR_FROM_CPU_3
    +          interrupt generate register
    +          0x34
    +          0x20
    +          
    +            
    +              CPU_INTR_FROM_CPU_3
    +              reg_cpu_intr_from_cpu_3
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          RSA_PD_CTRL
    +          rsa memory power control register
    +          0x38
    +          0x20
    +          0x00000001
    +          
    +            
    +              RSA_MEM_PD
    +              reg_rsa_mem_pd
    +              0
    +              1
    +              read-write
    +            
    +            
    +              RSA_MEM_FORCE_PU
    +              reg_rsa_mem_force_pu
    +              1
    +              1
    +              read-write
    +            
    +            
    +              RSA_MEM_FORCE_PD
    +              reg_rsa_mem_force_pd
    +              2
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          EDMA_CTRL
    +          edma clcok and reset register
    +          0x3C
    +          0x20
    +          0x00000001
    +          
    +            
    +              EDMA_CLK_ON
    +              reg_edma_clk_on
    +              0
    +              1
    +              read-write
    +            
    +            
    +              EDMA_RESET
    +              reg_edma_reset
    +              1
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CACHE_CONTROL
    +          cache control register
    +          0x40
    +          0x20
    +          0x00000005
    +          
    +            
    +              ICACHE_CLK_ON
    +              reg_icache_clk_on
    +              0
    +              1
    +              read-write
    +            
    +            
    +              ICACHE_RESET
    +              reg_icache_reset
    +              1
    +              1
    +              read-write
    +            
    +            
    +              DCACHE_CLK_ON
    +              reg_dcache_clk_on
    +              2
    +              1
    +              read-write
    +            
    +            
    +              DCACHE_RESET
    +              reg_dcache_reset
    +              3
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          EXTERNAL_DEVICE_ENCRYPT_DECRYPT_CONTROL
    +          SYSTEM_EXTERNAL_DEVICE_ENCRYPT_DECRYPT_CONTROL_REG
    +          0x44
    +          0x20
    +          
    +            
    +              ENABLE_SPI_MANUAL_ENCRYPT
    +              reg_enable_spi_manual_encrypt
    +              0
    +              1
    +              read-write
    +            
    +            
    +              ENABLE_DOWNLOAD_DB_ENCRYPT
    +              reg_enable_download_db_encrypt
    +              1
    +              1
    +              read-write
    +            
    +            
    +              ENABLE_DOWNLOAD_G0CB_DECRYPT
    +              reg_enable_download_g0cb_decrypt
    +              2
    +              1
    +              read-write
    +            
    +            
    +              ENABLE_DOWNLOAD_MANUAL_ENCRYPT
    +              reg_enable_download_manual_encrypt
    +              3
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          RTC_FASTMEM_CONFIG
    +          fast memory config register
    +          0x48
    +          0x20
    +          0x7FF00000
    +          
    +            
    +              RTC_MEM_CRC_START
    +              reg_rtc_mem_crc_start
    +              8
    +              1
    +              read-write
    +            
    +            
    +              RTC_MEM_CRC_ADDR
    +              reg_rtc_mem_crc_addr
    +              9
    +              11
    +              read-write
    +            
    +            
    +              RTC_MEM_CRC_LEN
    +              reg_rtc_mem_crc_len
    +              20
    +              11
    +              read-write
    +            
    +            
    +              RTC_MEM_CRC_FINISH
    +              reg_rtc_mem_crc_finish
    +              31
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          RTC_FASTMEM_CRC
    +          reserved
    +          0x4C
    +          0x20
    +          
    +            
    +              RTC_MEM_CRC_RES
    +              reg_rtc_mem_crc_res
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          REDUNDANT_ECO_CTRL
    +          eco register
    +          0x50
    +          0x20
    +          
    +            
    +              REDUNDANT_ECO_DRIVE
    +              reg_redundant_eco_drive
    +              0
    +              1
    +              read-write
    +            
    +            
    +              REDUNDANT_ECO_RESULT
    +              reg_redundant_eco_result
    +              1
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          CLOCK_GATE
    +          clock gating register
    +          0x54
    +          0x20
    +          0x00000001
    +          
    +            
    +              CLK_EN
    +              reg_clk_en
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          SYSCLK_CONF
    +          system clock config register
    +          0x58
    +          0x20
    +          0x00000001
    +          
    +            
    +              PRE_DIV_CNT
    +              reg_pre_div_cnt
    +              0
    +              10
    +              read-write
    +            
    +            
    +              SOC_CLK_SEL
    +              reg_soc_clk_sel
    +              10
    +              2
    +              read-write
    +            
    +            
    +              CLK_XTAL_FREQ
    +              reg_clk_xtal_freq
    +              12
    +              7
    +              read-only
    +            
    +            
    +              CLK_DIV_EN
    +              reg_clk_div_en
    +              19
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          MEM_PVT
    +          mem pvt register
    +          0x5C
    +          0x20
    +          0x00000003
    +          
    +            
    +              MEM_PATH_LEN
    +              reg_mem_path_len
    +              0
    +              4
    +              read-write
    +            
    +            
    +              MEM_ERR_CNT_CLR
    +              reg_mem_err_cnt_clr
    +              4
    +              1
    +              write-only
    +            
    +            
    +              MONITOR_EN
    +              reg_mem_pvt_monitor_en
    +              5
    +              1
    +              read-write
    +            
    +            
    +              MEM_TIMING_ERR_CNT
    +              reg_mem_timing_err_cnt
    +              6
    +              16
    +              read-only
    +            
    +            
    +              MEM_VT_SEL
    +              reg_mem_vt_sel
    +              22
    +              2
    +              read-write
    +            
    +          
    +        
    +        
    +          COMB_PVT_LVT_CONF
    +          mem pvt register
    +          0x60
    +          0x20
    +          0x00000003
    +          
    +            
    +              COMB_PATH_LEN_LVT
    +              reg_comb_path_len_lvt
    +              0
    +              5
    +              read-write
    +            
    +            
    +              COMB_ERR_CNT_CLR_LVT
    +              reg_comb_err_cnt_clr_lvt
    +              5
    +              1
    +              write-only
    +            
    +            
    +              COMB_PVT_MONITOR_EN_LVT
    +              reg_comb_pvt_monitor_en_lvt
    +              6
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          COMB_PVT_NVT_CONF
    +          mem pvt register
    +          0x64
    +          0x20
    +          0x00000003
    +          
    +            
    +              COMB_PATH_LEN_NVT
    +              reg_comb_path_len_nvt
    +              0
    +              5
    +              read-write
    +            
    +            
    +              COMB_ERR_CNT_CLR_NVT
    +              reg_comb_err_cnt_clr_nvt
    +              5
    +              1
    +              write-only
    +            
    +            
    +              COMB_PVT_MONITOR_EN_NVT
    +              reg_comb_pvt_monitor_en_nvt
    +              6
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          COMB_PVT_HVT_CONF
    +          mem pvt register
    +          0x68
    +          0x20
    +          0x00000003
    +          
    +            
    +              COMB_PATH_LEN_HVT
    +              reg_comb_path_len_hvt
    +              0
    +              5
    +              read-write
    +            
    +            
    +              COMB_ERR_CNT_CLR_HVT
    +              reg_comb_err_cnt_clr_hvt
    +              5
    +              1
    +              write-only
    +            
    +            
    +              COMB_PVT_MONITOR_EN_HVT
    +              reg_comb_pvt_monitor_en_hvt
    +              6
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          COMB_PVT_ERR_LVT_SITE0
    +          mem pvt register
    +          0x6C
    +          0x20
    +          
    +            
    +              COMB_TIMING_ERR_CNT_LVT_SITE0
    +              reg_comb_timing_err_cnt_lvt_site0
    +              0
    +              16
    +              read-only
    +            
    +          
    +        
    +        
    +          COMB_PVT_ERR_NVT_SITE0
    +          mem pvt register
    +          0x70
    +          0x20
    +          
    +            
    +              COMB_TIMING_ERR_CNT_NVT_SITE0
    +              reg_comb_timing_err_cnt_nvt_site0
    +              0
    +              16
    +              read-only
    +            
    +          
    +        
    +        
    +          COMB_PVT_ERR_HVT_SITE0
    +          mem pvt register
    +          0x74
    +          0x20
    +          
    +            
    +              COMB_TIMING_ERR_CNT_HVT_SITE0
    +              reg_comb_timing_err_cnt_hvt_site0
    +              0
    +              16
    +              read-only
    +            
    +          
    +        
    +        
    +          COMB_PVT_ERR_LVT_SITE1
    +          mem pvt register
    +          0x78
    +          0x20
    +          
    +            
    +              COMB_TIMING_ERR_CNT_LVT_SITE1
    +              reg_comb_timing_err_cnt_lvt_site1
    +              0
    +              16
    +              read-only
    +            
    +          
    +        
    +        
    +          COMB_PVT_ERR_NVT_SITE1
    +          mem pvt register
    +          0x7C
    +          0x20
    +          
    +            
    +              COMB_TIMING_ERR_CNT_NVT_SITE1
    +              reg_comb_timing_err_cnt_nvt_site1
    +              0
    +              16
    +              read-only
    +            
    +          
    +        
    +        
    +          COMB_PVT_ERR_HVT_SITE1
    +          mem pvt register
    +          0x80
    +          0x20
    +          
    +            
    +              COMB_TIMING_ERR_CNT_HVT_SITE1
    +              reg_comb_timing_err_cnt_hvt_site1
    +              0
    +              16
    +              read-only
    +            
    +          
    +        
    +        
    +          COMB_PVT_ERR_LVT_SITE2
    +          mem pvt register
    +          0x84
    +          0x20
    +          
    +            
    +              COMB_TIMING_ERR_CNT_LVT_SITE2
    +              reg_comb_timing_err_cnt_lvt_site2
    +              0
    +              16
    +              read-only
    +            
    +          
    +        
    +        
    +          COMB_PVT_ERR_NVT_SITE2
    +          mem pvt register
    +          0x88
    +          0x20
    +          
    +            
    +              COMB_TIMING_ERR_CNT_NVT_SITE2
    +              reg_comb_timing_err_cnt_nvt_site2
    +              0
    +              16
    +              read-only
    +            
    +          
    +        
    +        
    +          COMB_PVT_ERR_HVT_SITE2
    +          mem pvt register
    +          0x8C
    +          0x20
    +          
    +            
    +              COMB_TIMING_ERR_CNT_HVT_SITE2
    +              reg_comb_timing_err_cnt_hvt_site2
    +              0
    +              16
    +              read-only
    +            
    +          
    +        
    +        
    +          COMB_PVT_ERR_LVT_SITE3
    +          mem pvt register
    +          0x90
    +          0x20
    +          
    +            
    +              COMB_TIMING_ERR_CNT_LVT_SITE3
    +              reg_comb_timing_err_cnt_lvt_site3
    +              0
    +              16
    +              read-only
    +            
    +          
    +        
    +        
    +          COMB_PVT_ERR_NVT_SITE3
    +          mem pvt register
    +          0x94
    +          0x20
    +          
    +            
    +              COMB_TIMING_ERR_CNT_NVT_SITE3
    +              reg_comb_timing_err_cnt_nvt_site3
    +              0
    +              16
    +              read-only
    +            
    +          
    +        
    +        
    +          COMB_PVT_ERR_HVT_SITE3
    +          mem pvt register
    +          0x98
    +          0x20
    +          
    +            
    +              COMB_TIMING_ERR_CNT_HVT_SITE3
    +              reg_comb_timing_err_cnt_hvt_site3
    +              0
    +              16
    +              read-only
    +            
    +          
    +        
    +        
    +          SYSTEM_REG_DATE
    +          Version register
    +          0xFFC
    +          0x20
    +          0x02007150
    +          
    +            
    +              SYSTEM_REG_DATE
    +              reg_system_reg_date
    +              0
    +              28
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      SYSTIMER
    +      System Timer
    +      SYSTIMER
    +      0x60023000
    +      
    +        0x0
    +        0x78
    +        registers
    +      
    +      
    +        SYSTIMER_TARGET0
    +        37
    +      
    +      
    +        SYSTIMER_TARGET1
    +        38
    +      
    +      
    +        SYSTIMER_TARGET2
    +        39
    +      
    +      
    +        
    +          CONF
    +          SYSTIMER_CONF.
    +          0x0
    +          0x20
    +          0x46000000
    +          
    +            
    +              SYSTIMER_CLK_FO
    +              systimer clock force on
    +              0
    +              1
    +              read-write
    +            
    +            
    +              TARGET2_WORK_EN
    +              target2 work enable
    +              22
    +              1
    +              read-write
    +            
    +            
    +              TARGET1_WORK_EN
    +              target1 work enable
    +              23
    +              1
    +              read-write
    +            
    +            
    +              TARGET0_WORK_EN
    +              target0 work enable
    +              24
    +              1
    +              read-write
    +            
    +            
    +              TIMER_UNIT1_CORE1_STALL_EN
    +              If timer unit1 is stalled when core1 stalled
    +              25
    +              1
    +              read-write
    +            
    +            
    +              TIMER_UNIT1_CORE0_STALL_EN
    +              If timer unit1 is stalled when core0 stalled
    +              26
    +              1
    +              read-write
    +            
    +            
    +              TIMER_UNIT0_CORE1_STALL_EN
    +              If timer unit0 is stalled when core1 stalled
    +              27
    +              1
    +              read-write
    +            
    +            
    +              TIMER_UNIT0_CORE0_STALL_EN
    +              If timer unit0 is stalled when core0 stalled
    +              28
    +              1
    +              read-write
    +            
    +            
    +              TIMER_UNIT1_WORK_EN
    +              timer unit1 work enable
    +              29
    +              1
    +              read-write
    +            
    +            
    +              TIMER_UNIT0_WORK_EN
    +              timer unit0 work enable
    +              30
    +              1
    +              read-write
    +            
    +            
    +              CLK_EN
    +              register file clk gating
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          UNIT0_OP
    +          SYSTIMER_UNIT0_OP.
    +          0x4
    +          0x20
    +          
    +            
    +              TIMER_UNIT0_VALUE_VALID
    +              reg_timer_unit0_value_valid
    +              29
    +              1
    +              read-only
    +            
    +            
    +              TIMER_UNIT0_UPDATE
    +              update timer_unit0
    +              30
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          UNIT1_OP
    +          SYSTIMER_UNIT1_OP.
    +          0x8
    +          0x20
    +          
    +            
    +              TIMER_UNIT1_VALUE_VALID
    +              timer value is sync and valid
    +              29
    +              1
    +              read-only
    +            
    +            
    +              TIMER_UNIT1_UPDATE
    +              update timer unit1
    +              30
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          UNIT0_LOAD_HI
    +          SYSTIMER_UNIT0_LOAD_HI.
    +          0xC
    +          0x20
    +          
    +            
    +              TIMER_UNIT0_LOAD_HI
    +              timer unit0 load high 32 bit
    +              0
    +              20
    +              read-write
    +            
    +          
    +        
    +        
    +          UNIT0_LOAD_LO
    +          SYSTIMER_UNIT0_LOAD_LO.
    +          0x10
    +          0x20
    +          
    +            
    +              TIMER_UNIT0_LOAD_LO
    +              timer unit0 load low 32 bit
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          UNIT1_LOAD_HI
    +          SYSTIMER_UNIT1_LOAD_HI.
    +          0x14
    +          0x20
    +          
    +            
    +              TIMER_UNIT1_LOAD_HI
    +              timer unit1 load high 32 bit
    +              0
    +              20
    +              read-write
    +            
    +          
    +        
    +        
    +          UNIT1_LOAD_LO
    +          SYSTIMER_UNIT1_LOAD_LO.
    +          0x18
    +          0x20
    +          
    +            
    +              TIMER_UNIT1_LOAD_LO
    +              timer unit1 load low 32 bit
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          TARGET0_HI
    +          SYSTIMER_TARGET0_HI.
    +          0x1C
    +          0x20
    +          
    +            
    +              TIMER_TARGET0_HI
    +              timer taget0 high 32 bit
    +              0
    +              20
    +              read-write
    +            
    +          
    +        
    +        
    +          TARGET0_LO
    +          SYSTIMER_TARGET0_LO.
    +          0x20
    +          0x20
    +          
    +            
    +              TIMER_TARGET0_LO
    +              timer taget0 low 32 bit
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          TARGET1_HI
    +          SYSTIMER_TARGET1_HI.
    +          0x24
    +          0x20
    +          
    +            
    +              TIMER_TARGET1_HI
    +              timer taget1 high 32 bit
    +              0
    +              20
    +              read-write
    +            
    +          
    +        
    +        
    +          TARGET1_LO
    +          SYSTIMER_TARGET1_LO.
    +          0x28
    +          0x20
    +          
    +            
    +              TIMER_TARGET1_LO
    +              timer taget1 low 32 bit
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          TARGET2_HI
    +          SYSTIMER_TARGET2_HI.
    +          0x2C
    +          0x20
    +          
    +            
    +              TIMER_TARGET2_HI
    +              timer taget2 high 32 bit
    +              0
    +              20
    +              read-write
    +            
    +          
    +        
    +        
    +          TARGET2_LO
    +          SYSTIMER_TARGET2_LO.
    +          0x30
    +          0x20
    +          
    +            
    +              TIMER_TARGET2_LO
    +              timer taget2 low 32 bit
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          TARGET0_CONF
    +          SYSTIMER_TARGET0_CONF.
    +          0x34
    +          0x20
    +          
    +            
    +              TARGET0_PERIOD
    +              target0 period
    +              0
    +              26
    +              read-write
    +            
    +            
    +              TARGET0_PERIOD_MODE
    +              Set target0 to period mode
    +              30
    +              1
    +              read-write
    +            
    +            
    +              TARGET0_TIMER_UNIT_SEL
    +              select which unit to compare
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          TARGET1_CONF
    +          SYSTIMER_TARGET1_CONF.
    +          0x38
    +          0x20
    +          
    +            
    +              TARGET1_PERIOD
    +              target1 period
    +              0
    +              26
    +              read-write
    +            
    +            
    +              TARGET1_PERIOD_MODE
    +              Set target1 to period mode
    +              30
    +              1
    +              read-write
    +            
    +            
    +              TARGET1_TIMER_UNIT_SEL
    +              select which unit to compare
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          TARGET2_CONF
    +          SYSTIMER_TARGET2_CONF.
    +          0x3C
    +          0x20
    +          
    +            
    +              TARGET2_PERIOD
    +              target2 period
    +              0
    +              26
    +              read-write
    +            
    +            
    +              TARGET2_PERIOD_MODE
    +              Set target2 to period mode
    +              30
    +              1
    +              read-write
    +            
    +            
    +              TARGET2_TIMER_UNIT_SEL
    +              select which unit to compare
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          UNIT0_VALUE_HI
    +          SYSTIMER_UNIT0_VALUE_HI.
    +          0x40
    +          0x20
    +          
    +            
    +              TIMER_UNIT0_VALUE_HI
    +              timer read value high 32bit
    +              0
    +              20
    +              read-only
    +            
    +          
    +        
    +        
    +          UNIT0_VALUE_LO
    +          SYSTIMER_UNIT0_VALUE_LO.
    +          0x44
    +          0x20
    +          
    +            
    +              TIMER_UNIT0_VALUE_LO
    +              timer read value low 32bit
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          UNIT1_VALUE_HI
    +          SYSTIMER_UNIT1_VALUE_HI.
    +          0x48
    +          0x20
    +          
    +            
    +              TIMER_UNIT1_VALUE_HI
    +              timer read value high 32bit
    +              0
    +              20
    +              read-only
    +            
    +          
    +        
    +        
    +          UNIT1_VALUE_LO
    +          SYSTIMER_UNIT1_VALUE_LO.
    +          0x4C
    +          0x20
    +          
    +            
    +              TIMER_UNIT1_VALUE_LO
    +              timer read value low 32bit
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          COMP0_LOAD
    +          SYSTIMER_COMP0_LOAD.
    +          0x50
    +          0x20
    +          
    +            
    +              TIMER_COMP0_LOAD
    +              timer comp0 load value
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          COMP1_LOAD
    +          SYSTIMER_COMP1_LOAD.
    +          0x54
    +          0x20
    +          
    +            
    +              TIMER_COMP1_LOAD
    +              timer comp1 load value
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          COMP2_LOAD
    +          SYSTIMER_COMP2_LOAD.
    +          0x58
    +          0x20
    +          
    +            
    +              TIMER_COMP2_LOAD
    +              timer comp2 load value
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          UNIT0_LOAD
    +          SYSTIMER_UNIT0_LOAD.
    +          0x5C
    +          0x20
    +          
    +            
    +              TIMER_UNIT0_LOAD
    +              timer unit0 load value
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          UNIT1_LOAD
    +          SYSTIMER_UNIT1_LOAD.
    +          0x60
    +          0x20
    +          
    +            
    +              TIMER_UNIT1_LOAD
    +              timer unit1 load value
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          INT_ENA
    +          SYSTIMER_INT_ENA.
    +          0x64
    +          0x20
    +          
    +            
    +              TARGET0_INT_ENA
    +              interupt0 enable
    +              0
    +              1
    +              read-write
    +            
    +            
    +              TARGET1_INT_ENA
    +              interupt1 enable
    +              1
    +              1
    +              read-write
    +            
    +            
    +              TARGET2_INT_ENA
    +              interupt2 enable
    +              2
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_RAW
    +          SYSTIMER_INT_RAW.
    +          0x68
    +          0x20
    +          
    +            
    +              TARGET0_INT_RAW
    +              interupt0 raw
    +              0
    +              1
    +              read-only
    +            
    +            
    +              TARGET1_INT_RAW
    +              interupt1 raw
    +              1
    +              1
    +              read-only
    +            
    +            
    +              TARGET2_INT_RAW
    +              interupt2 raw
    +              2
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_CLR
    +          SYSTIMER_INT_CLR.
    +          0x6C
    +          0x20
    +          
    +            
    +              TARGET0_INT_CLR
    +              interupt0 clear
    +              0
    +              1
    +              write-only
    +            
    +            
    +              TARGET1_INT_CLR
    +              interupt1 clear
    +              1
    +              1
    +              write-only
    +            
    +            
    +              TARGET2_INT_CLR
    +              interupt2 clear
    +              2
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          INT_ST
    +          SYSTIMER_INT_ST.
    +          0x70
    +          0x20
    +          
    +            
    +              TARGET0_INT_ST
    +              reg_target0_int_st
    +              0
    +              1
    +              read-only
    +            
    +            
    +              TARGET1_INT_ST
    +              reg_target1_int_st
    +              1
    +              1
    +              read-only
    +            
    +            
    +              TARGET2_INT_ST
    +              reg_target2_int_st
    +              2
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          DATE
    +          SYSTIMER_DATE.
    +          0xFC
    +          0x20
    +          0x02006171
    +          
    +            
    +              DATE
    +              reg_date
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      TIMG0
    +      Timer Group
    +      TIMG
    +      0x6001F000
    +      
    +        0x0
    +        0x68
    +        registers
    +      
    +      
    +        TG0_T0_LEVEL
    +        32
    +      
    +      
    +        TG0_WDT_LEVEL
    +        33
    +      
    +      
    +        
    +          T0CONFIG
    +          TIMG_T0CONFIG_REG.
    +          0x0
    +          0x20
    +          0x60002000
    +          
    +            
    +              T0_USE_XTAL
    +              reg_t0_use_xtal.
    +              9
    +              1
    +              read-write
    +            
    +            
    +              T0_ALARM_EN
    +              reg_t0_alarm_en.
    +              10
    +              1
    +              read-write
    +            
    +            
    +              T0_DIVCNT_RST
    +              reg_t0_divcnt_rst.
    +              12
    +              1
    +              write-only
    +            
    +            
    +              T0_DIVIDER
    +              reg_t0_divider.
    +              13
    +              16
    +              read-write
    +            
    +            
    +              T0_AUTORELOAD
    +              reg_t0_autoreload.
    +              29
    +              1
    +              read-write
    +            
    +            
    +              T0_INCREASE
    +              reg_t0_increase.
    +              30
    +              1
    +              read-write
    +            
    +            
    +              T0_EN
    +              reg_t0_en.
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          T0LO
    +          TIMG_T0LO_REG.
    +          0x4
    +          0x20
    +          
    +            
    +              T0_LO
    +              t0_lo
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          T0HI
    +          TIMG_T0HI_REG.
    +          0x8
    +          0x20
    +          
    +            
    +              T0_HI
    +              t0_hi
    +              0
    +              22
    +              read-only
    +            
    +          
    +        
    +        
    +          T0UPDATE
    +          TIMG_T0UPDATE_REG.
    +          0xC
    +          0x20
    +          
    +            
    +              T0_UPDATE
    +              t0_update
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          T0ALARMLO
    +          TIMG_T0ALARMLO_REG.
    +          0x10
    +          0x20
    +          
    +            
    +              T0_ALARM_LO
    +              reg_t0_alarm_lo.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          T0ALARMHI
    +          TIMG_T0ALARMHI_REG.
    +          0x14
    +          0x20
    +          
    +            
    +              T0_ALARM_HI
    +              reg_t0_alarm_hi.
    +              0
    +              22
    +              read-write
    +            
    +          
    +        
    +        
    +          T0LOADLO
    +          TIMG_T0LOADLO_REG.
    +          0x18
    +          0x20
    +          
    +            
    +              T0_LOAD_LO
    +              reg_t0_load_lo.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          T0LOADHI
    +          TIMG_T0LOADHI_REG.
    +          0x1C
    +          0x20
    +          
    +            
    +              T0_LOAD_HI
    +              reg_t0_load_hi.
    +              0
    +              22
    +              read-write
    +            
    +          
    +        
    +        
    +          T0LOAD
    +          TIMG_T0LOAD_REG.
    +          0x20
    +          0x20
    +          
    +            
    +              T0_LOAD
    +              t0_load
    +              0
    +              32
    +              write-only
    +            
    +          
    +        
    +        
    +          WDTCONFIG0
    +          TIMG_WDTCONFIG0_REG.
    +          0x48
    +          0x20
    +          0x0004C000
    +          
    +            
    +              WDT_APPCPU_RESET_EN
    +              reg_wdt_appcpu_reset_en.
    +              12
    +              1
    +              read-write
    +            
    +            
    +              WDT_PROCPU_RESET_EN
    +              reg_wdt_procpu_reset_en.
    +              13
    +              1
    +              read-write
    +            
    +            
    +              WDT_FLASHBOOT_MOD_EN
    +              reg_wdt_flashboot_mod_en.
    +              14
    +              1
    +              read-write
    +            
    +            
    +              WDT_SYS_RESET_LENGTH
    +              reg_wdt_sys_reset_length.
    +              15
    +              3
    +              read-write
    +            
    +            
    +              WDT_CPU_RESET_LENGTH
    +              reg_wdt_cpu_reset_length.
    +              18
    +              3
    +              read-write
    +            
    +            
    +              WDT_USE_XTAL
    +              reg_wdt_use_xtal.
    +              21
    +              1
    +              read-write
    +            
    +            
    +              WDT_CONF_UPDATE_EN
    +              reg_wdt_conf_update_en.
    +              22
    +              1
    +              write-only
    +            
    +            
    +              WDT_STG3
    +              reg_wdt_stg3.
    +              23
    +              2
    +              read-write
    +            
    +            
    +              WDT_STG2
    +              reg_wdt_stg2.
    +              25
    +              2
    +              read-write
    +            
    +            
    +              WDT_STG1
    +              reg_wdt_stg1.
    +              27
    +              2
    +              read-write
    +            
    +            
    +              WDT_STG0
    +              reg_wdt_stg0.
    +              29
    +              2
    +              read-write
    +            
    +            
    +              WDT_EN
    +              reg_wdt_en.
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          WDTCONFIG1
    +          TIMG_WDTCONFIG1_REG.
    +          0x4C
    +          0x20
    +          0x00010000
    +          
    +            
    +              WDT_DIVCNT_RST
    +              reg_wdt_divcnt_rst.
    +              0
    +              1
    +              write-only
    +            
    +            
    +              WDT_CLK_PRESCALE
    +              reg_wdt_clk_prescale.
    +              16
    +              16
    +              read-write
    +            
    +          
    +        
    +        
    +          WDTCONFIG2
    +          TIMG_WDTCONFIG2_REG.
    +          0x50
    +          0x20
    +          0x018CBA80
    +          
    +            
    +              WDT_STG0_HOLD
    +              reg_wdt_stg0_hold.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          WDTCONFIG3
    +          TIMG_WDTCONFIG3_REG.
    +          0x54
    +          0x20
    +          0x07FFFFFF
    +          
    +            
    +              WDT_STG1_HOLD
    +              reg_wdt_stg1_hold.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          WDTCONFIG4
    +          TIMG_WDTCONFIG4_REG.
    +          0x58
    +          0x20
    +          0x000FFFFF
    +          
    +            
    +              WDT_STG2_HOLD
    +              reg_wdt_stg2_hold.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          WDTCONFIG5
    +          TIMG_WDTCONFIG5_REG.
    +          0x5C
    +          0x20
    +          0x000FFFFF
    +          
    +            
    +              WDT_STG3_HOLD
    +              reg_wdt_stg3_hold.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          WDTFEED
    +          TIMG_WDTFEED_REG.
    +          0x60
    +          0x20
    +          
    +            
    +              WDT_FEED
    +              wdt_feed
    +              0
    +              32
    +              write-only
    +            
    +          
    +        
    +        
    +          WDTWPROTECT
    +          TIMG_WDTWPROTECT_REG.
    +          0x64
    +          0x20
    +          0x50D83AA1
    +          
    +            
    +              WDT_WKEY
    +              reg_wdt_wkey.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          RTCCALICFG
    +          TIMG_RTCCALICFG_REG.
    +          0x68
    +          0x20
    +          0x00013000
    +          
    +            
    +              RTC_CALI_START_CYCLING
    +              reg_rtc_cali_start_cycling.
    +              12
    +              1
    +              read-write
    +            
    +            
    +              RTC_CALI_CLK_SEL
    +              reg_rtc_cali_clk_sel.0:rtcslowclock.1:clk_80m.2:xtal_32k
    +              13
    +              2
    +              read-write
    +            
    +            
    +              RTC_CALI_RDY
    +              rtc_cali_rdy
    +              15
    +              1
    +              read-only
    +            
    +            
    +              RTC_CALI_MAX
    +              reg_rtc_cali_max.
    +              16
    +              15
    +              read-write
    +            
    +            
    +              RTC_CALI_START
    +              reg_rtc_cali_start.
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          RTCCALICFG1
    +          TIMG_RTCCALICFG1_REG.
    +          0x6C
    +          0x20
    +          
    +            
    +              RTC_CALI_CYCLING_DATA_VLD
    +              rtc_cali_cycling_data_vld
    +              0
    +              1
    +              read-only
    +            
    +            
    +              RTC_CALI_VALUE
    +              rtc_cali_value
    +              7
    +              25
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_ENA_TIMERS
    +          INT_ENA_TIMG_REG
    +          0x70
    +          0x20
    +          
    +            
    +              T0_INT_ENA
    +              t0_int_ena
    +              0
    +              1
    +              read-write
    +            
    +            
    +              WDT_INT_ENA
    +              wdt_int_ena
    +              1
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_RAW_TIMERS
    +          INT_RAW_TIMG_REG
    +          0x74
    +          0x20
    +          
    +            
    +              T0_INT_RAW
    +              t0_int_raw
    +              0
    +              1
    +              read-only
    +            
    +            
    +              WDT_INT_RAW
    +              wdt_int_raw
    +              1
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_ST_TIMERS
    +          INT_ST_TIMG_REG
    +          0x78
    +          0x20
    +          
    +            
    +              T0_INT_ST
    +              t0_int_st
    +              0
    +              1
    +              read-only
    +            
    +            
    +              WDT_INT_ST
    +              wdt_int_st
    +              1
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_CLR_TIMERS
    +          INT_CLR_TIMG_REG
    +          0x7C
    +          0x20
    +          
    +            
    +              T0_INT_CLR
    +              t0_int_clr
    +              0
    +              1
    +              write-only
    +            
    +            
    +              WDT_INT_CLR
    +              wdt_int_clr
    +              1
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          RTCCALICFG2
    +          TIMG_RTCCALICFG2_REG.
    +          0x80
    +          0x20
    +          0xFFFFFF98
    +          
    +            
    +              RTC_CALI_TIMEOUT
    +              timeoutindicator
    +              0
    +              1
    +              read-only
    +            
    +            
    +              RTC_CALI_TIMEOUT_RST_CNT
    +              reg_rtc_cali_timeout_rst_cnt.Cyclesthatreleasecalibrationtimeoutreset
    +              3
    +              4
    +              read-write
    +            
    +            
    +              RTC_CALI_TIMEOUT_THRES
    +              reg_rtc_cali_timeout_thres.timeoutifcalivaluecountsoverthreshold
    +              7
    +              25
    +              read-write
    +            
    +          
    +        
    +        
    +          NTIMG_DATE
    +          TIMG_NTIMG_DATE_REG.
    +          0xF8
    +          0x20
    +          0x02006191
    +          
    +            
    +              NTIMGS_DATE
    +              reg_ntimers_date.
    +              0
    +              28
    +              read-write
    +            
    +          
    +        
    +        
    +          REGCLK
    +          TIMG_REGCLK_REG.
    +          0xFC
    +          0x20
    +          0x60000000
    +          
    +            
    +              WDT_CLK_IS_ACTIVE
    +              reg_wdt_clk_is_active.
    +              29
    +              1
    +              read-write
    +            
    +            
    +              TIMER_CLK_IS_ACTIVE
    +              reg_timer_clk_is_active.
    +              30
    +              1
    +              read-write
    +            
    +            
    +              CLK_EN
    +              reg_clk_en.
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      TIMG1
    +      Timer Group
    +      0x60020000
    +      
    +        TG1_T0_LEVEL
    +        34
    +      
    +      
    +        TG1_WDT_LEVEL
    +        35
    +      
    +    
    +    
    +      TWAI
    +      Two-Wire Automotive Interface
    +      TWAI
    +      0x6002B000
    +      
    +        0x0
    +        0x6C
    +        registers
    +      
    +      
    +        TWAI
    +        25
    +      
    +      
    +        
    +          MODE
    +          Mode Register
    +          0x0
    +          0x20
    +          0x00000001
    +          
    +            
    +              RESET_MODE
    +              This bit is used to configure the operating mode of the TWAI Controller. 1: Reset mode; 0: Operating mode.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              LISTEN_ONLY_MODE
    +              1: Listen only mode. In this mode the nodes will only receive messages from the bus, without generating the acknowledge signal nor updating the RX error counter.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              SELF_TEST_MODE
    +              1: Self test mode. In this mode the TX nodes can perform a successful transmission without receiving the acknowledge signal. This mode is often used to test a single node with the self reception request command.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              RX_FILTER_MODE
    +              This bit is used to configure the filter mode. 0: Dual filter mode; 1: Single filter mode.
    +              3
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CMD
    +          Command Register
    +          0x4
    +          0x20
    +          
    +            
    +              TX_REQ
    +              Set the bit to 1 to allow the driving nodes start transmission.
    +              0
    +              1
    +              write-only
    +            
    +            
    +              ABORT_TX
    +              Set the bit to 1 to cancel a pending transmission request.
    +              1
    +              1
    +              write-only
    +            
    +            
    +              RELEASE_BUF
    +              Set the bit to 1 to release the RX buffer.
    +              2
    +              1
    +              write-only
    +            
    +            
    +              CLR_OVERRUN
    +              Set the bit to 1 to clear the data overrun status bit.
    +              3
    +              1
    +              write-only
    +            
    +            
    +              SELF_RX_REQ
    +              Self reception request command. Set the bit to 1 to allow a message be transmitted and received simultaneously.
    +              4
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          STATUS
    +          Status register
    +          0x8
    +          0x20
    +          
    +            
    +              RX_BUF_ST
    +              1: The data in the RX buffer is not empty, with at least one received data packet.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              OVERRUN_ST
    +              1: The RX FIFO is full and data overrun has occurred.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              TX_BUF_ST
    +              1: The TX buffer is empty, the CPU may write a message into it.
    +              2
    +              1
    +              read-only
    +            
    +            
    +              TX_COMPLETE
    +              1: The TWAI controller has successfully received a packet from the bus.
    +              3
    +              1
    +              read-only
    +            
    +            
    +              RX_ST
    +              1: The TWAI Controller is receiving a message from the bus.
    +              4
    +              1
    +              read-only
    +            
    +            
    +              TX_ST
    +              1: The TWAI Controller is transmitting a message to the bus.
    +              5
    +              1
    +              read-only
    +            
    +            
    +              ERR_ST
    +              1: At least one of the RX/TX error counter has reached or exceeded the value set in register TWAI_ERR_WARNING_LIMIT_REG.
    +              6
    +              1
    +              read-only
    +            
    +            
    +              BUS_OFF_ST
    +              1: In bus-off status, the TWAI Controller is no longer involved in bus activities.
    +              7
    +              1
    +              read-only
    +            
    +            
    +              MISS_ST
    +              This bit reflects whether the data packet in the RX FIFO is complete. 1: The current packet is missing; 0: The current packet is complete
    +              8
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_RAW
    +          Interrupt Register
    +          0xC
    +          0x20
    +          
    +            
    +              RX_INT_ST
    +              Receive interrupt. If this bit is set to 1, it indicates there are messages to be handled in the RX FIFO.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              TX_INT_ST
    +              Transmit interrupt. If this bit is set to 1, it indicates the message transmitting mis- sion is finished and a new transmission is able to execute.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              ERR_WARN_INT_ST
    +              Error warning interrupt. If this bit is set to 1, it indicates the error status signal and the bus-off status signal of Status register have changed (e.g., switched from 0 to 1 or from 1 to 0).
    +              2
    +              1
    +              read-only
    +            
    +            
    +              OVERRUN_INT_ST
    +              Data overrun interrupt. If this bit is set to 1, it indicates a data overrun interrupt is generated in the RX FIFO.
    +              3
    +              1
    +              read-only
    +            
    +            
    +              ERR_PASSIVE_INT_ST
    +              Error passive interrupt. If this bit is set to 1, it indicates the TWAI Controller is switched between error active status and error passive status due to the change of error counters.
    +              5
    +              1
    +              read-only
    +            
    +            
    +              ARB_LOST_INT_ST
    +              Arbitration lost interrupt. If this bit is set to 1, it indicates an arbitration lost interrupt is generated.
    +              6
    +              1
    +              read-only
    +            
    +            
    +              BUS_ERR_INT_ST
    +              Error interrupt. If this bit is set to 1, it indicates an error is detected on the bus.
    +              7
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_ENA
    +          Interrupt Enable Register
    +          0x10
    +          0x20
    +          
    +            
    +              RX_INT_ENA
    +              Set this bit to 1 to enable receive interrupt.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              TX_INT_ENA
    +              Set this bit to 1 to enable transmit interrupt.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              ERR_WARN_INT_ENA
    +              Set this bit to 1 to enable error warning interrupt.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              OVERRUN_INT_ENA
    +              Set this bit to 1 to enable data overrun interrupt.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              ERR_PASSIVE_INT_ENA
    +              Set this bit to 1 to enable error passive interrupt.
    +              5
    +              1
    +              read-write
    +            
    +            
    +              ARB_LOST_INT_ENA
    +              Set this bit to 1 to enable arbitration lost interrupt.
    +              6
    +              1
    +              read-write
    +            
    +            
    +              BUS_ERR_INT_ENA
    +              Set this bit to 1 to enable error interrupt.
    +              7
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          BUS_TIMING_0
    +          Bus Timing Register 0
    +          0x18
    +          0x20
    +          
    +            
    +              BAUD_PRESC
    +              Baud Rate Prescaler, determines the frequency dividing ratio.
    +              0
    +              13
    +            
    +            
    +              SYNC_JUMP_WIDTH
    +              Synchronization Jump Width (SJW), 1 \verb+~+ 14 Tq wide.
    +              14
    +              2
    +            
    +          
    +        
    +        
    +          BUS_TIMING_1
    +          Bus Timing Register 1
    +          0x1C
    +          0x20
    +          
    +            
    +              TIME_SEG1
    +              The width of PBS1.
    +              0
    +              4
    +            
    +            
    +              TIME_SEG2
    +              The width of PBS2.
    +              4
    +              3
    +            
    +            
    +              TIME_SAMP
    +              The number of sample points. 0: the bus is sampled once; 1: the bus is sampled three times
    +              7
    +              1
    +            
    +          
    +        
    +        
    +          ARB_LOST_CAP
    +          Arbitration Lost Capture Register
    +          0x2C
    +          0x20
    +          
    +            
    +              ARB_LOST_CAP
    +              This register contains information about the bit position of lost arbitration.
    +              0
    +              5
    +              read-only
    +            
    +          
    +        
    +        
    +          ERR_CODE_CAP
    +          Error Code Capture Register
    +          0x30
    +          0x20
    +          
    +            
    +              ECC_SEGMENT
    +              This register contains information about the location of errors, see Table 181 for details.
    +              0
    +              5
    +              read-only
    +            
    +            
    +              ECC_DIRECTION
    +              This register contains information about transmission direction of the node when error occurs. 1: Error occurs when receiving a message; 0: Error occurs when transmitting a message
    +              5
    +              1
    +              read-only
    +            
    +            
    +              ECC_TYPE
    +              This register contains information about error types: 00: bit error; 01: form error; 10: stuff error; 11: other type of error
    +              6
    +              2
    +              read-only
    +            
    +          
    +        
    +        
    +          ERR_WARNING_LIMIT
    +          Error Warning Limit Register
    +          0x34
    +          0x20
    +          0x00000060
    +          
    +            
    +              ERR_WARNING_LIMIT
    +              Error warning threshold. In the case when any of a error counter value exceeds the threshold, or all the error counter values are below the threshold, an error warning interrupt will be triggered (given the enable signal is valid).
    +              0
    +              8
    +            
    +          
    +        
    +        
    +          RX_ERR_CNT
    +          Receive Error Counter Register
    +          0x38
    +          0x20
    +          
    +            
    +              RX_ERR_CNT
    +              The RX error counter register, reflects value changes under reception status.
    +              0
    +              8
    +            
    +          
    +        
    +        
    +          TX_ERR_CNT
    +          Transmit Error Counter Register
    +          0x3C
    +          0x20
    +          
    +            
    +              TX_ERR_CNT
    +              The TX error counter register, reflects value changes under transmission status.
    +              0
    +              8
    +            
    +          
    +        
    +        
    +          DATA_0
    +          Data register 0
    +          0x40
    +          0x20
    +          
    +            
    +              TX_BYTE_0
    +              In reset mode, it is acceptance code register 0 with R/W Permission. In operation mode, it stores the 0th byte information of the data to be transmitted under operating mode.
    +              0
    +              8
    +              write-only
    +            
    +          
    +        
    +        
    +          DATA_1
    +          Data register 1
    +          0x44
    +          0x20
    +          
    +            
    +              TX_BYTE_1
    +              In reset mode, it is acceptance code register 1 with R/W Permission. In operation mode, it stores the 1st byte information of the data to be transmitted under operating mode.
    +              0
    +              8
    +              write-only
    +            
    +          
    +        
    +        
    +          DATA_2
    +          Data register 2
    +          0x48
    +          0x20
    +          
    +            
    +              TX_BYTE_2
    +              In reset mode, it is acceptance code register 2 with R/W Permission. In operation mode, it stores the 2nd byte information of the data to be transmitted under operating mode.
    +              0
    +              8
    +              write-only
    +            
    +          
    +        
    +        
    +          DATA_3
    +          Data register 3
    +          0x4C
    +          0x20
    +          
    +            
    +              TX_BYTE_3
    +              In reset mode, it is acceptance code register 3 with R/W Permission. In operation mode, it stores the 3rd byte information of the data to be transmitted under operating mode.
    +              0
    +              8
    +              write-only
    +            
    +          
    +        
    +        
    +          DATA_4
    +          Data register 4
    +          0x50
    +          0x20
    +          
    +            
    +              TX_BYTE_4
    +              In reset mode, it is acceptance mask register 0 with R/W Permission. In operation mode, it stores the 4th byte information of the data to be transmitted under operating mode.
    +              0
    +              8
    +              write-only
    +            
    +          
    +        
    +        
    +          DATA_5
    +          Data register 5
    +          0x54
    +          0x20
    +          
    +            
    +              TX_BYTE_5
    +              In reset mode, it is acceptance mask register 1 with R/W Permission. In operation mode, it stores the 5th byte information of the data to be transmitted under operating mode.
    +              0
    +              8
    +              write-only
    +            
    +          
    +        
    +        
    +          DATA_6
    +          Data register 6
    +          0x58
    +          0x20
    +          
    +            
    +              TX_BYTE_6
    +              In reset mode, it is acceptance mask register 2 with R/W Permission. In operation mode, it stores the 6th byte information of the data to be transmitted under operating mode.
    +              0
    +              8
    +              write-only
    +            
    +          
    +        
    +        
    +          DATA_7
    +          Data register 7
    +          0x5C
    +          0x20
    +          
    +            
    +              TX_BYTE_7
    +              In reset mode, it is acceptance mask register 3 with R/W Permission. In operation mode, it stores the 7th byte information of the data to be transmitted under operating mode.
    +              0
    +              8
    +              write-only
    +            
    +          
    +        
    +        
    +          DATA_8
    +          Data register 8
    +          0x60
    +          0x20
    +          
    +            
    +              TX_BYTE_8
    +              Stored the 8th byte information of the data to be transmitted under operating mode.
    +              0
    +              8
    +              write-only
    +            
    +          
    +        
    +        
    +          DATA_9
    +          Data register 9
    +          0x64
    +          0x20
    +          
    +            
    +              TX_BYTE_9
    +              Stored the 9th byte information of the data to be transmitted under operating mode.
    +              0
    +              8
    +              write-only
    +            
    +          
    +        
    +        
    +          DATA_10
    +          Data register 10
    +          0x68
    +          0x20
    +          
    +            
    +              TX_BYTE_10
    +              Stored the 10th byte information of the data to be transmitted under operating mode.
    +              0
    +              8
    +              write-only
    +            
    +          
    +        
    +        
    +          DATA_11
    +          Data register 11
    +          0x6C
    +          0x20
    +          
    +            
    +              TX_BYTE_11
    +              Stored the 11th byte information of the data to be transmitted under operating mode.
    +              0
    +              8
    +              write-only
    +            
    +          
    +        
    +        
    +          DATA_12
    +          Data register 12
    +          0x70
    +          0x20
    +          
    +            
    +              TX_BYTE_12
    +              Stored the 12th byte information of the data to be transmitted under operating mode.
    +              0
    +              8
    +              write-only
    +            
    +          
    +        
    +        
    +          RX_MESSAGE_CNT
    +          Receive Message Counter Register
    +          0x74
    +          0x20
    +          
    +            
    +              RX_MESSAGE_COUNTER
    +              This register reflects the number of messages available within the RX FIFO.
    +              0
    +              7
    +              read-only
    +            
    +          
    +        
    +        
    +          CLOCK_DIVIDER
    +          Clock Divider register
    +          0x7C
    +          0x20
    +          
    +            
    +              CD
    +              These bits are used to configure frequency dividing coefficients of the external CLKOUT pin.
    +              0
    +              8
    +              read-write
    +            
    +            
    +              CLOCK_OFF
    +              This bit can be configured under reset mode. 1: Disable the external CLKOUT pin; 0: Enable the external CLKOUT pin
    +              8
    +              1
    +            
    +          
    +        
    +      
    +    
    +    
    +      UART0
    +      UART (Universal Asynchronous Receiver-Transmitter) Controller
    +      UART
    +      0x60000000
    +      
    +        0x0
    +        0x84
    +        registers
    +      
    +      
    +        UART0
    +        21
    +      
    +      
    +        
    +          FIFO
    +          FIFO data register
    +          0x0
    +          0x20
    +          
    +            
    +              RXFIFO_RD_BYTE
    +              UART 0 accesses FIFO via this register.
    +              0
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_RAW
    +          Raw interrupt status
    +          0x4
    +          0x20
    +          0x00000002
    +          
    +            
    +              RXFIFO_FULL_INT_RAW
    +              This interrupt raw bit turns to high level when receiver receives more data than what rxfifo_full_thrhd specifies.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              TXFIFO_EMPTY_INT_RAW
    +              This interrupt raw bit turns to high level when the amount of data in Tx-FIFO is less than what txfifo_empty_thrhd specifies .
    +              1
    +              1
    +              read-only
    +            
    +            
    +              PARITY_ERR_INT_RAW
    +              This interrupt raw bit turns to high level when receiver detects a parity error in the data.
    +              2
    +              1
    +              read-only
    +            
    +            
    +              FRM_ERR_INT_RAW
    +              This interrupt raw bit turns to high level when receiver detects a data frame error .
    +              3
    +              1
    +              read-only
    +            
    +            
    +              RXFIFO_OVF_INT_RAW
    +              This interrupt raw bit turns to high level when receiver receives more data than the FIFO can store.
    +              4
    +              1
    +              read-only
    +            
    +            
    +              DSR_CHG_INT_RAW
    +              This interrupt raw bit turns to high level when receiver detects the edge change of DSRn signal.
    +              5
    +              1
    +              read-only
    +            
    +            
    +              CTS_CHG_INT_RAW
    +              This interrupt raw bit turns to high level when receiver detects the edge change of CTSn signal.
    +              6
    +              1
    +              read-only
    +            
    +            
    +              BRK_DET_INT_RAW
    +              This interrupt raw bit turns to high level when receiver detects a 0 after the stop bit.
    +              7
    +              1
    +              read-only
    +            
    +            
    +              RXFIFO_TOUT_INT_RAW
    +              This interrupt raw bit turns to high level when receiver takes more time than rx_tout_thrhd to receive a byte.
    +              8
    +              1
    +              read-only
    +            
    +            
    +              SW_XON_INT_RAW
    +              This interrupt raw bit turns to high level when receiver recevies Xon char when uart_sw_flow_con_en is set to 1.
    +              9
    +              1
    +              read-only
    +            
    +            
    +              SW_XOFF_INT_RAW
    +              This interrupt raw bit turns to high level when receiver receives Xoff char when uart_sw_flow_con_en is set to 1.
    +              10
    +              1
    +              read-only
    +            
    +            
    +              GLITCH_DET_INT_RAW
    +              This interrupt raw bit turns to high level when receiver detects a glitch in the middle of a start bit.
    +              11
    +              1
    +              read-only
    +            
    +            
    +              TX_BRK_DONE_INT_RAW
    +              This interrupt raw bit turns to high level when transmitter completes  sending  NULL characters, after all data in Tx-FIFO are sent.
    +              12
    +              1
    +              read-only
    +            
    +            
    +              TX_BRK_IDLE_DONE_INT_RAW
    +              This interrupt raw bit turns to high level when transmitter has kept the shortest duration after sending the  last data.
    +              13
    +              1
    +              read-only
    +            
    +            
    +              TX_DONE_INT_RAW
    +              This interrupt raw bit turns to high level when transmitter has send out all data in FIFO.
    +              14
    +              1
    +              read-only
    +            
    +            
    +              RS485_PARITY_ERR_INT_RAW
    +              This interrupt raw bit turns to high level when receiver detects a parity error from the echo of transmitter in rs485 mode.
    +              15
    +              1
    +              read-only
    +            
    +            
    +              RS485_FRM_ERR_INT_RAW
    +              This interrupt raw bit turns to high level when receiver detects a data frame error from the echo of transmitter in rs485 mode.
    +              16
    +              1
    +              read-only
    +            
    +            
    +              RS485_CLASH_INT_RAW
    +              This interrupt raw bit turns to high level when detects a clash between transmitter and receiver in rs485 mode.
    +              17
    +              1
    +              read-only
    +            
    +            
    +              AT_CMD_CHAR_DET_INT_RAW
    +              This interrupt raw bit turns to high level when receiver detects the configured at_cmd char.
    +              18
    +              1
    +              read-only
    +            
    +            
    +              WAKEUP_INT_RAW
    +              This interrupt raw bit turns to high level when input rxd edge changes more times than what reg_active_threshold specifies in light sleeping mode.
    +              19
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_ST
    +          Masked interrupt status
    +          0x8
    +          0x20
    +          
    +            
    +              RXFIFO_FULL_INT_ST
    +              This is the status bit for rxfifo_full_int_raw when rxfifo_full_int_ena is set to 1.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              TXFIFO_EMPTY_INT_ST
    +              This is the status bit for  txfifo_empty_int_raw  when txfifo_empty_int_ena is set to 1.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              PARITY_ERR_INT_ST
    +              This is the status bit for parity_err_int_raw when parity_err_int_ena is set to 1.
    +              2
    +              1
    +              read-only
    +            
    +            
    +              FRM_ERR_INT_ST
    +              This is the status bit for frm_err_int_raw when frm_err_int_ena is set to 1.
    +              3
    +              1
    +              read-only
    +            
    +            
    +              RXFIFO_OVF_INT_ST
    +              This is the status bit for rxfifo_ovf_int_raw when rxfifo_ovf_int_ena is set to 1.
    +              4
    +              1
    +              read-only
    +            
    +            
    +              DSR_CHG_INT_ST
    +              This is the status bit for dsr_chg_int_raw when dsr_chg_int_ena is set to 1.
    +              5
    +              1
    +              read-only
    +            
    +            
    +              CTS_CHG_INT_ST
    +              This is the status bit for cts_chg_int_raw when cts_chg_int_ena is set to 1.
    +              6
    +              1
    +              read-only
    +            
    +            
    +              BRK_DET_INT_ST
    +              This is the status bit for brk_det_int_raw when brk_det_int_ena is set to 1.
    +              7
    +              1
    +              read-only
    +            
    +            
    +              RXFIFO_TOUT_INT_ST
    +              This is the status bit for rxfifo_tout_int_raw when rxfifo_tout_int_ena is set to 1.
    +              8
    +              1
    +              read-only
    +            
    +            
    +              SW_XON_INT_ST
    +              This is the status bit for sw_xon_int_raw when sw_xon_int_ena is set to 1.
    +              9
    +              1
    +              read-only
    +            
    +            
    +              SW_XOFF_INT_ST
    +              This is the status bit for sw_xoff_int_raw when sw_xoff_int_ena is set to 1.
    +              10
    +              1
    +              read-only
    +            
    +            
    +              GLITCH_DET_INT_ST
    +              This is the status bit for glitch_det_int_raw when glitch_det_int_ena is set to 1.
    +              11
    +              1
    +              read-only
    +            
    +            
    +              TX_BRK_DONE_INT_ST
    +              This is the status bit for tx_brk_done_int_raw when tx_brk_done_int_ena is set to 1.
    +              12
    +              1
    +              read-only
    +            
    +            
    +              TX_BRK_IDLE_DONE_INT_ST
    +              This is the stauts bit for tx_brk_idle_done_int_raw when tx_brk_idle_done_int_ena is set to 1.
    +              13
    +              1
    +              read-only
    +            
    +            
    +              TX_DONE_INT_ST
    +              This is the status bit for tx_done_int_raw when tx_done_int_ena is set to 1.
    +              14
    +              1
    +              read-only
    +            
    +            
    +              RS485_PARITY_ERR_INT_ST
    +              This is the status bit for rs485_parity_err_int_raw when rs485_parity_int_ena is set to 1.
    +              15
    +              1
    +              read-only
    +            
    +            
    +              RS485_FRM_ERR_INT_ST
    +              This is the status bit for rs485_frm_err_int_raw when rs485_fm_err_int_ena is set to 1.
    +              16
    +              1
    +              read-only
    +            
    +            
    +              RS485_CLASH_INT_ST
    +              This is the status bit for rs485_clash_int_raw when rs485_clash_int_ena is set to 1.
    +              17
    +              1
    +              read-only
    +            
    +            
    +              AT_CMD_CHAR_DET_INT_ST
    +              This is the status bit for at_cmd_det_int_raw when at_cmd_char_det_int_ena is set to 1.
    +              18
    +              1
    +              read-only
    +            
    +            
    +              WAKEUP_INT_ST
    +              This is the status bit for uart_wakeup_int_raw when uart_wakeup_int_ena is set to 1.
    +              19
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_ENA
    +          Interrupt enable bits
    +          0xC
    +          0x20
    +          
    +            
    +              RXFIFO_FULL_INT_ENA
    +              This is the enable bit for rxfifo_full_int_st register.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              TXFIFO_EMPTY_INT_ENA
    +              This is the enable bit for txfifo_empty_int_st register.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              PARITY_ERR_INT_ENA
    +              This is the enable bit for parity_err_int_st register.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              FRM_ERR_INT_ENA
    +              This is the enable bit for frm_err_int_st register.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              RXFIFO_OVF_INT_ENA
    +              This is the enable bit for rxfifo_ovf_int_st register.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              DSR_CHG_INT_ENA
    +              This is the enable bit for dsr_chg_int_st register.
    +              5
    +              1
    +              read-write
    +            
    +            
    +              CTS_CHG_INT_ENA
    +              This is the enable bit for cts_chg_int_st register.
    +              6
    +              1
    +              read-write
    +            
    +            
    +              BRK_DET_INT_ENA
    +              This is the enable bit for brk_det_int_st register.
    +              7
    +              1
    +              read-write
    +            
    +            
    +              RXFIFO_TOUT_INT_ENA
    +              This is the enable bit for rxfifo_tout_int_st register.
    +              8
    +              1
    +              read-write
    +            
    +            
    +              SW_XON_INT_ENA
    +              This is the enable bit for sw_xon_int_st register.
    +              9
    +              1
    +              read-write
    +            
    +            
    +              SW_XOFF_INT_ENA
    +              This is the enable bit for sw_xoff_int_st register.
    +              10
    +              1
    +              read-write
    +            
    +            
    +              GLITCH_DET_INT_ENA
    +              This is the enable bit for glitch_det_int_st register.
    +              11
    +              1
    +              read-write
    +            
    +            
    +              TX_BRK_DONE_INT_ENA
    +              This is the enable bit for tx_brk_done_int_st register.
    +              12
    +              1
    +              read-write
    +            
    +            
    +              TX_BRK_IDLE_DONE_INT_ENA
    +              This is the enable bit for tx_brk_idle_done_int_st register.
    +              13
    +              1
    +              read-write
    +            
    +            
    +              TX_DONE_INT_ENA
    +              This is the enable bit for tx_done_int_st register.
    +              14
    +              1
    +              read-write
    +            
    +            
    +              RS485_PARITY_ERR_INT_ENA
    +              This is the enable bit for rs485_parity_err_int_st register.
    +              15
    +              1
    +              read-write
    +            
    +            
    +              RS485_FRM_ERR_INT_ENA
    +              This is the enable bit for rs485_parity_err_int_st register.
    +              16
    +              1
    +              read-write
    +            
    +            
    +              RS485_CLASH_INT_ENA
    +              This is the enable bit for rs485_clash_int_st register.
    +              17
    +              1
    +              read-write
    +            
    +            
    +              AT_CMD_CHAR_DET_INT_ENA
    +              This is the enable bit for at_cmd_char_det_int_st register.
    +              18
    +              1
    +              read-write
    +            
    +            
    +              WAKEUP_INT_ENA
    +              This is the enable bit for uart_wakeup_int_st register.
    +              19
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_CLR
    +          Interrupt clear bits
    +          0x10
    +          0x20
    +          
    +            
    +              RXFIFO_FULL_INT_CLR
    +              Set this bit to clear the rxfifo_full_int_raw interrupt.
    +              0
    +              1
    +              write-only
    +            
    +            
    +              TXFIFO_EMPTY_INT_CLR
    +              Set this bit to clear txfifo_empty_int_raw interrupt.
    +              1
    +              1
    +              write-only
    +            
    +            
    +              PARITY_ERR_INT_CLR
    +              Set this bit to clear parity_err_int_raw interrupt.
    +              2
    +              1
    +              write-only
    +            
    +            
    +              FRM_ERR_INT_CLR
    +              Set this bit to clear frm_err_int_raw interrupt.
    +              3
    +              1
    +              write-only
    +            
    +            
    +              RXFIFO_OVF_INT_CLR
    +              Set this bit to clear rxfifo_ovf_int_raw interrupt.
    +              4
    +              1
    +              write-only
    +            
    +            
    +              DSR_CHG_INT_CLR
    +              Set this bit to clear the dsr_chg_int_raw interrupt.
    +              5
    +              1
    +              write-only
    +            
    +            
    +              CTS_CHG_INT_CLR
    +              Set this bit to clear the cts_chg_int_raw interrupt.
    +              6
    +              1
    +              write-only
    +            
    +            
    +              BRK_DET_INT_CLR
    +              Set this bit to clear the brk_det_int_raw interrupt.
    +              7
    +              1
    +              write-only
    +            
    +            
    +              RXFIFO_TOUT_INT_CLR
    +              Set this bit to clear the rxfifo_tout_int_raw interrupt.
    +              8
    +              1
    +              write-only
    +            
    +            
    +              SW_XON_INT_CLR
    +              Set this bit to clear the sw_xon_int_raw interrupt.
    +              9
    +              1
    +              write-only
    +            
    +            
    +              SW_XOFF_INT_CLR
    +              Set this bit to clear the sw_xoff_int_raw interrupt.
    +              10
    +              1
    +              write-only
    +            
    +            
    +              GLITCH_DET_INT_CLR
    +              Set this bit to clear the glitch_det_int_raw interrupt.
    +              11
    +              1
    +              write-only
    +            
    +            
    +              TX_BRK_DONE_INT_CLR
    +              Set this bit to clear the tx_brk_done_int_raw interrupt..
    +              12
    +              1
    +              write-only
    +            
    +            
    +              TX_BRK_IDLE_DONE_INT_CLR
    +              Set this bit to clear the tx_brk_idle_done_int_raw interrupt.
    +              13
    +              1
    +              write-only
    +            
    +            
    +              TX_DONE_INT_CLR
    +              Set this bit to clear the tx_done_int_raw interrupt.
    +              14
    +              1
    +              write-only
    +            
    +            
    +              RS485_PARITY_ERR_INT_CLR
    +              Set this bit to clear the rs485_parity_err_int_raw interrupt.
    +              15
    +              1
    +              write-only
    +            
    +            
    +              RS485_FRM_ERR_INT_CLR
    +              Set this bit to clear the rs485_frm_err_int_raw interrupt.
    +              16
    +              1
    +              write-only
    +            
    +            
    +              RS485_CLASH_INT_CLR
    +              Set this bit to clear the rs485_clash_int_raw interrupt.
    +              17
    +              1
    +              write-only
    +            
    +            
    +              AT_CMD_CHAR_DET_INT_CLR
    +              Set this bit to clear the at_cmd_char_det_int_raw interrupt.
    +              18
    +              1
    +              write-only
    +            
    +            
    +              WAKEUP_INT_CLR
    +              Set this bit to clear the uart_wakeup_int_raw interrupt.
    +              19
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          CLKDIV
    +          Clock divider configuration
    +          0x14
    +          0x20
    +          0x000002B6
    +          
    +            
    +              CLKDIV
    +              The integral part of the frequency divider factor.
    +              0
    +              12
    +              read-write
    +            
    +            
    +              FRAG
    +              The decimal part of the frequency divider factor.
    +              20
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          RX_FILT
    +          Rx Filter configuration
    +          0x18
    +          0x20
    +          0x00000008
    +          
    +            
    +              GLITCH_FILT
    +              when input pulse width is lower than this value, the pulse is ignored.
    +              0
    +              8
    +              read-write
    +            
    +            
    +              GLITCH_FILT_EN
    +              Set this bit to enable Rx signal filter.
    +              8
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          STATUS
    +          UART status register
    +          0x1C
    +          0x20
    +          0xE000C000
    +          
    +            
    +              RXFIFO_CNT
    +              Stores the byte number of valid data in Rx-FIFO.
    +              0
    +              10
    +              read-only
    +            
    +            
    +              DSRN
    +              The register represent the level value of the internal uart dsr signal.
    +              13
    +              1
    +              read-only
    +            
    +            
    +              CTSN
    +              This register represent the level value of the internal uart cts signal.
    +              14
    +              1
    +              read-only
    +            
    +            
    +              RXD
    +              This register represent the  level value of the internal uart rxd signal.
    +              15
    +              1
    +              read-only
    +            
    +            
    +              TXFIFO_CNT
    +              Stores the byte number of data in Tx-FIFO.
    +              16
    +              10
    +              read-only
    +            
    +            
    +              DTRN
    +              This bit represents the level of the internal uart dtr signal.
    +              29
    +              1
    +              read-only
    +            
    +            
    +              RTSN
    +              This bit represents the level of the internal uart rts signal.
    +              30
    +              1
    +              read-only
    +            
    +            
    +              TXD
    +              This bit represents the  level of the internal uart txd signal.
    +              31
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          CONF0
    +          a
    +          0x20
    +          0x20
    +          0x1000001C
    +          
    +            
    +              PARITY
    +              This register is used to configure the parity check mode.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              PARITY_EN
    +              Set this bit to enable uart parity check.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              BIT_NUM
    +              This register is used to set the length of data.
    +              2
    +              2
    +              read-write
    +            
    +            
    +              STOP_BIT_NUM
    +              This register is used to set the length of  stop bit.
    +              4
    +              2
    +              read-write
    +            
    +            
    +              SW_RTS
    +              This register is used to configure the software rts signal which is used in software flow control.
    +              6
    +              1
    +              read-write
    +            
    +            
    +              SW_DTR
    +              This register is used to configure the software dtr signal which is used in software flow control.
    +              7
    +              1
    +              read-write
    +            
    +            
    +              TXD_BRK
    +              Set this bit to enbale transmitter to  send NULL when the process of sending data is done.
    +              8
    +              1
    +              read-write
    +            
    +            
    +              IRDA_DPLX
    +              Set this bit to enable IrDA loopback mode.
    +              9
    +              1
    +              read-write
    +            
    +            
    +              IRDA_TX_EN
    +              This is the start enable bit for IrDA transmitter.
    +              10
    +              1
    +              read-write
    +            
    +            
    +              IRDA_WCTL
    +              1'h1: The IrDA transmitter's 11th bit is the same as 10th bit. 1'h0: Set IrDA transmitter's 11th bit to 0.
    +              11
    +              1
    +              read-write
    +            
    +            
    +              IRDA_TX_INV
    +              Set this bit to invert the level of  IrDA transmitter.
    +              12
    +              1
    +              read-write
    +            
    +            
    +              IRDA_RX_INV
    +              Set this bit to invert the level of IrDA receiver.
    +              13
    +              1
    +              read-write
    +            
    +            
    +              LOOPBACK
    +              Set this bit to enable uart loopback test mode.
    +              14
    +              1
    +              read-write
    +            
    +            
    +              TX_FLOW_EN
    +              Set this bit to enable flow control function for transmitter.
    +              15
    +              1
    +              read-write
    +            
    +            
    +              IRDA_EN
    +              Set this bit to enable IrDA protocol.
    +              16
    +              1
    +              read-write
    +            
    +            
    +              RXFIFO_RST
    +              Set this bit to reset the uart receive-FIFO.
    +              17
    +              1
    +              read-write
    +            
    +            
    +              TXFIFO_RST
    +              Set this bit to reset the uart transmit-FIFO.
    +              18
    +              1
    +              read-write
    +            
    +            
    +              RXD_INV
    +              Set this bit to inverse the level value of uart rxd signal.
    +              19
    +              1
    +              read-write
    +            
    +            
    +              CTS_INV
    +              Set this bit to inverse the level value of uart cts signal.
    +              20
    +              1
    +              read-write
    +            
    +            
    +              DSR_INV
    +              Set this bit to inverse the level value of uart dsr signal.
    +              21
    +              1
    +              read-write
    +            
    +            
    +              TXD_INV
    +              Set this bit to inverse the level value of uart txd signal.
    +              22
    +              1
    +              read-write
    +            
    +            
    +              RTS_INV
    +              Set this bit to inverse the level value of uart rts signal.
    +              23
    +              1
    +              read-write
    +            
    +            
    +              DTR_INV
    +              Set this bit to inverse the level value of uart dtr signal.
    +              24
    +              1
    +              read-write
    +            
    +            
    +              CLK_EN
    +              1'h1: Force clock on for register. 1'h0: Support clock only when application writes registers.
    +              25
    +              1
    +              read-write
    +            
    +            
    +              ERR_WR_MASK
    +              1'h1: Receiver stops storing data into FIFO when data is wrong. 1'h0: Receiver stores the data even if the  received data is wrong.
    +              26
    +              1
    +              read-write
    +            
    +            
    +              AUTOBAUD_EN
    +              This is the enable bit for detecting baudrate.
    +              27
    +              1
    +              read-write
    +            
    +            
    +              MEM_CLK_EN
    +              UART memory clock gate enable signal.
    +              28
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          CONF1
    +          Configuration register 1
    +          0x24
    +          0x20
    +          0x0000C060
    +          
    +            
    +              RXFIFO_FULL_THRHD
    +              It will produce rxfifo_full_int interrupt when receiver receives more data than this register value.
    +              0
    +              9
    +              read-write
    +            
    +            
    +              TXFIFO_EMPTY_THRHD
    +              It will produce txfifo_empty_int interrupt when the data amount in Tx-FIFO is less than this register value.
    +              9
    +              9
    +              read-write
    +            
    +            
    +              DIS_RX_DAT_OVF
    +              Disable UART Rx data overflow detect.
    +              18
    +              1
    +              read-write
    +            
    +            
    +              RX_TOUT_FLOW_DIS
    +              Set this bit to stop accumulating idle_cnt when hardware flow control works.
    +              19
    +              1
    +              read-write
    +            
    +            
    +              RX_FLOW_EN
    +              This is the flow enable bit for UART receiver.
    +              20
    +              1
    +              read-write
    +            
    +            
    +              RX_TOUT_EN
    +              This is the enble bit for uart receiver's timeout function.
    +              21
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          LOWPULSE
    +          Autobaud minimum low pulse duration register
    +          0x28
    +          0x20
    +          0x00000FFF
    +          
    +            
    +              MIN_CNT
    +              This register stores the value of the minimum duration time of the low level pulse. It is used in baud rate-detect process.
    +              0
    +              12
    +              read-only
    +            
    +          
    +        
    +        
    +          HIGHPULSE
    +          Autobaud minimum high pulse duration register
    +          0x2C
    +          0x20
    +          0x00000FFF
    +          
    +            
    +              MIN_CNT
    +              This register stores  the value of the maxinum duration time for the high level pulse. It is used in baud rate-detect process.
    +              0
    +              12
    +              read-only
    +            
    +          
    +        
    +        
    +          RXD_CNT
    +          Autobaud edge change count register
    +          0x30
    +          0x20
    +          
    +            
    +              RXD_EDGE_CNT
    +              This register stores the count of rxd edge change. It is used in baud rate-detect process.
    +              0
    +              10
    +              read-only
    +            
    +          
    +        
    +        
    +          FLOW_CONF
    +          Software flow-control configuration
    +          0x34
    +          0x20
    +          
    +            
    +              SW_FLOW_CON_EN
    +              Set this bit to enable software flow control. It is used with register sw_xon or sw_xoff.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              XONOFF_DEL
    +              Set this bit to remove flow control char from the received data.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              FORCE_XON
    +              Set this bit to enable the transmitter to go on sending data.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              FORCE_XOFF
    +              Set this bit to stop the  transmitter from sending data.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              SEND_XON
    +              Set this bit to send Xon char. It is cleared by hardware automatically.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              SEND_XOFF
    +              Set this bit to send Xoff char. It is cleared by hardware automatically.
    +              5
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          SLEEP_CONF
    +          Sleep-mode configuration
    +          0x38
    +          0x20
    +          0x000000F0
    +          
    +            
    +              ACTIVE_THRESHOLD
    +              The uart is activated from light sleeping mode when the input rxd edge changes more times than this register value.
    +              0
    +              10
    +              read-write
    +            
    +          
    +        
    +        
    +          SWFC_CONF0
    +          Software flow-control character configuration
    +          0x3C
    +          0x20
    +          0x000026E0
    +          
    +            
    +              XOFF_THRESHOLD
    +              When the data amount in Rx-FIFO is more than this register value with uart_sw_flow_con_en set to 1, it will send a Xoff char.
    +              0
    +              9
    +              read-write
    +            
    +            
    +              XOFF_CHAR
    +              This register stores the Xoff flow control char.
    +              9
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          SWFC_CONF1
    +          Software flow-control character configuration
    +          0x40
    +          0x20
    +          0x00002200
    +          
    +            
    +              XON_THRESHOLD
    +              When the data amount in Rx-FIFO is less than this register value with uart_sw_flow_con_en set to 1, it will send a Xon char.
    +              0
    +              9
    +              read-write
    +            
    +            
    +              XON_CHAR
    +              This register stores the Xon flow control char.
    +              9
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          TXBRK_CONF
    +          Tx Break character configuration
    +          0x44
    +          0x20
    +          0x0000000A
    +          
    +            
    +              TX_BRK_NUM
    +              This register is used to configure the number of 0 to be sent after the process of sending data is done. It is active when txd_brk is set to 1.
    +              0
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          IDLE_CONF
    +          Frame-end idle configuration
    +          0x48
    +          0x20
    +          0x00040100
    +          
    +            
    +              RX_IDLE_THRHD
    +              It will produce frame end signal when receiver takes more time to receive one byte data than this register value.
    +              0
    +              10
    +              read-write
    +            
    +            
    +              TX_IDLE_NUM
    +              This register is used to configure the duration time between transfers.
    +              10
    +              10
    +              read-write
    +            
    +          
    +        
    +        
    +          RS485_CONF
    +          RS485 mode configuration
    +          0x4C
    +          0x20
    +          
    +            
    +              RS485_EN
    +              Set this bit to choose the rs485 mode.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              DL0_EN
    +              Set this bit to delay the stop bit by 1 bit.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              DL1_EN
    +              Set this bit to delay the stop bit by 1 bit.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              RS485TX_RX_EN
    +              Set this bit to enable receiver could receive data when the transmitter is transmitting data in rs485 mode.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              RS485RXBY_TX_EN
    +              1'h1: enable rs485 transmitter to send data when rs485 receiver line is busy.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              RS485_RX_DLY_NUM
    +              This register is used to delay the receiver's internal data signal.
    +              5
    +              1
    +              read-write
    +            
    +            
    +              RS485_TX_DLY_NUM
    +              This register is used to delay the transmitter's internal data signal.
    +              6
    +              4
    +              read-write
    +            
    +          
    +        
    +        
    +          AT_CMD_PRECNT
    +          Pre-sequence timing configuration
    +          0x50
    +          0x20
    +          0x00000901
    +          
    +            
    +              PRE_IDLE_NUM
    +              This register is used to configure the idle duration time before the first at_cmd is received by receiver.
    +              0
    +              16
    +              read-write
    +            
    +          
    +        
    +        
    +          AT_CMD_POSTCNT
    +          Post-sequence timing configuration
    +          0x54
    +          0x20
    +          0x00000901
    +          
    +            
    +              POST_IDLE_NUM
    +              This register is used to configure the duration time between the last at_cmd and the next data.
    +              0
    +              16
    +              read-write
    +            
    +          
    +        
    +        
    +          AT_CMD_GAPTOUT
    +          Timeout configuration
    +          0x58
    +          0x20
    +          0x0000000B
    +          
    +            
    +              RX_GAP_TOUT
    +              This register is used to configure the duration time between the at_cmd chars.
    +              0
    +              16
    +              read-write
    +            
    +          
    +        
    +        
    +          AT_CMD_CHAR
    +          AT escape sequence detection configuration
    +          0x5C
    +          0x20
    +          0x0000032B
    +          
    +            
    +              AT_CMD_CHAR
    +              This register is used to configure the content of at_cmd char.
    +              0
    +              8
    +              read-write
    +            
    +            
    +              CHAR_NUM
    +              This register is used to configure the num of continuous at_cmd chars received by receiver.
    +              8
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          MEM_CONF
    +          UART threshold and allocation configuration
    +          0x60
    +          0x20
    +          0x000A0012
    +          
    +            
    +              RX_SIZE
    +              This register is used to configure the amount of mem allocated for receive-FIFO. The default number is 128 bytes.
    +              1
    +              3
    +              read-write
    +            
    +            
    +              TX_SIZE
    +              This register is used to configure the amount of mem allocated for transmit-FIFO. The default number is 128 bytes.
    +              4
    +              3
    +              read-write
    +            
    +            
    +              RX_FLOW_THRHD
    +              This register is used to configure the maximum amount of data that can be received  when hardware flow control works.
    +              7
    +              9
    +              read-write
    +            
    +            
    +              RX_TOUT_THRHD
    +              This register is used to configure the threshold time that receiver takes to receive one byte. The rxfifo_tout_int interrupt will be trigger when the receiver takes more time to receive one byte with rx_tout_en set to 1.
    +              16
    +              10
    +              read-write
    +            
    +            
    +              MEM_FORCE_PD
    +              Set this bit to force power down UART memory.
    +              26
    +              1
    +              read-write
    +            
    +            
    +              MEM_FORCE_PU
    +              Set this bit to force power up UART memory.
    +              27
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          MEM_TX_STATUS
    +          Tx-FIFO write and read offset address.
    +          0x64
    +          0x20
    +          
    +            
    +              APB_TX_WADDR
    +              This register stores the offset address in Tx-FIFO when software writes Tx-FIFO via APB.
    +              0
    +              10
    +              read-only
    +            
    +            
    +              TX_RADDR
    +              This register stores the offset address in Tx-FIFO when Tx-FSM reads data via Tx-FIFO_Ctrl.
    +              11
    +              10
    +              read-only
    +            
    +          
    +        
    +        
    +          MEM_RX_STATUS
    +          Rx-FIFO write and read offset address.
    +          0x68
    +          0x20
    +          0x00080100
    +          
    +            
    +              APB_RX_RADDR
    +              This register stores the offset address in RX-FIFO when software reads data from Rx-FIFO via APB. UART0 is 10'h100. UART1 is 10'h180.
    +              0
    +              10
    +              read-only
    +            
    +            
    +              RX_WADDR
    +              This register stores the offset address in Rx-FIFO when Rx-FIFO_Ctrl writes Rx-FIFO. UART0 is 10'h100. UART1 is 10'h180.
    +              11
    +              10
    +              read-only
    +            
    +          
    +        
    +        
    +          FSM_STATUS
    +          UART transmit and receive status.
    +          0x6C
    +          0x20
    +          
    +            
    +              ST_URX_OUT
    +              This is the status register of receiver.
    +              0
    +              4
    +              read-only
    +            
    +            
    +              ST_UTX_OUT
    +              This is the status register of transmitter.
    +              4
    +              4
    +              read-only
    +            
    +          
    +        
    +        
    +          POSPULSE
    +          Autobaud high pulse register
    +          0x70
    +          0x20
    +          0x00000FFF
    +          
    +            
    +              POSEDGE_MIN_CNT
    +              This register stores the minimal input clock count between two positive edges. It is used in boudrate-detect process.
    +              0
    +              12
    +              read-only
    +            
    +          
    +        
    +        
    +          NEGPULSE
    +          Autobaud low pulse register
    +          0x74
    +          0x20
    +          0x00000FFF
    +          
    +            
    +              NEGEDGE_MIN_CNT
    +              This register stores the minimal input clock count between two negative edges. It is used in boudrate-detect process.
    +              0
    +              12
    +              read-only
    +            
    +          
    +        
    +        
    +          CLK_CONF
    +          UART core clock configuration
    +          0x78
    +          0x20
    +          0x03701000
    +          
    +            
    +              SCLK_DIV_B
    +              The  denominator of the frequency divider factor.
    +              0
    +              6
    +              read-write
    +            
    +            
    +              SCLK_DIV_A
    +              The numerator of the frequency divider factor.
    +              6
    +              6
    +              read-write
    +            
    +            
    +              SCLK_DIV_NUM
    +              The integral part of the frequency divider factor.
    +              12
    +              8
    +              read-write
    +            
    +            
    +              SCLK_SEL
    +              UART clock source select. 1: 80Mhz, 2: 8Mhz, 3: XTAL.
    +              20
    +              2
    +              read-write
    +            
    +            
    +              SCLK_EN
    +              Set this bit to enable UART Tx/Rx clock.
    +              22
    +              1
    +              read-write
    +            
    +            
    +              RST_CORE
    +              Write 1 then write 0 to this bit, reset UART Tx/Rx.
    +              23
    +              1
    +              read-write
    +            
    +            
    +              TX_SCLK_EN
    +              Set this bit to enable UART Tx clock.
    +              24
    +              1
    +              read-write
    +            
    +            
    +              RX_SCLK_EN
    +              Set this bit to enable UART Rx clock.
    +              25
    +              1
    +              read-write
    +            
    +            
    +              TX_RST_CORE
    +              Write 1 then write 0 to this bit, reset UART Tx.
    +              26
    +              1
    +              read-write
    +            
    +            
    +              RX_RST_CORE
    +              Write 1 then write 0 to this bit, reset UART Rx.
    +              27
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DATE
    +          UART Version register
    +          0x7C
    +          0x20
    +          0x02008270
    +          
    +            
    +              DATE
    +              This is the version register.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          ID
    +          UART ID register
    +          0x80
    +          0x20
    +          0x40000500
    +          
    +            
    +              ID
    +              This register is used to configure the uart_id.
    +              0
    +              30
    +              read-write
    +            
    +            
    +              HIGH_SPEED
    +              This bit used to select synchronize mode. 1: Registers are auto synchronized into UART Core clock and UART core should be keep the same with APB clock. 0: After configure registers, software needs to write 1 to UART_REG_UPDATE to synchronize registers.
    +              30
    +              1
    +              read-write
    +            
    +            
    +              REG_UPDATE
    +              Software write 1 would synchronize registers into UART Core clock domain and would be cleared by hardware after synchronization is done.
    +              31
    +              1
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      UART1
    +      UART (Universal Asynchronous Receiver-Transmitter) Controller
    +      0x60010000
    +      
    +        UART1
    +        22
    +      
    +    
    +    
    +      UHCI0
    +      Universal Host Controller Interface
    +      UHCI
    +      0x60014000
    +      
    +        0x0
    +        0x84
    +        registers
    +      
    +      
    +        UHCI0
    +        15
    +      
    +      
    +        
    +          CONF0
    +          a
    +          0x0
    +          0x20
    +          0x000006E0
    +          
    +            
    +              TX_RST
    +              Write 1, then write 0 to this bit to reset decode state machine.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              RX_RST
    +              Write 1, then write 0 to this bit to reset encode state machine.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              UART0_CE
    +              Set this bit to link up HCI and UART0.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              UART1_CE
    +              Set this bit to link up HCI and UART1.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              SEPER_EN
    +              Set this bit to separate the data frame using a special char.
    +              5
    +              1
    +              read-write
    +            
    +            
    +              HEAD_EN
    +              Set this bit to encode the data packet with a formatting header.
    +              6
    +              1
    +              read-write
    +            
    +            
    +              CRC_REC_EN
    +              Set this bit to enable UHCI to receive the 16 bit CRC.
    +              7
    +              1
    +              read-write
    +            
    +            
    +              UART_IDLE_EOF_EN
    +              If this bit is set to 1, UHCI will end the payload receiving process when UART has been in idle state.
    +              8
    +              1
    +              read-write
    +            
    +            
    +              LEN_EOF_EN
    +              If this bit is set to 1, UHCI decoder receiving payload data is end when the receiving byte count has reached the specified value. The value is payload length indicated by UHCI packet header when UHCI_HEAD_EN is 1 or the value is configuration value when UHCI_HEAD_EN is 0. If this bit is set to 0, UHCI decoder receiving payload data is end when 0xc0 is received.
    +              9
    +              1
    +              read-write
    +            
    +            
    +              ENCODE_CRC_EN
    +              Set this bit to enable data integrity checking by appending a 16 bit CCITT-CRC to end of the payload.
    +              10
    +              1
    +              read-write
    +            
    +            
    +              CLK_EN
    +              1'b1: Force clock on for register. 1'b0: Support clock only when application writes registers.
    +              11
    +              1
    +              read-write
    +            
    +            
    +              UART_RX_BRK_EOF_EN
    +              If this bit is set to 1, UHCI will end payload receive process when NULL frame is received by UART.
    +              12
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_RAW
    +          a
    +          0x4
    +          0x20
    +          
    +            
    +              RX_START_INT_RAW
    +              a
    +              0
    +              1
    +              read-only
    +            
    +            
    +              TX_START_INT_RAW
    +              a
    +              1
    +              1
    +              read-only
    +            
    +            
    +              RX_HUNG_INT_RAW
    +              a
    +              2
    +              1
    +              read-only
    +            
    +            
    +              TX_HUNG_INT_RAW
    +              a
    +              3
    +              1
    +              read-only
    +            
    +            
    +              SEND_S_REG_Q_INT_RAW
    +              a
    +              4
    +              1
    +              read-only
    +            
    +            
    +              SEND_A_REG_Q_INT_RAW
    +              a
    +              5
    +              1
    +              read-only
    +            
    +            
    +              OUT_EOF_INT_RAW
    +              This is the interrupt raw bit. Triggered when there are some errors in EOF in the
    +              6
    +              1
    +              read-only
    +            
    +            
    +              APP_CTRL0_INT_RAW
    +              Soft control int raw bit.
    +              7
    +              1
    +              read-write
    +            
    +            
    +              APP_CTRL1_INT_RAW
    +              Soft control int raw bit.
    +              8
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_ST
    +          a
    +          0x8
    +          0x20
    +          
    +            
    +              RX_START_INT_ST
    +              a
    +              0
    +              1
    +              read-only
    +            
    +            
    +              TX_START_INT_ST
    +              a
    +              1
    +              1
    +              read-only
    +            
    +            
    +              RX_HUNG_INT_ST
    +              a
    +              2
    +              1
    +              read-only
    +            
    +            
    +              TX_HUNG_INT_ST
    +              a
    +              3
    +              1
    +              read-only
    +            
    +            
    +              SEND_S_REG_Q_INT_ST
    +              a
    +              4
    +              1
    +              read-only
    +            
    +            
    +              SEND_A_REG_Q_INT_ST
    +              a
    +              5
    +              1
    +              read-only
    +            
    +            
    +              OUTLINK_EOF_ERR_INT_ST
    +              a
    +              6
    +              1
    +              read-only
    +            
    +            
    +              APP_CTRL0_INT_ST
    +              a
    +              7
    +              1
    +              read-only
    +            
    +            
    +              APP_CTRL1_INT_ST
    +              a
    +              8
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_ENA
    +          a
    +          0xC
    +          0x20
    +          
    +            
    +              RX_START_INT_ENA
    +              a
    +              0
    +              1
    +              read-write
    +            
    +            
    +              TX_START_INT_ENA
    +              a
    +              1
    +              1
    +              read-write
    +            
    +            
    +              RX_HUNG_INT_ENA
    +              a
    +              2
    +              1
    +              read-write
    +            
    +            
    +              TX_HUNG_INT_ENA
    +              a
    +              3
    +              1
    +              read-write
    +            
    +            
    +              SEND_S_REG_Q_INT_ENA
    +              a
    +              4
    +              1
    +              read-write
    +            
    +            
    +              SEND_A_REG_Q_INT_ENA
    +              a
    +              5
    +              1
    +              read-write
    +            
    +            
    +              OUTLINK_EOF_ERR_INT_ENA
    +              a
    +              6
    +              1
    +              read-write
    +            
    +            
    +              APP_CTRL0_INT_ENA
    +              a
    +              7
    +              1
    +              read-write
    +            
    +            
    +              APP_CTRL1_INT_ENA
    +              a
    +              8
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_CLR
    +          a
    +          0x10
    +          0x20
    +          
    +            
    +              RX_START_INT_CLR
    +              a
    +              0
    +              1
    +              write-only
    +            
    +            
    +              TX_START_INT_CLR
    +              a
    +              1
    +              1
    +              write-only
    +            
    +            
    +              RX_HUNG_INT_CLR
    +              a
    +              2
    +              1
    +              write-only
    +            
    +            
    +              TX_HUNG_INT_CLR
    +              a
    +              3
    +              1
    +              write-only
    +            
    +            
    +              SEND_S_REG_Q_INT_CLR
    +              a
    +              4
    +              1
    +              write-only
    +            
    +            
    +              SEND_A_REG_Q_INT_CLR
    +              a
    +              5
    +              1
    +              write-only
    +            
    +            
    +              OUTLINK_EOF_ERR_INT_CLR
    +              a
    +              6
    +              1
    +              write-only
    +            
    +            
    +              APP_CTRL0_INT_CLR
    +              a
    +              7
    +              1
    +              write-only
    +            
    +            
    +              APP_CTRL1_INT_CLR
    +              a
    +              8
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          CONF1
    +          a
    +          0x14
    +          0x20
    +          0x00000033
    +          
    +            
    +              CHECK_SUM_EN
    +              a
    +              0
    +              1
    +              read-write
    +            
    +            
    +              CHECK_SEQ_EN
    +              a
    +              1
    +              1
    +              read-write
    +            
    +            
    +              CRC_DISABLE
    +              a
    +              2
    +              1
    +              read-write
    +            
    +            
    +              SAVE_HEAD
    +              a
    +              3
    +              1
    +              read-write
    +            
    +            
    +              TX_CHECK_SUM_RE
    +              a
    +              4
    +              1
    +              read-write
    +            
    +            
    +              TX_ACK_NUM_RE
    +              a
    +              5
    +              1
    +              read-write
    +            
    +            
    +              WAIT_SW_START
    +              a
    +              7
    +              1
    +              read-write
    +            
    +            
    +              SW_START
    +              a
    +              8
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          STATE0
    +          a
    +          0x18
    +          0x20
    +          
    +            
    +              RX_ERR_CAUSE
    +              a
    +              0
    +              3
    +              read-only
    +            
    +            
    +              DECODE_STATE
    +              a
    +              3
    +              3
    +              read-only
    +            
    +          
    +        
    +        
    +          STATE1
    +          a
    +          0x1C
    +          0x20
    +          
    +            
    +              ENCODE_STATE
    +              a
    +              0
    +              3
    +              read-only
    +            
    +          
    +        
    +        
    +          ESCAPE_CONF
    +          a
    +          0x20
    +          0x20
    +          0x00000033
    +          
    +            
    +              TX_C0_ESC_EN
    +              a
    +              0
    +              1
    +              read-write
    +            
    +            
    +              TX_DB_ESC_EN
    +              a
    +              1
    +              1
    +              read-write
    +            
    +            
    +              TX_11_ESC_EN
    +              a
    +              2
    +              1
    +              read-write
    +            
    +            
    +              TX_13_ESC_EN
    +              a
    +              3
    +              1
    +              read-write
    +            
    +            
    +              RX_C0_ESC_EN
    +              a
    +              4
    +              1
    +              read-write
    +            
    +            
    +              RX_DB_ESC_EN
    +              a
    +              5
    +              1
    +              read-write
    +            
    +            
    +              RX_11_ESC_EN
    +              a
    +              6
    +              1
    +              read-write
    +            
    +            
    +              RX_13_ESC_EN
    +              a
    +              7
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          HUNG_CONF
    +          a
    +          0x24
    +          0x20
    +          0x00810810
    +          
    +            
    +              TXFIFO_TIMEOUT
    +              a
    +              0
    +              8
    +              read-write
    +            
    +            
    +              TXFIFO_TIMEOUT_SHIFT
    +              a
    +              8
    +              3
    +              read-write
    +            
    +            
    +              TXFIFO_TIMEOUT_ENA
    +              a
    +              11
    +              1
    +              read-write
    +            
    +            
    +              RXFIFO_TIMEOUT
    +              a
    +              12
    +              8
    +              read-write
    +            
    +            
    +              RXFIFO_TIMEOUT_SHIFT
    +              a
    +              20
    +              3
    +              read-write
    +            
    +            
    +              RXFIFO_TIMEOUT_ENA
    +              a
    +              23
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          ACK_NUM
    +          a
    +          0x28
    +          0x20
    +          0x00000008
    +          
    +            
    +              ACK_NUM
    +              a
    +              0
    +              3
    +              read-write
    +            
    +            
    +              LOAD
    +              a
    +              3
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          RX_HEAD
    +          a
    +          0x2C
    +          0x20
    +          
    +            
    +              RX_HEAD
    +              a
    +              0
    +              32
    +              read-only
    +            
    +          
    +        
    +        
    +          QUICK_SENT
    +          a
    +          0x30
    +          0x20
    +          
    +            
    +              SINGLE_SEND_NUM
    +              a
    +              0
    +              3
    +              read-write
    +            
    +            
    +              SINGLE_SEND_EN
    +              a
    +              3
    +              1
    +              read-write
    +            
    +            
    +              ALWAYS_SEND_NUM
    +              a
    +              4
    +              3
    +              read-write
    +            
    +            
    +              ALWAYS_SEND_EN
    +              a
    +              7
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          REG_Q0_WORD0
    +          a
    +          0x34
    +          0x20
    +          
    +            
    +              SEND_Q0_WORD0
    +              a
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          REG_Q0_WORD1
    +          a
    +          0x38
    +          0x20
    +          
    +            
    +              SEND_Q0_WORD1
    +              a
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          REG_Q1_WORD0
    +          a
    +          0x3C
    +          0x20
    +          
    +            
    +              SEND_Q1_WORD0
    +              a
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          REG_Q1_WORD1
    +          a
    +          0x40
    +          0x20
    +          
    +            
    +              SEND_Q1_WORD1
    +              a
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          REG_Q2_WORD0
    +          a
    +          0x44
    +          0x20
    +          
    +            
    +              SEND_Q2_WORD0
    +              a
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          REG_Q2_WORD1
    +          a
    +          0x48
    +          0x20
    +          
    +            
    +              SEND_Q2_WORD1
    +              a
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          REG_Q3_WORD0
    +          a
    +          0x4C
    +          0x20
    +          
    +            
    +              SEND_Q3_WORD0
    +              a
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          REG_Q3_WORD1
    +          a
    +          0x50
    +          0x20
    +          
    +            
    +              SEND_Q3_WORD1
    +              a
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          REG_Q4_WORD0
    +          a
    +          0x54
    +          0x20
    +          
    +            
    +              SEND_Q4_WORD0
    +              a
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          REG_Q4_WORD1
    +          a
    +          0x58
    +          0x20
    +          
    +            
    +              SEND_Q4_WORD1
    +              a
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          REG_Q5_WORD0
    +          a
    +          0x5C
    +          0x20
    +          
    +            
    +              SEND_Q5_WORD0
    +              a
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          REG_Q5_WORD1
    +          a
    +          0x60
    +          0x20
    +          
    +            
    +              SEND_Q5_WORD1
    +              a
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          REG_Q6_WORD0
    +          a
    +          0x64
    +          0x20
    +          
    +            
    +              SEND_Q6_WORD0
    +              a
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          REG_Q6_WORD1
    +          a
    +          0x68
    +          0x20
    +          
    +            
    +              SEND_Q6_WORD1
    +              a
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +        
    +          ESC_CONF0
    +          a
    +          0x6C
    +          0x20
    +          0x00DCDBC0
    +          
    +            
    +              SEPER_CHAR
    +              a
    +              0
    +              8
    +              read-write
    +            
    +            
    +              SEPER_ESC_CHAR0
    +              a
    +              8
    +              8
    +              read-write
    +            
    +            
    +              SEPER_ESC_CHAR1
    +              a
    +              16
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          ESC_CONF1
    +          a
    +          0x70
    +          0x20
    +          0x00DDDBDB
    +          
    +            
    +              ESC_SEQ0
    +              a
    +              0
    +              8
    +              read-write
    +            
    +            
    +              ESC_SEQ0_CHAR0
    +              a
    +              8
    +              8
    +              read-write
    +            
    +            
    +              ESC_SEQ0_CHAR1
    +              a
    +              16
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          ESC_CONF2
    +          a
    +          0x74
    +          0x20
    +          0x00DEDB11
    +          
    +            
    +              ESC_SEQ1
    +              a
    +              0
    +              8
    +              read-write
    +            
    +            
    +              ESC_SEQ1_CHAR0
    +              a
    +              8
    +              8
    +              read-write
    +            
    +            
    +              ESC_SEQ1_CHAR1
    +              a
    +              16
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          ESC_CONF3
    +          a
    +          0x78
    +          0x20
    +          0x00DFDB13
    +          
    +            
    +              ESC_SEQ2
    +              a
    +              0
    +              8
    +              read-write
    +            
    +            
    +              ESC_SEQ2_CHAR0
    +              a
    +              8
    +              8
    +              read-write
    +            
    +            
    +              ESC_SEQ2_CHAR1
    +              a
    +              16
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          PKT_THRES
    +          a
    +          0x7C
    +          0x20
    +          0x00000080
    +          
    +            
    +              PKT_THRS
    +              a
    +              0
    +              13
    +              read-write
    +            
    +          
    +        
    +        
    +          DATE
    +          a
    +          0x80
    +          0x20
    +          0x02007170
    +          
    +            
    +              DATE
    +              a
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      UHCI1
    +      Universal Host Controller Interface
    +      0x6000C000
    +    
    +    
    +      USB_DEVICE
    +      Full-speed USB Serial/JTAG Controller
    +      USB_DEVICE
    +      0x60043000
    +      
    +        0x0
    +        0x50
    +        registers
    +      
    +      
    +        USB_SERIAL_JTAG
    +        26
    +      
    +      
    +        
    +          EP1
    +          USB_DEVICE_EP1_REG.
    +          0x0
    +          0x20
    +          
    +            
    +              RDWR_BYTE
    +              Write and read byte data to/from UART Tx/Rx FIFO through this field. When USB_DEVICE_SERIAL_IN_EMPTY_INT is set, then user can write data (up to 64 bytes) into UART Tx FIFO. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is set, user can check USB_DEVICE_OUT_EP1_WR_ADDR USB_DEVICE_OUT_EP0_RD_ADDR to know how many data is received, then read data from UART Rx FIFO.
    +              0
    +              8
    +              read-write
    +            
    +          
    +        
    +        
    +          EP1_CONF
    +          USB_DEVICE_EP1_CONF_REG.
    +          0x4
    +          0x20
    +          0x00000002
    +          
    +            
    +              WR_DONE
    +              Set this bit to indicate writing byte data to UART Tx FIFO is done.
    +              0
    +              1
    +              write-only
    +            
    +            
    +              SERIAL_IN_EP_DATA_FREE
    +              1'b1: Indicate UART Tx FIFO is not full and can write data into in. After writing USB_DEVICE_WR_DONE, this bit would be 0 until data in UART Tx FIFO is read by USB Host.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              SERIAL_OUT_EP_DATA_AVAIL
    +              1'b1: Indicate there is data in UART Rx FIFO.
    +              2
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_RAW
    +          USB_DEVICE_INT_RAW_REG.
    +          0x8
    +          0x20
    +          0x00000008
    +          
    +            
    +              JTAG_IN_FLUSH_INT_RAW
    +              The raw interrupt bit turns to high level when flush cmd is received for IN endpoint 2 of JTAG.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              SOF_INT_RAW
    +              The raw interrupt bit turns to high level when SOF frame is received.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              SERIAL_OUT_RECV_PKT_INT_RAW
    +              The raw interrupt bit turns to high level when Serial Port OUT Endpoint received one packet.
    +              2
    +              1
    +              read-only
    +            
    +            
    +              SERIAL_IN_EMPTY_INT_RAW
    +              The raw interrupt bit turns to high level when Serial Port IN Endpoint is empty.
    +              3
    +              1
    +              read-only
    +            
    +            
    +              PID_ERR_INT_RAW
    +              The raw interrupt bit turns to high level when pid error is detected.
    +              4
    +              1
    +              read-only
    +            
    +            
    +              CRC5_ERR_INT_RAW
    +              The raw interrupt bit turns to high level when CRC5 error is detected.
    +              5
    +              1
    +              read-only
    +            
    +            
    +              CRC16_ERR_INT_RAW
    +              The raw interrupt bit turns to high level when CRC16 error is detected.
    +              6
    +              1
    +              read-only
    +            
    +            
    +              STUFF_ERR_INT_RAW
    +              The raw interrupt bit turns to high level when stuff error is detected.
    +              7
    +              1
    +              read-only
    +            
    +            
    +              IN_TOKEN_REC_IN_EP1_INT_RAW
    +              The raw interrupt bit turns to high level when IN token for IN endpoint 1 is received.
    +              8
    +              1
    +              read-only
    +            
    +            
    +              USB_BUS_RESET_INT_RAW
    +              The raw interrupt bit turns to high level when usb bus reset is detected.
    +              9
    +              1
    +              read-only
    +            
    +            
    +              OUT_EP1_ZERO_PAYLOAD_INT_RAW
    +              The raw interrupt bit turns to high level when OUT endpoint 1 received packet with zero palyload.
    +              10
    +              1
    +              read-only
    +            
    +            
    +              OUT_EP2_ZERO_PAYLOAD_INT_RAW
    +              The raw interrupt bit turns to high level when OUT endpoint 2 received packet with zero palyload.
    +              11
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_ST
    +          USB_DEVICE_INT_ST_REG.
    +          0xC
    +          0x20
    +          
    +            
    +              JTAG_IN_FLUSH_INT_ST
    +              The raw interrupt status bit for the USB_DEVICE_JTAG_IN_FLUSH_INT interrupt.
    +              0
    +              1
    +              read-only
    +            
    +            
    +              SOF_INT_ST
    +              The raw interrupt status bit for the USB_DEVICE_SOF_INT interrupt.
    +              1
    +              1
    +              read-only
    +            
    +            
    +              SERIAL_OUT_RECV_PKT_INT_ST
    +              The raw interrupt status bit for the USB_DEVICE_SERIAL_OUT_RECV_PKT_INT interrupt.
    +              2
    +              1
    +              read-only
    +            
    +            
    +              SERIAL_IN_EMPTY_INT_ST
    +              The raw interrupt status bit for the USB_DEVICE_SERIAL_IN_EMPTY_INT interrupt.
    +              3
    +              1
    +              read-only
    +            
    +            
    +              PID_ERR_INT_ST
    +              The raw interrupt status bit for the USB_DEVICE_PID_ERR_INT interrupt.
    +              4
    +              1
    +              read-only
    +            
    +            
    +              CRC5_ERR_INT_ST
    +              The raw interrupt status bit for the USB_DEVICE_CRC5_ERR_INT interrupt.
    +              5
    +              1
    +              read-only
    +            
    +            
    +              CRC16_ERR_INT_ST
    +              The raw interrupt status bit for the USB_DEVICE_CRC16_ERR_INT interrupt.
    +              6
    +              1
    +              read-only
    +            
    +            
    +              STUFF_ERR_INT_ST
    +              The raw interrupt status bit for the USB_DEVICE_STUFF_ERR_INT interrupt.
    +              7
    +              1
    +              read-only
    +            
    +            
    +              IN_TOKEN_REC_IN_EP1_INT_ST
    +              The raw interrupt status bit for the USB_DEVICE_IN_TOKEN_REC_IN_EP1_INT interrupt.
    +              8
    +              1
    +              read-only
    +            
    +            
    +              USB_BUS_RESET_INT_ST
    +              The raw interrupt status bit for the USB_DEVICE_USB_BUS_RESET_INT interrupt.
    +              9
    +              1
    +              read-only
    +            
    +            
    +              OUT_EP1_ZERO_PAYLOAD_INT_ST
    +              The raw interrupt status bit for the USB_DEVICE_OUT_EP1_ZERO_PAYLOAD_INT interrupt.
    +              10
    +              1
    +              read-only
    +            
    +            
    +              OUT_EP2_ZERO_PAYLOAD_INT_ST
    +              The raw interrupt status bit for the USB_DEVICE_OUT_EP2_ZERO_PAYLOAD_INT interrupt.
    +              11
    +              1
    +              read-only
    +            
    +          
    +        
    +        
    +          INT_ENA
    +          USB_DEVICE_INT_ENA_REG.
    +          0x10
    +          0x20
    +          
    +            
    +              JTAG_IN_FLUSH_INT_ENA
    +              The interrupt enable bit for the USB_DEVICE_JTAG_IN_FLUSH_INT interrupt.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              SOF_INT_ENA
    +              The interrupt enable bit for the USB_DEVICE_SOF_INT interrupt.
    +              1
    +              1
    +              read-write
    +            
    +            
    +              SERIAL_OUT_RECV_PKT_INT_ENA
    +              The interrupt enable bit for the USB_DEVICE_SERIAL_OUT_RECV_PKT_INT interrupt.
    +              2
    +              1
    +              read-write
    +            
    +            
    +              SERIAL_IN_EMPTY_INT_ENA
    +              The interrupt enable bit for the USB_DEVICE_SERIAL_IN_EMPTY_INT interrupt.
    +              3
    +              1
    +              read-write
    +            
    +            
    +              PID_ERR_INT_ENA
    +              The interrupt enable bit for the USB_DEVICE_PID_ERR_INT interrupt.
    +              4
    +              1
    +              read-write
    +            
    +            
    +              CRC5_ERR_INT_ENA
    +              The interrupt enable bit for the USB_DEVICE_CRC5_ERR_INT interrupt.
    +              5
    +              1
    +              read-write
    +            
    +            
    +              CRC16_ERR_INT_ENA
    +              The interrupt enable bit for the USB_DEVICE_CRC16_ERR_INT interrupt.
    +              6
    +              1
    +              read-write
    +            
    +            
    +              STUFF_ERR_INT_ENA
    +              The interrupt enable bit for the USB_DEVICE_STUFF_ERR_INT interrupt.
    +              7
    +              1
    +              read-write
    +            
    +            
    +              IN_TOKEN_REC_IN_EP1_INT_ENA
    +              The interrupt enable bit for the USB_DEVICE_IN_TOKEN_REC_IN_EP1_INT interrupt.
    +              8
    +              1
    +              read-write
    +            
    +            
    +              USB_BUS_RESET_INT_ENA
    +              The interrupt enable bit for the USB_DEVICE_USB_BUS_RESET_INT interrupt.
    +              9
    +              1
    +              read-write
    +            
    +            
    +              OUT_EP1_ZERO_PAYLOAD_INT_ENA
    +              The interrupt enable bit for the USB_DEVICE_OUT_EP1_ZERO_PAYLOAD_INT interrupt.
    +              10
    +              1
    +              read-write
    +            
    +            
    +              OUT_EP2_ZERO_PAYLOAD_INT_ENA
    +              The interrupt enable bit for the USB_DEVICE_OUT_EP2_ZERO_PAYLOAD_INT interrupt.
    +              11
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          INT_CLR
    +          USB_DEVICE_INT_CLR_REG.
    +          0x14
    +          0x20
    +          
    +            
    +              JTAG_IN_FLUSH_INT_CLR
    +              Set this bit to clear the USB_DEVICE_JTAG_IN_FLUSH_INT interrupt.
    +              0
    +              1
    +              write-only
    +            
    +            
    +              SOF_INT_CLR
    +              Set this bit to clear the USB_DEVICE_JTAG_SOF_INT interrupt.
    +              1
    +              1
    +              write-only
    +            
    +            
    +              SERIAL_OUT_RECV_PKT_INT_CLR
    +              Set this bit to clear the USB_DEVICE_SERIAL_OUT_RECV_PKT_INT interrupt.
    +              2
    +              1
    +              write-only
    +            
    +            
    +              SERIAL_IN_EMPTY_INT_CLR
    +              Set this bit to clear the USB_DEVICE_SERIAL_IN_EMPTY_INT interrupt.
    +              3
    +              1
    +              write-only
    +            
    +            
    +              PID_ERR_INT_CLR
    +              Set this bit to clear the USB_DEVICE_PID_ERR_INT interrupt.
    +              4
    +              1
    +              write-only
    +            
    +            
    +              CRC5_ERR_INT_CLR
    +              Set this bit to clear the USB_DEVICE_CRC5_ERR_INT interrupt.
    +              5
    +              1
    +              write-only
    +            
    +            
    +              CRC16_ERR_INT_CLR
    +              Set this bit to clear the USB_DEVICE_CRC16_ERR_INT interrupt.
    +              6
    +              1
    +              write-only
    +            
    +            
    +              STUFF_ERR_INT_CLR
    +              Set this bit to clear the USB_DEVICE_STUFF_ERR_INT interrupt.
    +              7
    +              1
    +              write-only
    +            
    +            
    +              IN_TOKEN_REC_IN_EP1_INT_CLR
    +              Set this bit to clear the USB_DEVICE_IN_TOKEN_IN_EP1_INT interrupt.
    +              8
    +              1
    +              write-only
    +            
    +            
    +              USB_BUS_RESET_INT_CLR
    +              Set this bit to clear the USB_DEVICE_USB_BUS_RESET_INT interrupt.
    +              9
    +              1
    +              write-only
    +            
    +            
    +              OUT_EP1_ZERO_PAYLOAD_INT_CLR
    +              Set this bit to clear the USB_DEVICE_OUT_EP1_ZERO_PAYLOAD_INT interrupt.
    +              10
    +              1
    +              write-only
    +            
    +            
    +              OUT_EP2_ZERO_PAYLOAD_INT_CLR
    +              Set this bit to clear the USB_DEVICE_OUT_EP2_ZERO_PAYLOAD_INT interrupt.
    +              11
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          CONF0
    +          USB_DEVICE_CONF0_REG.
    +          0x18
    +          0x20
    +          0x00004200
    +          
    +            
    +              PHY_SEL
    +              Select internal/external PHY
    +              0
    +              1
    +              read-write
    +            
    +            
    +              EXCHG_PINS_OVERRIDE
    +              Enable software control USB D+ D- exchange
    +              1
    +              1
    +              read-write
    +            
    +            
    +              EXCHG_PINS
    +              USB D+ D- exchange
    +              2
    +              1
    +              read-write
    +            
    +            
    +              VREFH
    +              Control single-end input high threshold,1.76V to 2V, step 80mV
    +              3
    +              2
    +              read-write
    +            
    +            
    +              VREFL
    +              Control single-end input low threshold,0.8V to 1.04V, step 80mV
    +              5
    +              2
    +              read-write
    +            
    +            
    +              VREF_OVERRIDE
    +              Enable software control input  threshold
    +              7
    +              1
    +              read-write
    +            
    +            
    +              PAD_PULL_OVERRIDE
    +              Enable software control USB D+ D- pullup pulldown
    +              8
    +              1
    +              read-write
    +            
    +            
    +              DP_PULLUP
    +              Control USB D+ pull up.
    +              9
    +              1
    +              read-write
    +            
    +            
    +              DP_PULLDOWN
    +              Control USB D+ pull down.
    +              10
    +              1
    +              read-write
    +            
    +            
    +              DM_PULLUP
    +              Control USB D- pull up.
    +              11
    +              1
    +              read-write
    +            
    +            
    +              DM_PULLDOWN
    +              Control USB D- pull down.
    +              12
    +              1
    +              read-write
    +            
    +            
    +              PULLUP_VALUE
    +              Control pull up value.
    +              13
    +              1
    +              read-write
    +            
    +            
    +              USB_PAD_ENABLE
    +              Enable USB pad function.
    +              14
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          TEST
    +          USB_DEVICE_TEST_REG.
    +          0x1C
    +          0x20
    +          
    +            
    +              ENABLE
    +              Enable test of the USB pad
    +              0
    +              1
    +              read-write
    +            
    +            
    +              USB_OE
    +              USB pad oen in test
    +              1
    +              1
    +              read-write
    +            
    +            
    +              TX_DP
    +              USB D+ tx value in test
    +              2
    +              1
    +              read-write
    +            
    +            
    +              TX_DM
    +              USB D- tx value in test
    +              3
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          JFIFO_ST
    +          USB_DEVICE_JFIFO_ST_REG.
    +          0x20
    +          0x20
    +          0x00000044
    +          
    +            
    +              IN_FIFO_CNT
    +              JTAT in fifo counter.
    +              0
    +              2
    +              read-only
    +            
    +            
    +              IN_FIFO_EMPTY
    +              1: JTAG in fifo is empty.
    +              2
    +              1
    +              read-only
    +            
    +            
    +              IN_FIFO_FULL
    +              1: JTAG in fifo is full.
    +              3
    +              1
    +              read-only
    +            
    +            
    +              OUT_FIFO_CNT
    +              JTAT out fifo counter.
    +              4
    +              2
    +              read-only
    +            
    +            
    +              OUT_FIFO_EMPTY
    +              1: JTAG out fifo is empty.
    +              6
    +              1
    +              read-only
    +            
    +            
    +              OUT_FIFO_FULL
    +              1: JTAG out fifo is full.
    +              7
    +              1
    +              read-only
    +            
    +            
    +              IN_FIFO_RESET
    +              Write 1 to reset JTAG in fifo.
    +              8
    +              1
    +              read-write
    +            
    +            
    +              OUT_FIFO_RESET
    +              Write 1 to reset JTAG out fifo.
    +              9
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          FRAM_NUM
    +          USB_DEVICE_FRAM_NUM_REG.
    +          0x24
    +          0x20
    +          
    +            
    +              SOF_FRAME_INDEX
    +              Frame index of received SOF frame.
    +              0
    +              11
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_EP0_ST
    +          USB_DEVICE_IN_EP0_ST_REG.
    +          0x28
    +          0x20
    +          0x00000001
    +          
    +            
    +              IN_EP0_STATE
    +              State of IN Endpoint 0.
    +              0
    +              2
    +              read-only
    +            
    +            
    +              IN_EP0_WR_ADDR
    +              Write data address of IN endpoint 0.
    +              2
    +              7
    +              read-only
    +            
    +            
    +              IN_EP0_RD_ADDR
    +              Read data address of IN endpoint 0.
    +              9
    +              7
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_EP1_ST
    +          USB_DEVICE_IN_EP1_ST_REG.
    +          0x2C
    +          0x20
    +          0x00000001
    +          
    +            
    +              IN_EP1_STATE
    +              State of IN Endpoint 1.
    +              0
    +              2
    +              read-only
    +            
    +            
    +              IN_EP1_WR_ADDR
    +              Write data address of IN endpoint 1.
    +              2
    +              7
    +              read-only
    +            
    +            
    +              IN_EP1_RD_ADDR
    +              Read data address of IN endpoint 1.
    +              9
    +              7
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_EP2_ST
    +          USB_DEVICE_IN_EP2_ST_REG.
    +          0x30
    +          0x20
    +          0x00000001
    +          
    +            
    +              IN_EP2_STATE
    +              State of IN Endpoint 2.
    +              0
    +              2
    +              read-only
    +            
    +            
    +              IN_EP2_WR_ADDR
    +              Write data address of IN endpoint 2.
    +              2
    +              7
    +              read-only
    +            
    +            
    +              IN_EP2_RD_ADDR
    +              Read data address of IN endpoint 2.
    +              9
    +              7
    +              read-only
    +            
    +          
    +        
    +        
    +          IN_EP3_ST
    +          USB_DEVICE_IN_EP3_ST_REG.
    +          0x34
    +          0x20
    +          0x00000001
    +          
    +            
    +              IN_EP3_STATE
    +              State of IN Endpoint 3.
    +              0
    +              2
    +              read-only
    +            
    +            
    +              IN_EP3_WR_ADDR
    +              Write data address of IN endpoint 3.
    +              2
    +              7
    +              read-only
    +            
    +            
    +              IN_EP3_RD_ADDR
    +              Read data address of IN endpoint 3.
    +              9
    +              7
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_EP0_ST
    +          USB_DEVICE_OUT_EP0_ST_REG.
    +          0x38
    +          0x20
    +          
    +            
    +              OUT_EP0_STATE
    +              State of OUT Endpoint 0.
    +              0
    +              2
    +              read-only
    +            
    +            
    +              OUT_EP0_WR_ADDR
    +              Write data address of OUT endpoint 0. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is detected, there are USB_DEVICE_OUT_EP0_WR_ADDR-2 bytes data in OUT EP0.
    +              2
    +              7
    +              read-only
    +            
    +            
    +              OUT_EP0_RD_ADDR
    +              Read data address of OUT endpoint 0.
    +              9
    +              7
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_EP1_ST
    +          USB_DEVICE_OUT_EP1_ST_REG.
    +          0x3C
    +          0x20
    +          
    +            
    +              OUT_EP1_STATE
    +              State of OUT Endpoint 1.
    +              0
    +              2
    +              read-only
    +            
    +            
    +              OUT_EP1_WR_ADDR
    +              Write data address of OUT endpoint 1. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is detected, there are USB_DEVICE_OUT_EP1_WR_ADDR-2 bytes data in OUT EP1.
    +              2
    +              7
    +              read-only
    +            
    +            
    +              OUT_EP1_RD_ADDR
    +              Read data address of OUT endpoint 1.
    +              9
    +              7
    +              read-only
    +            
    +            
    +              OUT_EP1_REC_DATA_CNT
    +              Data count in OUT endpoint 1 when one packet is received.
    +              16
    +              7
    +              read-only
    +            
    +          
    +        
    +        
    +          OUT_EP2_ST
    +          USB_DEVICE_OUT_EP2_ST_REG.
    +          0x40
    +          0x20
    +          
    +            
    +              OUT_EP2_STATE
    +              State of OUT Endpoint 2.
    +              0
    +              2
    +              read-only
    +            
    +            
    +              OUT_EP2_WR_ADDR
    +              Write data address of OUT endpoint 2. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is detected, there are USB_DEVICE_OUT_EP2_WR_ADDR-2 bytes data in OUT EP2.
    +              2
    +              7
    +              read-only
    +            
    +            
    +              OUT_EP2_RD_ADDR
    +              Read data address of OUT endpoint 2.
    +              9
    +              7
    +              read-only
    +            
    +          
    +        
    +        
    +          MISC_CONF
    +          USB_DEVICE_MISC_CONF_REG.
    +          0x44
    +          0x20
    +          
    +            
    +              CLK_EN
    +              1'h1: Force clock on for register. 1'h0: Support clock only when application writes registers.
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          MEM_CONF
    +          USB_DEVICE_MEM_CONF_REG.
    +          0x48
    +          0x20
    +          0x00000002
    +          
    +            
    +              USB_MEM_PD
    +              1: power down usb memory.
    +              0
    +              1
    +              read-write
    +            
    +            
    +              USB_MEM_CLK_EN
    +              1: Force clock on for usb memory.
    +              1
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DATE
    +          USB_DEVICE_DATE_REG.
    +          0x80
    +          0x20
    +          0x02007300
    +          
    +            
    +              DATE
    +              register version.
    +              0
    +              32
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +    
    +      XTS_AES
    +      XTS-AES-128 Flash Encryption
    +      XTS_AES
    +      0x600CC000
    +      
    +        0x0
    +        0x30
    +        registers
    +      
    +      
    +        
    +          16
    +          0x1
    +          PLAIN_MEM[%s]
    +          The memory that stores plaintext
    +          0x0
    +          0x8
    +        
    +        
    +          LINESIZE
    +          XTS-AES line-size register
    +          0x40
    +          0x20
    +          
    +            
    +              LINESIZE
    +              This bit stores the line size parameter. 0: 16Byte, 1: 32Byte.
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          DESTINATION
    +          XTS-AES destination register
    +          0x44
    +          0x20
    +          
    +            
    +              DESTINATION
    +              This bit stores the destination. 0: flash(default). 1: reserved.
    +              0
    +              1
    +              read-write
    +            
    +          
    +        
    +        
    +          PHYSICAL_ADDRESS
    +          XTS-AES physical address register
    +          0x48
    +          0x20
    +          
    +            
    +              PHYSICAL_ADDRESS
    +              Those bits stores the physical address. If linesize is 16-byte, the physical address should be aligned of 16 bytes. If linesize is 32-byte, the physical address should be aligned of 32 bytes.
    +              0
    +              30
    +              read-write
    +            
    +          
    +        
    +        
    +          TRIGGER
    +          XTS-AES trigger register
    +          0x4C
    +          0x20
    +          
    +            
    +              TRIGGER
    +              Set this bit to start manual encryption calculation
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          RELEASE
    +          XTS-AES release register
    +          0x50
    +          0x20
    +          
    +            
    +              RELEASE
    +              Set this bit to release the manual encrypted result, after that the result will be visible to spi
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          DESTROY
    +          XTS-AES destroy register
    +          0x54
    +          0x20
    +          
    +            
    +              DESTROY
    +              Set this bit to destroy XTS-AES result.
    +              0
    +              1
    +              write-only
    +            
    +          
    +        
    +        
    +          STATE
    +          XTS-AES status register
    +          0x58
    +          0x20
    +          
    +            
    +              STATE
    +              Those bits shows XTS-AES status. 0=IDLE, 1=WORK, 2=RELEASE, 3=USE. IDLE means that XTS-AES is idle. WORK means that XTS-AES is busy with calculation. RELEASE means the encrypted result is generated but not visible to mspi. USE means that the encrypted result is visible to mspi.
    +              0
    +              2
    +              read-only
    +            
    +          
    +        
    +        
    +          DATE
    +          XTS-AES version control register
    +          0x5C
    +          0x20
    +          0x20200623
    +          
    +            
    +              DATE
    +              Those bits stores the version information of XTS-AES.
    +              0
    +              30
    +              read-write
    +            
    +          
    +        
    +      
    +    
    +  
    +
    \ No newline at end of file
    diff --git a/src/esp32c3.zig b/src/esp32c3.zig
    new file mode 100644
    index 0000000..77bed3f
    --- /dev/null
    +++ b/src/esp32c3.zig
    @@ -0,0 +1,37956 @@
    +// this file was generated by regz: https://github.com/ZigEmbeddedGroup/regz
    +// commit: 62e33d0e2175e4c1621e1dbf9f6ac3ec18f6ba38
    +//
    +// vendor: ESPRESSIF SYSTEMS (SHANGHAI) CO., LTD.
    +// device: ESP32-C3
    +// cpu: RV32IMC
    +
    +pub const registers = struct {
    +    /// AES (Advanced Encryption Standard) Accelerator
    +    pub const AES = struct {
    +        pub const base_address = 0x6003a000;
    +
    +        /// address: 0x6003a000
    +        /// Key material key_0 configure register
    +        pub const KEY_0 = @intToPtr(*volatile u32, base_address + 0x0);
    +
    +        /// address: 0x6003a004
    +        /// Key material key_1 configure register
    +        pub const KEY_1 = @intToPtr(*volatile u32, base_address + 0x4);
    +
    +        /// address: 0x6003a008
    +        /// Key material key_2 configure register
    +        pub const KEY_2 = @intToPtr(*volatile u32, base_address + 0x8);
    +
    +        /// address: 0x6003a00c
    +        /// Key material key_3 configure register
    +        pub const KEY_3 = @intToPtr(*volatile u32, base_address + 0xc);
    +
    +        /// address: 0x6003a010
    +        /// Key material key_4 configure register
    +        pub const KEY_4 = @intToPtr(*volatile u32, base_address + 0x10);
    +
    +        /// address: 0x6003a014
    +        /// Key material key_5 configure register
    +        pub const KEY_5 = @intToPtr(*volatile u32, base_address + 0x14);
    +
    +        /// address: 0x6003a018
    +        /// Key material key_6 configure register
    +        pub const KEY_6 = @intToPtr(*volatile u32, base_address + 0x18);
    +
    +        /// address: 0x6003a01c
    +        /// Key material key_7 configure register
    +        pub const KEY_7 = @intToPtr(*volatile u32, base_address + 0x1c);
    +
    +        /// address: 0x6003a020
    +        /// source text material text_in_0 configure register
    +        pub const TEXT_IN_0 = @intToPtr(*volatile u32, base_address + 0x20);
    +
    +        /// address: 0x6003a024
    +        /// source text material text_in_1 configure register
    +        pub const TEXT_IN_1 = @intToPtr(*volatile u32, base_address + 0x24);
    +
    +        /// address: 0x6003a028
    +        /// source text material text_in_2 configure register
    +        pub const TEXT_IN_2 = @intToPtr(*volatile u32, base_address + 0x28);
    +
    +        /// address: 0x6003a02c
    +        /// source text material text_in_3 configure register
    +        pub const TEXT_IN_3 = @intToPtr(*volatile u32, base_address + 0x2c);
    +
    +        /// address: 0x6003a030
    +        /// result text material text_out_0 configure register
    +        pub const TEXT_OUT_0 = @intToPtr(*volatile u32, base_address + 0x30);
    +
    +        /// address: 0x6003a034
    +        /// result text material text_out_1 configure register
    +        pub const TEXT_OUT_1 = @intToPtr(*volatile u32, base_address + 0x34);
    +
    +        /// address: 0x6003a038
    +        /// result text material text_out_2 configure register
    +        pub const TEXT_OUT_2 = @intToPtr(*volatile u32, base_address + 0x38);
    +
    +        /// address: 0x6003a03c
    +        /// result text material text_out_3 configure register
    +        pub const TEXT_OUT_3 = @intToPtr(*volatile u32, base_address + 0x3c);
    +
    +        /// address: 0x6003a040
    +        /// AES Mode register
    +        pub const MODE = @intToPtr(*volatile MmioInt(32, u3), base_address + 0x40);
    +
    +        /// address: 0x6003a044
    +        /// AES Endian configure register
    +        pub const ENDIAN = @intToPtr(*volatile MmioInt(32, u6), base_address + 0x44);
    +
    +        /// address: 0x6003a048
    +        /// AES trigger register
    +        pub const TRIGGER = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x48);
    +
    +        /// address: 0x6003a04c
    +        /// AES state register
    +        pub const STATE = @intToPtr(*volatile MmioInt(32, u2), base_address + 0x4c);
    +
    +        /// address: 0x6003a050
    +        /// The memory that stores initialization vector
    +        pub const IV_MEM = @intToPtr(*volatile [16]u8, base_address + 0x50);
    +
    +        /// address: 0x6003a060
    +        /// The memory that stores GCM hash subkey
    +        pub const H_MEM = @intToPtr(*volatile [16]u8, base_address + 0x60);
    +
    +        /// address: 0x6003a070
    +        /// The memory that stores J0
    +        pub const J0_MEM = @intToPtr(*volatile [16]u8, base_address + 0x70);
    +
    +        /// address: 0x6003a080
    +        /// The memory that stores T0
    +        pub const T0_MEM = @intToPtr(*volatile [16]u8, base_address + 0x80);
    +
    +        /// address: 0x6003a090
    +        /// DMA-AES working mode register
    +        pub const DMA_ENABLE = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x90);
    +
    +        /// address: 0x6003a094
    +        /// AES cipher block mode register
    +        pub const BLOCK_MODE = @intToPtr(*volatile MmioInt(32, u3), base_address + 0x94);
    +
    +        /// address: 0x6003a098
    +        /// AES block number register
    +        pub const BLOCK_NUM = @intToPtr(*volatile u32, base_address + 0x98);
    +
    +        /// address: 0x6003a09c
    +        /// Standard incrementing function configure register
    +        pub const INC_SEL = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x9c);
    +
    +        /// address: 0x6003a0a0
    +        /// Additional Authential Data block number register
    +        pub const AAD_BLOCK_NUM = @intToPtr(*volatile u32, base_address + 0xa0);
    +
    +        /// address: 0x6003a0a4
    +        /// AES remainder bit number register
    +        pub const REMAINDER_BIT_NUM = @intToPtr(*volatile MmioInt(32, u7), base_address + 0xa4);
    +
    +        /// address: 0x6003a0a8
    +        /// AES continue register
    +        pub const CONTINUE = @intToPtr(*volatile MmioInt(32, u1), base_address + 0xa8);
    +
    +        /// address: 0x6003a0ac
    +        /// AES Interrupt clear register
    +        pub const INT_CLEAR = @intToPtr(*volatile MmioInt(32, u1), base_address + 0xac);
    +
    +        /// address: 0x6003a0b0
    +        /// AES Interrupt enable register
    +        pub const INT_ENA = @intToPtr(*volatile MmioInt(32, u1), base_address + 0xb0);
    +
    +        /// address: 0x6003a0b4
    +        /// AES version control register
    +        pub const DATE = @intToPtr(*volatile MmioInt(32, u30), base_address + 0xb4);
    +
    +        /// address: 0x6003a0b8
    +        /// AES-DMA exit config
    +        pub const DMA_EXIT = @intToPtr(*volatile MmioInt(32, u1), base_address + 0xb8);
    +    };
    +
    +    /// Advanced Peripheral Bus Controller
    +    pub const APB_CTRL = struct {
    +        pub const base_address = 0x60026000;
    +
    +        /// address: 0x60026000
    +        /// APB_CTRL_SYSCLK_CONF_REG
    +        pub const SYSCLK_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_pre_div_cnt
    +            PRE_DIV_CNT: u10,
    +            /// reg_clk_320m_en
    +            CLK_320M_EN: u1,
    +            /// reg_clk_en
    +            CLK_EN: u1,
    +            /// reg_rst_tick_cnt
    +            RST_TICK_CNT: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x0);
    +
    +        /// address: 0x60026004
    +        /// APB_CTRL_TICK_CONF_REG
    +        pub const TICK_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_xtal_tick_num
    +            XTAL_TICK_NUM: u8,
    +            /// reg_ck8m_tick_num
    +            CK8M_TICK_NUM: u8,
    +            /// reg_tick_enable
    +            TICK_ENABLE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x60026008
    +        /// APB_CTRL_CLK_OUT_EN_REG
    +        pub const CLK_OUT_EN = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_clk20_oen
    +            CLK20_OEN: u1,
    +            /// reg_clk22_oen
    +            CLK22_OEN: u1,
    +            /// reg_clk44_oen
    +            CLK44_OEN: u1,
    +            /// reg_clk_bb_oen
    +            CLK_BB_OEN: u1,
    +            /// reg_clk80_oen
    +            CLK80_OEN: u1,
    +            /// reg_clk160_oen
    +            CLK160_OEN: u1,
    +            /// reg_clk_320m_oen
    +            CLK_320M_OEN: u1,
    +            /// reg_clk_adc_inf_oen
    +            CLK_ADC_INF_OEN: u1,
    +            /// reg_clk_dac_cpu_oen
    +            CLK_DAC_CPU_OEN: u1,
    +            /// reg_clk40x_bb_oen
    +            CLK40X_BB_OEN: u1,
    +            /// reg_clk_xtal_oen
    +            CLK_XTAL_OEN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x6002600c
    +        /// APB_CTRL_WIFI_BB_CFG_REG
    +        pub const WIFI_BB_CFG = @intToPtr(*volatile u32, base_address + 0xc);
    +
    +        /// address: 0x60026010
    +        /// APB_CTRL_WIFI_BB_CFG_2_REG
    +        pub const WIFI_BB_CFG_2 = @intToPtr(*volatile u32, base_address + 0x10);
    +
    +        /// address: 0x60026014
    +        /// APB_CTRL_WIFI_CLK_EN_REG
    +        pub const WIFI_CLK_EN = @intToPtr(*volatile u32, base_address + 0x14);
    +
    +        /// address: 0x60026018
    +        /// APB_CTRL_WIFI_RST_EN_REG
    +        pub const WIFI_RST_EN = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_wifi_rst
    +            WIFI_RST: u32,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x6002601c
    +        /// APB_CTRL_HOST_INF_SEL_REG
    +        pub const HOST_INF_SEL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_peri_io_swap
    +            PERI_IO_SWAP: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x60026020
    +        /// APB_CTRL_EXT_MEM_PMS_LOCK_REG
    +        pub const EXT_MEM_PMS_LOCK = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x20);
    +
    +        /// address: 0x60026028
    +        /// APB_CTRL_FLASH_ACE0_ATTR_REG
    +        pub const FLASH_ACE0_ATTR = @intToPtr(*volatile MmioInt(32, u2), base_address + 0x28);
    +
    +        /// address: 0x6002602c
    +        /// APB_CTRL_FLASH_ACE1_ATTR_REG
    +        pub const FLASH_ACE1_ATTR = @intToPtr(*volatile MmioInt(32, u2), base_address + 0x2c);
    +
    +        /// address: 0x60026030
    +        /// APB_CTRL_FLASH_ACE2_ATTR_REG
    +        pub const FLASH_ACE2_ATTR = @intToPtr(*volatile MmioInt(32, u2), base_address + 0x30);
    +
    +        /// address: 0x60026034
    +        /// APB_CTRL_FLASH_ACE3_ATTR_REG
    +        pub const FLASH_ACE3_ATTR = @intToPtr(*volatile MmioInt(32, u2), base_address + 0x34);
    +
    +        /// address: 0x60026038
    +        /// APB_CTRL_FLASH_ACE0_ADDR_REG
    +        pub const FLASH_ACE0_ADDR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_flash_ace0_addr_s
    +            S: u32,
    +        }), base_address + 0x38);
    +
    +        /// address: 0x6002603c
    +        /// APB_CTRL_FLASH_ACE1_ADDR_REG
    +        pub const FLASH_ACE1_ADDR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_flash_ace1_addr_s
    +            S: u32,
    +        }), base_address + 0x3c);
    +
    +        /// address: 0x60026040
    +        /// APB_CTRL_FLASH_ACE2_ADDR_REG
    +        pub const FLASH_ACE2_ADDR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_flash_ace2_addr_s
    +            S: u32,
    +        }), base_address + 0x40);
    +
    +        /// address: 0x60026044
    +        /// APB_CTRL_FLASH_ACE3_ADDR_REG
    +        pub const FLASH_ACE3_ADDR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_flash_ace3_addr_s
    +            S: u32,
    +        }), base_address + 0x44);
    +
    +        /// address: 0x60026048
    +        /// APB_CTRL_FLASH_ACE0_SIZE_REG
    +        pub const FLASH_ACE0_SIZE = @intToPtr(*volatile MmioInt(32, u13), base_address + 0x48);
    +
    +        /// address: 0x6002604c
    +        /// APB_CTRL_FLASH_ACE1_SIZE_REG
    +        pub const FLASH_ACE1_SIZE = @intToPtr(*volatile MmioInt(32, u13), base_address + 0x4c);
    +
    +        /// address: 0x60026050
    +        /// APB_CTRL_FLASH_ACE2_SIZE_REG
    +        pub const FLASH_ACE2_SIZE = @intToPtr(*volatile MmioInt(32, u13), base_address + 0x50);
    +
    +        /// address: 0x60026054
    +        /// APB_CTRL_FLASH_ACE3_SIZE_REG
    +        pub const FLASH_ACE3_SIZE = @intToPtr(*volatile MmioInt(32, u13), base_address + 0x54);
    +
    +        /// address: 0x60026088
    +        /// APB_CTRL_SPI_MEM_PMS_CTRL_REG
    +        pub const SPI_MEM_PMS_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_spi_mem_reject_int
    +            SPI_MEM_REJECT_INT: u1,
    +            /// reg_spi_mem_reject_clr
    +            SPI_MEM_REJECT_CLR: u1,
    +            /// reg_spi_mem_reject_cde
    +            SPI_MEM_REJECT_CDE: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x88);
    +
    +        /// address: 0x6002608c
    +        /// APB_CTRL_SPI_MEM_REJECT_ADDR_REG
    +        pub const SPI_MEM_REJECT_ADDR = @intToPtr(*volatile u32, base_address + 0x8c);
    +
    +        /// address: 0x60026090
    +        /// APB_CTRL_SDIO_CTRL_REG
    +        pub const SDIO_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_sdio_win_access_en
    +            SDIO_WIN_ACCESS_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x90);
    +
    +        /// address: 0x60026094
    +        /// APB_CTRL_REDCY_SIG0_REG
    +        pub const REDCY_SIG0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_redcy_sig0
    +            REDCY_SIG0: u31,
    +            /// reg_redcy_andor
    +            REDCY_ANDOR: u1,
    +        }), base_address + 0x94);
    +
    +        /// address: 0x60026098
    +        /// APB_CTRL_REDCY_SIG1_REG
    +        pub const REDCY_SIG1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_redcy_sig1
    +            REDCY_SIG1: u31,
    +            /// reg_redcy_nandor
    +            REDCY_NANDOR: u1,
    +        }), base_address + 0x98);
    +
    +        /// address: 0x6002609c
    +        /// APB_CTRL_FRONT_END_MEM_PD_REG
    +        pub const FRONT_END_MEM_PD = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_agc_mem_force_pu
    +            AGC_MEM_FORCE_PU: u1,
    +            /// reg_agc_mem_force_pd
    +            AGC_MEM_FORCE_PD: u1,
    +            /// reg_pbus_mem_force_pu
    +            PBUS_MEM_FORCE_PU: u1,
    +            /// reg_pbus_mem_force_pd
    +            PBUS_MEM_FORCE_PD: u1,
    +            /// reg_dc_mem_force_pu
    +            DC_MEM_FORCE_PU: u1,
    +            /// reg_dc_mem_force_pd
    +            DC_MEM_FORCE_PD: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +        }), base_address + 0x9c);
    +
    +        /// address: 0x600260a0
    +        /// APB_CTRL_RETENTION_CTRL_REG
    +        pub const RETENTION_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_retention_link_addr
    +            RETENTION_LINK_ADDR: u27,
    +            /// reg_nobypass_cpu_iso_rst
    +            NOBYPASS_CPU_ISO_RST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +        }), base_address + 0xa0);
    +
    +        /// address: 0x600260a4
    +        /// APB_CTRL_CLKGATE_FORCE_ON_REG
    +        pub const CLKGATE_FORCE_ON = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_rom_clkgate_force_on
    +            ROM_CLKGATE_FORCE_ON: u2,
    +            /// reg_sram_clkgate_force_on
    +            SRAM_CLKGATE_FORCE_ON: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +        }), base_address + 0xa4);
    +
    +        /// address: 0x600260a8
    +        /// APB_CTRL_MEM_POWER_DOWN_REG
    +        pub const MEM_POWER_DOWN = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_rom_power_down
    +            ROM_POWER_DOWN: u2,
    +            /// reg_sram_power_down
    +            SRAM_POWER_DOWN: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +        }), base_address + 0xa8);
    +
    +        /// address: 0x600260ac
    +        /// APB_CTRL_MEM_POWER_UP_REG
    +        pub const MEM_POWER_UP = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_rom_power_up
    +            ROM_POWER_UP: u2,
    +            /// reg_sram_power_up
    +            SRAM_POWER_UP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +        }), base_address + 0xac);
    +
    +        /// address: 0x600260b0
    +        /// APB_CTRL_RND_DATA_REG
    +        pub const RND_DATA = @intToPtr(*volatile u32, base_address + 0xb0);
    +
    +        /// address: 0x600260b4
    +        /// APB_CTRL_PERI_BACKUP_CONFIG_REG
    +        pub const PERI_BACKUP_CONFIG = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            /// reg_peri_backup_flow_err
    +            PERI_BACKUP_FLOW_ERR: u2,
    +            reserved1: u1,
    +            /// reg_peri_backup_burst_limit
    +            PERI_BACKUP_BURST_LIMIT: u5,
    +            /// reg_peri_backup_tout_thres
    +            PERI_BACKUP_TOUT_THRES: u10,
    +            /// reg_peri_backup_size
    +            PERI_BACKUP_SIZE: u10,
    +            /// reg_peri_backup_start
    +            PERI_BACKUP_START: u1,
    +            /// reg_peri_backup_to_mem
    +            PERI_BACKUP_TO_MEM: u1,
    +            /// reg_peri_backup_ena
    +            PERI_BACKUP_ENA: u1,
    +        }), base_address + 0xb4);
    +
    +        /// address: 0x600260b8
    +        /// APB_CTRL_PERI_BACKUP_APB_ADDR_REG
    +        pub const PERI_BACKUP_APB_ADDR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_backup_apb_start_addr
    +            BACKUP_APB_START_ADDR: u32,
    +        }), base_address + 0xb8);
    +
    +        /// address: 0x600260bc
    +        /// APB_CTRL_PERI_BACKUP_MEM_ADDR_REG
    +        pub const PERI_BACKUP_MEM_ADDR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_backup_mem_start_addr
    +            BACKUP_MEM_START_ADDR: u32,
    +        }), base_address + 0xbc);
    +
    +        /// address: 0x600260c0
    +        /// APB_CTRL_PERI_BACKUP_INT_RAW_REG
    +        pub const PERI_BACKUP_INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_peri_backup_done_int_raw
    +            PERI_BACKUP_DONE_INT_RAW: u1,
    +            /// reg_peri_backup_err_int_raw
    +            PERI_BACKUP_ERR_INT_RAW: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0xc0);
    +
    +        /// address: 0x600260c4
    +        /// APB_CTRL_PERI_BACKUP_INT_ST_REG
    +        pub const PERI_BACKUP_INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_peri_backup_done_int_st
    +            PERI_BACKUP_DONE_INT_ST: u1,
    +            /// reg_peri_backup_err_int_st
    +            PERI_BACKUP_ERR_INT_ST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0xc4);
    +
    +        /// address: 0x600260c8
    +        /// APB_CTRL_PERI_BACKUP_INT_ENA_REG
    +        pub const PERI_BACKUP_INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_peri_backup_done_int_ena
    +            PERI_BACKUP_DONE_INT_ENA: u1,
    +            /// reg_peri_backup_err_int_ena
    +            PERI_BACKUP_ERR_INT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0xc8);
    +
    +        /// address: 0x600260d0
    +        /// APB_CTRL_PERI_BACKUP_INT_CLR_REG
    +        pub const PERI_BACKUP_INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_peri_backup_done_int_clr
    +            PERI_BACKUP_DONE_INT_CLR: u1,
    +            /// reg_peri_backup_err_int_clr
    +            PERI_BACKUP_ERR_INT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0xd0);
    +
    +        /// address: 0x600263fc
    +        /// APB_CTRL_DATE_REG
    +        pub const DATE = @intToPtr(*volatile u32, base_address + 0x3fc);
    +    };
    +
    +    /// Successive Approximation Register Analog to Digital Converter
    +    pub const APB_SARADC = struct {
    +        pub const base_address = 0x60040000;
    +
    +        /// address: 0x60040000
    +        /// digital saradc configure register
    +        pub const CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// select software enable saradc sample
    +            SARADC_START_FORCE: u1,
    +            /// software enable saradc sample
    +            SARADC_START: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// SAR clock gated
    +            SARADC_SAR_CLK_GATED: u1,
    +            /// SAR clock divider
    +            SARADC_SAR_CLK_DIV: u8,
    +            /// 0 ~ 15 means length 1 ~ 16
    +            SARADC_SAR_PATT_LEN: u3,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            /// clear the pointer of pattern table for DIG ADC1 CTRL
    +            SARADC_SAR_PATT_P_CLEAR: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            /// force option to xpd sar blocks
    +            SARADC_XPD_SAR_FORCE: u2,
    +            reserved12: u1,
    +            /// wait arbit signal stable after sar_done
    +            SARADC_WAIT_ARB_CYCLE: u2,
    +        }), base_address + 0x0);
    +
    +        /// address: 0x60040004
    +        /// digital saradc configure register
    +        pub const CTRL2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// enable max meas num
    +            SARADC_MEAS_NUM_LIMIT: u1,
    +            /// max conversion number
    +            SARADC_MAX_MEAS_NUM: u8,
    +            /// 1: data to DIG ADC1 CTRL is inverted, otherwise not
    +            SARADC_SAR1_INV: u1,
    +            /// 1: data to DIG ADC2 CTRL is inverted, otherwise not
    +            SARADC_SAR2_INV: u1,
    +            reserved0: u1,
    +            /// to set saradc timer target
    +            SARADC_TIMER_TARGET: u12,
    +            /// to enable saradc timer trigger
    +            SARADC_TIMER_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x60040008
    +        /// digital saradc configure register
    +        pub const FILTER_CTRL1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            reserved25: u1,
    +            /// Factor of saradc filter1
    +            APB_SARADC_FILTER_FACTOR1: u3,
    +            /// Factor of saradc filter0
    +            APB_SARADC_FILTER_FACTOR0: u3,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x6004000c
    +        /// digital saradc configure register
    +        pub const FSM_WAIT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// saradc_xpd_wait
    +            SARADC_XPD_WAIT: u8,
    +            /// saradc_rstb_wait
    +            SARADC_RSTB_WAIT: u8,
    +            /// saradc_standby_wait
    +            SARADC_STANDBY_WAIT: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x60040010
    +        /// digital saradc configure register
    +        pub const SAR1_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// saradc1 status about data and channel
    +            SARADC_SAR1_STATUS: u32,
    +        }), base_address + 0x10);
    +
    +        /// address: 0x60040014
    +        /// digital saradc configure register
    +        pub const SAR2_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// saradc2 status about data and channel
    +            SARADC_SAR2_STATUS: u32,
    +        }), base_address + 0x14);
    +
    +        /// address: 0x60040018
    +        /// digital saradc configure register
    +        pub const SAR_PATT_TAB1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// item 0 ~ 3 for pattern table 1 (each item one byte)
    +            SARADC_SAR_PATT_TAB1: u24,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x6004001c
    +        /// digital saradc configure register
    +        pub const SAR_PATT_TAB2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Item 4 ~ 7 for pattern table 1 (each item one byte)
    +            SARADC_SAR_PATT_TAB2: u24,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x60040020
    +        /// digital saradc configure register
    +        pub const ONETIME_SAMPLE = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            /// configure onetime atten
    +            SARADC_ONETIME_ATTEN: u2,
    +            /// configure onetime channel
    +            SARADC_ONETIME_CHANNEL: u4,
    +            /// trigger adc onetime sample
    +            SARADC_ONETIME_START: u1,
    +            /// enable adc2 onetime sample
    +            SARADC2_ONETIME_SAMPLE: u1,
    +            /// enable adc1 onetime sample
    +            SARADC1_ONETIME_SAMPLE: u1,
    +        }), base_address + 0x20);
    +
    +        /// address: 0x60040024
    +        /// digital saradc configure register
    +        pub const ARB_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// adc2 arbiter force to enableapb controller
    +            ADC_ARB_APB_FORCE: u1,
    +            /// adc2 arbiter force to enable rtc controller
    +            ADC_ARB_RTC_FORCE: u1,
    +            /// adc2 arbiter force to enable wifi controller
    +            ADC_ARB_WIFI_FORCE: u1,
    +            /// adc2 arbiter force grant
    +            ADC_ARB_GRANT_FORCE: u1,
    +            /// Set adc2 arbiterapb priority
    +            ADC_ARB_APB_PRIORITY: u2,
    +            /// Set adc2 arbiter rtc priority
    +            ADC_ARB_RTC_PRIORITY: u2,
    +            /// Set adc2 arbiter wifi priority
    +            ADC_ARB_WIFI_PRIORITY: u2,
    +            /// adc2 arbiter uses fixed priority
    +            ADC_ARB_FIX_PRIORITY: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x24);
    +
    +        /// address: 0x60040028
    +        /// digital saradc configure register
    +        pub const FILTER_CTRL0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            /// configure filter1 to adc channel
    +            APB_SARADC_FILTER_CHANNEL1: u4,
    +            /// configure filter0 to adc channel
    +            APB_SARADC_FILTER_CHANNEL0: u4,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            /// enable apb_adc1_filter
    +            APB_SARADC_FILTER_RESET: u1,
    +        }), base_address + 0x28);
    +
    +        /// address: 0x6004002c
    +        /// digital saradc configure register
    +        pub const SAR1DATA_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// saradc1 data
    +            APB_SARADC1_DATA: u17,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +        }), base_address + 0x2c);
    +
    +        /// address: 0x60040030
    +        /// digital saradc configure register
    +        pub const SAR2DATA_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// saradc2 data
    +            APB_SARADC2_DATA: u17,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +        }), base_address + 0x30);
    +
    +        /// address: 0x60040034
    +        /// digital saradc configure register
    +        pub const THRES0_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// configure thres0 to adc channel
    +            APB_SARADC_THRES0_CHANNEL: u4,
    +            reserved0: u1,
    +            /// saradc thres0 monitor thres
    +            APB_SARADC_THRES0_HIGH: u13,
    +            /// saradc thres0 monitor thres
    +            APB_SARADC_THRES0_LOW: u13,
    +            padding0: u1,
    +        }), base_address + 0x34);
    +
    +        /// address: 0x60040038
    +        /// digital saradc configure register
    +        pub const THRES1_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// configure thres1 to adc channel
    +            APB_SARADC_THRES1_CHANNEL: u4,
    +            reserved0: u1,
    +            /// saradc thres1 monitor thres
    +            APB_SARADC_THRES1_HIGH: u13,
    +            /// saradc thres1 monitor thres
    +            APB_SARADC_THRES1_LOW: u13,
    +            padding0: u1,
    +        }), base_address + 0x38);
    +
    +        /// address: 0x6004003c
    +        /// digital saradc configure register
    +        pub const THRES_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            reserved25: u1,
    +            reserved26: u1,
    +            /// enable thres to all channel
    +            APB_SARADC_THRES_ALL_EN: u1,
    +            reserved27: u1,
    +            reserved28: u1,
    +            /// enable thres1
    +            APB_SARADC_THRES1_EN: u1,
    +            /// enable thres0
    +            APB_SARADC_THRES0_EN: u1,
    +        }), base_address + 0x3c);
    +
    +        /// address: 0x60040040
    +        /// digital saradc int register
    +        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            reserved25: u1,
    +            /// saradc thres1 low interrupt enable
    +            APB_SARADC_THRES1_LOW_INT_ENA: u1,
    +            /// saradc thres0 low interrupt enable
    +            APB_SARADC_THRES0_LOW_INT_ENA: u1,
    +            /// saradc thres1 high interrupt enable
    +            APB_SARADC_THRES1_HIGH_INT_ENA: u1,
    +            /// saradc thres0 high interrupt enable
    +            APB_SARADC_THRES0_HIGH_INT_ENA: u1,
    +            /// saradc2 done interrupt enable
    +            APB_SARADC2_DONE_INT_ENA: u1,
    +            /// saradc1 done interrupt enable
    +            APB_SARADC1_DONE_INT_ENA: u1,
    +        }), base_address + 0x40);
    +
    +        /// address: 0x60040044
    +        /// digital saradc int register
    +        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            reserved25: u1,
    +            /// saradc thres1 low interrupt raw
    +            APB_SARADC_THRES1_LOW_INT_RAW: u1,
    +            /// saradc thres0 low interrupt raw
    +            APB_SARADC_THRES0_LOW_INT_RAW: u1,
    +            /// saradc thres1 high interrupt raw
    +            APB_SARADC_THRES1_HIGH_INT_RAW: u1,
    +            /// saradc thres0 high interrupt raw
    +            APB_SARADC_THRES0_HIGH_INT_RAW: u1,
    +            /// saradc2 done interrupt raw
    +            APB_SARADC2_DONE_INT_RAW: u1,
    +            /// saradc1 done interrupt raw
    +            APB_SARADC1_DONE_INT_RAW: u1,
    +        }), base_address + 0x44);
    +
    +        /// address: 0x60040048
    +        /// digital saradc int register
    +        pub const INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            reserved25: u1,
    +            /// saradc thres1 low interrupt state
    +            APB_SARADC_THRES1_LOW_INT_ST: u1,
    +            /// saradc thres0 low interrupt state
    +            APB_SARADC_THRES0_LOW_INT_ST: u1,
    +            /// saradc thres1 high interrupt state
    +            APB_SARADC_THRES1_HIGH_INT_ST: u1,
    +            /// saradc thres0 high interrupt state
    +            APB_SARADC_THRES0_HIGH_INT_ST: u1,
    +            /// saradc2 done interrupt state
    +            APB_SARADC2_DONE_INT_ST: u1,
    +            /// saradc1 done interrupt state
    +            APB_SARADC1_DONE_INT_ST: u1,
    +        }), base_address + 0x48);
    +
    +        /// address: 0x6004004c
    +        /// digital saradc int register
    +        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            reserved25: u1,
    +            /// saradc thres1 low interrupt clear
    +            APB_SARADC_THRES1_LOW_INT_CLR: u1,
    +            /// saradc thres0 low interrupt clear
    +            APB_SARADC_THRES0_LOW_INT_CLR: u1,
    +            /// saradc thres1 high interrupt clear
    +            APB_SARADC_THRES1_HIGH_INT_CLR: u1,
    +            /// saradc thres0 high interrupt clear
    +            APB_SARADC_THRES0_HIGH_INT_CLR: u1,
    +            /// saradc2 done interrupt clear
    +            APB_SARADC2_DONE_INT_CLR: u1,
    +            /// saradc1 done interrupt clear
    +            APB_SARADC1_DONE_INT_CLR: u1,
    +        }), base_address + 0x4c);
    +
    +        /// address: 0x60040050
    +        /// digital saradc configure register
    +        pub const DMA_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// the dma_in_suc_eof gen when sample cnt = spi_eof_num
    +            APB_ADC_EOF_NUM: u16,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            /// reset_apb_adc_state
    +            APB_ADC_RESET_FSM: u1,
    +            /// enable apb_adc use spi_dma
    +            APB_ADC_TRANS: u1,
    +        }), base_address + 0x50);
    +
    +        /// address: 0x60040054
    +        /// digital saradc configure register
    +        pub const CLKM_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Integral I2S clock divider value
    +            CLKM_DIV_NUM: u8,
    +            /// Fractional clock divider numerator value
    +            CLKM_DIV_B: u6,
    +            /// Fractional clock divider denominator value
    +            CLKM_DIV_A: u6,
    +            /// reg clk en
    +            CLK_EN: u1,
    +            /// Set this bit to enable clk_apll
    +            CLK_SEL: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +        }), base_address + 0x54);
    +
    +        /// address: 0x60040058
    +        /// digital tsens configure register
    +        pub const APB_TSENS_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// temperature sensor data out
    +            TSENS_OUT: u8,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            /// invert temperature sensor data
    +            TSENS_IN_INV: u1,
    +            /// temperature sensor clock divider
    +            TSENS_CLK_DIV: u8,
    +            /// temperature sensor power up
    +            TSENS_PU: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +        }), base_address + 0x58);
    +
    +        /// address: 0x6004005c
    +        /// digital tsens configure register
    +        pub const TSENS_CTRL2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// the time that power up tsens need wait
    +            TSENS_XPD_WAIT: u12,
    +            /// force power up tsens
    +            TSENS_XPD_FORCE: u2,
    +            /// inv tsens clk
    +            TSENS_CLK_INV: u1,
    +            /// tsens clk select
    +            TSENS_CLK_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x5c);
    +
    +        /// address: 0x60040060
    +        /// digital saradc configure register
    +        pub const CALI = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// saradc cali factor
    +            APB_SARADC_CALI_CFG: u17,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +        }), base_address + 0x60);
    +
    +        /// address: 0x600403fc
    +        /// version
    +        pub const CTRL_DATE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// version
    +            DATE: u32,
    +        }), base_address + 0x3fc);
    +    };
    +
    +    /// Debug Assist
    +    pub const ASSIST_DEBUG = struct {
    +        pub const base_address = 0x600ce000;
    +
    +        /// address: 0x600ce000
    +        /// ASSIST_DEBUG_C0RE_0_MONTR_ENA_REG
    +        pub const C0RE_0_MONTR_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core_0_area_dram0_0_rd_ena
    +            CORE_0_AREA_DRAM0_0_RD_ENA: u1,
    +            /// reg_core_0_area_dram0_0_wr_ena
    +            CORE_0_AREA_DRAM0_0_WR_ENA: u1,
    +            /// reg_core_0_area_dram0_1_rd_ena
    +            CORE_0_AREA_DRAM0_1_RD_ENA: u1,
    +            /// reg_core_0_area_dram0_1_wr_ena
    +            CORE_0_AREA_DRAM0_1_WR_ENA: u1,
    +            /// reg_core_0_area_pif_0_rd_ena
    +            CORE_0_AREA_PIF_0_RD_ENA: u1,
    +            /// reg_core_0_area_pif_0_wr_ena
    +            CORE_0_AREA_PIF_0_WR_ENA: u1,
    +            /// reg_core_0_area_pif_1_rd_ena
    +            CORE_0_AREA_PIF_1_RD_ENA: u1,
    +            /// reg_core_0_area_pif_1_wr_ena
    +            CORE_0_AREA_PIF_1_WR_ENA: u1,
    +            /// reg_core_0_sp_spill_min_ena
    +            CORE_0_SP_SPILL_MIN_ENA: u1,
    +            /// reg_core_0_sp_spill_max_ena
    +            CORE_0_SP_SPILL_MAX_ENA: u1,
    +            /// reg_core_0_iram0_exception_monitor_ena
    +            CORE_0_IRAM0_EXCEPTION_MONITOR_ENA: u1,
    +            /// reg_core_0_dram0_exception_monitor_ena
    +            CORE_0_DRAM0_EXCEPTION_MONITOR_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0x0);
    +
    +        /// address: 0x600ce004
    +        /// ASSIST_DEBUG_CORE_0_INTR_RAW_REG
    +        pub const CORE_0_INTR_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core_0_area_dram0_0_rd_raw
    +            CORE_0_AREA_DRAM0_0_RD_RAW: u1,
    +            /// reg_core_0_area_dram0_0_wr_raw
    +            CORE_0_AREA_DRAM0_0_WR_RAW: u1,
    +            /// reg_core_0_area_dram0_1_rd_raw
    +            CORE_0_AREA_DRAM0_1_RD_RAW: u1,
    +            /// reg_core_0_area_dram0_1_wr_raw
    +            CORE_0_AREA_DRAM0_1_WR_RAW: u1,
    +            /// reg_core_0_area_pif_0_rd_raw
    +            CORE_0_AREA_PIF_0_RD_RAW: u1,
    +            /// reg_core_0_area_pif_0_wr_raw
    +            CORE_0_AREA_PIF_0_WR_RAW: u1,
    +            /// reg_core_0_area_pif_1_rd_raw
    +            CORE_0_AREA_PIF_1_RD_RAW: u1,
    +            /// reg_core_0_area_pif_1_wr_raw
    +            CORE_0_AREA_PIF_1_WR_RAW: u1,
    +            /// reg_core_0_sp_spill_min_raw
    +            CORE_0_SP_SPILL_MIN_RAW: u1,
    +            /// reg_core_0_sp_spill_max_raw
    +            CORE_0_SP_SPILL_MAX_RAW: u1,
    +            /// reg_core_0_iram0_exception_monitor_raw
    +            CORE_0_IRAM0_EXCEPTION_MONITOR_RAW: u1,
    +            /// reg_core_0_dram0_exception_monitor_raw
    +            CORE_0_DRAM0_EXCEPTION_MONITOR_RAW: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x600ce008
    +        /// ASSIST_DEBUG_CORE_0_INTR_ENA_REG
    +        pub const CORE_0_INTR_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core_0_area_dram0_0_rd_intr_ena
    +            CORE_0_AREA_DRAM0_0_RD_INTR_ENA: u1,
    +            /// reg_core_0_area_dram0_0_wr_intr_ena
    +            CORE_0_AREA_DRAM0_0_WR_INTR_ENA: u1,
    +            /// reg_core_0_area_dram0_1_rd_intr_ena
    +            CORE_0_AREA_DRAM0_1_RD_INTR_ENA: u1,
    +            /// reg_core_0_area_dram0_1_wr_intr_ena
    +            CORE_0_AREA_DRAM0_1_WR_INTR_ENA: u1,
    +            /// reg_core_0_area_pif_0_rd_intr_ena
    +            CORE_0_AREA_PIF_0_RD_INTR_ENA: u1,
    +            /// reg_core_0_area_pif_0_wr_intr_ena
    +            CORE_0_AREA_PIF_0_WR_INTR_ENA: u1,
    +            /// reg_core_0_area_pif_1_rd_intr_ena
    +            CORE_0_AREA_PIF_1_RD_INTR_ENA: u1,
    +            /// reg_core_0_area_pif_1_wr_intr_ena
    +            CORE_0_AREA_PIF_1_WR_INTR_ENA: u1,
    +            /// reg_core_0_sp_spill_min_intr_ena
    +            CORE_0_SP_SPILL_MIN_INTR_ENA: u1,
    +            /// reg_core_0_sp_spill_max_intr_ena
    +            CORE_0_SP_SPILL_MAX_INTR_ENA: u1,
    +            /// reg_core_0_iram0_exception_monitor_ena
    +            CORE_0_IRAM0_EXCEPTION_MONITOR_RLS: u1,
    +            /// reg_core_0_dram0_exception_monitor_ena
    +            CORE_0_DRAM0_EXCEPTION_MONITOR_RLS: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x600ce00c
    +        /// ASSIST_DEBUG_CORE_0_INTR_CLR_REG
    +        pub const CORE_0_INTR_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core_0_area_dram0_0_rd_clr
    +            CORE_0_AREA_DRAM0_0_RD_CLR: u1,
    +            /// reg_core_0_area_dram0_0_wr_clr
    +            CORE_0_AREA_DRAM0_0_WR_CLR: u1,
    +            /// reg_core_0_area_dram0_1_rd_clr
    +            CORE_0_AREA_DRAM0_1_RD_CLR: u1,
    +            /// reg_core_0_area_dram0_1_wr_clr
    +            CORE_0_AREA_DRAM0_1_WR_CLR: u1,
    +            /// reg_core_0_area_pif_0_rd_clr
    +            CORE_0_AREA_PIF_0_RD_CLR: u1,
    +            /// reg_core_0_area_pif_0_wr_clr
    +            CORE_0_AREA_PIF_0_WR_CLR: u1,
    +            /// reg_core_0_area_pif_1_rd_clr
    +            CORE_0_AREA_PIF_1_RD_CLR: u1,
    +            /// reg_core_0_area_pif_1_wr_clr
    +            CORE_0_AREA_PIF_1_WR_CLR: u1,
    +            /// reg_core_0_sp_spill_min_clr
    +            CORE_0_SP_SPILL_MIN_CLR: u1,
    +            /// reg_core_0_sp_spill_max_clr
    +            CORE_0_SP_SPILL_MAX_CLR: u1,
    +            /// reg_core_0_iram0_exception_monitor_clr
    +            CORE_0_IRAM0_EXCEPTION_MONITOR_CLR: u1,
    +            /// reg_core_0_dram0_exception_monitor_clr
    +            CORE_0_DRAM0_EXCEPTION_MONITOR_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x600ce010
    +        /// ASSIST_DEBUG_CORE_0_AREA_DRAM0_0_MIN_REG
    +        pub const CORE_0_AREA_DRAM0_0_MIN = @intToPtr(*volatile u32, base_address + 0x10);
    +
    +        /// address: 0x600ce014
    +        /// ASSIST_DEBUG_CORE_0_AREA_DRAM0_0_MAX_REG
    +        pub const CORE_0_AREA_DRAM0_0_MAX = @intToPtr(*volatile u32, base_address + 0x14);
    +
    +        /// address: 0x600ce018
    +        /// ASSIST_DEBUG_CORE_0_AREA_DRAM0_1_MIN_REG
    +        pub const CORE_0_AREA_DRAM0_1_MIN = @intToPtr(*volatile u32, base_address + 0x18);
    +
    +        /// address: 0x600ce01c
    +        /// ASSIST_DEBUG_CORE_0_AREA_DRAM0_1_MAX_REG
    +        pub const CORE_0_AREA_DRAM0_1_MAX = @intToPtr(*volatile u32, base_address + 0x1c);
    +
    +        /// address: 0x600ce020
    +        /// ASSIST_DEBUG_CORE_0_AREA_PIF_0_MIN_REG
    +        pub const CORE_0_AREA_PIF_0_MIN = @intToPtr(*volatile u32, base_address + 0x20);
    +
    +        /// address: 0x600ce024
    +        /// ASSIST_DEBUG_CORE_0_AREA_PIF_0_MAX_REG
    +        pub const CORE_0_AREA_PIF_0_MAX = @intToPtr(*volatile u32, base_address + 0x24);
    +
    +        /// address: 0x600ce028
    +        /// ASSIST_DEBUG_CORE_0_AREA_PIF_1_MIN_REG
    +        pub const CORE_0_AREA_PIF_1_MIN = @intToPtr(*volatile u32, base_address + 0x28);
    +
    +        /// address: 0x600ce02c
    +        /// ASSIST_DEBUG_CORE_0_AREA_PIF_1_MAX_REG
    +        pub const CORE_0_AREA_PIF_1_MAX = @intToPtr(*volatile u32, base_address + 0x2c);
    +
    +        /// address: 0x600ce030
    +        /// ASSIST_DEBUG_CORE_0_AREA_PC_REG
    +        pub const CORE_0_AREA_PC = @intToPtr(*volatile u32, base_address + 0x30);
    +
    +        /// address: 0x600ce034
    +        /// ASSIST_DEBUG_CORE_0_AREA_SP_REG
    +        pub const CORE_0_AREA_SP = @intToPtr(*volatile u32, base_address + 0x34);
    +
    +        /// address: 0x600ce038
    +        /// ASSIST_DEBUG_CORE_0_SP_MIN_REG
    +        pub const CORE_0_SP_MIN = @intToPtr(*volatile u32, base_address + 0x38);
    +
    +        /// address: 0x600ce03c
    +        /// ASSIST_DEBUG_CORE_0_SP_MAX_REG
    +        pub const CORE_0_SP_MAX = @intToPtr(*volatile u32, base_address + 0x3c);
    +
    +        /// address: 0x600ce040
    +        /// ASSIST_DEBUG_CORE_0_SP_PC_REG
    +        pub const CORE_0_SP_PC = @intToPtr(*volatile u32, base_address + 0x40);
    +
    +        /// address: 0x600ce044
    +        /// ASSIST_DEBUG_CORE_0_RCD_EN_REG
    +        pub const CORE_0_RCD_EN = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core_0_rcd_recorden
    +            CORE_0_RCD_RECORDEN: u1,
    +            /// reg_core_0_rcd_pdebugen
    +            CORE_0_RCD_PDEBUGEN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x44);
    +
    +        /// address: 0x600ce048
    +        /// ASSIST_DEBUG_CORE_0_RCD_PDEBUGPC_REG
    +        pub const CORE_0_RCD_PDEBUGPC = @intToPtr(*volatile u32, base_address + 0x48);
    +
    +        /// address: 0x600ce04c
    +        /// ASSIST_DEBUG_CORE_0_RCD_PDEBUGSP_REG
    +        pub const CORE_0_RCD_PDEBUGSP = @intToPtr(*volatile u32, base_address + 0x4c);
    +
    +        /// address: 0x600ce050
    +        /// ASSIST_DEBUG_CORE_0_RCD_PDEBUGSP_REG
    +        pub const CORE_0_IRAM0_EXCEPTION_MONITOR_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core_0_iram0_recording_addr_0
    +            CORE_0_IRAM0_RECORDING_ADDR_0: u24,
    +            /// reg_core_0_iram0_recording_wr_0
    +            CORE_0_IRAM0_RECORDING_WR_0: u1,
    +            /// reg_core_0_iram0_recording_loadstore_0
    +            CORE_0_IRAM0_RECORDING_LOADSTORE_0: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +        }), base_address + 0x50);
    +
    +        /// address: 0x600ce054
    +        /// ASSIST_DEBUG_CORE_0_IRAM0_EXCEPTION_MONITOR_1_REG
    +        pub const CORE_0_IRAM0_EXCEPTION_MONITOR_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core_0_iram0_recording_addr_1
    +            CORE_0_IRAM0_RECORDING_ADDR_1: u24,
    +            /// reg_core_0_iram0_recording_wr_1
    +            CORE_0_IRAM0_RECORDING_WR_1: u1,
    +            /// reg_core_0_iram0_recording_loadstore_1
    +            CORE_0_IRAM0_RECORDING_LOADSTORE_1: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +        }), base_address + 0x54);
    +
    +        /// address: 0x600ce058
    +        /// ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_0_REG
    +        pub const CORE_0_DRAM0_EXCEPTION_MONITOR_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core_0_dram0_recording_addr_0
    +            CORE_0_DRAM0_RECORDING_ADDR_0: u24,
    +            /// reg_core_0_dram0_recording_wr_0
    +            CORE_0_DRAM0_RECORDING_WR_0: u1,
    +            /// reg_core_0_dram0_recording_byteen_0
    +            CORE_0_DRAM0_RECORDING_BYTEEN_0: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +        }), base_address + 0x58);
    +
    +        /// address: 0x600ce05c
    +        /// ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_1_REG
    +        pub const CORE_0_DRAM0_EXCEPTION_MONITOR_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core_0_dram0_recording_pc_0
    +            CORE_0_DRAM0_RECORDING_PC_0: u32,
    +        }), base_address + 0x5c);
    +
    +        /// address: 0x600ce060
    +        /// ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_1_REG
    +        pub const CORE_0_DRAM0_EXCEPTION_MONITOR_2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core_0_dram0_recording_addr_1
    +            CORE_0_DRAM0_RECORDING_ADDR_1: u24,
    +            /// reg_core_0_dram0_recording_wr_1
    +            CORE_0_DRAM0_RECORDING_WR_1: u1,
    +            /// reg_core_0_dram0_recording_byteen_1
    +            CORE_0_DRAM0_RECORDING_BYTEEN_1: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +        }), base_address + 0x60);
    +
    +        /// address: 0x600ce064
    +        /// ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_3_REG
    +        pub const CORE_0_DRAM0_EXCEPTION_MONITOR_3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core_0_dram0_recording_pc_1
    +            CORE_0_DRAM0_RECORDING_PC_1: u32,
    +        }), base_address + 0x64);
    +
    +        /// address: 0x600ce068
    +        /// ASSIST_DEBUG_CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_0_REG
    +        pub const CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core_x_iram0_dram0_limit_cycle_0
    +            CORE_X_IRAM0_DRAM0_LIMIT_CYCLE_0: u20,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x68);
    +
    +        /// address: 0x600ce06c
    +        /// ASSIST_DEBUG_CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_1_REG
    +        pub const CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core_x_iram0_dram0_limit_cycle_1
    +            CORE_X_IRAM0_DRAM0_LIMIT_CYCLE_1: u20,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x6c);
    +
    +        /// address: 0x600ce070
    +        /// ASSIST_DEBUG_LOG_SETTING
    +        pub const LOG_SETTING = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_log_ena
    +            LOG_ENA: u3,
    +            /// reg_log_mode
    +            LOG_MODE: u4,
    +            /// reg_log_mem_loop_enable
    +            LOG_MEM_LOOP_ENABLE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x70);
    +
    +        /// address: 0x600ce074
    +        /// ASSIST_DEBUG_LOG_DATA_0_REG
    +        pub const LOG_DATA_0 = @intToPtr(*volatile u32, base_address + 0x74);
    +
    +        /// address: 0x600ce078
    +        /// ASSIST_DEBUG_LOG_DATA_MASK_REG
    +        pub const LOG_DATA_MASK = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_log_data_size
    +            LOG_DATA_SIZE: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x78);
    +
    +        /// address: 0x600ce07c
    +        /// ASSIST_DEBUG_LOG_MIN_REG
    +        pub const LOG_MIN = @intToPtr(*volatile u32, base_address + 0x7c);
    +
    +        /// address: 0x600ce080
    +        /// ASSIST_DEBUG_LOG_MAX_REG
    +        pub const LOG_MAX = @intToPtr(*volatile u32, base_address + 0x80);
    +
    +        /// address: 0x600ce084
    +        /// ASSIST_DEBUG_LOG_MEM_START_REG
    +        pub const LOG_MEM_START = @intToPtr(*volatile u32, base_address + 0x84);
    +
    +        /// address: 0x600ce088
    +        /// ASSIST_DEBUG_LOG_MEM_END_REG
    +        pub const LOG_MEM_END = @intToPtr(*volatile u32, base_address + 0x88);
    +
    +        /// address: 0x600ce08c
    +        /// ASSIST_DEBUG_LOG_MEM_WRITING_ADDR_REG
    +        pub const LOG_MEM_WRITING_ADDR = @intToPtr(*volatile u32, base_address + 0x8c);
    +
    +        /// address: 0x600ce090
    +        /// ASSIST_DEBUG_LOG_MEM_FULL_FLAG_REG
    +        pub const LOG_MEM_FULL_FLAG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_log_mem_full_flag
    +            LOG_MEM_FULL_FLAG: u1,
    +            /// reg_clr_log_mem_full_flag
    +            CLR_LOG_MEM_FULL_FLAG: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x90);
    +
    +        /// address: 0x600ce094
    +        /// ASSIST_DEBUG_C0RE_0_LASTPC_BEFORE_EXCEPTION
    +        pub const C0RE_0_LASTPC_BEFORE_EXCEPTION = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core_0_lastpc_before_exc
    +            CORE_0_LASTPC_BEFORE_EXC: u32,
    +        }), base_address + 0x94);
    +
    +        /// address: 0x600ce098
    +        /// ASSIST_DEBUG_C0RE_0_DEBUG_MODE
    +        pub const C0RE_0_DEBUG_MODE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core_0_debug_mode
    +            CORE_0_DEBUG_MODE: u1,
    +            /// reg_core_0_debug_module_active
    +            CORE_0_DEBUG_MODULE_ACTIVE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x98);
    +
    +        /// address: 0x600ce1fc
    +        /// ASSIST_DEBUG_DATE_REG
    +        pub const DATE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_assist_debug_date
    +            ASSIST_DEBUG_DATE: u28,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +        }), base_address + 0x1fc);
    +    };
    +
    +    /// DMA (Direct Memory Access) Controller
    +    pub const DMA = struct {
    +        pub const base_address = 0x6003f000;
    +
    +        /// address: 0x6003f000
    +        /// DMA_INT_RAW_CH0_REG.
    +        pub const INT_RAW_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The raw interrupt bit turns to high level when the last data pointed by one
    +            /// inlink descriptor has been received for Rx channel 0.
    +            IN_DONE_CH0_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when the last data pointed by one
    +            /// inlink descriptor has been received for Rx channel 0. For UHCI0, the raw
    +            /// interrupt bit turns to high level when the last data pointed by one inlink
    +            /// descriptor has been received and no data error is detected for Rx channel 0.
    +            IN_SUC_EOF_CH0_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when data error is detected only in
    +            /// the case that the peripheral is UHCI0 for Rx channel 0. For other peripherals,
    +            /// this raw interrupt is reserved.
    +            IN_ERR_EOF_CH0_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when the last data pointed by one
    +            /// outlink descriptor has been transmitted to peripherals for Tx channel 0.
    +            OUT_DONE_CH0_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when the last data pointed by one
    +            /// outlink descriptor has been read from memory for Tx channel 0.
    +            OUT_EOF_CH0_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when detecting inlink descriptor
    +            /// error, including owner error, the second and third word error of inlink
    +            /// descriptor for Rx channel 0.
    +            IN_DSCR_ERR_CH0_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when detecting outlink descriptor
    +            /// error, including owner error, the second and third word error of outlink
    +            /// descriptor for Tx channel 0.
    +            OUT_DSCR_ERR_CH0_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when Rx buffer pointed by inlink is
    +            /// full and receiving data is not completed, but there is no more inlink for Rx
    +            /// channel 0.
    +            IN_DSCR_EMPTY_CH0_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when data corresponding a outlink
    +            /// (includes one link descriptor or few link descriptors) is transmitted out for Tx
    +            /// channel 0.
    +            OUT_TOTAL_EOF_CH0_INT_RAW: u1,
    +            /// This raw interrupt bit turns to high level when level 1 fifo of Rx channel 0 is
    +            /// overflow.
    +            INFIFO_OVF_CH0_INT_RAW: u1,
    +            /// This raw interrupt bit turns to high level when level 1 fifo of Rx channel 0 is
    +            /// underflow.
    +            INFIFO_UDF_CH0_INT_RAW: u1,
    +            /// This raw interrupt bit turns to high level when level 1 fifo of Tx channel 0 is
    +            /// overflow.
    +            OUTFIFO_OVF_CH0_INT_RAW: u1,
    +            /// This raw interrupt bit turns to high level when level 1 fifo of Tx channel 0 is
    +            /// underflow.
    +            OUTFIFO_UDF_CH0_INT_RAW: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x0);
    +
    +        /// address: 0x6003f004
    +        /// DMA_INT_ST_CH0_REG.
    +        pub const INT_ST_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The raw interrupt status bit for the IN_DONE_CH_INT interrupt.
    +            IN_DONE_CH0_INT_ST: u1,
    +            /// The raw interrupt status bit for the IN_SUC_EOF_CH_INT interrupt.
    +            IN_SUC_EOF_CH0_INT_ST: u1,
    +            /// The raw interrupt status bit for the IN_ERR_EOF_CH_INT interrupt.
    +            IN_ERR_EOF_CH0_INT_ST: u1,
    +            /// The raw interrupt status bit for the OUT_DONE_CH_INT interrupt.
    +            OUT_DONE_CH0_INT_ST: u1,
    +            /// The raw interrupt status bit for the OUT_EOF_CH_INT interrupt.
    +            OUT_EOF_CH0_INT_ST: u1,
    +            /// The raw interrupt status bit for the IN_DSCR_ERR_CH_INT interrupt.
    +            IN_DSCR_ERR_CH0_INT_ST: u1,
    +            /// The raw interrupt status bit for the OUT_DSCR_ERR_CH_INT interrupt.
    +            OUT_DSCR_ERR_CH0_INT_ST: u1,
    +            /// The raw interrupt status bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    +            IN_DSCR_EMPTY_CH0_INT_ST: u1,
    +            /// The raw interrupt status bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    +            OUT_TOTAL_EOF_CH0_INT_ST: u1,
    +            /// The raw interrupt status bit for the INFIFO_OVF_L1_CH_INT interrupt.
    +            INFIFO_OVF_CH0_INT_ST: u1,
    +            /// The raw interrupt status bit for the INFIFO_UDF_L1_CH_INT interrupt.
    +            INFIFO_UDF_CH0_INT_ST: u1,
    +            /// The raw interrupt status bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    +            OUTFIFO_OVF_CH0_INT_ST: u1,
    +            /// The raw interrupt status bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    +            OUTFIFO_UDF_CH0_INT_ST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x6003f008
    +        /// DMA_INT_ENA_CH0_REG.
    +        pub const INT_ENA_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The interrupt enable bit for the IN_DONE_CH_INT interrupt.
    +            IN_DONE_CH0_INT_ENA: u1,
    +            /// The interrupt enable bit for the IN_SUC_EOF_CH_INT interrupt.
    +            IN_SUC_EOF_CH0_INT_ENA: u1,
    +            /// The interrupt enable bit for the IN_ERR_EOF_CH_INT interrupt.
    +            IN_ERR_EOF_CH0_INT_ENA: u1,
    +            /// The interrupt enable bit for the OUT_DONE_CH_INT interrupt.
    +            OUT_DONE_CH0_INT_ENA: u1,
    +            /// The interrupt enable bit for the OUT_EOF_CH_INT interrupt.
    +            OUT_EOF_CH0_INT_ENA: u1,
    +            /// The interrupt enable bit for the IN_DSCR_ERR_CH_INT interrupt.
    +            IN_DSCR_ERR_CH0_INT_ENA: u1,
    +            /// The interrupt enable bit for the OUT_DSCR_ERR_CH_INT interrupt.
    +            OUT_DSCR_ERR_CH0_INT_ENA: u1,
    +            /// The interrupt enable bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    +            IN_DSCR_EMPTY_CH0_INT_ENA: u1,
    +            /// The interrupt enable bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    +            OUT_TOTAL_EOF_CH0_INT_ENA: u1,
    +            /// The interrupt enable bit for the INFIFO_OVF_L1_CH_INT interrupt.
    +            INFIFO_OVF_CH0_INT_ENA: u1,
    +            /// The interrupt enable bit for the INFIFO_UDF_L1_CH_INT interrupt.
    +            INFIFO_UDF_CH0_INT_ENA: u1,
    +            /// The interrupt enable bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    +            OUTFIFO_OVF_CH0_INT_ENA: u1,
    +            /// The interrupt enable bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    +            OUTFIFO_UDF_CH0_INT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x6003f00c
    +        /// DMA_INT_CLR_CH0_REG.
    +        pub const INT_CLR_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set this bit to clear the IN_DONE_CH_INT interrupt.
    +            IN_DONE_CH0_INT_CLR: u1,
    +            /// Set this bit to clear the IN_SUC_EOF_CH_INT interrupt.
    +            IN_SUC_EOF_CH0_INT_CLR: u1,
    +            /// Set this bit to clear the IN_ERR_EOF_CH_INT interrupt.
    +            IN_ERR_EOF_CH0_INT_CLR: u1,
    +            /// Set this bit to clear the OUT_DONE_CH_INT interrupt.
    +            OUT_DONE_CH0_INT_CLR: u1,
    +            /// Set this bit to clear the OUT_EOF_CH_INT interrupt.
    +            OUT_EOF_CH0_INT_CLR: u1,
    +            /// Set this bit to clear the IN_DSCR_ERR_CH_INT interrupt.
    +            IN_DSCR_ERR_CH0_INT_CLR: u1,
    +            /// Set this bit to clear the OUT_DSCR_ERR_CH_INT interrupt.
    +            OUT_DSCR_ERR_CH0_INT_CLR: u1,
    +            /// Set this bit to clear the IN_DSCR_EMPTY_CH_INT interrupt.
    +            IN_DSCR_EMPTY_CH0_INT_CLR: u1,
    +            /// Set this bit to clear the OUT_TOTAL_EOF_CH_INT interrupt.
    +            OUT_TOTAL_EOF_CH0_INT_CLR: u1,
    +            /// Set this bit to clear the INFIFO_OVF_L1_CH_INT interrupt.
    +            INFIFO_OVF_CH0_INT_CLR: u1,
    +            /// Set this bit to clear the INFIFO_UDF_L1_CH_INT interrupt.
    +            INFIFO_UDF_CH0_INT_CLR: u1,
    +            /// Set this bit to clear the OUTFIFO_OVF_L1_CH_INT interrupt.
    +            OUTFIFO_OVF_CH0_INT_CLR: u1,
    +            /// Set this bit to clear the OUTFIFO_UDF_L1_CH_INT interrupt.
    +            OUTFIFO_UDF_CH0_INT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x6003f010
    +        /// DMA_INT_RAW_CH1_REG.
    +        pub const INT_RAW_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The raw interrupt bit turns to high level when the last data pointed by one
    +            /// inlink descriptor has been received for Rx channel 1.
    +            IN_DONE_CH1_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when the last data pointed by one
    +            /// inlink descriptor has been received for Rx channel 1. For UHCI0, the raw
    +            /// interrupt bit turns to high level when the last data pointed by one inlink
    +            /// descriptor has been received and no data error is detected for Rx channel 1.
    +            IN_SUC_EOF_CH1_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when data error is detected only in
    +            /// the case that the peripheral is UHCI0 for Rx channel 1. For other peripherals,
    +            /// this raw interrupt is reserved.
    +            IN_ERR_EOF_CH1_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when the last data pointed by one
    +            /// outlink descriptor has been transmitted to peripherals for Tx channel 1.
    +            OUT_DONE_CH1_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when the last data pointed by one
    +            /// outlink descriptor has been read from memory for Tx channel 1.
    +            OUT_EOF_CH1_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when detecting inlink descriptor
    +            /// error, including owner error, the second and third word error of inlink
    +            /// descriptor for Rx channel 1.
    +            IN_DSCR_ERR_CH1_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when detecting outlink descriptor
    +            /// error, including owner error, the second and third word error of outlink
    +            /// descriptor for Tx channel 1.
    +            OUT_DSCR_ERR_CH1_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when Rx buffer pointed by inlink is
    +            /// full and receiving data is not completed, but there is no more inlink for Rx
    +            /// channel 1.
    +            IN_DSCR_EMPTY_CH1_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when data corresponding a outlink
    +            /// (includes one link descriptor or few link descriptors) is transmitted out for Tx
    +            /// channel 1.
    +            OUT_TOTAL_EOF_CH1_INT_RAW: u1,
    +            /// This raw interrupt bit turns to high level when level 1 fifo of Rx channel 1 is
    +            /// overflow.
    +            INFIFO_OVF_CH1_INT_RAW: u1,
    +            /// This raw interrupt bit turns to high level when level 1 fifo of Rx channel 1 is
    +            /// underflow.
    +            INFIFO_UDF_CH1_INT_RAW: u1,
    +            /// This raw interrupt bit turns to high level when level 1 fifo of Tx channel 1 is
    +            /// overflow.
    +            OUTFIFO_OVF_CH1_INT_RAW: u1,
    +            /// This raw interrupt bit turns to high level when level 1 fifo of Tx channel 1 is
    +            /// underflow.
    +            OUTFIFO_UDF_CH1_INT_RAW: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x10);
    +
    +        /// address: 0x6003f014
    +        /// DMA_INT_ST_CH1_REG.
    +        pub const INT_ST_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The raw interrupt status bit for the IN_DONE_CH_INT interrupt.
    +            IN_DONE_CH1_INT_ST: u1,
    +            /// The raw interrupt status bit for the IN_SUC_EOF_CH_INT interrupt.
    +            IN_SUC_EOF_CH1_INT_ST: u1,
    +            /// The raw interrupt status bit for the IN_ERR_EOF_CH_INT interrupt.
    +            IN_ERR_EOF_CH1_INT_ST: u1,
    +            /// The raw interrupt status bit for the OUT_DONE_CH_INT interrupt.
    +            OUT_DONE_CH1_INT_ST: u1,
    +            /// The raw interrupt status bit for the OUT_EOF_CH_INT interrupt.
    +            OUT_EOF_CH1_INT_ST: u1,
    +            /// The raw interrupt status bit for the IN_DSCR_ERR_CH_INT interrupt.
    +            IN_DSCR_ERR_CH1_INT_ST: u1,
    +            /// The raw interrupt status bit for the OUT_DSCR_ERR_CH_INT interrupt.
    +            OUT_DSCR_ERR_CH1_INT_ST: u1,
    +            /// The raw interrupt status bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    +            IN_DSCR_EMPTY_CH1_INT_ST: u1,
    +            /// The raw interrupt status bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    +            OUT_TOTAL_EOF_CH1_INT_ST: u1,
    +            /// The raw interrupt status bit for the INFIFO_OVF_L1_CH_INT interrupt.
    +            INFIFO_OVF_CH1_INT_ST: u1,
    +            /// The raw interrupt status bit for the INFIFO_UDF_L1_CH_INT interrupt.
    +            INFIFO_UDF_CH1_INT_ST: u1,
    +            /// The raw interrupt status bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    +            OUTFIFO_OVF_CH1_INT_ST: u1,
    +            /// The raw interrupt status bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    +            OUTFIFO_UDF_CH1_INT_ST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x14);
    +
    +        /// address: 0x6003f018
    +        /// DMA_INT_ENA_CH1_REG.
    +        pub const INT_ENA_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The interrupt enable bit for the IN_DONE_CH_INT interrupt.
    +            IN_DONE_CH1_INT_ENA: u1,
    +            /// The interrupt enable bit for the IN_SUC_EOF_CH_INT interrupt.
    +            IN_SUC_EOF_CH1_INT_ENA: u1,
    +            /// The interrupt enable bit for the IN_ERR_EOF_CH_INT interrupt.
    +            IN_ERR_EOF_CH1_INT_ENA: u1,
    +            /// The interrupt enable bit for the OUT_DONE_CH_INT interrupt.
    +            OUT_DONE_CH1_INT_ENA: u1,
    +            /// The interrupt enable bit for the OUT_EOF_CH_INT interrupt.
    +            OUT_EOF_CH1_INT_ENA: u1,
    +            /// The interrupt enable bit for the IN_DSCR_ERR_CH_INT interrupt.
    +            IN_DSCR_ERR_CH1_INT_ENA: u1,
    +            /// The interrupt enable bit for the OUT_DSCR_ERR_CH_INT interrupt.
    +            OUT_DSCR_ERR_CH1_INT_ENA: u1,
    +            /// The interrupt enable bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    +            IN_DSCR_EMPTY_CH1_INT_ENA: u1,
    +            /// The interrupt enable bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    +            OUT_TOTAL_EOF_CH1_INT_ENA: u1,
    +            /// The interrupt enable bit for the INFIFO_OVF_L1_CH_INT interrupt.
    +            INFIFO_OVF_CH1_INT_ENA: u1,
    +            /// The interrupt enable bit for the INFIFO_UDF_L1_CH_INT interrupt.
    +            INFIFO_UDF_CH1_INT_ENA: u1,
    +            /// The interrupt enable bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    +            OUTFIFO_OVF_CH1_INT_ENA: u1,
    +            /// The interrupt enable bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    +            OUTFIFO_UDF_CH1_INT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x6003f01c
    +        /// DMA_INT_CLR_CH1_REG.
    +        pub const INT_CLR_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set this bit to clear the IN_DONE_CH_INT interrupt.
    +            IN_DONE_CH1_INT_CLR: u1,
    +            /// Set this bit to clear the IN_SUC_EOF_CH_INT interrupt.
    +            IN_SUC_EOF_CH1_INT_CLR: u1,
    +            /// Set this bit to clear the IN_ERR_EOF_CH_INT interrupt.
    +            IN_ERR_EOF_CH1_INT_CLR: u1,
    +            /// Set this bit to clear the OUT_DONE_CH_INT interrupt.
    +            OUT_DONE_CH1_INT_CLR: u1,
    +            /// Set this bit to clear the OUT_EOF_CH_INT interrupt.
    +            OUT_EOF_CH1_INT_CLR: u1,
    +            /// Set this bit to clear the IN_DSCR_ERR_CH_INT interrupt.
    +            IN_DSCR_ERR_CH1_INT_CLR: u1,
    +            /// Set this bit to clear the OUT_DSCR_ERR_CH_INT interrupt.
    +            OUT_DSCR_ERR_CH1_INT_CLR: u1,
    +            /// Set this bit to clear the IN_DSCR_EMPTY_CH_INT interrupt.
    +            IN_DSCR_EMPTY_CH1_INT_CLR: u1,
    +            /// Set this bit to clear the OUT_TOTAL_EOF_CH_INT interrupt.
    +            OUT_TOTAL_EOF_CH1_INT_CLR: u1,
    +            /// Set this bit to clear the INFIFO_OVF_L1_CH_INT interrupt.
    +            INFIFO_OVF_CH1_INT_CLR: u1,
    +            /// Set this bit to clear the INFIFO_UDF_L1_CH_INT interrupt.
    +            INFIFO_UDF_CH1_INT_CLR: u1,
    +            /// Set this bit to clear the OUTFIFO_OVF_L1_CH_INT interrupt.
    +            OUTFIFO_OVF_CH1_INT_CLR: u1,
    +            /// Set this bit to clear the OUTFIFO_UDF_L1_CH_INT interrupt.
    +            OUTFIFO_UDF_CH1_INT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x6003f020
    +        /// DMA_INT_RAW_CH2_REG.
    +        pub const INT_RAW_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The raw interrupt bit turns to high level when the last data pointed by one
    +            /// inlink descriptor has been received for Rx channel 2.
    +            IN_DONE_CH2_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when the last data pointed by one
    +            /// inlink descriptor has been received for Rx channel 2. For UHCI0, the raw
    +            /// interrupt bit turns to high level when the last data pointed by one inlink
    +            /// descriptor has been received and no data error is detected for Rx channel 2.
    +            IN_SUC_EOF_CH2_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when data error is detected only in
    +            /// the case that the peripheral is UHCI0 for Rx channel 2. For other peripherals,
    +            /// this raw interrupt is reserved.
    +            IN_ERR_EOF_CH2_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when the last data pointed by one
    +            /// outlink descriptor has been transmitted to peripherals for Tx channel 2.
    +            OUT_DONE_CH2_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when the last data pointed by one
    +            /// outlink descriptor has been read from memory for Tx channel 2.
    +            OUT_EOF_CH2_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when detecting inlink descriptor
    +            /// error, including owner error, the second and third word error of inlink
    +            /// descriptor for Rx channel 2.
    +            IN_DSCR_ERR_CH2_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when detecting outlink descriptor
    +            /// error, including owner error, the second and third word error of outlink
    +            /// descriptor for Tx channel 2.
    +            OUT_DSCR_ERR_CH2_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when Rx buffer pointed by inlink is
    +            /// full and receiving data is not completed, but there is no more inlink for Rx
    +            /// channel 2.
    +            IN_DSCR_EMPTY_CH2_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when data corresponding a outlink
    +            /// (includes one link descriptor or few link descriptors) is transmitted out for Tx
    +            /// channel 2.
    +            OUT_TOTAL_EOF_CH2_INT_RAW: u1,
    +            /// This raw interrupt bit turns to high level when level 1 fifo of Rx channel 2 is
    +            /// overflow.
    +            INFIFO_OVF_CH2_INT_RAW: u1,
    +            /// This raw interrupt bit turns to high level when level 1 fifo of Rx channel 2 is
    +            /// underflow.
    +            INFIFO_UDF_CH2_INT_RAW: u1,
    +            /// This raw interrupt bit turns to high level when level 1 fifo of Tx channel 2 is
    +            /// overflow.
    +            OUTFIFO_OVF_CH2_INT_RAW: u1,
    +            /// This raw interrupt bit turns to high level when level 1 fifo of Tx channel 2 is
    +            /// underflow.
    +            OUTFIFO_UDF_CH2_INT_RAW: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x20);
    +
    +        /// address: 0x6003f024
    +        /// DMA_INT_ST_CH2_REG.
    +        pub const INT_ST_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The raw interrupt status bit for the IN_DONE_CH_INT interrupt.
    +            IN_DONE_CH2_INT_ST: u1,
    +            /// The raw interrupt status bit for the IN_SUC_EOF_CH_INT interrupt.
    +            IN_SUC_EOF_CH2_INT_ST: u1,
    +            /// The raw interrupt status bit for the IN_ERR_EOF_CH_INT interrupt.
    +            IN_ERR_EOF_CH2_INT_ST: u1,
    +            /// The raw interrupt status bit for the OUT_DONE_CH_INT interrupt.
    +            OUT_DONE_CH2_INT_ST: u1,
    +            /// The raw interrupt status bit for the OUT_EOF_CH_INT interrupt.
    +            OUT_EOF_CH2_INT_ST: u1,
    +            /// The raw interrupt status bit for the IN_DSCR_ERR_CH_INT interrupt.
    +            IN_DSCR_ERR_CH2_INT_ST: u1,
    +            /// The raw interrupt status bit for the OUT_DSCR_ERR_CH_INT interrupt.
    +            OUT_DSCR_ERR_CH2_INT_ST: u1,
    +            /// The raw interrupt status bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    +            IN_DSCR_EMPTY_CH2_INT_ST: u1,
    +            /// The raw interrupt status bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    +            OUT_TOTAL_EOF_CH2_INT_ST: u1,
    +            /// The raw interrupt status bit for the INFIFO_OVF_L1_CH_INT interrupt.
    +            INFIFO_OVF_CH2_INT_ST: u1,
    +            /// The raw interrupt status bit for the INFIFO_UDF_L1_CH_INT interrupt.
    +            INFIFO_UDF_CH2_INT_ST: u1,
    +            /// The raw interrupt status bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    +            OUTFIFO_OVF_CH2_INT_ST: u1,
    +            /// The raw interrupt status bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    +            OUTFIFO_UDF_CH2_INT_ST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x24);
    +
    +        /// address: 0x6003f028
    +        /// DMA_INT_ENA_CH2_REG.
    +        pub const INT_ENA_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The interrupt enable bit for the IN_DONE_CH_INT interrupt.
    +            IN_DONE_CH2_INT_ENA: u1,
    +            /// The interrupt enable bit for the IN_SUC_EOF_CH_INT interrupt.
    +            IN_SUC_EOF_CH2_INT_ENA: u1,
    +            /// The interrupt enable bit for the IN_ERR_EOF_CH_INT interrupt.
    +            IN_ERR_EOF_CH2_INT_ENA: u1,
    +            /// The interrupt enable bit for the OUT_DONE_CH_INT interrupt.
    +            OUT_DONE_CH2_INT_ENA: u1,
    +            /// The interrupt enable bit for the OUT_EOF_CH_INT interrupt.
    +            OUT_EOF_CH2_INT_ENA: u1,
    +            /// The interrupt enable bit for the IN_DSCR_ERR_CH_INT interrupt.
    +            IN_DSCR_ERR_CH2_INT_ENA: u1,
    +            /// The interrupt enable bit for the OUT_DSCR_ERR_CH_INT interrupt.
    +            OUT_DSCR_ERR_CH2_INT_ENA: u1,
    +            /// The interrupt enable bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    +            IN_DSCR_EMPTY_CH2_INT_ENA: u1,
    +            /// The interrupt enable bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    +            OUT_TOTAL_EOF_CH2_INT_ENA: u1,
    +            /// The interrupt enable bit for the INFIFO_OVF_L1_CH_INT interrupt.
    +            INFIFO_OVF_CH2_INT_ENA: u1,
    +            /// The interrupt enable bit for the INFIFO_UDF_L1_CH_INT interrupt.
    +            INFIFO_UDF_CH2_INT_ENA: u1,
    +            /// The interrupt enable bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    +            OUTFIFO_OVF_CH2_INT_ENA: u1,
    +            /// The interrupt enable bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    +            OUTFIFO_UDF_CH2_INT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x28);
    +
    +        /// address: 0x6003f02c
    +        /// DMA_INT_CLR_CH2_REG.
    +        pub const INT_CLR_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set this bit to clear the IN_DONE_CH_INT interrupt.
    +            IN_DONE_CH2_INT_CLR: u1,
    +            /// Set this bit to clear the IN_SUC_EOF_CH_INT interrupt.
    +            IN_SUC_EOF_CH2_INT_CLR: u1,
    +            /// Set this bit to clear the IN_ERR_EOF_CH_INT interrupt.
    +            IN_ERR_EOF_CH2_INT_CLR: u1,
    +            /// Set this bit to clear the OUT_DONE_CH_INT interrupt.
    +            OUT_DONE_CH2_INT_CLR: u1,
    +            /// Set this bit to clear the OUT_EOF_CH_INT interrupt.
    +            OUT_EOF_CH2_INT_CLR: u1,
    +            /// Set this bit to clear the IN_DSCR_ERR_CH_INT interrupt.
    +            IN_DSCR_ERR_CH2_INT_CLR: u1,
    +            /// Set this bit to clear the OUT_DSCR_ERR_CH_INT interrupt.
    +            OUT_DSCR_ERR_CH2_INT_CLR: u1,
    +            /// Set this bit to clear the IN_DSCR_EMPTY_CH_INT interrupt.
    +            IN_DSCR_EMPTY_CH2_INT_CLR: u1,
    +            /// Set this bit to clear the OUT_TOTAL_EOF_CH_INT interrupt.
    +            OUT_TOTAL_EOF_CH2_INT_CLR: u1,
    +            /// Set this bit to clear the INFIFO_OVF_L1_CH_INT interrupt.
    +            INFIFO_OVF_CH2_INT_CLR: u1,
    +            /// Set this bit to clear the INFIFO_UDF_L1_CH_INT interrupt.
    +            INFIFO_UDF_CH2_INT_CLR: u1,
    +            /// Set this bit to clear the OUTFIFO_OVF_L1_CH_INT interrupt.
    +            OUTFIFO_OVF_CH2_INT_CLR: u1,
    +            /// Set this bit to clear the OUTFIFO_UDF_L1_CH_INT interrupt.
    +            OUTFIFO_UDF_CH2_INT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x2c);
    +
    +        /// address: 0x6003f040
    +        /// DMA_AHB_TEST_REG.
    +        pub const AHB_TEST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reserved
    +            AHB_TESTMODE: u3,
    +            reserved0: u1,
    +            /// reserved
    +            AHB_TESTADDR: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +        }), base_address + 0x40);
    +
    +        /// address: 0x6003f044
    +        /// DMA_MISC_CONF_REG.
    +        pub const MISC_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set this bit, then clear this bit to reset the internal ahb FSM.
    +            AHBM_RST_INTER: u1,
    +            reserved0: u1,
    +            /// Set this bit to disable priority arbitration function.
    +            ARB_PRI_DIS: u1,
    +            /// reg_clk_en
    +            CLK_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x44);
    +
    +        /// address: 0x6003f048
    +        /// DMA_DATE_REG.
    +        pub const DATE = @intToPtr(*volatile u32, base_address + 0x48);
    +
    +        /// address: 0x6003f070
    +        /// DMA_IN_CONF0_CH0_REG.
    +        pub const IN_CONF0_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This bit is used to reset DMA channel 0 Rx FSM and Rx FIFO pointer.
    +            IN_RST_CH0: u1,
    +            /// reserved
    +            IN_LOOP_TEST_CH0: u1,
    +            /// Set this bit to 1 to enable INCR burst transfer for Rx channel 0 reading link
    +            /// descriptor when accessing internal SRAM.
    +            INDSCR_BURST_EN_CH0: u1,
    +            /// Set this bit to 1 to enable INCR burst transfer for Rx channel 0 receiving data
    +            /// when accessing internal SRAM.
    +            IN_DATA_BURST_EN_CH0: u1,
    +            /// Set this bit 1 to enable automatic transmitting data from memory to memory via
    +            /// DMA.
    +            MEM_TRANS_EN_CH0: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +        }), base_address + 0x70);
    +
    +        /// address: 0x6003f074
    +        /// DMA_IN_CONF1_CH0_REG.
    +        pub const IN_CONF1_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            /// Set this bit to enable checking the owner attribute of the link descriptor.
    +            IN_CHECK_OWNER_CH0: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x74);
    +
    +        /// address: 0x6003f078
    +        /// DMA_INFIFO_STATUS_CH0_REG.
    +        pub const INFIFO_STATUS_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// L1 Rx FIFO full signal for Rx channel 0.
    +            INFIFO_FULL_CH0: u1,
    +            /// L1 Rx FIFO empty signal for Rx channel 0.
    +            INFIFO_EMPTY_CH0: u1,
    +            /// The register stores the byte number of the data in L1 Rx FIFO for Rx channel 0.
    +            INFIFO_CNT_CH0: u6,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            /// reserved
    +            IN_REMAIN_UNDER_1B_CH0: u1,
    +            /// reserved
    +            IN_REMAIN_UNDER_2B_CH0: u1,
    +            /// reserved
    +            IN_REMAIN_UNDER_3B_CH0: u1,
    +            /// reserved
    +            IN_REMAIN_UNDER_4B_CH0: u1,
    +            /// reserved
    +            IN_BUF_HUNGRY_CH0: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +        }), base_address + 0x78);
    +
    +        /// address: 0x6003f07c
    +        /// DMA_IN_POP_CH0_REG.
    +        pub const IN_POP_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the data popping from DMA FIFO.
    +            INFIFO_RDATA_CH0: u12,
    +            /// Set this bit to pop data from DMA FIFO.
    +            INFIFO_POP_CH0: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x7c);
    +
    +        /// address: 0x6003f080
    +        /// DMA_IN_LINK_CH0_REG.
    +        pub const IN_LINK_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the 20 least significant bits of the first inlink
    +            /// descriptor's address.
    +            INLINK_ADDR_CH0: u20,
    +            /// Set this bit to return to current inlink descriptor's address, when there are
    +            /// some errors in current receiving data.
    +            INLINK_AUTO_RET_CH0: u1,
    +            /// Set this bit to stop dealing with the inlink descriptors.
    +            INLINK_STOP_CH0: u1,
    +            /// Set this bit to start dealing with the inlink descriptors.
    +            INLINK_START_CH0: u1,
    +            /// Set this bit to mount a new inlink descriptor.
    +            INLINK_RESTART_CH0: u1,
    +            /// 1: the inlink descriptor's FSM is in idle state. 0: the inlink descriptor's FSM
    +            /// is working.
    +            INLINK_PARK_CH0: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +        }), base_address + 0x80);
    +
    +        /// address: 0x6003f084
    +        /// DMA_IN_STATE_CH0_REG.
    +        pub const IN_STATE_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the current inlink descriptor's address.
    +            INLINK_DSCR_ADDR_CH0: u18,
    +            /// reserved
    +            IN_DSCR_STATE_CH0: u2,
    +            /// reserved
    +            IN_STATE_CH0: u3,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +        }), base_address + 0x84);
    +
    +        /// address: 0x6003f088
    +        /// DMA_IN_SUC_EOF_DES_ADDR_CH0_REG.
    +        pub const IN_SUC_EOF_DES_ADDR_CH0 = @intToPtr(*volatile u32, base_address + 0x88);
    +
    +        /// address: 0x6003f08c
    +        /// DMA_IN_ERR_EOF_DES_ADDR_CH0_REG.
    +        pub const IN_ERR_EOF_DES_ADDR_CH0 = @intToPtr(*volatile u32, base_address + 0x8c);
    +
    +        /// address: 0x6003f090
    +        /// DMA_IN_DSCR_CH0_REG.
    +        pub const IN_DSCR_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The address of the current inlink descriptor x.
    +            INLINK_DSCR_CH0: u32,
    +        }), base_address + 0x90);
    +
    +        /// address: 0x6003f094
    +        /// DMA_IN_DSCR_BF0_CH0_REG.
    +        pub const IN_DSCR_BF0_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The address of the last inlink descriptor x-1.
    +            INLINK_DSCR_BF0_CH0: u32,
    +        }), base_address + 0x94);
    +
    +        /// address: 0x6003f098
    +        /// DMA_IN_DSCR_BF1_CH0_REG.
    +        pub const IN_DSCR_BF1_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The address of the second-to-last inlink descriptor x-2.
    +            INLINK_DSCR_BF1_CH0: u32,
    +        }), base_address + 0x98);
    +
    +        /// address: 0x6003f09c
    +        /// DMA_IN_PRI_CH0_REG.
    +        pub const IN_PRI_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The priority of Rx channel 0. The larger of the value, the higher of the
    +            /// priority.
    +            RX_PRI_CH0: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x9c);
    +
    +        /// address: 0x6003f0a0
    +        /// DMA_IN_PERI_SEL_CH0_REG.
    +        pub const IN_PERI_SEL_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register is used to select peripheral for Rx channel 0. 0:SPI2. 1:
    +            /// reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8:
    +            /// ADC_DAC.
    +            PERI_IN_SEL_CH0: u6,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +        }), base_address + 0xa0);
    +
    +        /// address: 0x6003f0d0
    +        /// DMA_OUT_CONF0_CH0_REG.
    +        pub const OUT_CONF0_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This bit is used to reset DMA channel 0 Tx FSM and Tx FIFO pointer.
    +            OUT_RST_CH0: u1,
    +            /// reserved
    +            OUT_LOOP_TEST_CH0: u1,
    +            /// Set this bit to enable automatic outlink-writeback when all the data in tx
    +            /// buffer has been transmitted.
    +            OUT_AUTO_WRBACK_CH0: u1,
    +            /// EOF flag generation mode when transmitting data. 1: EOF flag for Tx channel 0 is
    +            /// generated when data need to transmit has been popped from FIFO in DMA
    +            OUT_EOF_MODE_CH0: u1,
    +            /// Set this bit to 1 to enable INCR burst transfer for Tx channel 0 reading link
    +            /// descriptor when accessing internal SRAM.
    +            OUTDSCR_BURST_EN_CH0: u1,
    +            /// Set this bit to 1 to enable INCR burst transfer for Tx channel 0 transmitting
    +            /// data when accessing internal SRAM.
    +            OUT_DATA_BURST_EN_CH0: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +        }), base_address + 0xd0);
    +
    +        /// address: 0x6003f0d4
    +        /// DMA_OUT_CONF1_CH0_REG.
    +        pub const OUT_CONF1_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            /// Set this bit to enable checking the owner attribute of the link descriptor.
    +            OUT_CHECK_OWNER_CH0: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0xd4);
    +
    +        /// address: 0x6003f0d8
    +        /// DMA_OUTFIFO_STATUS_CH0_REG.
    +        pub const OUTFIFO_STATUS_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// L1 Tx FIFO full signal for Tx channel 0.
    +            OUTFIFO_FULL_CH0: u1,
    +            /// L1 Tx FIFO empty signal for Tx channel 0.
    +            OUTFIFO_EMPTY_CH0: u1,
    +            /// The register stores the byte number of the data in L1 Tx FIFO for Tx channel 0.
    +            OUTFIFO_CNT_CH0: u6,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            /// reserved
    +            OUT_REMAIN_UNDER_1B_CH0: u1,
    +            /// reserved
    +            OUT_REMAIN_UNDER_2B_CH0: u1,
    +            /// reserved
    +            OUT_REMAIN_UNDER_3B_CH0: u1,
    +            /// reserved
    +            OUT_REMAIN_UNDER_4B_CH0: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +        }), base_address + 0xd8);
    +
    +        /// address: 0x6003f0dc
    +        /// DMA_OUT_PUSH_CH0_REG.
    +        pub const OUT_PUSH_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the data that need to be pushed into DMA FIFO.
    +            OUTFIFO_WDATA_CH0: u9,
    +            /// Set this bit to push data into DMA FIFO.
    +            OUTFIFO_PUSH_CH0: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +        }), base_address + 0xdc);
    +
    +        /// address: 0x6003f0e0
    +        /// DMA_OUT_LINK_CH0_REG.
    +        pub const OUT_LINK_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the 20 least significant bits of the first outlink
    +            /// descriptor's address.
    +            OUTLINK_ADDR_CH0: u20,
    +            /// Set this bit to stop dealing with the outlink descriptors.
    +            OUTLINK_STOP_CH0: u1,
    +            /// Set this bit to start dealing with the outlink descriptors.
    +            OUTLINK_START_CH0: u1,
    +            /// Set this bit to restart a new outlink from the last address.
    +            OUTLINK_RESTART_CH0: u1,
    +            /// 1: the outlink descriptor's FSM is in idle state. 0: the outlink descriptor's
    +            /// FSM is working.
    +            OUTLINK_PARK_CH0: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +        }), base_address + 0xe0);
    +
    +        /// address: 0x6003f0e4
    +        /// DMA_OUT_STATE_CH0_REG.
    +        pub const OUT_STATE_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the current outlink descriptor's address.
    +            OUTLINK_DSCR_ADDR_CH0: u18,
    +            /// reserved
    +            OUT_DSCR_STATE_CH0: u2,
    +            /// reserved
    +            OUT_STATE_CH0: u3,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +        }), base_address + 0xe4);
    +
    +        /// address: 0x6003f0e8
    +        /// DMA_OUT_EOF_DES_ADDR_CH0_REG.
    +        pub const OUT_EOF_DES_ADDR_CH0 = @intToPtr(*volatile u32, base_address + 0xe8);
    +
    +        /// address: 0x6003f0ec
    +        /// DMA_OUT_EOF_BFR_DES_ADDR_CH0_REG.
    +        pub const OUT_EOF_BFR_DES_ADDR_CH0 = @intToPtr(*volatile u32, base_address + 0xec);
    +
    +        /// address: 0x6003f0f0
    +        /// DMA_OUT_DSCR_CH0_REG.
    +        pub const OUT_DSCR_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The address of the current outlink descriptor y.
    +            OUTLINK_DSCR_CH0: u32,
    +        }), base_address + 0xf0);
    +
    +        /// address: 0x6003f0f4
    +        /// DMA_OUT_DSCR_BF0_CH0_REG.
    +        pub const OUT_DSCR_BF0_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The address of the last outlink descriptor y-1.
    +            OUTLINK_DSCR_BF0_CH0: u32,
    +        }), base_address + 0xf4);
    +
    +        /// address: 0x6003f0f8
    +        /// DMA_OUT_DSCR_BF1_CH0_REG.
    +        pub const OUT_DSCR_BF1_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The address of the second-to-last inlink descriptor x-2.
    +            OUTLINK_DSCR_BF1_CH0: u32,
    +        }), base_address + 0xf8);
    +
    +        /// address: 0x6003f0fc
    +        /// DMA_OUT_PRI_CH0_REG.
    +        pub const OUT_PRI_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The priority of Tx channel 0. The larger of the value, the higher of the
    +            /// priority.
    +            TX_PRI_CH0: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0xfc);
    +
    +        /// address: 0x6003f100
    +        /// DMA_OUT_PERI_SEL_CH0_REG.
    +        pub const OUT_PERI_SEL_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register is used to select peripheral for Tx channel 0. 0:SPI2. 1:
    +            /// reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8:
    +            /// ADC_DAC.
    +            PERI_OUT_SEL_CH0: u6,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +        }), base_address + 0x100);
    +
    +        /// address: 0x6003f130
    +        /// DMA_IN_CONF0_CH1_REG.
    +        pub const IN_CONF0_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This bit is used to reset DMA channel 1 Rx FSM and Rx FIFO pointer.
    +            IN_RST_CH1: u1,
    +            /// reserved
    +            IN_LOOP_TEST_CH1: u1,
    +            /// Set this bit to 1 to enable INCR burst transfer for Rx channel 1 reading link
    +            /// descriptor when accessing internal SRAM.
    +            INDSCR_BURST_EN_CH1: u1,
    +            /// Set this bit to 1 to enable INCR burst transfer for Rx channel 1 receiving data
    +            /// when accessing internal SRAM.
    +            IN_DATA_BURST_EN_CH1: u1,
    +            /// Set this bit 1 to enable automatic transmitting data from memory to memory via
    +            /// DMA.
    +            MEM_TRANS_EN_CH1: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +        }), base_address + 0x130);
    +
    +        /// address: 0x6003f134
    +        /// DMA_IN_CONF1_CH1_REG.
    +        pub const IN_CONF1_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            /// Set this bit to enable checking the owner attribute of the link descriptor.
    +            IN_CHECK_OWNER_CH1: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x134);
    +
    +        /// address: 0x6003f138
    +        /// DMA_INFIFO_STATUS_CH1_REG.
    +        pub const INFIFO_STATUS_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// L1 Rx FIFO full signal for Rx channel 1.
    +            INFIFO_FULL_CH1: u1,
    +            /// L1 Rx FIFO empty signal for Rx channel 1.
    +            INFIFO_EMPTY_CH1: u1,
    +            /// The register stores the byte number of the data in L1 Rx FIFO for Rx channel 1.
    +            INFIFO_CNT_CH1: u6,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            /// reserved
    +            IN_REMAIN_UNDER_1B_CH1: u1,
    +            /// reserved
    +            IN_REMAIN_UNDER_2B_CH1: u1,
    +            /// reserved
    +            IN_REMAIN_UNDER_3B_CH1: u1,
    +            /// reserved
    +            IN_REMAIN_UNDER_4B_CH1: u1,
    +            /// reserved
    +            IN_BUF_HUNGRY_CH1: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +        }), base_address + 0x138);
    +
    +        /// address: 0x6003f13c
    +        /// DMA_IN_POP_CH1_REG.
    +        pub const IN_POP_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the data popping from DMA FIFO.
    +            INFIFO_RDATA_CH1: u12,
    +            /// Set this bit to pop data from DMA FIFO.
    +            INFIFO_POP_CH1: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x13c);
    +
    +        /// address: 0x6003f140
    +        /// DMA_IN_LINK_CH1_REG.
    +        pub const IN_LINK_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the 20 least significant bits of the first inlink
    +            /// descriptor's address.
    +            INLINK_ADDR_CH1: u20,
    +            /// Set this bit to return to current inlink descriptor's address, when there are
    +            /// some errors in current receiving data.
    +            INLINK_AUTO_RET_CH1: u1,
    +            /// Set this bit to stop dealing with the inlink descriptors.
    +            INLINK_STOP_CH1: u1,
    +            /// Set this bit to start dealing with the inlink descriptors.
    +            INLINK_START_CH1: u1,
    +            /// Set this bit to mount a new inlink descriptor.
    +            INLINK_RESTART_CH1: u1,
    +            /// 1: the inlink descriptor's FSM is in idle state. 0: the inlink descriptor's FSM
    +            /// is working.
    +            INLINK_PARK_CH1: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +        }), base_address + 0x140);
    +
    +        /// address: 0x6003f144
    +        /// DMA_IN_STATE_CH1_REG.
    +        pub const IN_STATE_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the current inlink descriptor's address.
    +            INLINK_DSCR_ADDR_CH1: u18,
    +            /// reserved
    +            IN_DSCR_STATE_CH1: u2,
    +            /// reserved
    +            IN_STATE_CH1: u3,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +        }), base_address + 0x144);
    +
    +        /// address: 0x6003f148
    +        /// DMA_IN_SUC_EOF_DES_ADDR_CH1_REG.
    +        pub const IN_SUC_EOF_DES_ADDR_CH1 = @intToPtr(*volatile u32, base_address + 0x148);
    +
    +        /// address: 0x6003f14c
    +        /// DMA_IN_ERR_EOF_DES_ADDR_CH1_REG.
    +        pub const IN_ERR_EOF_DES_ADDR_CH1 = @intToPtr(*volatile u32, base_address + 0x14c);
    +
    +        /// address: 0x6003f150
    +        /// DMA_IN_DSCR_CH1_REG.
    +        pub const IN_DSCR_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The address of the current inlink descriptor x.
    +            INLINK_DSCR_CH1: u32,
    +        }), base_address + 0x150);
    +
    +        /// address: 0x6003f154
    +        /// DMA_IN_DSCR_BF0_CH1_REG.
    +        pub const IN_DSCR_BF0_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The address of the last inlink descriptor x-1.
    +            INLINK_DSCR_BF0_CH1: u32,
    +        }), base_address + 0x154);
    +
    +        /// address: 0x6003f158
    +        /// DMA_IN_DSCR_BF1_CH1_REG.
    +        pub const IN_DSCR_BF1_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The address of the second-to-last inlink descriptor x-2.
    +            INLINK_DSCR_BF1_CH1: u32,
    +        }), base_address + 0x158);
    +
    +        /// address: 0x6003f15c
    +        /// DMA_IN_PRI_CH1_REG.
    +        pub const IN_PRI_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The priority of Rx channel 1. The larger of the value, the higher of the
    +            /// priority.
    +            RX_PRI_CH1: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x15c);
    +
    +        /// address: 0x6003f160
    +        /// DMA_IN_PERI_SEL_CH1_REG.
    +        pub const IN_PERI_SEL_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register is used to select peripheral for Rx channel 1. 0:SPI2. 1:
    +            /// reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8:
    +            /// ADC_DAC.
    +            PERI_IN_SEL_CH1: u6,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +        }), base_address + 0x160);
    +
    +        /// address: 0x6003f190
    +        /// DMA_OUT_CONF0_CH1_REG.
    +        pub const OUT_CONF0_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This bit is used to reset DMA channel 1 Tx FSM and Tx FIFO pointer.
    +            OUT_RST_CH1: u1,
    +            /// reserved
    +            OUT_LOOP_TEST_CH1: u1,
    +            /// Set this bit to enable automatic outlink-writeback when all the data in tx
    +            /// buffer has been transmitted.
    +            OUT_AUTO_WRBACK_CH1: u1,
    +            /// EOF flag generation mode when transmitting data. 1: EOF flag for Tx channel 1 is
    +            /// generated when data need to transmit has been popped from FIFO in DMA
    +            OUT_EOF_MODE_CH1: u1,
    +            /// Set this bit to 1 to enable INCR burst transfer for Tx channel 1 reading link
    +            /// descriptor when accessing internal SRAM.
    +            OUTDSCR_BURST_EN_CH1: u1,
    +            /// Set this bit to 1 to enable INCR burst transfer for Tx channel 1 transmitting
    +            /// data when accessing internal SRAM.
    +            OUT_DATA_BURST_EN_CH1: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +        }), base_address + 0x190);
    +
    +        /// address: 0x6003f194
    +        /// DMA_OUT_CONF1_CH1_REG.
    +        pub const OUT_CONF1_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            /// Set this bit to enable checking the owner attribute of the link descriptor.
    +            OUT_CHECK_OWNER_CH1: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x194);
    +
    +        /// address: 0x6003f198
    +        /// DMA_OUTFIFO_STATUS_CH1_REG.
    +        pub const OUTFIFO_STATUS_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// L1 Tx FIFO full signal for Tx channel 1.
    +            OUTFIFO_FULL_CH1: u1,
    +            /// L1 Tx FIFO empty signal for Tx channel 1.
    +            OUTFIFO_EMPTY_CH1: u1,
    +            /// The register stores the byte number of the data in L1 Tx FIFO for Tx channel 1.
    +            OUTFIFO_CNT_CH1: u6,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            /// reserved
    +            OUT_REMAIN_UNDER_1B_CH1: u1,
    +            /// reserved
    +            OUT_REMAIN_UNDER_2B_CH1: u1,
    +            /// reserved
    +            OUT_REMAIN_UNDER_3B_CH1: u1,
    +            /// reserved
    +            OUT_REMAIN_UNDER_4B_CH1: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +        }), base_address + 0x198);
    +
    +        /// address: 0x6003f19c
    +        /// DMA_OUT_PUSH_CH1_REG.
    +        pub const OUT_PUSH_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the data that need to be pushed into DMA FIFO.
    +            OUTFIFO_WDATA_CH1: u9,
    +            /// Set this bit to push data into DMA FIFO.
    +            OUTFIFO_PUSH_CH1: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +        }), base_address + 0x19c);
    +
    +        /// address: 0x6003f1a0
    +        /// DMA_OUT_LINK_CH1_REG.
    +        pub const OUT_LINK_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the 20 least significant bits of the first outlink
    +            /// descriptor's address.
    +            OUTLINK_ADDR_CH1: u20,
    +            /// Set this bit to stop dealing with the outlink descriptors.
    +            OUTLINK_STOP_CH1: u1,
    +            /// Set this bit to start dealing with the outlink descriptors.
    +            OUTLINK_START_CH1: u1,
    +            /// Set this bit to restart a new outlink from the last address.
    +            OUTLINK_RESTART_CH1: u1,
    +            /// 1: the outlink descriptor's FSM is in idle state. 0: the outlink descriptor's
    +            /// FSM is working.
    +            OUTLINK_PARK_CH1: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +        }), base_address + 0x1a0);
    +
    +        /// address: 0x6003f1a4
    +        /// DMA_OUT_STATE_CH1_REG.
    +        pub const OUT_STATE_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the current outlink descriptor's address.
    +            OUTLINK_DSCR_ADDR_CH1: u18,
    +            /// reserved
    +            OUT_DSCR_STATE_CH1: u2,
    +            /// reserved
    +            OUT_STATE_CH1: u3,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +        }), base_address + 0x1a4);
    +
    +        /// address: 0x6003f1a8
    +        /// DMA_OUT_EOF_DES_ADDR_CH1_REG.
    +        pub const OUT_EOF_DES_ADDR_CH1 = @intToPtr(*volatile u32, base_address + 0x1a8);
    +
    +        /// address: 0x6003f1ac
    +        /// DMA_OUT_EOF_BFR_DES_ADDR_CH1_REG.
    +        pub const OUT_EOF_BFR_DES_ADDR_CH1 = @intToPtr(*volatile u32, base_address + 0x1ac);
    +
    +        /// address: 0x6003f1b0
    +        /// DMA_OUT_DSCR_CH1_REG.
    +        pub const OUT_DSCR_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The address of the current outlink descriptor y.
    +            OUTLINK_DSCR_CH1: u32,
    +        }), base_address + 0x1b0);
    +
    +        /// address: 0x6003f1b4
    +        /// DMA_OUT_DSCR_BF0_CH1_REG.
    +        pub const OUT_DSCR_BF0_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The address of the last outlink descriptor y-1.
    +            OUTLINK_DSCR_BF0_CH1: u32,
    +        }), base_address + 0x1b4);
    +
    +        /// address: 0x6003f1b8
    +        /// DMA_OUT_DSCR_BF1_CH1_REG.
    +        pub const OUT_DSCR_BF1_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The address of the second-to-last inlink descriptor x-2.
    +            OUTLINK_DSCR_BF1_CH1: u32,
    +        }), base_address + 0x1b8);
    +
    +        /// address: 0x6003f1bc
    +        /// DMA_OUT_PRI_CH1_REG.
    +        pub const OUT_PRI_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The priority of Tx channel 1. The larger of the value, the higher of the
    +            /// priority.
    +            TX_PRI_CH1: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x1bc);
    +
    +        /// address: 0x6003f1c0
    +        /// DMA_OUT_PERI_SEL_CH1_REG.
    +        pub const OUT_PERI_SEL_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register is used to select peripheral for Tx channel 1. 0:SPI2. 1:
    +            /// reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8:
    +            /// ADC_DAC.
    +            PERI_OUT_SEL_CH1: u6,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +        }), base_address + 0x1c0);
    +
    +        /// address: 0x6003f1f0
    +        /// DMA_IN_CONF0_CH2_REG.
    +        pub const IN_CONF0_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This bit is used to reset DMA channel 2 Rx FSM and Rx FIFO pointer.
    +            IN_RST_CH2: u1,
    +            /// reserved
    +            IN_LOOP_TEST_CH2: u1,
    +            /// Set this bit to 1 to enable INCR burst transfer for Rx channel 2 reading link
    +            /// descriptor when accessing internal SRAM.
    +            INDSCR_BURST_EN_CH2: u1,
    +            /// Set this bit to 1 to enable INCR burst transfer for Rx channel 2 receiving data
    +            /// when accessing internal SRAM.
    +            IN_DATA_BURST_EN_CH2: u1,
    +            /// Set this bit 1 to enable automatic transmitting data from memory to memory via
    +            /// DMA.
    +            MEM_TRANS_EN_CH2: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +        }), base_address + 0x1f0);
    +
    +        /// address: 0x6003f1f4
    +        /// DMA_IN_CONF1_CH2_REG.
    +        pub const IN_CONF1_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            /// Set this bit to enable checking the owner attribute of the link descriptor.
    +            IN_CHECK_OWNER_CH2: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x1f4);
    +
    +        /// address: 0x6003f1f8
    +        /// DMA_INFIFO_STATUS_CH2_REG.
    +        pub const INFIFO_STATUS_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// L1 Rx FIFO full signal for Rx channel 2.
    +            INFIFO_FULL_CH2: u1,
    +            /// L1 Rx FIFO empty signal for Rx channel 2.
    +            INFIFO_EMPTY_CH2: u1,
    +            /// The register stores the byte number of the data in L1 Rx FIFO for Rx channel 2.
    +            INFIFO_CNT_CH2: u6,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            /// reserved
    +            IN_REMAIN_UNDER_1B_CH2: u1,
    +            /// reserved
    +            IN_REMAIN_UNDER_2B_CH2: u1,
    +            /// reserved
    +            IN_REMAIN_UNDER_3B_CH2: u1,
    +            /// reserved
    +            IN_REMAIN_UNDER_4B_CH2: u1,
    +            /// reserved
    +            IN_BUF_HUNGRY_CH2: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +        }), base_address + 0x1f8);
    +
    +        /// address: 0x6003f1fc
    +        /// DMA_IN_POP_CH2_REG.
    +        pub const IN_POP_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the data popping from DMA FIFO.
    +            INFIFO_RDATA_CH2: u12,
    +            /// Set this bit to pop data from DMA FIFO.
    +            INFIFO_POP_CH2: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x1fc);
    +
    +        /// address: 0x6003f200
    +        /// DMA_IN_LINK_CH2_REG.
    +        pub const IN_LINK_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the 20 least significant bits of the first inlink
    +            /// descriptor's address.
    +            INLINK_ADDR_CH2: u20,
    +            /// Set this bit to return to current inlink descriptor's address, when there are
    +            /// some errors in current receiving data.
    +            INLINK_AUTO_RET_CH2: u1,
    +            /// Set this bit to stop dealing with the inlink descriptors.
    +            INLINK_STOP_CH2: u1,
    +            /// Set this bit to start dealing with the inlink descriptors.
    +            INLINK_START_CH2: u1,
    +            /// Set this bit to mount a new inlink descriptor.
    +            INLINK_RESTART_CH2: u1,
    +            /// 1: the inlink descriptor's FSM is in idle state. 0: the inlink descriptor's FSM
    +            /// is working.
    +            INLINK_PARK_CH2: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +        }), base_address + 0x200);
    +
    +        /// address: 0x6003f204
    +        /// DMA_IN_STATE_CH2_REG.
    +        pub const IN_STATE_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the current inlink descriptor's address.
    +            INLINK_DSCR_ADDR_CH2: u18,
    +            /// reserved
    +            IN_DSCR_STATE_CH2: u2,
    +            /// reserved
    +            IN_STATE_CH2: u3,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +        }), base_address + 0x204);
    +
    +        /// address: 0x6003f208
    +        /// DMA_IN_SUC_EOF_DES_ADDR_CH2_REG.
    +        pub const IN_SUC_EOF_DES_ADDR_CH2 = @intToPtr(*volatile u32, base_address + 0x208);
    +
    +        /// address: 0x6003f20c
    +        /// DMA_IN_ERR_EOF_DES_ADDR_CH2_REG.
    +        pub const IN_ERR_EOF_DES_ADDR_CH2 = @intToPtr(*volatile u32, base_address + 0x20c);
    +
    +        /// address: 0x6003f210
    +        /// DMA_IN_DSCR_CH2_REG.
    +        pub const IN_DSCR_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The address of the current inlink descriptor x.
    +            INLINK_DSCR_CH2: u32,
    +        }), base_address + 0x210);
    +
    +        /// address: 0x6003f214
    +        /// DMA_IN_DSCR_BF0_CH2_REG.
    +        pub const IN_DSCR_BF0_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The address of the last inlink descriptor x-1.
    +            INLINK_DSCR_BF0_CH2: u32,
    +        }), base_address + 0x214);
    +
    +        /// address: 0x6003f218
    +        /// DMA_IN_DSCR_BF1_CH2_REG.
    +        pub const IN_DSCR_BF1_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The address of the second-to-last inlink descriptor x-2.
    +            INLINK_DSCR_BF1_CH2: u32,
    +        }), base_address + 0x218);
    +
    +        /// address: 0x6003f21c
    +        /// DMA_IN_PRI_CH2_REG.
    +        pub const IN_PRI_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The priority of Rx channel 2. The larger of the value, the higher of the
    +            /// priority.
    +            RX_PRI_CH2: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x21c);
    +
    +        /// address: 0x6003f220
    +        /// DMA_IN_PERI_SEL_CH2_REG.
    +        pub const IN_PERI_SEL_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register is used to select peripheral for Rx channel 2. 0:SPI2. 1:
    +            /// reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8:
    +            /// ADC_DAC.
    +            PERI_IN_SEL_CH2: u6,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +        }), base_address + 0x220);
    +
    +        /// address: 0x6003f250
    +        /// DMA_OUT_CONF0_CH2_REG.
    +        pub const OUT_CONF0_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This bit is used to reset DMA channel 2 Tx FSM and Tx FIFO pointer.
    +            OUT_RST_CH2: u1,
    +            /// reserved
    +            OUT_LOOP_TEST_CH2: u1,
    +            /// Set this bit to enable automatic outlink-writeback when all the data in tx
    +            /// buffer has been transmitted.
    +            OUT_AUTO_WRBACK_CH2: u1,
    +            /// EOF flag generation mode when transmitting data. 1: EOF flag for Tx channel 2 is
    +            /// generated when data need to transmit has been popped from FIFO in DMA
    +            OUT_EOF_MODE_CH2: u1,
    +            /// Set this bit to 1 to enable INCR burst transfer for Tx channel 2 reading link
    +            /// descriptor when accessing internal SRAM.
    +            OUTDSCR_BURST_EN_CH2: u1,
    +            /// Set this bit to 1 to enable INCR burst transfer for Tx channel 2 transmitting
    +            /// data when accessing internal SRAM.
    +            OUT_DATA_BURST_EN_CH2: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +        }), base_address + 0x250);
    +
    +        /// address: 0x6003f254
    +        /// DMA_OUT_CONF1_CH2_REG.
    +        pub const OUT_CONF1_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            /// Set this bit to enable checking the owner attribute of the link descriptor.
    +            OUT_CHECK_OWNER_CH2: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x254);
    +
    +        /// address: 0x6003f258
    +        /// DMA_OUTFIFO_STATUS_CH2_REG.
    +        pub const OUTFIFO_STATUS_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// L1 Tx FIFO full signal for Tx channel 2.
    +            OUTFIFO_FULL_CH2: u1,
    +            /// L1 Tx FIFO empty signal for Tx channel 2.
    +            OUTFIFO_EMPTY_CH2: u1,
    +            /// The register stores the byte number of the data in L1 Tx FIFO for Tx channel 2.
    +            OUTFIFO_CNT_CH2: u6,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            /// reserved
    +            OUT_REMAIN_UNDER_1B_CH2: u1,
    +            /// reserved
    +            OUT_REMAIN_UNDER_2B_CH2: u1,
    +            /// reserved
    +            OUT_REMAIN_UNDER_3B_CH2: u1,
    +            /// reserved
    +            OUT_REMAIN_UNDER_4B_CH2: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +        }), base_address + 0x258);
    +
    +        /// address: 0x6003f25c
    +        /// DMA_OUT_PUSH_CH2_REG.
    +        pub const OUT_PUSH_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the data that need to be pushed into DMA FIFO.
    +            OUTFIFO_WDATA_CH2: u9,
    +            /// Set this bit to push data into DMA FIFO.
    +            OUTFIFO_PUSH_CH2: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +        }), base_address + 0x25c);
    +
    +        /// address: 0x6003f260
    +        /// DMA_OUT_LINK_CH2_REG.
    +        pub const OUT_LINK_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the 20 least significant bits of the first outlink
    +            /// descriptor's address.
    +            OUTLINK_ADDR_CH2: u20,
    +            /// Set this bit to stop dealing with the outlink descriptors.
    +            OUTLINK_STOP_CH2: u1,
    +            /// Set this bit to start dealing with the outlink descriptors.
    +            OUTLINK_START_CH2: u1,
    +            /// Set this bit to restart a new outlink from the last address.
    +            OUTLINK_RESTART_CH2: u1,
    +            /// 1: the outlink descriptor's FSM is in idle state. 0: the outlink descriptor's
    +            /// FSM is working.
    +            OUTLINK_PARK_CH2: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +        }), base_address + 0x260);
    +
    +        /// address: 0x6003f264
    +        /// DMA_OUT_STATE_CH2_REG.
    +        pub const OUT_STATE_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the current outlink descriptor's address.
    +            OUTLINK_DSCR_ADDR_CH2: u18,
    +            /// reserved
    +            OUT_DSCR_STATE_CH2: u2,
    +            /// reserved
    +            OUT_STATE_CH2: u3,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +        }), base_address + 0x264);
    +
    +        /// address: 0x6003f268
    +        /// DMA_OUT_EOF_DES_ADDR_CH2_REG.
    +        pub const OUT_EOF_DES_ADDR_CH2 = @intToPtr(*volatile u32, base_address + 0x268);
    +
    +        /// address: 0x6003f26c
    +        /// DMA_OUT_EOF_BFR_DES_ADDR_CH2_REG.
    +        pub const OUT_EOF_BFR_DES_ADDR_CH2 = @intToPtr(*volatile u32, base_address + 0x26c);
    +
    +        /// address: 0x6003f270
    +        /// DMA_OUT_DSCR_CH2_REG.
    +        pub const OUT_DSCR_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The address of the current outlink descriptor y.
    +            OUTLINK_DSCR_CH2: u32,
    +        }), base_address + 0x270);
    +
    +        /// address: 0x6003f274
    +        /// DMA_OUT_DSCR_BF0_CH2_REG.
    +        pub const OUT_DSCR_BF0_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The address of the last outlink descriptor y-1.
    +            OUTLINK_DSCR_BF0_CH2: u32,
    +        }), base_address + 0x274);
    +
    +        /// address: 0x6003f278
    +        /// DMA_OUT_DSCR_BF1_CH2_REG.
    +        pub const OUT_DSCR_BF1_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The address of the second-to-last inlink descriptor x-2.
    +            OUTLINK_DSCR_BF1_CH2: u32,
    +        }), base_address + 0x278);
    +
    +        /// address: 0x6003f27c
    +        /// DMA_OUT_PRI_CH2_REG.
    +        pub const OUT_PRI_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The priority of Tx channel 2. The larger of the value, the higher of the
    +            /// priority.
    +            TX_PRI_CH2: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x27c);
    +
    +        /// address: 0x6003f280
    +        /// DMA_OUT_PERI_SEL_CH2_REG.
    +        pub const OUT_PERI_SEL_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register is used to select peripheral for Tx channel 2. 0:SPI2. 1:
    +            /// reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8:
    +            /// ADC_DAC.
    +            PERI_OUT_SEL_CH2: u6,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +        }), base_address + 0x280);
    +    };
    +
    +    /// Digital Signature
    +    pub const DS = struct {
    +        pub const base_address = 0x6003d000;
    +
    +        /// address: 0x6003d000
    +        /// memory that stores Y
    +        pub const Y_MEM = @intToPtr(*volatile [512]u8, base_address + 0x0);
    +
    +        /// address: 0x6003d200
    +        /// memory that stores M
    +        pub const M_MEM = @intToPtr(*volatile [512]u8, base_address + 0x200);
    +
    +        /// address: 0x6003d400
    +        /// memory that stores Rb
    +        pub const RB_MEM = @intToPtr(*volatile [512]u8, base_address + 0x400);
    +
    +        /// address: 0x6003d600
    +        /// memory that stores BOX
    +        pub const BOX_MEM = @intToPtr(*volatile [48]u8, base_address + 0x600);
    +
    +        /// address: 0x6003d800
    +        /// memory that stores X
    +        pub const X_MEM = @intToPtr(*volatile [512]u8, base_address + 0x800);
    +
    +        /// address: 0x6003da00
    +        /// memory that stores Z
    +        pub const Z_MEM = @intToPtr(*volatile [512]u8, base_address + 0xa00);
    +
    +        /// address: 0x6003de00
    +        /// DS start control register
    +        pub const SET_START = @intToPtr(*volatile MmioInt(32, u1), base_address + 0xe00);
    +
    +        /// address: 0x6003de04
    +        /// DS continue control register
    +        pub const SET_CONTINUE = @intToPtr(*volatile MmioInt(32, u1), base_address + 0xe04);
    +
    +        /// address: 0x6003de08
    +        /// DS finish control register
    +        pub const SET_FINISH = @intToPtr(*volatile MmioInt(32, u1), base_address + 0xe08);
    +
    +        /// address: 0x6003de0c
    +        /// DS query busy register
    +        pub const QUERY_BUSY = @intToPtr(*volatile MmioInt(32, u1), base_address + 0xe0c);
    +
    +        /// address: 0x6003de10
    +        /// DS query key-wrong counter register
    +        pub const QUERY_KEY_WRONG = @intToPtr(*volatile MmioInt(32, u4), base_address + 0xe10);
    +
    +        /// address: 0x6003de14
    +        /// DS query check result register
    +        pub const QUERY_CHECK = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// MD checkout result. 1'b0: MD check pass, 1'b1: MD check fail
    +            MD_ERROR: u1,
    +            /// padding checkout result. 1'b0: a good padding, 1'b1: a bad padding
    +            PADDING_BAD: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0xe14);
    +
    +        /// address: 0x6003de20
    +        /// DS version control register
    +        pub const DATE = @intToPtr(*volatile MmioInt(32, u30), base_address + 0xe20);
    +    };
    +
    +    /// eFuse Controller
    +    pub const EFUSE = struct {
    +        pub const base_address = 0x60008800;
    +
    +        /// address: 0x60008800
    +        /// Register 0 that stores data to be programmed.
    +        pub const PGM_DATA0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The content of the 0th 32-bit data to be programmed.
    +            PGM_DATA_0: u32,
    +        }), base_address + 0x0);
    +
    +        /// address: 0x60008804
    +        /// Register 1 that stores data to be programmed.
    +        pub const PGM_DATA1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The content of the 1st 32-bit data to be programmed.
    +            PGM_DATA_1: u32,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x60008808
    +        /// Register 2 that stores data to be programmed.
    +        pub const PGM_DATA2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The content of the 2nd 32-bit data to be programmed.
    +            PGM_DATA_2: u32,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x6000880c
    +        /// Register 3 that stores data to be programmed.
    +        pub const PGM_DATA3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The content of the 3rd 32-bit data to be programmed.
    +            PGM_DATA_3: u32,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x60008810
    +        /// Register 4 that stores data to be programmed.
    +        pub const PGM_DATA4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The content of the 4th 32-bit data to be programmed.
    +            PGM_DATA_4: u32,
    +        }), base_address + 0x10);
    +
    +        /// address: 0x60008814
    +        /// Register 5 that stores data to be programmed.
    +        pub const PGM_DATA5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The content of the 5th 32-bit data to be programmed.
    +            PGM_DATA_5: u32,
    +        }), base_address + 0x14);
    +
    +        /// address: 0x60008818
    +        /// Register 6 that stores data to be programmed.
    +        pub const PGM_DATA6 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The content of the 6th 32-bit data to be programmed.
    +            PGM_DATA_6: u32,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x6000881c
    +        /// Register 7 that stores data to be programmed.
    +        pub const PGM_DATA7 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The content of the 7th 32-bit data to be programmed.
    +            PGM_DATA_7: u32,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x60008820
    +        /// Register 0 that stores the RS code to be programmed.
    +        pub const PGM_CHECK_VALUE0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The content of the 0th 32-bit RS code to be programmed.
    +            PGM_RS_DATA_0: u32,
    +        }), base_address + 0x20);
    +
    +        /// address: 0x60008824
    +        /// Register 1 that stores the RS code to be programmed.
    +        pub const PGM_CHECK_VALUE1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The content of the 1st 32-bit RS code to be programmed.
    +            PGM_RS_DATA_1: u32,
    +        }), base_address + 0x24);
    +
    +        /// address: 0x60008828
    +        /// Register 2 that stores the RS code to be programmed.
    +        pub const PGM_CHECK_VALUE2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The content of the 2nd 32-bit RS code to be programmed.
    +            PGM_RS_DATA_2: u32,
    +        }), base_address + 0x28);
    +
    +        /// address: 0x6000882c
    +        /// BLOCK0 data register 0.
    +        pub const RD_WR_DIS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Disable programming of individual eFuses.
    +            WR_DIS: u32,
    +        }), base_address + 0x2c);
    +
    +        /// address: 0x60008830
    +        /// BLOCK0 data register 1.
    +        pub const RD_REPEAT_DATA0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set this bit to disable reading from BlOCK4-10.
    +            RD_DIS: u7,
    +            /// Set this bit to disable boot from RTC RAM.
    +            DIS_RTC_RAM_BOOT: u1,
    +            /// Set this bit to disable Icache.
    +            DIS_ICACHE: u1,
    +            /// Set this bit to disable function of usb switch to jtag in module of usb device.
    +            DIS_USB_JTAG: u1,
    +            /// Set this bit to disable Icache in download mode (boot_mode[3:0] is 0, 1, 2, 3,
    +            /// 6, 7).
    +            DIS_DOWNLOAD_ICACHE: u1,
    +            /// Set this bit to disable usb device.
    +            DIS_USB_DEVICE: u1,
    +            /// Set this bit to disable the function that forces chip into download mode.
    +            DIS_FORCE_DOWNLOAD: u1,
    +            /// Reserved (used for four backups method).
    +            RPT4_RESERVED6: u1,
    +            /// Set this bit to disable CAN function.
    +            DIS_CAN: u1,
    +            /// Set this bit to enable selection between usb_to_jtag and pad_to_jtag through
    +            /// strapping gpio10 when both reg_dis_usb_jtag and reg_dis_pad_jtag are equal to 0.
    +            JTAG_SEL_ENABLE: u1,
    +            /// Set these bits to disable JTAG in the soft way (odd number 1 means disable ).
    +            /// JTAG can be enabled in HMAC module.
    +            SOFT_DIS_JTAG: u3,
    +            /// Set this bit to disable JTAG in the hard way. JTAG is disabled permanently.
    +            DIS_PAD_JTAG: u1,
    +            /// Set this bit to disable flash encryption when in download boot modes.
    +            DIS_DOWNLOAD_MANUAL_ENCRYPT: u1,
    +            /// Controls single-end input threshold vrefh, 1.76 V to 2 V with step of 80 mV,
    +            /// stored in eFuse.
    +            USB_DREFH: u2,
    +            /// Controls single-end input threshold vrefl, 0.8 V to 1.04 V with step of 80 mV,
    +            /// stored in eFuse.
    +            USB_DREFL: u2,
    +            /// Set this bit to exchange USB D+ and D- pins.
    +            USB_EXCHG_PINS: u1,
    +            /// Set this bit to vdd spi pin function as gpio.
    +            VDD_SPI_AS_GPIO: u1,
    +            /// Enable btlc gpio.
    +            BTLC_GPIO_ENABLE: u2,
    +            /// Set this bit to enable power glitch function.
    +            POWERGLITCH_EN: u1,
    +            /// Sample delay configuration of power glitch.
    +            POWER_GLITCH_DSENSE: u2,
    +        }), base_address + 0x30);
    +
    +        /// address: 0x60008834
    +        /// BLOCK0 data register 2.
    +        pub const RD_REPEAT_DATA1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Reserved (used for four backups method).
    +            RPT4_RESERVED2: u16,
    +            /// Selects RTC watchdog timeout threshold, in unit of slow clock cycle. 0: 40000.
    +            /// 1: 80000. 2: 160000. 3:320000.
    +            WDT_DELAY_SEL: u2,
    +            /// Set this bit to enable SPI boot encrypt/decrypt. Odd number of 1: enable. even
    +            /// number of 1: disable.
    +            SPI_BOOT_CRYPT_CNT: u3,
    +            /// Set this bit to enable revoking first secure boot key.
    +            SECURE_BOOT_KEY_REVOKE0: u1,
    +            /// Set this bit to enable revoking second secure boot key.
    +            SECURE_BOOT_KEY_REVOKE1: u1,
    +            /// Set this bit to enable revoking third secure boot key.
    +            SECURE_BOOT_KEY_REVOKE2: u1,
    +            /// Purpose of Key0.
    +            KEY_PURPOSE_0: u4,
    +            /// Purpose of Key1.
    +            KEY_PURPOSE_1: u4,
    +        }), base_address + 0x34);
    +
    +        /// address: 0x60008838
    +        /// BLOCK0 data register 3.
    +        pub const RD_REPEAT_DATA2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Purpose of Key2.
    +            KEY_PURPOSE_2: u4,
    +            /// Purpose of Key3.
    +            KEY_PURPOSE_3: u4,
    +            /// Purpose of Key4.
    +            KEY_PURPOSE_4: u4,
    +            /// Purpose of Key5.
    +            KEY_PURPOSE_5: u4,
    +            /// Reserved (used for four backups method).
    +            RPT4_RESERVED3: u4,
    +            /// Set this bit to enable secure boot.
    +            SECURE_BOOT_EN: u1,
    +            /// Set this bit to enable revoking aggressive secure boot.
    +            SECURE_BOOT_AGGRESSIVE_REVOKE: u1,
    +            /// Reserved (used for four backups method).
    +            RPT4_RESERVED0: u6,
    +            /// Configures flash waiting time after power-up, in unit of ms. If the value is
    +            /// less than 15, the waiting time is the configurable value; Otherwise, the waiting
    +            /// time is twice the configurable value.
    +            FLASH_TPUW: u4,
    +        }), base_address + 0x38);
    +
    +        /// address: 0x6000883c
    +        /// BLOCK0 data register 4.
    +        pub const RD_REPEAT_DATA3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set this bit to disable download mode (boot_mode[3:0] = 0, 1, 2, 3, 6, 7).
    +            DIS_DOWNLOAD_MODE: u1,
    +            /// Set this bit to disable Legacy SPI boot mode (boot_mode[3:0] = 4).
    +            DIS_LEGACY_SPI_BOOT: u1,
    +            /// Selectes the default UART print channel. 0: UART0. 1: UART1.
    +            UART_PRINT_CHANNEL: u1,
    +            /// Set ECC mode in ROM, 0: ROM would Enable Flash ECC 16to18 byte mode. 1:ROM would
    +            /// use 16to17 byte mode.
    +            FLASH_ECC_MODE: u1,
    +            /// Set this bit to disable UART download mode through USB.
    +            DIS_USB_DOWNLOAD_MODE: u1,
    +            /// Set this bit to enable secure UART download mode.
    +            ENABLE_SECURITY_DOWNLOAD: u1,
    +            /// Set the default UARTboot message output mode. 00: Enabled. 01: Enabled when
    +            /// GPIO8 is low at reset. 10: Enabled when GPIO8 is high at reset. 11:disabled.
    +            UART_PRINT_CONTROL: u2,
    +            /// GPIO33-GPIO37 power supply selection in ROM code. 0: VDD3P3_CPU. 1: VDD_SPI.
    +            PIN_POWER_SELECTION: u1,
    +            /// Set the maximum lines of SPI flash. 0: four lines. 1: eight lines.
    +            FLASH_TYPE: u1,
    +            /// Set Flash page size.
    +            FLASH_PAGE_SIZE: u2,
    +            /// Set 1 to enable ECC for flash boot.
    +            FLASH_ECC_EN: u1,
    +            /// Set this bit to force ROM code to send a resume command during SPI boot.
    +            FORCE_SEND_RESUME: u1,
    +            /// Secure version (used by ESP-IDF anti-rollback feature).
    +            SECURE_VERSION: u16,
    +            /// Reserved (used for four backups method).
    +            RPT4_RESERVED1: u2,
    +        }), base_address + 0x3c);
    +
    +        /// address: 0x60008840
    +        /// BLOCK0 data register 5.
    +        pub const RD_REPEAT_DATA4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Reserved (used for four backups method).
    +            RPT4_RESERVED4: u24,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +        }), base_address + 0x40);
    +
    +        /// address: 0x60008844
    +        /// BLOCK1 data register 0.
    +        pub const RD_MAC_SPI_SYS_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the low 32 bits of MAC address.
    +            MAC_0: u32,
    +        }), base_address + 0x44);
    +
    +        /// address: 0x60008848
    +        /// BLOCK1 data register 1.
    +        pub const RD_MAC_SPI_SYS_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the high 16 bits of MAC address.
    +            MAC_1: u16,
    +            /// Stores the zeroth part of SPI_PAD_CONF.
    +            SPI_PAD_CONF_0: u16,
    +        }), base_address + 0x48);
    +
    +        /// address: 0x6000884c
    +        /// BLOCK1 data register 2.
    +        pub const RD_MAC_SPI_SYS_2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the first part of SPI_PAD_CONF.
    +            SPI_PAD_CONF_1: u32,
    +        }), base_address + 0x4c);
    +
    +        /// address: 0x60008850
    +        /// BLOCK1 data register 3.
    +        pub const RD_MAC_SPI_SYS_3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the second part of SPI_PAD_CONF.
    +            SPI_PAD_CONF_2: u18,
    +            /// Stores the fist 14 bits of the zeroth part of system data.
    +            SYS_DATA_PART0_0: u14,
    +        }), base_address + 0x50);
    +
    +        /// address: 0x60008854
    +        /// BLOCK1 data register 4.
    +        pub const RD_MAC_SPI_SYS_4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the fist 32 bits of the zeroth part of system data.
    +            SYS_DATA_PART0_1: u32,
    +        }), base_address + 0x54);
    +
    +        /// address: 0x60008858
    +        /// BLOCK1 data register 5.
    +        pub const RD_MAC_SPI_SYS_5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the second 32 bits of the zeroth part of system data.
    +            SYS_DATA_PART0_2: u32,
    +        }), base_address + 0x58);
    +
    +        /// address: 0x6000885c
    +        /// Register 0 of BLOCK2 (system).
    +        pub const RD_SYS_PART1_DATA0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the zeroth 32 bits of the first part of system data.
    +            SYS_DATA_PART1_0: u32,
    +        }), base_address + 0x5c);
    +
    +        /// address: 0x60008860
    +        /// Register 1 of BLOCK2 (system).
    +        pub const RD_SYS_PART1_DATA1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the first 32 bits of the first part of system data.
    +            SYS_DATA_PART1_1: u32,
    +        }), base_address + 0x60);
    +
    +        /// address: 0x60008864
    +        /// Register 2 of BLOCK2 (system).
    +        pub const RD_SYS_PART1_DATA2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the second 32 bits of the first part of system data.
    +            SYS_DATA_PART1_2: u32,
    +        }), base_address + 0x64);
    +
    +        /// address: 0x60008868
    +        /// Register 3 of BLOCK2 (system).
    +        pub const RD_SYS_PART1_DATA3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the third 32 bits of the first part of system data.
    +            SYS_DATA_PART1_3: u32,
    +        }), base_address + 0x68);
    +
    +        /// address: 0x6000886c
    +        /// Register 4 of BLOCK2 (system).
    +        pub const RD_SYS_PART1_DATA4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the fourth 32 bits of the first part of system data.
    +            SYS_DATA_PART1_4: u32,
    +        }), base_address + 0x6c);
    +
    +        /// address: 0x60008870
    +        /// Register 5 of BLOCK2 (system).
    +        pub const RD_SYS_PART1_DATA5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the fifth 32 bits of the first part of system data.
    +            SYS_DATA_PART1_5: u32,
    +        }), base_address + 0x70);
    +
    +        /// address: 0x60008874
    +        /// Register 6 of BLOCK2 (system).
    +        pub const RD_SYS_PART1_DATA6 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the sixth 32 bits of the first part of system data.
    +            SYS_DATA_PART1_6: u32,
    +        }), base_address + 0x74);
    +
    +        /// address: 0x60008878
    +        /// Register 7 of BLOCK2 (system).
    +        pub const RD_SYS_PART1_DATA7 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the seventh 32 bits of the first part of system data.
    +            SYS_DATA_PART1_7: u32,
    +        }), base_address + 0x78);
    +
    +        /// address: 0x6000887c
    +        /// Register 0 of BLOCK3 (user).
    +        pub const RD_USR_DATA0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the zeroth 32 bits of BLOCK3 (user).
    +            USR_DATA0: u32,
    +        }), base_address + 0x7c);
    +
    +        /// address: 0x60008880
    +        /// Register 1 of BLOCK3 (user).
    +        pub const RD_USR_DATA1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the first 32 bits of BLOCK3 (user).
    +            USR_DATA1: u32,
    +        }), base_address + 0x80);
    +
    +        /// address: 0x60008884
    +        /// Register 2 of BLOCK3 (user).
    +        pub const RD_USR_DATA2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the second 32 bits of BLOCK3 (user).
    +            USR_DATA2: u32,
    +        }), base_address + 0x84);
    +
    +        /// address: 0x60008888
    +        /// Register 3 of BLOCK3 (user).
    +        pub const RD_USR_DATA3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the third 32 bits of BLOCK3 (user).
    +            USR_DATA3: u32,
    +        }), base_address + 0x88);
    +
    +        /// address: 0x6000888c
    +        /// Register 4 of BLOCK3 (user).
    +        pub const RD_USR_DATA4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the fourth 32 bits of BLOCK3 (user).
    +            USR_DATA4: u32,
    +        }), base_address + 0x8c);
    +
    +        /// address: 0x60008890
    +        /// Register 5 of BLOCK3 (user).
    +        pub const RD_USR_DATA5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the fifth 32 bits of BLOCK3 (user).
    +            USR_DATA5: u32,
    +        }), base_address + 0x90);
    +
    +        /// address: 0x60008894
    +        /// Register 6 of BLOCK3 (user).
    +        pub const RD_USR_DATA6 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the sixth 32 bits of BLOCK3 (user).
    +            USR_DATA6: u32,
    +        }), base_address + 0x94);
    +
    +        /// address: 0x60008898
    +        /// Register 7 of BLOCK3 (user).
    +        pub const RD_USR_DATA7 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the seventh 32 bits of BLOCK3 (user).
    +            USR_DATA7: u32,
    +        }), base_address + 0x98);
    +
    +        /// address: 0x6000889c
    +        /// Register 0 of BLOCK4 (KEY0).
    +        pub const RD_KEY0_DATA0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the zeroth 32 bits of KEY0.
    +            KEY0_DATA0: u32,
    +        }), base_address + 0x9c);
    +
    +        /// address: 0x600088a0
    +        /// Register 1 of BLOCK4 (KEY0).
    +        pub const RD_KEY0_DATA1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the first 32 bits of KEY0.
    +            KEY0_DATA1: u32,
    +        }), base_address + 0xa0);
    +
    +        /// address: 0x600088a4
    +        /// Register 2 of BLOCK4 (KEY0).
    +        pub const RD_KEY0_DATA2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the second 32 bits of KEY0.
    +            KEY0_DATA2: u32,
    +        }), base_address + 0xa4);
    +
    +        /// address: 0x600088a8
    +        /// Register 3 of BLOCK4 (KEY0).
    +        pub const RD_KEY0_DATA3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the third 32 bits of KEY0.
    +            KEY0_DATA3: u32,
    +        }), base_address + 0xa8);
    +
    +        /// address: 0x600088ac
    +        /// Register 4 of BLOCK4 (KEY0).
    +        pub const RD_KEY0_DATA4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the fourth 32 bits of KEY0.
    +            KEY0_DATA4: u32,
    +        }), base_address + 0xac);
    +
    +        /// address: 0x600088b0
    +        /// Register 5 of BLOCK4 (KEY0).
    +        pub const RD_KEY0_DATA5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the fifth 32 bits of KEY0.
    +            KEY0_DATA5: u32,
    +        }), base_address + 0xb0);
    +
    +        /// address: 0x600088b4
    +        /// Register 6 of BLOCK4 (KEY0).
    +        pub const RD_KEY0_DATA6 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the sixth 32 bits of KEY0.
    +            KEY0_DATA6: u32,
    +        }), base_address + 0xb4);
    +
    +        /// address: 0x600088b8
    +        /// Register 7 of BLOCK4 (KEY0).
    +        pub const RD_KEY0_DATA7 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the seventh 32 bits of KEY0.
    +            KEY0_DATA7: u32,
    +        }), base_address + 0xb8);
    +
    +        /// address: 0x600088bc
    +        /// Register 0 of BLOCK5 (KEY1).
    +        pub const RD_KEY1_DATA0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the zeroth 32 bits of KEY1.
    +            KEY1_DATA0: u32,
    +        }), base_address + 0xbc);
    +
    +        /// address: 0x600088c0
    +        /// Register 1 of BLOCK5 (KEY1).
    +        pub const RD_KEY1_DATA1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the first 32 bits of KEY1.
    +            KEY1_DATA1: u32,
    +        }), base_address + 0xc0);
    +
    +        /// address: 0x600088c4
    +        /// Register 2 of BLOCK5 (KEY1).
    +        pub const RD_KEY1_DATA2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the second 32 bits of KEY1.
    +            KEY1_DATA2: u32,
    +        }), base_address + 0xc4);
    +
    +        /// address: 0x600088c8
    +        /// Register 3 of BLOCK5 (KEY1).
    +        pub const RD_KEY1_DATA3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the third 32 bits of KEY1.
    +            KEY1_DATA3: u32,
    +        }), base_address + 0xc8);
    +
    +        /// address: 0x600088cc
    +        /// Register 4 of BLOCK5 (KEY1).
    +        pub const RD_KEY1_DATA4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the fourth 32 bits of KEY1.
    +            KEY1_DATA4: u32,
    +        }), base_address + 0xcc);
    +
    +        /// address: 0x600088d0
    +        /// Register 5 of BLOCK5 (KEY1).
    +        pub const RD_KEY1_DATA5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the fifth 32 bits of KEY1.
    +            KEY1_DATA5: u32,
    +        }), base_address + 0xd0);
    +
    +        /// address: 0x600088d4
    +        /// Register 6 of BLOCK5 (KEY1).
    +        pub const RD_KEY1_DATA6 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the sixth 32 bits of KEY1.
    +            KEY1_DATA6: u32,
    +        }), base_address + 0xd4);
    +
    +        /// address: 0x600088d8
    +        /// Register 7 of BLOCK5 (KEY1).
    +        pub const RD_KEY1_DATA7 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the seventh 32 bits of KEY1.
    +            KEY1_DATA7: u32,
    +        }), base_address + 0xd8);
    +
    +        /// address: 0x600088dc
    +        /// Register 0 of BLOCK6 (KEY2).
    +        pub const RD_KEY2_DATA0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the zeroth 32 bits of KEY2.
    +            KEY2_DATA0: u32,
    +        }), base_address + 0xdc);
    +
    +        /// address: 0x600088e0
    +        /// Register 1 of BLOCK6 (KEY2).
    +        pub const RD_KEY2_DATA1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the first 32 bits of KEY2.
    +            KEY2_DATA1: u32,
    +        }), base_address + 0xe0);
    +
    +        /// address: 0x600088e4
    +        /// Register 2 of BLOCK6 (KEY2).
    +        pub const RD_KEY2_DATA2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the second 32 bits of KEY2.
    +            KEY2_DATA2: u32,
    +        }), base_address + 0xe4);
    +
    +        /// address: 0x600088e8
    +        /// Register 3 of BLOCK6 (KEY2).
    +        pub const RD_KEY2_DATA3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the third 32 bits of KEY2.
    +            KEY2_DATA3: u32,
    +        }), base_address + 0xe8);
    +
    +        /// address: 0x600088ec
    +        /// Register 4 of BLOCK6 (KEY2).
    +        pub const RD_KEY2_DATA4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the fourth 32 bits of KEY2.
    +            KEY2_DATA4: u32,
    +        }), base_address + 0xec);
    +
    +        /// address: 0x600088f0
    +        /// Register 5 of BLOCK6 (KEY2).
    +        pub const RD_KEY2_DATA5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the fifth 32 bits of KEY2.
    +            KEY2_DATA5: u32,
    +        }), base_address + 0xf0);
    +
    +        /// address: 0x600088f4
    +        /// Register 6 of BLOCK6 (KEY2).
    +        pub const RD_KEY2_DATA6 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the sixth 32 bits of KEY2.
    +            KEY2_DATA6: u32,
    +        }), base_address + 0xf4);
    +
    +        /// address: 0x600088f8
    +        /// Register 7 of BLOCK6 (KEY2).
    +        pub const RD_KEY2_DATA7 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the seventh 32 bits of KEY2.
    +            KEY2_DATA7: u32,
    +        }), base_address + 0xf8);
    +
    +        /// address: 0x600088fc
    +        /// Register 0 of BLOCK7 (KEY3).
    +        pub const RD_KEY3_DATA0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the zeroth 32 bits of KEY3.
    +            KEY3_DATA0: u32,
    +        }), base_address + 0xfc);
    +
    +        /// address: 0x60008900
    +        /// Register 1 of BLOCK7 (KEY3).
    +        pub const RD_KEY3_DATA1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the first 32 bits of KEY3.
    +            KEY3_DATA1: u32,
    +        }), base_address + 0x100);
    +
    +        /// address: 0x60008904
    +        /// Register 2 of BLOCK7 (KEY3).
    +        pub const RD_KEY3_DATA2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the second 32 bits of KEY3.
    +            KEY3_DATA2: u32,
    +        }), base_address + 0x104);
    +
    +        /// address: 0x60008908
    +        /// Register 3 of BLOCK7 (KEY3).
    +        pub const RD_KEY3_DATA3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the third 32 bits of KEY3.
    +            KEY3_DATA3: u32,
    +        }), base_address + 0x108);
    +
    +        /// address: 0x6000890c
    +        /// Register 4 of BLOCK7 (KEY3).
    +        pub const RD_KEY3_DATA4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the fourth 32 bits of KEY3.
    +            KEY3_DATA4: u32,
    +        }), base_address + 0x10c);
    +
    +        /// address: 0x60008910
    +        /// Register 5 of BLOCK7 (KEY3).
    +        pub const RD_KEY3_DATA5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the fifth 32 bits of KEY3.
    +            KEY3_DATA5: u32,
    +        }), base_address + 0x110);
    +
    +        /// address: 0x60008914
    +        /// Register 6 of BLOCK7 (KEY3).
    +        pub const RD_KEY3_DATA6 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the sixth 32 bits of KEY3.
    +            KEY3_DATA6: u32,
    +        }), base_address + 0x114);
    +
    +        /// address: 0x60008918
    +        /// Register 7 of BLOCK7 (KEY3).
    +        pub const RD_KEY3_DATA7 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the seventh 32 bits of KEY3.
    +            KEY3_DATA7: u32,
    +        }), base_address + 0x118);
    +
    +        /// address: 0x6000891c
    +        /// Register 0 of BLOCK8 (KEY4).
    +        pub const RD_KEY4_DATA0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the zeroth 32 bits of KEY4.
    +            KEY4_DATA0: u32,
    +        }), base_address + 0x11c);
    +
    +        /// address: 0x60008920
    +        /// Register 1 of BLOCK8 (KEY4).
    +        pub const RD_KEY4_DATA1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the first 32 bits of KEY4.
    +            KEY4_DATA1: u32,
    +        }), base_address + 0x120);
    +
    +        /// address: 0x60008924
    +        /// Register 2 of BLOCK8 (KEY4).
    +        pub const RD_KEY4_DATA2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the second 32 bits of KEY4.
    +            KEY4_DATA2: u32,
    +        }), base_address + 0x124);
    +
    +        /// address: 0x60008928
    +        /// Register 3 of BLOCK8 (KEY4).
    +        pub const RD_KEY4_DATA3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the third 32 bits of KEY4.
    +            KEY4_DATA3: u32,
    +        }), base_address + 0x128);
    +
    +        /// address: 0x6000892c
    +        /// Register 4 of BLOCK8 (KEY4).
    +        pub const RD_KEY4_DATA4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the fourth 32 bits of KEY4.
    +            KEY4_DATA4: u32,
    +        }), base_address + 0x12c);
    +
    +        /// address: 0x60008930
    +        /// Register 5 of BLOCK8 (KEY4).
    +        pub const RD_KEY4_DATA5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the fifth 32 bits of KEY4.
    +            KEY4_DATA5: u32,
    +        }), base_address + 0x130);
    +
    +        /// address: 0x60008934
    +        /// Register 6 of BLOCK8 (KEY4).
    +        pub const RD_KEY4_DATA6 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the sixth 32 bits of KEY4.
    +            KEY4_DATA6: u32,
    +        }), base_address + 0x134);
    +
    +        /// address: 0x60008938
    +        /// Register 7 of BLOCK8 (KEY4).
    +        pub const RD_KEY4_DATA7 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the seventh 32 bits of KEY4.
    +            KEY4_DATA7: u32,
    +        }), base_address + 0x138);
    +
    +        /// address: 0x6000893c
    +        /// Register 0 of BLOCK9 (KEY5).
    +        pub const RD_KEY5_DATA0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the zeroth 32 bits of KEY5.
    +            KEY5_DATA0: u32,
    +        }), base_address + 0x13c);
    +
    +        /// address: 0x60008940
    +        /// Register 1 of BLOCK9 (KEY5).
    +        pub const RD_KEY5_DATA1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the first 32 bits of KEY5.
    +            KEY5_DATA1: u32,
    +        }), base_address + 0x140);
    +
    +        /// address: 0x60008944
    +        /// Register 2 of BLOCK9 (KEY5).
    +        pub const RD_KEY5_DATA2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the second 32 bits of KEY5.
    +            KEY5_DATA2: u32,
    +        }), base_address + 0x144);
    +
    +        /// address: 0x60008948
    +        /// Register 3 of BLOCK9 (KEY5).
    +        pub const RD_KEY5_DATA3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the third 32 bits of KEY5.
    +            KEY5_DATA3: u32,
    +        }), base_address + 0x148);
    +
    +        /// address: 0x6000894c
    +        /// Register 4 of BLOCK9 (KEY5).
    +        pub const RD_KEY5_DATA4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the fourth 32 bits of KEY5.
    +            KEY5_DATA4: u32,
    +        }), base_address + 0x14c);
    +
    +        /// address: 0x60008950
    +        /// Register 5 of BLOCK9 (KEY5).
    +        pub const RD_KEY5_DATA5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the fifth 32 bits of KEY5.
    +            KEY5_DATA5: u32,
    +        }), base_address + 0x150);
    +
    +        /// address: 0x60008954
    +        /// Register 6 of BLOCK9 (KEY5).
    +        pub const RD_KEY5_DATA6 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the sixth 32 bits of KEY5.
    +            KEY5_DATA6: u32,
    +        }), base_address + 0x154);
    +
    +        /// address: 0x60008958
    +        /// Register 7 of BLOCK9 (KEY5).
    +        pub const RD_KEY5_DATA7 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the seventh 32 bits of KEY5.
    +            KEY5_DATA7: u32,
    +        }), base_address + 0x158);
    +
    +        /// address: 0x6000895c
    +        /// Register 0 of BLOCK10 (system).
    +        pub const RD_SYS_PART2_DATA0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the 0th 32 bits of the 2nd part of system data.
    +            SYS_DATA_PART2_0: u32,
    +        }), base_address + 0x15c);
    +
    +        /// address: 0x60008960
    +        /// Register 1 of BLOCK9 (KEY5).
    +        pub const RD_SYS_PART2_DATA1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the 1st 32 bits of the 2nd part of system data.
    +            SYS_DATA_PART2_1: u32,
    +        }), base_address + 0x160);
    +
    +        /// address: 0x60008964
    +        /// Register 2 of BLOCK10 (system).
    +        pub const RD_SYS_PART2_DATA2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the 2nd 32 bits of the 2nd part of system data.
    +            SYS_DATA_PART2_2: u32,
    +        }), base_address + 0x164);
    +
    +        /// address: 0x60008968
    +        /// Register 3 of BLOCK10 (system).
    +        pub const RD_SYS_PART2_DATA3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the 3rd 32 bits of the 2nd part of system data.
    +            SYS_DATA_PART2_3: u32,
    +        }), base_address + 0x168);
    +
    +        /// address: 0x6000896c
    +        /// Register 4 of BLOCK10 (system).
    +        pub const RD_SYS_PART2_DATA4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the 4th 32 bits of the 2nd part of system data.
    +            SYS_DATA_PART2_4: u32,
    +        }), base_address + 0x16c);
    +
    +        /// address: 0x60008970
    +        /// Register 5 of BLOCK10 (system).
    +        pub const RD_SYS_PART2_DATA5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the 5th 32 bits of the 2nd part of system data.
    +            SYS_DATA_PART2_5: u32,
    +        }), base_address + 0x170);
    +
    +        /// address: 0x60008974
    +        /// Register 6 of BLOCK10 (system).
    +        pub const RD_SYS_PART2_DATA6 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the 6th 32 bits of the 2nd part of system data.
    +            SYS_DATA_PART2_6: u32,
    +        }), base_address + 0x174);
    +
    +        /// address: 0x60008978
    +        /// Register 7 of BLOCK10 (system).
    +        pub const RD_SYS_PART2_DATA7 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the 7th 32 bits of the 2nd part of system data.
    +            SYS_DATA_PART2_7: u32,
    +        }), base_address + 0x178);
    +
    +        /// address: 0x6000897c
    +        /// Programming error record register 0 of BLOCK0.
    +        pub const RD_REPEAT_ERR0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// If any bit in RD_DIS is 1, then it indicates a programming error.
    +            RD_DIS_ERR: u7,
    +            /// If DIS_RTC_RAM_BOOT is 1, then it indicates a programming error.
    +            DIS_RTC_RAM_BOOT_ERR: u1,
    +            /// If DIS_ICACHE is 1, then it indicates a programming error.
    +            DIS_ICACHE_ERR: u1,
    +            /// If DIS_USB_JTAG is 1, then it indicates a programming error.
    +            DIS_USB_JTAG_ERR: u1,
    +            /// If DIS_DOWNLOAD_ICACHE is 1, then it indicates a programming error.
    +            DIS_DOWNLOAD_ICACHE_ERR: u1,
    +            /// If DIS_USB_DEVICE is 1, then it indicates a programming error.
    +            DIS_USB_DEVICE_ERR: u1,
    +            /// If DIS_FORCE_DOWNLOAD is 1, then it indicates a programming error.
    +            DIS_FORCE_DOWNLOAD_ERR: u1,
    +            /// Reserved.
    +            RPT4_RESERVED6_ERR: u1,
    +            /// If DIS_CAN is 1, then it indicates a programming error.
    +            DIS_CAN_ERR: u1,
    +            /// If JTAG_SEL_ENABLE is 1, then it indicates a programming error.
    +            JTAG_SEL_ENABLE_ERR: u1,
    +            /// If SOFT_DIS_JTAG is 1, then it indicates a programming error.
    +            SOFT_DIS_JTAG_ERR: u3,
    +            /// If DIS_PAD_JTAG is 1, then it indicates a programming error.
    +            DIS_PAD_JTAG_ERR: u1,
    +            /// If DIS_DOWNLOAD_MANUAL_ENCRYPT is 1, then it indicates a programming error.
    +            DIS_DOWNLOAD_MANUAL_ENCRYPT_ERR: u1,
    +            /// If any bit in USB_DREFH is 1, then it indicates a programming error.
    +            USB_DREFH_ERR: u2,
    +            /// If any bit in USB_DREFL is 1, then it indicates a programming error.
    +            USB_DREFL_ERR: u2,
    +            /// If USB_EXCHG_PINS is 1, then it indicates a programming error.
    +            USB_EXCHG_PINS_ERR: u1,
    +            /// If VDD_SPI_AS_GPIO is 1, then it indicates a programming error.
    +            VDD_SPI_AS_GPIO_ERR: u1,
    +            /// If any bit in BTLC_GPIO_ENABLE is 1, then it indicates a programming error.
    +            BTLC_GPIO_ENABLE_ERR: u2,
    +            /// If POWERGLITCH_EN is 1, then it indicates a programming error.
    +            POWERGLITCH_EN_ERR: u1,
    +            /// If any bit in POWER_GLITCH_DSENSE is 1, then it indicates a programming error.
    +            POWER_GLITCH_DSENSE_ERR: u2,
    +        }), base_address + 0x17c);
    +
    +        /// address: 0x60008980
    +        /// Programming error record register 1 of BLOCK0.
    +        pub const RD_REPEAT_ERR1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Reserved.
    +            RPT4_RESERVED2_ERR: u16,
    +            /// If any bit in WDT_DELAY_SEL is 1, then it indicates a programming error.
    +            WDT_DELAY_SEL_ERR: u2,
    +            /// If any bit in SPI_BOOT_CRYPT_CNT is 1, then it indicates a programming error.
    +            SPI_BOOT_CRYPT_CNT_ERR: u3,
    +            /// If SECURE_BOOT_KEY_REVOKE0 is 1, then it indicates a programming error.
    +            SECURE_BOOT_KEY_REVOKE0_ERR: u1,
    +            /// If SECURE_BOOT_KEY_REVOKE1 is 1, then it indicates a programming error.
    +            SECURE_BOOT_KEY_REVOKE1_ERR: u1,
    +            /// If SECURE_BOOT_KEY_REVOKE2 is 1, then it indicates a programming error.
    +            SECURE_BOOT_KEY_REVOKE2_ERR: u1,
    +            /// If any bit in KEY_PURPOSE_0 is 1, then it indicates a programming error.
    +            KEY_PURPOSE_0_ERR: u4,
    +            /// If any bit in KEY_PURPOSE_1 is 1, then it indicates a programming error.
    +            KEY_PURPOSE_1_ERR: u4,
    +        }), base_address + 0x180);
    +
    +        /// address: 0x60008984
    +        /// Programming error record register 2 of BLOCK0.
    +        pub const RD_REPEAT_ERR2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// If any bit in KEY_PURPOSE_2 is 1, then it indicates a programming error.
    +            KEY_PURPOSE_2_ERR: u4,
    +            /// If any bit in KEY_PURPOSE_3 is 1, then it indicates a programming error.
    +            KEY_PURPOSE_3_ERR: u4,
    +            /// If any bit in KEY_PURPOSE_4 is 1, then it indicates a programming error.
    +            KEY_PURPOSE_4_ERR: u4,
    +            /// If any bit in KEY_PURPOSE_5 is 1, then it indicates a programming error.
    +            KEY_PURPOSE_5_ERR: u4,
    +            /// Reserved.
    +            RPT4_RESERVED3_ERR: u4,
    +            /// If SECURE_BOOT_EN is 1, then it indicates a programming error.
    +            SECURE_BOOT_EN_ERR: u1,
    +            /// If SECURE_BOOT_AGGRESSIVE_REVOKE is 1, then it indicates a programming error.
    +            SECURE_BOOT_AGGRESSIVE_REVOKE_ERR: u1,
    +            /// Reserved.
    +            RPT4_RESERVED0_ERR: u6,
    +            /// If any bit in FLASH_TPUM is 1, then it indicates a programming error.
    +            FLASH_TPUW_ERR: u4,
    +        }), base_address + 0x184);
    +
    +        /// address: 0x60008988
    +        /// Programming error record register 3 of BLOCK0.
    +        pub const RD_REPEAT_ERR3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// If DIS_DOWNLOAD_MODE is 1, then it indicates a programming error.
    +            DIS_DOWNLOAD_MODE_ERR: u1,
    +            /// If DIS_LEGACY_SPI_BOOT is 1, then it indicates a programming error.
    +            DIS_LEGACY_SPI_BOOT_ERR: u1,
    +            /// If UART_PRINT_CHANNEL is 1, then it indicates a programming error.
    +            UART_PRINT_CHANNEL_ERR: u1,
    +            /// If FLASH_ECC_MODE is 1, then it indicates a programming error.
    +            FLASH_ECC_MODE_ERR: u1,
    +            /// If DIS_USB_DOWNLOAD_MODE is 1, then it indicates a programming error.
    +            DIS_USB_DOWNLOAD_MODE_ERR: u1,
    +            /// If ENABLE_SECURITY_DOWNLOAD is 1, then it indicates a programming error.
    +            ENABLE_SECURITY_DOWNLOAD_ERR: u1,
    +            /// If any bit in UART_PRINT_CONTROL is 1, then it indicates a programming error.
    +            UART_PRINT_CONTROL_ERR: u2,
    +            /// If PIN_POWER_SELECTION is 1, then it indicates a programming error.
    +            PIN_POWER_SELECTION_ERR: u1,
    +            /// If FLASH_TYPE is 1, then it indicates a programming error.
    +            FLASH_TYPE_ERR: u1,
    +            /// If any bits in FLASH_PAGE_SIZE is 1, then it indicates a programming error.
    +            FLASH_PAGE_SIZE_ERR: u2,
    +            /// If FLASH_ECC_EN_ERR is 1, then it indicates a programming error.
    +            FLASH_ECC_EN_ERR: u1,
    +            /// If FORCE_SEND_RESUME is 1, then it indicates a programming error.
    +            FORCE_SEND_RESUME_ERR: u1,
    +            /// If any bit in SECURE_VERSION is 1, then it indicates a programming error.
    +            SECURE_VERSION_ERR: u16,
    +            /// Reserved.
    +            RPT4_RESERVED1_ERR: u2,
    +        }), base_address + 0x188);
    +
    +        /// address: 0x60008990
    +        /// Programming error record register 4 of BLOCK0.
    +        pub const RD_REPEAT_ERR4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Reserved.
    +            RPT4_RESERVED4_ERR: u24,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +        }), base_address + 0x190);
    +
    +        /// address: 0x600089c0
    +        /// Programming error record register 0 of BLOCK1-10.
    +        pub const RD_RS_ERR0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of this signal means the number of error bytes.
    +            MAC_SPI_8M_ERR_NUM: u3,
    +            /// 0: Means no failure and that the data of MAC_SPI_8M is reliable 1: Means that
    +            /// programming user data failed and the number of error bytes is over 6.
    +            MAC_SPI_8M_FAIL: u1,
    +            /// The value of this signal means the number of error bytes.
    +            SYS_PART1_NUM: u3,
    +            /// 0: Means no failure and that the data of system part1 is reliable 1: Means that
    +            /// programming user data failed and the number of error bytes is over 6.
    +            SYS_PART1_FAIL: u1,
    +            /// The value of this signal means the number of error bytes.
    +            USR_DATA_ERR_NUM: u3,
    +            /// 0: Means no failure and that the user data is reliable 1: Means that programming
    +            /// user data failed and the number of error bytes is over 6.
    +            USR_DATA_FAIL: u1,
    +            /// The value of this signal means the number of error bytes.
    +            KEY0_ERR_NUM: u3,
    +            /// 0: Means no failure and that the data of key0 is reliable 1: Means that
    +            /// programming key0 failed and the number of error bytes is over 6.
    +            KEY0_FAIL: u1,
    +            /// The value of this signal means the number of error bytes.
    +            KEY1_ERR_NUM: u3,
    +            /// 0: Means no failure and that the data of key1 is reliable 1: Means that
    +            /// programming key1 failed and the number of error bytes is over 6.
    +            KEY1_FAIL: u1,
    +            /// The value of this signal means the number of error bytes.
    +            KEY2_ERR_NUM: u3,
    +            /// 0: Means no failure and that the data of key2 is reliable 1: Means that
    +            /// programming key2 failed and the number of error bytes is over 6.
    +            KEY2_FAIL: u1,
    +            /// The value of this signal means the number of error bytes.
    +            KEY3_ERR_NUM: u3,
    +            /// 0: Means no failure and that the data of key3 is reliable 1: Means that
    +            /// programming key3 failed and the number of error bytes is over 6.
    +            KEY3_FAIL: u1,
    +            /// The value of this signal means the number of error bytes.
    +            KEY4_ERR_NUM: u3,
    +            /// 0: Means no failure and that the data of key4 is reliable 1: Means that
    +            /// programming key4 failed and the number of error bytes is over 6.
    +            KEY4_FAIL: u1,
    +        }), base_address + 0x1c0);
    +
    +        /// address: 0x600089c4
    +        /// Programming error record register 1 of BLOCK1-10.
    +        pub const RD_RS_ERR1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of this signal means the number of error bytes.
    +            KEY5_ERR_NUM: u3,
    +            /// 0: Means no failure and that the data of KEY5 is reliable 1: Means that
    +            /// programming user data failed and the number of error bytes is over 6.
    +            KEY5_FAIL: u1,
    +            /// The value of this signal means the number of error bytes.
    +            SYS_PART2_ERR_NUM: u3,
    +            /// 0: Means no failure and that the data of system part2 is reliable 1: Means that
    +            /// programming user data failed and the number of error bytes is over 6.
    +            SYS_PART2_FAIL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x1c4);
    +
    +        /// address: 0x600089c8
    +        /// eFuse clcok configuration register.
    +        pub const CLK = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set this bit to force eFuse SRAM into power-saving mode.
    +            EFUSE_MEM_FORCE_PD: u1,
    +            /// Set this bit and force to activate clock signal of eFuse SRAM.
    +            MEM_CLK_FORCE_ON: u1,
    +            /// Set this bit to force eFuse SRAM into working mode.
    +            EFUSE_MEM_FORCE_PU: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            /// Set this bit and force to enable clock signal of eFuse memory.
    +            EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +        }), base_address + 0x1c8);
    +
    +        /// address: 0x600089cc
    +        /// eFuse operation mode configuraiton register;
    +        pub const CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// 0x5A5A: Operate programming command 0x5AA5: Operate read command.
    +            OP_CODE: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x1cc);
    +
    +        /// address: 0x600089d0
    +        /// eFuse status register.
    +        pub const STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Indicates the state of the eFuse state machine.
    +            STATE: u4,
    +            /// The value of OTP_LOAD_SW.
    +            OTP_LOAD_SW: u1,
    +            /// The value of OTP_VDDQ_C_SYNC2.
    +            OTP_VDDQ_C_SYNC2: u1,
    +            /// The value of OTP_STROBE_SW.
    +            OTP_STROBE_SW: u1,
    +            /// The value of OTP_CSB_SW.
    +            OTP_CSB_SW: u1,
    +            /// The value of OTP_PGENB_SW.
    +            OTP_PGENB_SW: u1,
    +            /// The value of OTP_VDDQ_IS_SW.
    +            OTP_VDDQ_IS_SW: u1,
    +            /// Indicates the number of error bits during programming BLOCK0.
    +            REPEAT_ERR_CNT: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0x1d0);
    +
    +        /// address: 0x600089d4
    +        /// eFuse command register.
    +        pub const CMD = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set this bit to send read command.
    +            READ_CMD: u1,
    +            /// Set this bit to send programming command.
    +            PGM_CMD: u1,
    +            /// The serial number of the block to be programmed. Value 0-10 corresponds to block
    +            /// number 0-10, respectively.
    +            BLK_NUM: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +        }), base_address + 0x1d4);
    +
    +        /// address: 0x600089d8
    +        /// eFuse raw interrupt register.
    +        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The raw bit signal for read_done interrupt.
    +            READ_DONE_INT_RAW: u1,
    +            /// The raw bit signal for pgm_done interrupt.
    +            PGM_DONE_INT_RAW: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x1d8);
    +
    +        /// address: 0x600089dc
    +        /// eFuse interrupt status register.
    +        pub const INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The status signal for read_done interrupt.
    +            READ_DONE_INT_ST: u1,
    +            /// The status signal for pgm_done interrupt.
    +            PGM_DONE_INT_ST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x1dc);
    +
    +        /// address: 0x600089e0
    +        /// eFuse interrupt enable register.
    +        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The enable signal for read_done interrupt.
    +            READ_DONE_INT_ENA: u1,
    +            /// The enable signal for pgm_done interrupt.
    +            PGM_DONE_INT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x1e0);
    +
    +        /// address: 0x600089e4
    +        /// eFuse interrupt clear register.
    +        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The clear signal for read_done interrupt.
    +            READ_DONE_INT_CLR: u1,
    +            /// The clear signal for pgm_done interrupt.
    +            PGM_DONE_INT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x1e4);
    +
    +        /// address: 0x600089e8
    +        /// Controls the eFuse programming voltage.
    +        pub const DAC_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Controls the division factor of the rising clock of the programming voltage.
    +            DAC_CLK_DIV: u8,
    +            /// Don't care.
    +            DAC_CLK_PAD_SEL: u1,
    +            /// Controls the rising period of the programming voltage.
    +            DAC_NUM: u8,
    +            /// Reduces the power supply of the programming voltage.
    +            OE_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0x1e8);
    +
    +        /// address: 0x600089ec
    +        /// Configures read timing parameters.
    +        pub const RD_TIM_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            /// Configures the initial read time of eFuse.
    +            READ_INIT_NUM: u8,
    +        }), base_address + 0x1ec);
    +
    +        /// address: 0x600089f0
    +        /// Configurarion register 1 of eFuse programming timing parameters.
    +        pub const WR_TIM_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            /// Configures the power up time for VDDQ.
    +            PWR_ON_NUM: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +        }), base_address + 0x1f0);
    +
    +        /// address: 0x600089f4
    +        /// Configurarion register 2 of eFuse programming timing parameters.
    +        pub const WR_TIM_CONF2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Configures the power outage time for VDDQ.
    +            PWR_OFF_NUM: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x1f4);
    +
    +        /// address: 0x600089fc
    +        /// eFuse version register.
    +        pub const DATE = @intToPtr(*volatile MmioInt(32, u28), base_address + 0x1fc);
    +    };
    +
    +    /// External Memory
    +    pub const EXTMEM = struct {
    +        pub const base_address = 0x600c4000;
    +
    +        /// address: 0x600c4000
    +        /// This description will be updated in the near future.
    +        pub const ICACHE_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to activate the data cache. 0: disable, 1: enable
    +            ICACHE_ENABLE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x0);
    +
    +        /// address: 0x600c4004
    +        /// This description will be updated in the near future.
    +        pub const ICACHE_CTRL1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to disable core0 ibus, 0: enable, 1: disable
    +            ICACHE_SHUT_IBUS: u1,
    +            /// The bit is used to disable core1 ibus, 0: enable, 1: disable
    +            ICACHE_SHUT_DBUS: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x600c4008
    +        /// This description will be updated in the near future.
    +        pub const ICACHE_TAG_POWER_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to close clock gating of icache tag memory. 1: close gating, 0:
    +            /// open clock gating.
    +            ICACHE_TAG_MEM_FORCE_ON: u1,
    +            /// The bit is used to power icache tag memory down, 0: follow rtc_lslp, 1: power
    +            /// down
    +            ICACHE_TAG_MEM_FORCE_PD: u1,
    +            /// The bit is used to power icache tag memory up, 0: follow rtc_lslp, 1: power up
    +            ICACHE_TAG_MEM_FORCE_PU: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x600c400c
    +        /// This description will be updated in the near future.
    +        pub const ICACHE_PRELOCK_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to enable the first section of prelock function.
    +            ICACHE_PRELOCK_SCT0_EN: u1,
    +            /// The bit is used to enable the second section of prelock function.
    +            ICACHE_PRELOCK_SCT1_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x600c4010
    +        /// This description will be updated in the near future.
    +        pub const ICACHE_PRELOCK_SCT0_ADDR = @intToPtr(*volatile u32, base_address + 0x10);
    +
    +        /// address: 0x600c4014
    +        /// This description will be updated in the near future.
    +        pub const ICACHE_PRELOCK_SCT1_ADDR = @intToPtr(*volatile u32, base_address + 0x14);
    +
    +        /// address: 0x600c4018
    +        /// This description will be updated in the near future.
    +        pub const ICACHE_PRELOCK_SCT_SIZE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bits are used to configure the second length of data locking, which is
    +            /// combined with ICACHE_PRELOCK_SCT1_ADDR_REG
    +            ICACHE_PRELOCK_SCT1_SIZE: u16,
    +            /// The bits are used to configure the first length of data locking, which is
    +            /// combined with ICACHE_PRELOCK_SCT0_ADDR_REG
    +            ICACHE_PRELOCK_SCT0_SIZE: u16,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x600c401c
    +        /// This description will be updated in the near future.
    +        pub const ICACHE_LOCK_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to enable lock operation. It will be cleared by hardware after
    +            /// lock operation done.
    +            ICACHE_LOCK_ENA: u1,
    +            /// The bit is used to enable unlock operation. It will be cleared by hardware after
    +            /// unlock operation done.
    +            ICACHE_UNLOCK_ENA: u1,
    +            /// The bit is used to indicate unlock/lock operation is finished.
    +            ICACHE_LOCK_DONE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x600c4020
    +        /// This description will be updated in the near future.
    +        pub const ICACHE_LOCK_ADDR = @intToPtr(*volatile u32, base_address + 0x20);
    +
    +        /// address: 0x600c4024
    +        /// This description will be updated in the near future.
    +        pub const ICACHE_LOCK_SIZE = @intToPtr(*volatile MmioInt(32, u16), base_address + 0x24);
    +
    +        /// address: 0x600c4028
    +        /// This description will be updated in the near future.
    +        pub const ICACHE_SYNC_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to enable invalidate operation. It will be cleared by hardware
    +            /// after invalidate operation done.
    +            ICACHE_INVALIDATE_ENA: u1,
    +            /// The bit is used to indicate invalidate operation is finished.
    +            ICACHE_SYNC_DONE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x28);
    +
    +        /// address: 0x600c402c
    +        /// This description will be updated in the near future.
    +        pub const ICACHE_SYNC_ADDR = @intToPtr(*volatile u32, base_address + 0x2c);
    +
    +        /// address: 0x600c4030
    +        /// This description will be updated in the near future.
    +        pub const ICACHE_SYNC_SIZE = @intToPtr(*volatile MmioInt(32, u23), base_address + 0x30);
    +
    +        /// address: 0x600c4034
    +        /// This description will be updated in the near future.
    +        pub const ICACHE_PRELOAD_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to enable preload operation. It will be cleared by hardware
    +            /// after preload operation done.
    +            ICACHE_PRELOAD_ENA: u1,
    +            /// The bit is used to indicate preload operation is finished.
    +            ICACHE_PRELOAD_DONE: u1,
    +            /// The bit is used to configure the direction of preload operation. 1: descending,
    +            /// 0: ascending.
    +            ICACHE_PRELOAD_ORDER: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +        }), base_address + 0x34);
    +
    +        /// address: 0x600c4038
    +        /// This description will be updated in the near future.
    +        pub const ICACHE_PRELOAD_ADDR = @intToPtr(*volatile u32, base_address + 0x38);
    +
    +        /// address: 0x600c403c
    +        /// This description will be updated in the near future.
    +        pub const ICACHE_PRELOAD_SIZE = @intToPtr(*volatile MmioInt(32, u16), base_address + 0x3c);
    +
    +        /// address: 0x600c4040
    +        /// This description will be updated in the near future.
    +        pub const ICACHE_AUTOLOAD_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bits are used to enable the first section for autoload operation.
    +            ICACHE_AUTOLOAD_SCT0_ENA: u1,
    +            /// The bits are used to enable the second section for autoload operation.
    +            ICACHE_AUTOLOAD_SCT1_ENA: u1,
    +            /// The bit is used to enable and disable autoload operation. It is combined with
    +            /// icache_autoload_done. 1: enable, 0: disable.
    +            ICACHE_AUTOLOAD_ENA: u1,
    +            /// The bit is used to indicate autoload operation is finished.
    +            ICACHE_AUTOLOAD_DONE: u1,
    +            /// The bits are used to configure the direction of autoload. 1: descending, 0:
    +            /// ascending.
    +            ICACHE_AUTOLOAD_ORDER: u1,
    +            /// The bits are used to configure trigger conditions for autoload. 0/3: cache miss,
    +            /// 1: cache hit, 2: both cache miss and hit.
    +            ICACHE_AUTOLOAD_RQST: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x40);
    +
    +        /// address: 0x600c4044
    +        /// This description will be updated in the near future.
    +        pub const ICACHE_AUTOLOAD_SCT0_ADDR = @intToPtr(*volatile u32, base_address + 0x44);
    +
    +        /// address: 0x600c4048
    +        /// This description will be updated in the near future.
    +        pub const ICACHE_AUTOLOAD_SCT0_SIZE = @intToPtr(*volatile MmioInt(32, u27), base_address + 0x48);
    +
    +        /// address: 0x600c404c
    +        /// This description will be updated in the near future.
    +        pub const ICACHE_AUTOLOAD_SCT1_ADDR = @intToPtr(*volatile u32, base_address + 0x4c);
    +
    +        /// address: 0x600c4050
    +        /// This description will be updated in the near future.
    +        pub const ICACHE_AUTOLOAD_SCT1_SIZE = @intToPtr(*volatile MmioInt(32, u27), base_address + 0x50);
    +
    +        /// address: 0x600c4054
    +        /// This description will be updated in the near future.
    +        pub const IBUS_TO_FLASH_START_VADDR = @intToPtr(*volatile u32, base_address + 0x54);
    +
    +        /// address: 0x600c4058
    +        /// This description will be updated in the near future.
    +        pub const IBUS_TO_FLASH_END_VADDR = @intToPtr(*volatile u32, base_address + 0x58);
    +
    +        /// address: 0x600c405c
    +        /// This description will be updated in the near future.
    +        pub const DBUS_TO_FLASH_START_VADDR = @intToPtr(*volatile u32, base_address + 0x5c);
    +
    +        /// address: 0x600c4060
    +        /// This description will be updated in the near future.
    +        pub const DBUS_TO_FLASH_END_VADDR = @intToPtr(*volatile u32, base_address + 0x60);
    +
    +        /// address: 0x600c4064
    +        /// This description will be updated in the near future.
    +        pub const CACHE_ACS_CNT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to clear ibus counter.
    +            IBUS_ACS_CNT_CLR: u1,
    +            /// The bit is used to clear dbus counter.
    +            DBUS_ACS_CNT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x64);
    +
    +        /// address: 0x600c4068
    +        /// This description will be updated in the near future.
    +        pub const IBUS_ACS_MISS_CNT = @intToPtr(*volatile u32, base_address + 0x68);
    +
    +        /// address: 0x600c406c
    +        /// This description will be updated in the near future.
    +        pub const IBUS_ACS_CNT = @intToPtr(*volatile u32, base_address + 0x6c);
    +
    +        /// address: 0x600c4070
    +        /// This description will be updated in the near future.
    +        pub const DBUS_ACS_FLASH_MISS_CNT = @intToPtr(*volatile u32, base_address + 0x70);
    +
    +        /// address: 0x600c4074
    +        /// This description will be updated in the near future.
    +        pub const DBUS_ACS_CNT = @intToPtr(*volatile u32, base_address + 0x74);
    +
    +        /// address: 0x600c4078
    +        /// This description will be updated in the near future.
    +        pub const CACHE_ILG_INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to enable interrupt by sync configurations fault.
    +            ICACHE_SYNC_OP_FAULT_INT_ENA: u1,
    +            /// The bit is used to enable interrupt by preload configurations fault.
    +            ICACHE_PRELOAD_OP_FAULT_INT_ENA: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            /// The bit is used to enable interrupt by mmu entry fault.
    +            MMU_ENTRY_FAULT_INT_ENA: u1,
    +            reserved3: u1,
    +            /// The bit is used to enable interrupt by ibus counter overflow.
    +            IBUS_CNT_OVF_INT_ENA: u1,
    +            /// The bit is used to enable interrupt by dbus counter overflow.
    +            DBUS_CNT_OVF_INT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0x78);
    +
    +        /// address: 0x600c407c
    +        /// This description will be updated in the near future.
    +        pub const CACHE_ILG_INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to clear interrupt by sync configurations fault.
    +            ICACHE_SYNC_OP_FAULT_INT_CLR: u1,
    +            /// The bit is used to clear interrupt by preload configurations fault.
    +            ICACHE_PRELOAD_OP_FAULT_INT_CLR: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            /// The bit is used to clear interrupt by mmu entry fault.
    +            MMU_ENTRY_FAULT_INT_CLR: u1,
    +            reserved3: u1,
    +            /// The bit is used to clear interrupt by ibus counter overflow.
    +            IBUS_CNT_OVF_INT_CLR: u1,
    +            /// The bit is used to clear interrupt by dbus counter overflow.
    +            DBUS_CNT_OVF_INT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0x7c);
    +
    +        /// address: 0x600c4080
    +        /// This description will be updated in the near future.
    +        pub const CACHE_ILG_INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to indicate interrupt by sync configurations fault.
    +            ICACHE_SYNC_OP_FAULT_ST: u1,
    +            /// The bit is used to indicate interrupt by preload configurations fault.
    +            ICACHE_PRELOAD_OP_FAULT_ST: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            /// The bit is used to indicate interrupt by mmu entry fault.
    +            MMU_ENTRY_FAULT_ST: u1,
    +            reserved3: u1,
    +            /// The bit is used to indicate interrupt by ibus access flash/spiram counter
    +            /// overflow.
    +            IBUS_ACS_CNT_OVF_ST: u1,
    +            /// The bit is used to indicate interrupt by ibus access flash/spiram miss counter
    +            /// overflow.
    +            IBUS_ACS_MISS_CNT_OVF_ST: u1,
    +            /// The bit is used to indicate interrupt by dbus access flash/spiram counter
    +            /// overflow.
    +            DBUS_ACS_CNT_OVF_ST: u1,
    +            /// The bit is used to indicate interrupt by dbus access flash miss counter
    +            /// overflow.
    +            DBUS_ACS_FLASH_MISS_CNT_OVF_ST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x80);
    +
    +        /// address: 0x600c4084
    +        /// This description will be updated in the near future.
    +        pub const CORE0_ACS_CACHE_INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to enable interrupt by cpu access icache while the corresponding
    +            /// ibus is disabled which include speculative access.
    +            CORE0_IBUS_ACS_MSK_IC_INT_ENA: u1,
    +            /// The bit is used to enable interrupt by ibus trying to write icache
    +            CORE0_IBUS_WR_IC_INT_ENA: u1,
    +            /// The bit is used to enable interrupt by authentication fail.
    +            CORE0_IBUS_REJECT_INT_ENA: u1,
    +            /// The bit is used to enable interrupt by cpu access icache while the corresponding
    +            /// dbus is disabled which include speculative access.
    +            CORE0_DBUS_ACS_MSK_IC_INT_ENA: u1,
    +            /// The bit is used to enable interrupt by authentication fail.
    +            CORE0_DBUS_REJECT_INT_ENA: u1,
    +            /// The bit is used to enable interrupt by dbus trying to write icache
    +            CORE0_DBUS_WR_IC_INT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +        }), base_address + 0x84);
    +
    +        /// address: 0x600c4088
    +        /// This description will be updated in the near future.
    +        pub const CORE0_ACS_CACHE_INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to clear interrupt by cpu access icache while the corresponding
    +            /// ibus is disabled or icache is disabled which include speculative access.
    +            CORE0_IBUS_ACS_MSK_IC_INT_CLR: u1,
    +            /// The bit is used to clear interrupt by ibus trying to write icache
    +            CORE0_IBUS_WR_IC_INT_CLR: u1,
    +            /// The bit is used to clear interrupt by authentication fail.
    +            CORE0_IBUS_REJECT_INT_CLR: u1,
    +            /// The bit is used to clear interrupt by cpu access icache while the corresponding
    +            /// dbus is disabled or icache is disabled which include speculative access.
    +            CORE0_DBUS_ACS_MSK_IC_INT_CLR: u1,
    +            /// The bit is used to clear interrupt by authentication fail.
    +            CORE0_DBUS_REJECT_INT_CLR: u1,
    +            /// The bit is used to clear interrupt by dbus trying to write icache
    +            CORE0_DBUS_WR_IC_INT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +        }), base_address + 0x88);
    +
    +        /// address: 0x600c408c
    +        /// This description will be updated in the near future.
    +        pub const CORE0_ACS_CACHE_INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to indicate interrupt by cpu access icache while the core0_ibus
    +            /// is disabled or icache is disabled which include speculative access.
    +            CORE0_IBUS_ACS_MSK_ICACHE_ST: u1,
    +            /// The bit is used to indicate interrupt by ibus trying to write icache
    +            CORE0_IBUS_WR_ICACHE_ST: u1,
    +            /// The bit is used to indicate interrupt by authentication fail.
    +            CORE0_IBUS_REJECT_ST: u1,
    +            /// The bit is used to indicate interrupt by cpu access icache while the core0_dbus
    +            /// is disabled or icache is disabled which include speculative access.
    +            CORE0_DBUS_ACS_MSK_ICACHE_ST: u1,
    +            /// The bit is used to indicate interrupt by authentication fail.
    +            CORE0_DBUS_REJECT_ST: u1,
    +            /// The bit is used to indicate interrupt by dbus trying to write icache
    +            CORE0_DBUS_WR_ICACHE_ST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +        }), base_address + 0x8c);
    +
    +        /// address: 0x600c4090
    +        /// This description will be updated in the near future.
    +        pub const CORE0_DBUS_REJECT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bits are used to indicate the attribute of CPU access dbus when
    +            /// authentication fail. 0: invalidate, 1: execute-able, 2: read-able, 4:
    +            /// write-able.
    +            CORE0_DBUS_ATTR: u3,
    +            /// The bit is used to indicate the world of CPU access dbus when authentication
    +            /// fail. 0: WORLD0, 1: WORLD1
    +            CORE0_DBUS_WORLD: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x90);
    +
    +        /// address: 0x600c4094
    +        /// This description will be updated in the near future.
    +        pub const CORE0_DBUS_REJECT_VADDR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bits are used to indicate the virtual address of CPU access dbus when
    +            /// authentication fail.
    +            CORE0_DBUS_VADDR: u32,
    +        }), base_address + 0x94);
    +
    +        /// address: 0x600c4098
    +        /// This description will be updated in the near future.
    +        pub const CORE0_IBUS_REJECT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bits are used to indicate the attribute of CPU access ibus when
    +            /// authentication fail. 0: invalidate, 1: execute-able, 2: read-able
    +            CORE0_IBUS_ATTR: u3,
    +            /// The bit is used to indicate the world of CPU access ibus when authentication
    +            /// fail. 0: WORLD0, 1: WORLD1
    +            CORE0_IBUS_WORLD: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x98);
    +
    +        /// address: 0x600c409c
    +        /// This description will be updated in the near future.
    +        pub const CORE0_IBUS_REJECT_VADDR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bits are used to indicate the virtual address of CPU access ibus when
    +            /// authentication fail.
    +            CORE0_IBUS_VADDR: u32,
    +        }), base_address + 0x9c);
    +
    +        /// address: 0x600c40a0
    +        /// This description will be updated in the near future.
    +        pub const CACHE_MMU_FAULT_CONTENT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bits are used to indicate the content of mmu entry which cause mmu fault..
    +            CACHE_MMU_FAULT_CONTENT: u10,
    +            /// The right-most 3 bits are used to indicate the operations which cause mmu fault
    +            /// occurrence. 0: default, 1: cpu miss, 2: preload miss, 3: writeback, 4: cpu miss
    +            /// evict recovery address, 5: load miss evict recovery address, 6: external dma tx,
    +            /// 7: external dma rx. The most significant bit is used to indicate this operation
    +            /// occurs in which one icache.
    +            CACHE_MMU_FAULT_CODE: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +        }), base_address + 0xa0);
    +
    +        /// address: 0x600c40a4
    +        /// This description will be updated in the near future.
    +        pub const CACHE_MMU_FAULT_VADDR = @intToPtr(*volatile u32, base_address + 0xa4);
    +
    +        /// address: 0x600c40a8
    +        /// This description will be updated in the near future.
    +        pub const CACHE_WRAP_AROUND_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to enable wrap around mode when read data from flash.
    +            CACHE_FLASH_WRAP_AROUND: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0xa8);
    +
    +        /// address: 0x600c40ac
    +        /// This description will be updated in the near future.
    +        pub const CACHE_MMU_POWER_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to enable clock gating to save power when access mmu memory, 0:
    +            /// enable, 1: disable
    +            CACHE_MMU_MEM_FORCE_ON: u1,
    +            /// The bit is used to power mmu memory down, 0: follow_rtc_lslp_pd, 1: power down
    +            CACHE_MMU_MEM_FORCE_PD: u1,
    +            /// The bit is used to power mmu memory down, 0: follow_rtc_lslp_pd, 1: power up
    +            CACHE_MMU_MEM_FORCE_PU: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +        }), base_address + 0xac);
    +
    +        /// address: 0x600c40b0
    +        /// This description will be updated in the near future.
    +        pub const CACHE_STATE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to indicate whether icache main fsm is in idle state or not. 1:
    +            /// in idle state, 0: not in idle state
    +            ICACHE_STATE: u12,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0xb0);
    +
    +        /// address: 0x600c40b4
    +        /// This description will be updated in the near future.
    +        pub const CACHE_ENCRYPT_DECRYPT_RECORD_DISABLE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Reserved.
    +            RECORD_DISABLE_DB_ENCRYPT: u1,
    +            /// Reserved.
    +            RECORD_DISABLE_G0CB_DECRYPT: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0xb4);
    +
    +        /// address: 0x600c40b8
    +        /// This description will be updated in the near future.
    +        pub const CACHE_ENCRYPT_DECRYPT_CLK_FORCE_ON = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to close clock gating of manual crypt clock. 1: close gating, 0:
    +            /// open clock gating.
    +            CLK_FORCE_ON_MANUAL_CRYPT: u1,
    +            /// The bit is used to close clock gating of automatic crypt clock. 1: close gating,
    +            /// 0: open clock gating.
    +            CLK_FORCE_ON_AUTO_CRYPT: u1,
    +            /// The bit is used to close clock gating of external memory encrypt and decrypt
    +            /// clock. 1: close gating, 0: open clock gating.
    +            CLK_FORCE_ON_CRYPT: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +        }), base_address + 0xb8);
    +
    +        /// address: 0x600c40bc
    +        /// This description will be updated in the near future.
    +        pub const CACHE_PRELOAD_INT_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to indicate the interrupt by icache pre-load done.
    +            ICACHE_PRELOAD_INT_ST: u1,
    +            /// The bit is used to enable the interrupt by icache pre-load done.
    +            ICACHE_PRELOAD_INT_ENA: u1,
    +            /// The bit is used to clear the interrupt by icache pre-load done.
    +            ICACHE_PRELOAD_INT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +        }), base_address + 0xbc);
    +
    +        /// address: 0x600c40c0
    +        /// This description will be updated in the near future.
    +        pub const CACHE_SYNC_INT_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to indicate the interrupt by icache sync done.
    +            ICACHE_SYNC_INT_ST: u1,
    +            /// The bit is used to enable the interrupt by icache sync done.
    +            ICACHE_SYNC_INT_ENA: u1,
    +            /// The bit is used to clear the interrupt by icache sync done.
    +            ICACHE_SYNC_INT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +        }), base_address + 0xc0);
    +
    +        /// address: 0x600c40c4
    +        /// This description will be updated in the near future.
    +        pub const CACHE_MMU_OWNER = @intToPtr(*volatile MmioInt(32, u4), base_address + 0xc4);
    +
    +        /// address: 0x600c40c8
    +        /// This description will be updated in the near future.
    +        pub const CACHE_CONF_MISC = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to disable checking mmu entry fault by preload operation.
    +            CACHE_IGNORE_PRELOAD_MMU_ENTRY_FAULT: u1,
    +            /// The bit is used to disable checking mmu entry fault by sync operation.
    +            CACHE_IGNORE_SYNC_MMU_ENTRY_FAULT: u1,
    +            /// The bit is used to enable cache trace function.
    +            CACHE_TRACE_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +        }), base_address + 0xc8);
    +
    +        /// address: 0x600c40cc
    +        /// This description will be updated in the near future.
    +        pub const ICACHE_FREEZE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to enable icache freeze mode
    +            ENA: u1,
    +            /// The bit is used to configure freeze mode, 0: assert busy if CPU miss 1: assert
    +            /// hit if CPU miss
    +            MODE: u1,
    +            /// The bit is used to indicate icache freeze success
    +            DONE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +        }), base_address + 0xcc);
    +
    +        /// address: 0x600c40d0
    +        /// This description will be updated in the near future.
    +        pub const ICACHE_ATOMIC_OPERATE_ENA = @intToPtr(*volatile MmioInt(32, u1), base_address + 0xd0);
    +
    +        /// address: 0x600c40d4
    +        /// This description will be updated in the near future.
    +        pub const CACHE_REQUEST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to disable request recording which could cause performance issue
    +            BYPASS: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0xd4);
    +
    +        /// address: 0x600c40d8
    +        /// This description will be updated in the near future.
    +        pub const IBUS_PMS_TBL_LOCK = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to configure the ibus permission control section boundary0
    +            IBUS_PMS_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0xd8);
    +
    +        /// address: 0x600c40dc
    +        /// This description will be updated in the near future.
    +        pub const IBUS_PMS_TBL_BOUNDARY0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to configure the ibus permission control section boundary0
    +            IBUS_PMS_BOUNDARY0: u12,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0xdc);
    +
    +        /// address: 0x600c40e0
    +        /// This description will be updated in the near future.
    +        pub const IBUS_PMS_TBL_BOUNDARY1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to configure the ibus permission control section boundary1
    +            IBUS_PMS_BOUNDARY1: u12,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0xe0);
    +
    +        /// address: 0x600c40e4
    +        /// This description will be updated in the near future.
    +        pub const IBUS_PMS_TBL_BOUNDARY2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to configure the ibus permission control section boundary2
    +            IBUS_PMS_BOUNDARY2: u12,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0xe4);
    +
    +        /// address: 0x600c40e8
    +        /// This description will be updated in the near future.
    +        pub const IBUS_PMS_TBL_ATTR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to configure attribute of the ibus permission control section1,
    +            /// bit0: fetch in world0, bit1: load in world0, bit2: fetch in world1, bit3: load
    +            /// in world1
    +            IBUS_PMS_SCT1_ATTR: u4,
    +            /// The bit is used to configure attribute of the ibus permission control section2,
    +            /// bit0: fetch in world0, bit1: load in world0, bit2: fetch in world1, bit3: load
    +            /// in world1
    +            IBUS_PMS_SCT2_ATTR: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0xe8);
    +
    +        /// address: 0x600c40ec
    +        /// This description will be updated in the near future.
    +        pub const DBUS_PMS_TBL_LOCK = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to configure the ibus permission control section boundary0
    +            DBUS_PMS_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0xec);
    +
    +        /// address: 0x600c40f0
    +        /// This description will be updated in the near future.
    +        pub const DBUS_PMS_TBL_BOUNDARY0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to configure the dbus permission control section boundary0
    +            DBUS_PMS_BOUNDARY0: u12,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0xf0);
    +
    +        /// address: 0x600c40f4
    +        /// This description will be updated in the near future.
    +        pub const DBUS_PMS_TBL_BOUNDARY1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to configure the dbus permission control section boundary1
    +            DBUS_PMS_BOUNDARY1: u12,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0xf4);
    +
    +        /// address: 0x600c40f8
    +        /// This description will be updated in the near future.
    +        pub const DBUS_PMS_TBL_BOUNDARY2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to configure the dbus permission control section boundary2
    +            DBUS_PMS_BOUNDARY2: u12,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0xf8);
    +
    +        /// address: 0x600c40fc
    +        /// This description will be updated in the near future.
    +        pub const DBUS_PMS_TBL_ATTR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to configure attribute of the dbus permission control section1,
    +            /// bit0: load in world0, bit2: load in world1
    +            DBUS_PMS_SCT1_ATTR: u2,
    +            /// The bit is used to configure attribute of the dbus permission control section2,
    +            /// bit0: load in world0, bit2: load in world1
    +            DBUS_PMS_SCT2_ATTR: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0xfc);
    +
    +        /// address: 0x600c4100
    +        /// This description will be updated in the near future.
    +        pub const CLOCK_GATE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// clock gate enable.
    +            CLK_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x100);
    +
    +        /// address: 0x600c43fc
    +        /// This description will be updated in the near future.
    +        pub const REG_DATE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// version information
    +            DATE: u28,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +        }), base_address + 0x3fc);
    +    };
    +
    +    /// General Purpose Input/Output
    +    pub const GPIO = struct {
    +        pub const base_address = 0x60004000;
    +
    +        /// address: 0x60004000
    +        /// GPIO bit select register
    +        pub const BT_SELECT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// GPIO bit select register
    +            BT_SEL: u32,
    +        }), base_address + 0x0);
    +
    +        /// address: 0x60004004
    +        /// GPIO output register
    +        pub const OUT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// GPIO output register for GPIO0-25
    +            DATA_ORIG: u26,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x60004008
    +        /// GPIO output set register
    +        pub const OUT_W1TS = @intToPtr(*volatile MmioInt(32, u26), base_address + 0x8);
    +
    +        /// address: 0x6000400c
    +        /// GPIO output clear register
    +        pub const OUT_W1TC = @intToPtr(*volatile MmioInt(32, u26), base_address + 0xc);
    +
    +        /// address: 0x6000401c
    +        /// GPIO sdio select register
    +        pub const SDIO_SELECT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// GPIO sdio select register
    +            SDIO_SEL: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x60004020
    +        /// GPIO output enable register
    +        pub const ENABLE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// GPIO output enable register for GPIO0-25
    +            DATA: u26,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +        }), base_address + 0x20);
    +
    +        /// address: 0x60004024
    +        /// GPIO output enable set register
    +        pub const ENABLE_W1TS = @intToPtr(*volatile MmioInt(32, u26), base_address + 0x24);
    +
    +        /// address: 0x60004028
    +        /// GPIO output enable clear register
    +        pub const ENABLE_W1TC = @intToPtr(*volatile MmioInt(32, u26), base_address + 0x28);
    +
    +        /// address: 0x60004038
    +        /// pad strapping register
    +        pub const STRAP = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// pad strapping register
    +            STRAPPING: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x38);
    +
    +        /// address: 0x6000403c
    +        /// GPIO input register
    +        pub const IN = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// GPIO input register for GPIO0-25
    +            DATA_NEXT: u26,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +        }), base_address + 0x3c);
    +
    +        /// address: 0x60004044
    +        /// GPIO interrupt status register
    +        pub const STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// GPIO interrupt status register for GPIO0-25
    +            INTERRUPT: u26,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +        }), base_address + 0x44);
    +
    +        /// address: 0x60004048
    +        /// GPIO interrupt status set register
    +        pub const STATUS_W1TS = @intToPtr(*volatile MmioInt(32, u26), base_address + 0x48);
    +
    +        /// address: 0x6000404c
    +        /// GPIO interrupt status clear register
    +        pub const STATUS_W1TC = @intToPtr(*volatile MmioInt(32, u26), base_address + 0x4c);
    +
    +        /// address: 0x6000405c
    +        /// GPIO PRO_CPU interrupt status register
    +        pub const PCPU_INT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// GPIO PRO_CPU interrupt status register for GPIO0-25
    +            PROCPU_INT: u26,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +        }), base_address + 0x5c);
    +
    +        /// address: 0x60004060
    +        /// GPIO PRO_CPU(not shielded) interrupt status register
    +        pub const PCPU_NMI_INT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// GPIO PRO_CPU(not shielded) interrupt status register for GPIO0-25
    +            PROCPU_NMI_INT: u26,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +        }), base_address + 0x60);
    +
    +        /// address: 0x60004064
    +        /// GPIO CPUSDIO interrupt status register
    +        pub const CPUSDIO_INT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// GPIO CPUSDIO interrupt status register for GPIO0-25
    +            SDIO_INT: u26,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +        }), base_address + 0x64);
    +
    +        /// address: 0x60004074
    +        /// GPIO pin configuration register
    +        pub const PIN0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0x74);
    +
    +        /// address: 0x60004078
    +        /// GPIO pin configuration register
    +        pub const PIN1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0x78);
    +
    +        /// address: 0x6000407c
    +        /// GPIO pin configuration register
    +        pub const PIN2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0x7c);
    +
    +        /// address: 0x60004080
    +        /// GPIO pin configuration register
    +        pub const PIN3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0x80);
    +
    +        /// address: 0x60004084
    +        /// GPIO pin configuration register
    +        pub const PIN4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0x84);
    +
    +        /// address: 0x60004088
    +        /// GPIO pin configuration register
    +        pub const PIN5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0x88);
    +
    +        /// address: 0x6000408c
    +        /// GPIO pin configuration register
    +        pub const PIN6 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0x8c);
    +
    +        /// address: 0x60004090
    +        /// GPIO pin configuration register
    +        pub const PIN7 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0x90);
    +
    +        /// address: 0x60004094
    +        /// GPIO pin configuration register
    +        pub const PIN8 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0x94);
    +
    +        /// address: 0x60004098
    +        /// GPIO pin configuration register
    +        pub const PIN9 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0x98);
    +
    +        /// address: 0x6000409c
    +        /// GPIO pin configuration register
    +        pub const PIN10 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0x9c);
    +
    +        /// address: 0x600040a0
    +        /// GPIO pin configuration register
    +        pub const PIN11 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0xa0);
    +
    +        /// address: 0x600040a4
    +        /// GPIO pin configuration register
    +        pub const PIN12 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0xa4);
    +
    +        /// address: 0x600040a8
    +        /// GPIO pin configuration register
    +        pub const PIN13 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0xa8);
    +
    +        /// address: 0x600040ac
    +        /// GPIO pin configuration register
    +        pub const PIN14 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0xac);
    +
    +        /// address: 0x600040b0
    +        /// GPIO pin configuration register
    +        pub const PIN15 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0xb0);
    +
    +        /// address: 0x600040b4
    +        /// GPIO pin configuration register
    +        pub const PIN16 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0xb4);
    +
    +        /// address: 0x600040b8
    +        /// GPIO pin configuration register
    +        pub const PIN17 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0xb8);
    +
    +        /// address: 0x600040bc
    +        /// GPIO pin configuration register
    +        pub const PIN18 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0xbc);
    +
    +        /// address: 0x600040c0
    +        /// GPIO pin configuration register
    +        pub const PIN19 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0xc0);
    +
    +        /// address: 0x600040c4
    +        /// GPIO pin configuration register
    +        pub const PIN20 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0xc4);
    +
    +        /// address: 0x600040c8
    +        /// GPIO pin configuration register
    +        pub const PIN21 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0xc8);
    +
    +        /// address: 0x600040cc
    +        /// GPIO pin configuration register
    +        pub const PIN22 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0xcc);
    +
    +        /// address: 0x600040d0
    +        /// GPIO pin configuration register
    +        pub const PIN23 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0xd0);
    +
    +        /// address: 0x600040d4
    +        /// GPIO pin configuration register
    +        pub const PIN24 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0xd4);
    +
    +        /// address: 0x600040d8
    +        /// GPIO pin configuration register
    +        pub const PIN25 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC2_BYPASS: u2,
    +            /// set this bit to select pad driver. 1:open-drain. :normal.
    +            PIN_PAD_DRIVER: u1,
    +            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    +            /// at posedge.
    +            PIN_SYNC1_BYPASS: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    +            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    +            /// 5:valid at high level
    +            PIN_INT_TYPE: u3,
    +            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +            PIN_WAKEUP_ENABLE: u1,
    +            /// reserved
    +            PIN_CONFIG: u2,
    +            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    +            /// interrupt.
    +            PIN_INT_ENA: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0xd8);
    +
    +        /// address: 0x6000414c
    +        /// GPIO interrupt source register
    +        pub const STATUS_NEXT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// GPIO interrupt source register for GPIO0-25
    +            STATUS_INTERRUPT_NEXT: u26,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +        }), base_address + 0x14c);
    +
    +        /// address: 0x60004154
    +        /// GPIO input function configuration register
    +        pub const FUNC0_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x154);
    +
    +        /// address: 0x60004158
    +        /// GPIO input function configuration register
    +        pub const FUNC1_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x158);
    +
    +        /// address: 0x6000415c
    +        /// GPIO input function configuration register
    +        pub const FUNC2_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x15c);
    +
    +        /// address: 0x60004160
    +        /// GPIO input function configuration register
    +        pub const FUNC3_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x160);
    +
    +        /// address: 0x60004164
    +        /// GPIO input function configuration register
    +        pub const FUNC4_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x164);
    +
    +        /// address: 0x60004168
    +        /// GPIO input function configuration register
    +        pub const FUNC5_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x168);
    +
    +        /// address: 0x6000416c
    +        /// GPIO input function configuration register
    +        pub const FUNC6_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x16c);
    +
    +        /// address: 0x60004170
    +        /// GPIO input function configuration register
    +        pub const FUNC7_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x170);
    +
    +        /// address: 0x60004174
    +        /// GPIO input function configuration register
    +        pub const FUNC8_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x174);
    +
    +        /// address: 0x60004178
    +        /// GPIO input function configuration register
    +        pub const FUNC9_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x178);
    +
    +        /// address: 0x6000417c
    +        /// GPIO input function configuration register
    +        pub const FUNC10_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x17c);
    +
    +        /// address: 0x60004180
    +        /// GPIO input function configuration register
    +        pub const FUNC11_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x180);
    +
    +        /// address: 0x60004184
    +        /// GPIO input function configuration register
    +        pub const FUNC12_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x184);
    +
    +        /// address: 0x60004188
    +        /// GPIO input function configuration register
    +        pub const FUNC13_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x188);
    +
    +        /// address: 0x6000418c
    +        /// GPIO input function configuration register
    +        pub const FUNC14_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x18c);
    +
    +        /// address: 0x60004190
    +        /// GPIO input function configuration register
    +        pub const FUNC15_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x190);
    +
    +        /// address: 0x60004194
    +        /// GPIO input function configuration register
    +        pub const FUNC16_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x194);
    +
    +        /// address: 0x60004198
    +        /// GPIO input function configuration register
    +        pub const FUNC17_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x198);
    +
    +        /// address: 0x6000419c
    +        /// GPIO input function configuration register
    +        pub const FUNC18_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x19c);
    +
    +        /// address: 0x600041a0
    +        /// GPIO input function configuration register
    +        pub const FUNC19_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x1a0);
    +
    +        /// address: 0x600041a4
    +        /// GPIO input function configuration register
    +        pub const FUNC20_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x1a4);
    +
    +        /// address: 0x600041a8
    +        /// GPIO input function configuration register
    +        pub const FUNC21_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x1a8);
    +
    +        /// address: 0x600041ac
    +        /// GPIO input function configuration register
    +        pub const FUNC22_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x1ac);
    +
    +        /// address: 0x600041b0
    +        /// GPIO input function configuration register
    +        pub const FUNC23_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x1b0);
    +
    +        /// address: 0x600041b4
    +        /// GPIO input function configuration register
    +        pub const FUNC24_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x1b4);
    +
    +        /// address: 0x600041b8
    +        /// GPIO input function configuration register
    +        pub const FUNC25_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x1b8);
    +
    +        /// address: 0x600041bc
    +        /// GPIO input function configuration register
    +        pub const FUNC26_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x1bc);
    +
    +        /// address: 0x600041c0
    +        /// GPIO input function configuration register
    +        pub const FUNC27_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x1c0);
    +
    +        /// address: 0x600041c4
    +        /// GPIO input function configuration register
    +        pub const FUNC28_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x1c4);
    +
    +        /// address: 0x600041c8
    +        /// GPIO input function configuration register
    +        pub const FUNC29_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x1c8);
    +
    +        /// address: 0x600041cc
    +        /// GPIO input function configuration register
    +        pub const FUNC30_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x1cc);
    +
    +        /// address: 0x600041d0
    +        /// GPIO input function configuration register
    +        pub const FUNC31_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x1d0);
    +
    +        /// address: 0x600041d4
    +        /// GPIO input function configuration register
    +        pub const FUNC32_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x1d4);
    +
    +        /// address: 0x600041d8
    +        /// GPIO input function configuration register
    +        pub const FUNC33_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x1d8);
    +
    +        /// address: 0x600041dc
    +        /// GPIO input function configuration register
    +        pub const FUNC34_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x1dc);
    +
    +        /// address: 0x600041e0
    +        /// GPIO input function configuration register
    +        pub const FUNC35_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x1e0);
    +
    +        /// address: 0x600041e4
    +        /// GPIO input function configuration register
    +        pub const FUNC36_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x1e4);
    +
    +        /// address: 0x600041e8
    +        /// GPIO input function configuration register
    +        pub const FUNC37_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x1e8);
    +
    +        /// address: 0x600041ec
    +        /// GPIO input function configuration register
    +        pub const FUNC38_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x1ec);
    +
    +        /// address: 0x600041f0
    +        /// GPIO input function configuration register
    +        pub const FUNC39_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x1f0);
    +
    +        /// address: 0x600041f4
    +        /// GPIO input function configuration register
    +        pub const FUNC40_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x1f4);
    +
    +        /// address: 0x600041f8
    +        /// GPIO input function configuration register
    +        pub const FUNC41_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x1f8);
    +
    +        /// address: 0x600041fc
    +        /// GPIO input function configuration register
    +        pub const FUNC42_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x1fc);
    +
    +        /// address: 0x60004200
    +        /// GPIO input function configuration register
    +        pub const FUNC43_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x200);
    +
    +        /// address: 0x60004204
    +        /// GPIO input function configuration register
    +        pub const FUNC44_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x204);
    +
    +        /// address: 0x60004208
    +        /// GPIO input function configuration register
    +        pub const FUNC45_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x208);
    +
    +        /// address: 0x6000420c
    +        /// GPIO input function configuration register
    +        pub const FUNC46_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x20c);
    +
    +        /// address: 0x60004210
    +        /// GPIO input function configuration register
    +        pub const FUNC47_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x210);
    +
    +        /// address: 0x60004214
    +        /// GPIO input function configuration register
    +        pub const FUNC48_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x214);
    +
    +        /// address: 0x60004218
    +        /// GPIO input function configuration register
    +        pub const FUNC49_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x218);
    +
    +        /// address: 0x6000421c
    +        /// GPIO input function configuration register
    +        pub const FUNC50_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x21c);
    +
    +        /// address: 0x60004220
    +        /// GPIO input function configuration register
    +        pub const FUNC51_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x220);
    +
    +        /// address: 0x60004224
    +        /// GPIO input function configuration register
    +        pub const FUNC52_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x224);
    +
    +        /// address: 0x60004228
    +        /// GPIO input function configuration register
    +        pub const FUNC53_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x228);
    +
    +        /// address: 0x6000422c
    +        /// GPIO input function configuration register
    +        pub const FUNC54_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x22c);
    +
    +        /// address: 0x60004230
    +        /// GPIO input function configuration register
    +        pub const FUNC55_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x230);
    +
    +        /// address: 0x60004234
    +        /// GPIO input function configuration register
    +        pub const FUNC56_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x234);
    +
    +        /// address: 0x60004238
    +        /// GPIO input function configuration register
    +        pub const FUNC57_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x238);
    +
    +        /// address: 0x6000423c
    +        /// GPIO input function configuration register
    +        pub const FUNC58_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x23c);
    +
    +        /// address: 0x60004240
    +        /// GPIO input function configuration register
    +        pub const FUNC59_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x240);
    +
    +        /// address: 0x60004244
    +        /// GPIO input function configuration register
    +        pub const FUNC60_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x244);
    +
    +        /// address: 0x60004248
    +        /// GPIO input function configuration register
    +        pub const FUNC61_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x248);
    +
    +        /// address: 0x6000424c
    +        /// GPIO input function configuration register
    +        pub const FUNC62_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x24c);
    +
    +        /// address: 0x60004250
    +        /// GPIO input function configuration register
    +        pub const FUNC63_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x250);
    +
    +        /// address: 0x60004254
    +        /// GPIO input function configuration register
    +        pub const FUNC64_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x254);
    +
    +        /// address: 0x60004258
    +        /// GPIO input function configuration register
    +        pub const FUNC65_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x258);
    +
    +        /// address: 0x6000425c
    +        /// GPIO input function configuration register
    +        pub const FUNC66_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x25c);
    +
    +        /// address: 0x60004260
    +        /// GPIO input function configuration register
    +        pub const FUNC67_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x260);
    +
    +        /// address: 0x60004264
    +        /// GPIO input function configuration register
    +        pub const FUNC68_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x264);
    +
    +        /// address: 0x60004268
    +        /// GPIO input function configuration register
    +        pub const FUNC69_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x268);
    +
    +        /// address: 0x6000426c
    +        /// GPIO input function configuration register
    +        pub const FUNC70_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x26c);
    +
    +        /// address: 0x60004270
    +        /// GPIO input function configuration register
    +        pub const FUNC71_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x270);
    +
    +        /// address: 0x60004274
    +        /// GPIO input function configuration register
    +        pub const FUNC72_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x274);
    +
    +        /// address: 0x60004278
    +        /// GPIO input function configuration register
    +        pub const FUNC73_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x278);
    +
    +        /// address: 0x6000427c
    +        /// GPIO input function configuration register
    +        pub const FUNC74_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x27c);
    +
    +        /// address: 0x60004280
    +        /// GPIO input function configuration register
    +        pub const FUNC75_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x280);
    +
    +        /// address: 0x60004284
    +        /// GPIO input function configuration register
    +        pub const FUNC76_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x284);
    +
    +        /// address: 0x60004288
    +        /// GPIO input function configuration register
    +        pub const FUNC77_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x288);
    +
    +        /// address: 0x6000428c
    +        /// GPIO input function configuration register
    +        pub const FUNC78_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x28c);
    +
    +        /// address: 0x60004290
    +        /// GPIO input function configuration register
    +        pub const FUNC79_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x290);
    +
    +        /// address: 0x60004294
    +        /// GPIO input function configuration register
    +        pub const FUNC80_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x294);
    +
    +        /// address: 0x60004298
    +        /// GPIO input function configuration register
    +        pub const FUNC81_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x298);
    +
    +        /// address: 0x6000429c
    +        /// GPIO input function configuration register
    +        pub const FUNC82_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x29c);
    +
    +        /// address: 0x600042a0
    +        /// GPIO input function configuration register
    +        pub const FUNC83_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x2a0);
    +
    +        /// address: 0x600042a4
    +        /// GPIO input function configuration register
    +        pub const FUNC84_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x2a4);
    +
    +        /// address: 0x600042a8
    +        /// GPIO input function configuration register
    +        pub const FUNC85_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x2a8);
    +
    +        /// address: 0x600042ac
    +        /// GPIO input function configuration register
    +        pub const FUNC86_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x2ac);
    +
    +        /// address: 0x600042b0
    +        /// GPIO input function configuration register
    +        pub const FUNC87_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x2b0);
    +
    +        /// address: 0x600042b4
    +        /// GPIO input function configuration register
    +        pub const FUNC88_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x2b4);
    +
    +        /// address: 0x600042b8
    +        /// GPIO input function configuration register
    +        pub const FUNC89_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x2b8);
    +
    +        /// address: 0x600042bc
    +        /// GPIO input function configuration register
    +        pub const FUNC90_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x2bc);
    +
    +        /// address: 0x600042c0
    +        /// GPIO input function configuration register
    +        pub const FUNC91_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x2c0);
    +
    +        /// address: 0x600042c4
    +        /// GPIO input function configuration register
    +        pub const FUNC92_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x2c4);
    +
    +        /// address: 0x600042c8
    +        /// GPIO input function configuration register
    +        pub const FUNC93_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x2c8);
    +
    +        /// address: 0x600042cc
    +        /// GPIO input function configuration register
    +        pub const FUNC94_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x2cc);
    +
    +        /// address: 0x600042d0
    +        /// GPIO input function configuration register
    +        pub const FUNC95_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x2d0);
    +
    +        /// address: 0x600042d4
    +        /// GPIO input function configuration register
    +        pub const FUNC96_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x2d4);
    +
    +        /// address: 0x600042d8
    +        /// GPIO input function configuration register
    +        pub const FUNC97_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x2d8);
    +
    +        /// address: 0x600042dc
    +        /// GPIO input function configuration register
    +        pub const FUNC98_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x2dc);
    +
    +        /// address: 0x600042e0
    +        /// GPIO input function configuration register
    +        pub const FUNC99_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x2e0);
    +
    +        /// address: 0x600042e4
    +        /// GPIO input function configuration register
    +        pub const FUNC100_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x2e4);
    +
    +        /// address: 0x600042e8
    +        /// GPIO input function configuration register
    +        pub const FUNC101_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x2e8);
    +
    +        /// address: 0x600042ec
    +        /// GPIO input function configuration register
    +        pub const FUNC102_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x2ec);
    +
    +        /// address: 0x600042f0
    +        /// GPIO input function configuration register
    +        pub const FUNC103_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x2f0);
    +
    +        /// address: 0x600042f4
    +        /// GPIO input function configuration register
    +        pub const FUNC104_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x2f4);
    +
    +        /// address: 0x600042f8
    +        /// GPIO input function configuration register
    +        pub const FUNC105_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x2f8);
    +
    +        /// address: 0x600042fc
    +        /// GPIO input function configuration register
    +        pub const FUNC106_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x2fc);
    +
    +        /// address: 0x60004300
    +        /// GPIO input function configuration register
    +        pub const FUNC107_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x300);
    +
    +        /// address: 0x60004304
    +        /// GPIO input function configuration register
    +        pub const FUNC108_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x304);
    +
    +        /// address: 0x60004308
    +        /// GPIO input function configuration register
    +        pub const FUNC109_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x308);
    +
    +        /// address: 0x6000430c
    +        /// GPIO input function configuration register
    +        pub const FUNC110_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x30c);
    +
    +        /// address: 0x60004310
    +        /// GPIO input function configuration register
    +        pub const FUNC111_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x310);
    +
    +        /// address: 0x60004314
    +        /// GPIO input function configuration register
    +        pub const FUNC112_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x314);
    +
    +        /// address: 0x60004318
    +        /// GPIO input function configuration register
    +        pub const FUNC113_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x318);
    +
    +        /// address: 0x6000431c
    +        /// GPIO input function configuration register
    +        pub const FUNC114_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x31c);
    +
    +        /// address: 0x60004320
    +        /// GPIO input function configuration register
    +        pub const FUNC115_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x320);
    +
    +        /// address: 0x60004324
    +        /// GPIO input function configuration register
    +        pub const FUNC116_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x324);
    +
    +        /// address: 0x60004328
    +        /// GPIO input function configuration register
    +        pub const FUNC117_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x328);
    +
    +        /// address: 0x6000432c
    +        /// GPIO input function configuration register
    +        pub const FUNC118_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x32c);
    +
    +        /// address: 0x60004330
    +        /// GPIO input function configuration register
    +        pub const FUNC119_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x330);
    +
    +        /// address: 0x60004334
    +        /// GPIO input function configuration register
    +        pub const FUNC120_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x334);
    +
    +        /// address: 0x60004338
    +        /// GPIO input function configuration register
    +        pub const FUNC121_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x338);
    +
    +        /// address: 0x6000433c
    +        /// GPIO input function configuration register
    +        pub const FUNC122_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x33c);
    +
    +        /// address: 0x60004340
    +        /// GPIO input function configuration register
    +        pub const FUNC123_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x340);
    +
    +        /// address: 0x60004344
    +        /// GPIO input function configuration register
    +        pub const FUNC124_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x344);
    +
    +        /// address: 0x60004348
    +        /// GPIO input function configuration register
    +        pub const FUNC125_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x348);
    +
    +        /// address: 0x6000434c
    +        /// GPIO input function configuration register
    +        pub const FUNC126_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x34c);
    +
    +        /// address: 0x60004350
    +        /// GPIO input function configuration register
    +        pub const FUNC127_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    +            /// high level. s=x3C: set this port always low level.
    +            IN_SEL: u5,
    +            /// set this bit to invert input signal. 1:invert. :not invert.
    +            IN_INV_SEL: u1,
    +            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +            SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x350);
    +
    +        /// address: 0x60004554
    +        /// GPIO output function select register
    +        pub const FUNC0_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x554);
    +
    +        /// address: 0x60004558
    +        /// GPIO output function select register
    +        pub const FUNC1_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x558);
    +
    +        /// address: 0x6000455c
    +        /// GPIO output function select register
    +        pub const FUNC2_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x55c);
    +
    +        /// address: 0x60004560
    +        /// GPIO output function select register
    +        pub const FUNC3_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x560);
    +
    +        /// address: 0x60004564
    +        /// GPIO output function select register
    +        pub const FUNC4_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x564);
    +
    +        /// address: 0x60004568
    +        /// GPIO output function select register
    +        pub const FUNC5_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x568);
    +
    +        /// address: 0x6000456c
    +        /// GPIO output function select register
    +        pub const FUNC6_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x56c);
    +
    +        /// address: 0x60004570
    +        /// GPIO output function select register
    +        pub const FUNC7_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x570);
    +
    +        /// address: 0x60004574
    +        /// GPIO output function select register
    +        pub const FUNC8_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x574);
    +
    +        /// address: 0x60004578
    +        /// GPIO output function select register
    +        pub const FUNC9_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x578);
    +
    +        /// address: 0x6000457c
    +        /// GPIO output function select register
    +        pub const FUNC10_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x57c);
    +
    +        /// address: 0x60004580
    +        /// GPIO output function select register
    +        pub const FUNC11_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x580);
    +
    +        /// address: 0x60004584
    +        /// GPIO output function select register
    +        pub const FUNC12_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x584);
    +
    +        /// address: 0x60004588
    +        /// GPIO output function select register
    +        pub const FUNC13_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x588);
    +
    +        /// address: 0x6000458c
    +        /// GPIO output function select register
    +        pub const FUNC14_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x58c);
    +
    +        /// address: 0x60004590
    +        /// GPIO output function select register
    +        pub const FUNC15_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x590);
    +
    +        /// address: 0x60004594
    +        /// GPIO output function select register
    +        pub const FUNC16_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x594);
    +
    +        /// address: 0x60004598
    +        /// GPIO output function select register
    +        pub const FUNC17_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x598);
    +
    +        /// address: 0x6000459c
    +        /// GPIO output function select register
    +        pub const FUNC18_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x59c);
    +
    +        /// address: 0x600045a0
    +        /// GPIO output function select register
    +        pub const FUNC19_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x5a0);
    +
    +        /// address: 0x600045a4
    +        /// GPIO output function select register
    +        pub const FUNC20_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x5a4);
    +
    +        /// address: 0x600045a8
    +        /// GPIO output function select register
    +        pub const FUNC21_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x5a8);
    +
    +        /// address: 0x600045ac
    +        /// GPIO output function select register
    +        pub const FUNC22_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x5ac);
    +
    +        /// address: 0x600045b0
    +        /// GPIO output function select register
    +        pub const FUNC23_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x5b0);
    +
    +        /// address: 0x600045b4
    +        /// GPIO output function select register
    +        pub const FUNC24_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x5b4);
    +
    +        /// address: 0x600045b8
    +        /// GPIO output function select register
    +        pub const FUNC25_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    +            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    +            /// GPIO_OUT_REG[n].
    +            OUT_SEL: u8,
    +            /// set this bit to invert output signal.1:invert.:not invert.
    +            INV_SEL: u1,
    +            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    +            /// enable signal.:use peripheral output enable signal.
    +            OEN_SEL: u1,
    +            /// set this bit to invert output enable signal.1:invert.:not invert.
    +            OEN_INV_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x5b8);
    +
    +        /// address: 0x6000462c
    +        /// GPIO clock gate register
    +        pub const CLOCK_GATE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this bit to enable GPIO clock gate
    +            CLK_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x62c);
    +
    +        /// address: 0x600046fc
    +        /// GPIO version register
    +        pub const REG_DATE = @intToPtr(*volatile MmioInt(32, u28), base_address + 0x6fc);
    +    };
    +
    +    /// Sigma-Delta Modulation
    +    pub const GPIOSD = struct {
    +        pub const base_address = 0x60004f00;
    +
    +        /// address: 0x60004f00
    +        /// Duty Cycle Configure Register of SDM%s
    +        pub const SIGMADELTA0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This field is used to configure the duty cycle of sigma delta modulation output.
    +            SD0_IN: u8,
    +            /// This field is used to set a divider value to divide APB clock.
    +            SD0_PRESCALE: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x0);
    +
    +        /// address: 0x60004f04
    +        /// Duty Cycle Configure Register of SDM%s
    +        pub const SIGMADELTA1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This field is used to configure the duty cycle of sigma delta modulation output.
    +            SD0_IN: u8,
    +            /// This field is used to set a divider value to divide APB clock.
    +            SD0_PRESCALE: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x60004f08
    +        /// Duty Cycle Configure Register of SDM%s
    +        pub const SIGMADELTA2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This field is used to configure the duty cycle of sigma delta modulation output.
    +            SD0_IN: u8,
    +            /// This field is used to set a divider value to divide APB clock.
    +            SD0_PRESCALE: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x60004f0c
    +        /// Duty Cycle Configure Register of SDM%s
    +        pub const SIGMADELTA3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This field is used to configure the duty cycle of sigma delta modulation output.
    +            SD0_IN: u8,
    +            /// This field is used to set a divider value to divide APB clock.
    +            SD0_PRESCALE: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x60004f20
    +        /// Clock Gating Configure Register
    +        pub const SIGMADELTA_CG = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            reserved25: u1,
    +            reserved26: u1,
    +            reserved27: u1,
    +            reserved28: u1,
    +            reserved29: u1,
    +            reserved30: u1,
    +            /// Clock enable bit of configuration registers for sigma delta modulation.
    +            CLK_EN: u1,
    +        }), base_address + 0x20);
    +
    +        /// address: 0x60004f24
    +        /// MISC Register
    +        pub const SIGMADELTA_MISC = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            reserved25: u1,
    +            reserved26: u1,
    +            reserved27: u1,
    +            reserved28: u1,
    +            reserved29: u1,
    +            /// Clock enable bit of sigma delta modulation.
    +            FUNCTION_CLK_EN: u1,
    +            /// Reserved.
    +            SPI_SWAP: u1,
    +        }), base_address + 0x24);
    +
    +        /// address: 0x60004f28
    +        /// Version Control Register
    +        pub const SIGMADELTA_VERSION = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Version control register.
    +            GPIO_SD_DATE: u28,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +        }), base_address + 0x28);
    +    };
    +
    +    /// HMAC (Hash-based Message Authentication Code) Accelerator
    +    pub const HMAC = struct {
    +        pub const base_address = 0x6003e000;
    +
    +        /// address: 0x6003e040
    +        /// Process control register 0.
    +        pub const SET_START = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x40);
    +
    +        /// address: 0x6003e044
    +        /// Configure purpose.
    +        pub const SET_PARA_PURPOSE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set hmac parameter purpose.
    +            PURPOSE_SET: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x44);
    +
    +        /// address: 0x6003e048
    +        /// Configure key.
    +        pub const SET_PARA_KEY = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set hmac parameter key.
    +            KEY_SET: u3,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +        }), base_address + 0x48);
    +
    +        /// address: 0x6003e04c
    +        /// Finish initial configuration.
    +        pub const SET_PARA_FINISH = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Finish hmac configuration.
    +            SET_PARA_END: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x4c);
    +
    +        /// address: 0x6003e050
    +        /// Process control register 1.
    +        pub const SET_MESSAGE_ONE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Call SHA to calculate one message block.
    +            SET_TEXT_ONE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x50);
    +
    +        /// address: 0x6003e054
    +        /// Process control register 2.
    +        pub const SET_MESSAGE_ING = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Continue typical hmac.
    +            SET_TEXT_ING: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x54);
    +
    +        /// address: 0x6003e058
    +        /// Process control register 3.
    +        pub const SET_MESSAGE_END = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Start hardware padding.
    +            SET_TEXT_END: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x58);
    +
    +        /// address: 0x6003e05c
    +        /// Process control register 4.
    +        pub const SET_RESULT_FINISH = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// After read result from upstream, then let hmac back to idle.
    +            SET_RESULT_END: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x5c);
    +
    +        /// address: 0x6003e060
    +        /// Invalidate register 0.
    +        pub const SET_INVALIDATE_JTAG = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x60);
    +
    +        /// address: 0x6003e064
    +        /// Invalidate register 1.
    +        pub const SET_INVALIDATE_DS = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x64);
    +
    +        /// address: 0x6003e068
    +        /// Error register.
    +        pub const QUERY_ERROR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Hmac configuration state. 0: key are agree with purpose. 1: error
    +            QUREY_CHECK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x68);
    +
    +        /// address: 0x6003e06c
    +        /// Busy register.
    +        pub const QUERY_BUSY = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Hmac state. 1'b0: idle. 1'b1: busy
    +            BUSY_STATE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x6c);
    +
    +        /// address: 0x6003e080
    +        /// Message block memory.
    +        pub const WR_MESSAGE_MEM = @intToPtr(*volatile [64]u8, base_address + 0x80);
    +
    +        /// address: 0x6003e0c0
    +        /// Result from upstream.
    +        pub const RD_RESULT_MEM = @intToPtr(*volatile [32]u8, base_address + 0xc0);
    +
    +        /// address: 0x6003e0f0
    +        /// Process control register 5.
    +        pub const SET_MESSAGE_PAD = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Start software padding.
    +            SET_TEXT_PAD: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0xf0);
    +
    +        /// address: 0x6003e0f4
    +        /// Process control register 6.
    +        pub const ONE_BLOCK = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Don't have to do padding.
    +            SET_ONE_BLOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0xf4);
    +
    +        /// address: 0x6003e0f8
    +        /// Jtag register 0.
    +        pub const SOFT_JTAG_CTRL = @intToPtr(*volatile MmioInt(32, u1), base_address + 0xf8);
    +
    +        /// address: 0x6003e0fc
    +        /// Jtag register 1.
    +        pub const WR_JTAG = @intToPtr(*volatile u32, base_address + 0xfc);
    +    };
    +
    +    /// I2C (Inter-Integrated Circuit) Controller
    +    pub const I2C0 = struct {
    +        pub const base_address = 0x60013000;
    +
    +        /// address: 0x60013000
    +        /// I2C_SCL_LOW_PERIOD_REG
    +        pub const SCL_LOW_PERIOD = @intToPtr(*volatile MmioInt(32, u9), base_address + 0x0);
    +
    +        /// address: 0x60013004
    +        /// I2C_CTR_REG
    +        pub const CTR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_sda_force_out
    +            SDA_FORCE_OUT: u1,
    +            /// reg_scl_force_out
    +            SCL_FORCE_OUT: u1,
    +            /// reg_sample_scl_level
    +            SAMPLE_SCL_LEVEL: u1,
    +            /// reg_rx_full_ack_level
    +            RX_FULL_ACK_LEVEL: u1,
    +            /// reg_ms_mode
    +            MS_MODE: u1,
    +            /// reg_trans_start
    +            TRANS_START: u1,
    +            /// reg_tx_lsb_first
    +            TX_LSB_FIRST: u1,
    +            /// reg_rx_lsb_first
    +            RX_LSB_FIRST: u1,
    +            /// reg_clk_en
    +            CLK_EN: u1,
    +            /// reg_arbitration_en
    +            ARBITRATION_EN: u1,
    +            /// reg_fsm_rst
    +            FSM_RST: u1,
    +            /// reg_conf_upgate
    +            CONF_UPGATE: u1,
    +            /// reg_slv_tx_auto_start_en
    +            SLV_TX_AUTO_START_EN: u1,
    +            /// reg_addr_10bit_rw_check_en
    +            ADDR_10BIT_RW_CHECK_EN: u1,
    +            /// reg_addr_broadcasting_en
    +            ADDR_BROADCASTING_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x60013008
    +        /// I2C_SR_REG
    +        pub const SR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_resp_rec
    +            RESP_REC: u1,
    +            /// reg_slave_rw
    +            SLAVE_RW: u1,
    +            reserved0: u1,
    +            /// reg_arb_lost
    +            ARB_LOST: u1,
    +            /// reg_bus_busy
    +            BUS_BUSY: u1,
    +            /// reg_slave_addressed
    +            SLAVE_ADDRESSED: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            /// reg_rxfifo_cnt
    +            RXFIFO_CNT: u6,
    +            /// reg_stretch_cause
    +            STRETCH_CAUSE: u2,
    +            reserved3: u1,
    +            reserved4: u1,
    +            /// reg_txfifo_cnt
    +            TXFIFO_CNT: u6,
    +            /// reg_scl_main_state_last
    +            SCL_MAIN_STATE_LAST: u3,
    +            reserved5: u1,
    +            /// reg_scl_state_last
    +            SCL_STATE_LAST: u3,
    +            padding0: u1,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x6001300c
    +        /// I2C_TO_REG
    +        pub const TO = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_time_out_value
    +            TIME_OUT_VALUE: u5,
    +            /// reg_time_out_en
    +            TIME_OUT_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x60013010
    +        /// I2C_SLAVE_ADDR_REG
    +        pub const SLAVE_ADDR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_slave_addr
    +            SLAVE_ADDR: u15,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            /// reg_addr_10bit_en
    +            ADDR_10BIT_EN: u1,
    +        }), base_address + 0x10);
    +
    +        /// address: 0x60013014
    +        /// I2C_FIFO_ST_REG
    +        pub const FIFO_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_rxfifo_raddr
    +            RXFIFO_RADDR: u5,
    +            /// reg_rxfifo_waddr
    +            RXFIFO_WADDR: u5,
    +            /// reg_txfifo_raddr
    +            TXFIFO_RADDR: u5,
    +            /// reg_txfifo_waddr
    +            TXFIFO_WADDR: u5,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// reg_slave_rw_point
    +            SLAVE_RW_POINT: u8,
    +            padding0: u1,
    +            padding1: u1,
    +        }), base_address + 0x14);
    +
    +        /// address: 0x60013018
    +        /// I2C_FIFO_CONF_REG
    +        pub const FIFO_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_rxfifo_wm_thrhd
    +            RXFIFO_WM_THRHD: u5,
    +            /// reg_txfifo_wm_thrhd
    +            TXFIFO_WM_THRHD: u5,
    +            /// reg_nonfifo_en
    +            NONFIFO_EN: u1,
    +            /// reg_fifo_addr_cfg_en
    +            FIFO_ADDR_CFG_EN: u1,
    +            /// reg_rx_fifo_rst
    +            RX_FIFO_RST: u1,
    +            /// reg_tx_fifo_rst
    +            TX_FIFO_RST: u1,
    +            /// reg_fifo_prt_en
    +            FIFO_PRT_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x6001301c
    +        /// I2C_FIFO_DATA_REG
    +        pub const DATA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_fifo_rdata
    +            FIFO_RDATA: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x60013020
    +        /// I2C_INT_RAW_REG
    +        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_rxfifo_wm_int_raw
    +            RXFIFO_WM_INT_RAW: u1,
    +            /// reg_txfifo_wm_int_raw
    +            TXFIFO_WM_INT_RAW: u1,
    +            /// reg_rxfifo_ovf_int_raw
    +            RXFIFO_OVF_INT_RAW: u1,
    +            /// reg_end_detect_int_raw
    +            END_DETECT_INT_RAW: u1,
    +            /// reg_byte_trans_done_int_raw
    +            BYTE_TRANS_DONE_INT_RAW: u1,
    +            /// reg_arbitration_lost_int_raw
    +            ARBITRATION_LOST_INT_RAW: u1,
    +            /// reg_mst_txfifo_udf_int_raw
    +            MST_TXFIFO_UDF_INT_RAW: u1,
    +            /// reg_trans_complete_int_raw
    +            TRANS_COMPLETE_INT_RAW: u1,
    +            /// reg_time_out_int_raw
    +            TIME_OUT_INT_RAW: u1,
    +            /// reg_trans_start_int_raw
    +            TRANS_START_INT_RAW: u1,
    +            /// reg_nack_int_raw
    +            NACK_INT_RAW: u1,
    +            /// reg_txfifo_ovf_int_raw
    +            TXFIFO_OVF_INT_RAW: u1,
    +            /// reg_rxfifo_udf_int_raw
    +            RXFIFO_UDF_INT_RAW: u1,
    +            /// reg_scl_st_to_int_raw
    +            SCL_ST_TO_INT_RAW: u1,
    +            /// reg_scl_main_st_to_int_raw
    +            SCL_MAIN_ST_TO_INT_RAW: u1,
    +            /// reg_det_start_int_raw
    +            DET_START_INT_RAW: u1,
    +            /// reg_slave_stretch_int_raw
    +            SLAVE_STRETCH_INT_RAW: u1,
    +            /// reg_general_call_int_raw
    +            GENERAL_CALL_INT_RAW: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0x20);
    +
    +        /// address: 0x60013024
    +        /// I2C_INT_CLR_REG
    +        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_rxfifo_wm_int_clr
    +            RXFIFO_WM_INT_CLR: u1,
    +            /// reg_txfifo_wm_int_clr
    +            TXFIFO_WM_INT_CLR: u1,
    +            /// reg_rxfifo_ovf_int_clr
    +            RXFIFO_OVF_INT_CLR: u1,
    +            /// reg_end_detect_int_clr
    +            END_DETECT_INT_CLR: u1,
    +            /// reg_byte_trans_done_int_clr
    +            BYTE_TRANS_DONE_INT_CLR: u1,
    +            /// reg_arbitration_lost_int_clr
    +            ARBITRATION_LOST_INT_CLR: u1,
    +            /// reg_mst_txfifo_udf_int_clr
    +            MST_TXFIFO_UDF_INT_CLR: u1,
    +            /// reg_trans_complete_int_clr
    +            TRANS_COMPLETE_INT_CLR: u1,
    +            /// reg_time_out_int_clr
    +            TIME_OUT_INT_CLR: u1,
    +            /// reg_trans_start_int_clr
    +            TRANS_START_INT_CLR: u1,
    +            /// reg_nack_int_clr
    +            NACK_INT_CLR: u1,
    +            /// reg_txfifo_ovf_int_clr
    +            TXFIFO_OVF_INT_CLR: u1,
    +            /// reg_rxfifo_udf_int_clr
    +            RXFIFO_UDF_INT_CLR: u1,
    +            /// reg_scl_st_to_int_clr
    +            SCL_ST_TO_INT_CLR: u1,
    +            /// reg_scl_main_st_to_int_clr
    +            SCL_MAIN_ST_TO_INT_CLR: u1,
    +            /// reg_det_start_int_clr
    +            DET_START_INT_CLR: u1,
    +            /// reg_slave_stretch_int_clr
    +            SLAVE_STRETCH_INT_CLR: u1,
    +            /// reg_general_call_int_clr
    +            GENERAL_CALL_INT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0x24);
    +
    +        /// address: 0x60013028
    +        /// I2C_INT_ENA_REG
    +        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_rxfifo_wm_int_ena
    +            RXFIFO_WM_INT_ENA: u1,
    +            /// reg_txfifo_wm_int_ena
    +            TXFIFO_WM_INT_ENA: u1,
    +            /// reg_rxfifo_ovf_int_ena
    +            RXFIFO_OVF_INT_ENA: u1,
    +            /// reg_end_detect_int_ena
    +            END_DETECT_INT_ENA: u1,
    +            /// reg_byte_trans_done_int_ena
    +            BYTE_TRANS_DONE_INT_ENA: u1,
    +            /// reg_arbitration_lost_int_ena
    +            ARBITRATION_LOST_INT_ENA: u1,
    +            /// reg_mst_txfifo_udf_int_ena
    +            MST_TXFIFO_UDF_INT_ENA: u1,
    +            /// reg_trans_complete_int_ena
    +            TRANS_COMPLETE_INT_ENA: u1,
    +            /// reg_time_out_int_ena
    +            TIME_OUT_INT_ENA: u1,
    +            /// reg_trans_start_int_ena
    +            TRANS_START_INT_ENA: u1,
    +            /// reg_nack_int_ena
    +            NACK_INT_ENA: u1,
    +            /// reg_txfifo_ovf_int_ena
    +            TXFIFO_OVF_INT_ENA: u1,
    +            /// reg_rxfifo_udf_int_ena
    +            RXFIFO_UDF_INT_ENA: u1,
    +            /// reg_scl_st_to_int_ena
    +            SCL_ST_TO_INT_ENA: u1,
    +            /// reg_scl_main_st_to_int_ena
    +            SCL_MAIN_ST_TO_INT_ENA: u1,
    +            /// reg_det_start_int_ena
    +            DET_START_INT_ENA: u1,
    +            /// reg_slave_stretch_int_ena
    +            SLAVE_STRETCH_INT_ENA: u1,
    +            /// reg_general_call_int_ena
    +            GENERAL_CALL_INT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0x28);
    +
    +        /// address: 0x6001302c
    +        /// I2C_INT_STATUS_REG
    +        pub const INT_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_rxfifo_wm_int_st
    +            RXFIFO_WM_INT_ST: u1,
    +            /// reg_txfifo_wm_int_st
    +            TXFIFO_WM_INT_ST: u1,
    +            /// reg_rxfifo_ovf_int_st
    +            RXFIFO_OVF_INT_ST: u1,
    +            /// reg_end_detect_int_st
    +            END_DETECT_INT_ST: u1,
    +            /// reg_byte_trans_done_int_st
    +            BYTE_TRANS_DONE_INT_ST: u1,
    +            /// reg_arbitration_lost_int_st
    +            ARBITRATION_LOST_INT_ST: u1,
    +            /// reg_mst_txfifo_udf_int_st
    +            MST_TXFIFO_UDF_INT_ST: u1,
    +            /// reg_trans_complete_int_st
    +            TRANS_COMPLETE_INT_ST: u1,
    +            /// reg_time_out_int_st
    +            TIME_OUT_INT_ST: u1,
    +            /// reg_trans_start_int_st
    +            TRANS_START_INT_ST: u1,
    +            /// reg_nack_int_st
    +            NACK_INT_ST: u1,
    +            /// reg_txfifo_ovf_int_st
    +            TXFIFO_OVF_INT_ST: u1,
    +            /// reg_rxfifo_udf_int_st
    +            RXFIFO_UDF_INT_ST: u1,
    +            /// reg_scl_st_to_int_st
    +            SCL_ST_TO_INT_ST: u1,
    +            /// reg_scl_main_st_to_int_st
    +            SCL_MAIN_ST_TO_INT_ST: u1,
    +            /// reg_det_start_int_st
    +            DET_START_INT_ST: u1,
    +            /// reg_slave_stretch_int_st
    +            SLAVE_STRETCH_INT_ST: u1,
    +            /// reg_general_call_int_st
    +            GENERAL_CALL_INT_ST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0x2c);
    +
    +        /// address: 0x60013030
    +        /// I2C_SDA_HOLD_REG
    +        pub const SDA_HOLD = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_sda_hold_time
    +            TIME: u9,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0x30);
    +
    +        /// address: 0x60013034
    +        /// I2C_SDA_SAMPLE_REG
    +        pub const SDA_SAMPLE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_sda_sample_time
    +            TIME: u9,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0x34);
    +
    +        /// address: 0x60013038
    +        /// I2C_SCL_HIGH_PERIOD_REG
    +        pub const SCL_HIGH_PERIOD = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_scl_high_period
    +            SCL_HIGH_PERIOD: u9,
    +            /// reg_scl_wait_high_period
    +            SCL_WAIT_HIGH_PERIOD: u7,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x38);
    +
    +        /// address: 0x60013040
    +        /// I2C_SCL_START_HOLD_REG
    +        pub const SCL_START_HOLD = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_scl_start_hold_time
    +            TIME: u9,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0x40);
    +
    +        /// address: 0x60013044
    +        /// I2C_SCL_RSTART_SETUP_REG
    +        pub const SCL_RSTART_SETUP = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_scl_rstart_setup_time
    +            TIME: u9,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0x44);
    +
    +        /// address: 0x60013048
    +        /// I2C_SCL_STOP_HOLD_REG
    +        pub const SCL_STOP_HOLD = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_scl_stop_hold_time
    +            TIME: u9,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0x48);
    +
    +        /// address: 0x6001304c
    +        /// I2C_SCL_STOP_SETUP_REG
    +        pub const SCL_STOP_SETUP = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_scl_stop_setup_time
    +            TIME: u9,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0x4c);
    +
    +        /// address: 0x60013050
    +        /// I2C_FILTER_CFG_REG
    +        pub const FILTER_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_scl_filter_thres
    +            SCL_FILTER_THRES: u4,
    +            /// reg_sda_filter_thres
    +            SDA_FILTER_THRES: u4,
    +            /// reg_scl_filter_en
    +            SCL_FILTER_EN: u1,
    +            /// reg_sda_filter_en
    +            SDA_FILTER_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +        }), base_address + 0x50);
    +
    +        /// address: 0x60013054
    +        /// I2C_CLK_CONF_REG
    +        pub const CLK_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_sclk_div_num
    +            SCLK_DIV_NUM: u8,
    +            /// reg_sclk_div_a
    +            SCLK_DIV_A: u6,
    +            /// reg_sclk_div_b
    +            SCLK_DIV_B: u6,
    +            /// reg_sclk_sel
    +            SCLK_SEL: u1,
    +            /// reg_sclk_active
    +            SCLK_ACTIVE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +        }), base_address + 0x54);
    +
    +        /// address: 0x60013058
    +        /// I2C_COMD%s_REG
    +        pub const COMD0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_command
    +            COMMAND: u14,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            /// reg_command_done
    +            COMMAND_DONE: u1,
    +        }), base_address + 0x58);
    +
    +        /// address: 0x6001305c
    +        /// I2C_COMD%s_REG
    +        pub const COMD1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_command
    +            COMMAND: u14,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            /// reg_command_done
    +            COMMAND_DONE: u1,
    +        }), base_address + 0x5c);
    +
    +        /// address: 0x60013060
    +        /// I2C_COMD%s_REG
    +        pub const COMD2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_command
    +            COMMAND: u14,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            /// reg_command_done
    +            COMMAND_DONE: u1,
    +        }), base_address + 0x60);
    +
    +        /// address: 0x60013064
    +        /// I2C_COMD%s_REG
    +        pub const COMD3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_command
    +            COMMAND: u14,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            /// reg_command_done
    +            COMMAND_DONE: u1,
    +        }), base_address + 0x64);
    +
    +        /// address: 0x60013068
    +        /// I2C_COMD%s_REG
    +        pub const COMD4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_command
    +            COMMAND: u14,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            /// reg_command_done
    +            COMMAND_DONE: u1,
    +        }), base_address + 0x68);
    +
    +        /// address: 0x6001306c
    +        /// I2C_COMD%s_REG
    +        pub const COMD5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_command
    +            COMMAND: u14,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            /// reg_command_done
    +            COMMAND_DONE: u1,
    +        }), base_address + 0x6c);
    +
    +        /// address: 0x60013070
    +        /// I2C_COMD%s_REG
    +        pub const COMD6 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_command
    +            COMMAND: u14,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            /// reg_command_done
    +            COMMAND_DONE: u1,
    +        }), base_address + 0x70);
    +
    +        /// address: 0x60013074
    +        /// I2C_COMD%s_REG
    +        pub const COMD7 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_command
    +            COMMAND: u14,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            /// reg_command_done
    +            COMMAND_DONE: u1,
    +        }), base_address + 0x74);
    +
    +        /// address: 0x60013078
    +        /// I2C_SCL_ST_TIME_OUT_REG
    +        pub const SCL_ST_TIME_OUT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_scl_st_to_regno more than 23
    +            SCL_ST_TO_I2C: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +        }), base_address + 0x78);
    +
    +        /// address: 0x6001307c
    +        /// I2C_SCL_MAIN_ST_TIME_OUT_REG
    +        pub const SCL_MAIN_ST_TIME_OUT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_scl_main_st_to_regno more than 23
    +            SCL_MAIN_ST_TO_I2C: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +        }), base_address + 0x7c);
    +
    +        /// address: 0x60013080
    +        /// I2C_SCL_SP_CONF_REG
    +        pub const SCL_SP_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_scl_rst_slv_en
    +            SCL_RST_SLV_EN: u1,
    +            /// reg_scl_rst_slv_num
    +            SCL_RST_SLV_NUM: u5,
    +            /// reg_scl_pd_en
    +            SCL_PD_EN: u1,
    +            /// reg_sda_pd_en
    +            SDA_PD_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x80);
    +
    +        /// address: 0x60013084
    +        /// I2C_SCL_STRETCH_CONF_REG
    +        pub const SCL_STRETCH_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_stretch_protect_num
    +            STRETCH_PROTECT_NUM: u10,
    +            /// reg_slave_scl_stretch_en
    +            SLAVE_SCL_STRETCH_EN: u1,
    +            /// reg_slave_scl_stretch_clr
    +            SLAVE_SCL_STRETCH_CLR: u1,
    +            /// reg_slave_byte_ack_ctl_en
    +            SLAVE_BYTE_ACK_CTL_EN: u1,
    +            /// reg_slave_byte_ack_lvl
    +            SLAVE_BYTE_ACK_LVL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +        }), base_address + 0x84);
    +
    +        /// address: 0x600130f8
    +        /// I2C_DATE_REG
    +        pub const DATE = @intToPtr(*volatile u32, base_address + 0xf8);
    +
    +        /// address: 0x60013100
    +        /// I2C_TXFIFO_START_ADDR_REG
    +        pub const TXFIFO_START_ADDR = @intToPtr(*volatile u32, base_address + 0x100);
    +
    +        /// address: 0x60013180
    +        /// I2C_RXFIFO_START_ADDR_REG
    +        pub const RXFIFO_START_ADDR = @intToPtr(*volatile u32, base_address + 0x180);
    +    };
    +
    +    /// I2S (Inter-IC Sound) Controller
    +    pub const I2S = struct {
    +        pub const base_address = 0x6002d000;
    +
    +        /// address: 0x6002d00c
    +        /// I2S interrupt raw register, valid in level.
    +        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The raw interrupt status bit for the i2s_rx_done_int interrupt
    +            RX_DONE_INT_RAW: u1,
    +            /// The raw interrupt status bit for the i2s_tx_done_int interrupt
    +            TX_DONE_INT_RAW: u1,
    +            /// The raw interrupt status bit for the i2s_rx_hung_int interrupt
    +            RX_HUNG_INT_RAW: u1,
    +            /// The raw interrupt status bit for the i2s_tx_hung_int interrupt
    +            TX_HUNG_INT_RAW: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x6002d010
    +        /// I2S interrupt status register.
    +        pub const INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The masked interrupt status bit for the i2s_rx_done_int interrupt
    +            RX_DONE_INT_ST: u1,
    +            /// The masked interrupt status bit for the i2s_tx_done_int interrupt
    +            TX_DONE_INT_ST: u1,
    +            /// The masked interrupt status bit for the i2s_rx_hung_int interrupt
    +            RX_HUNG_INT_ST: u1,
    +            /// The masked interrupt status bit for the i2s_tx_hung_int interrupt
    +            TX_HUNG_INT_ST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x10);
    +
    +        /// address: 0x6002d014
    +        /// I2S interrupt enable register.
    +        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The interrupt enable bit for the i2s_rx_done_int interrupt
    +            RX_DONE_INT_ENA: u1,
    +            /// The interrupt enable bit for the i2s_tx_done_int interrupt
    +            TX_DONE_INT_ENA: u1,
    +            /// The interrupt enable bit for the i2s_rx_hung_int interrupt
    +            RX_HUNG_INT_ENA: u1,
    +            /// The interrupt enable bit for the i2s_tx_hung_int interrupt
    +            TX_HUNG_INT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x14);
    +
    +        /// address: 0x6002d018
    +        /// I2S interrupt clear register.
    +        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set this bit to clear the i2s_rx_done_int interrupt
    +            RX_DONE_INT_CLR: u1,
    +            /// Set this bit to clear the i2s_tx_done_int interrupt
    +            TX_DONE_INT_CLR: u1,
    +            /// Set this bit to clear the i2s_rx_hung_int interrupt
    +            RX_HUNG_INT_CLR: u1,
    +            /// Set this bit to clear the i2s_tx_hung_int interrupt
    +            TX_HUNG_INT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x6002d020
    +        /// I2S RX configure register
    +        pub const RX_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set this bit to reset receiver
    +            RX_RESET: u1,
    +            /// Set this bit to reset Rx AFIFO
    +            RX_FIFO_RESET: u1,
    +            /// Set this bit to start receiving data
    +            RX_START: u1,
    +            /// Set this bit to enable slave receiver mode
    +            RX_SLAVE_MOD: u1,
    +            reserved0: u1,
    +            /// Set this bit to enable receiver in mono mode
    +            RX_MONO: u1,
    +            reserved1: u1,
    +            /// I2S Rx byte endian, 1: low addr value to high addr. 0: low addr with low addr
    +            /// value.
    +            RX_BIG_ENDIAN: u1,
    +            /// Set 1 to update I2S RX registers from APB clock domain to I2S RX clock domain.
    +            /// This bit will be cleared by hardware after update register done.
    +            RX_UPDATE: u1,
    +            /// 1: The first channel data value is valid in I2S RX mono mode. 0: The second
    +            /// channel data value is valid in I2S RX mono mode.
    +            RX_MONO_FST_VLD: u1,
    +            /// I2S RX compress/decompress configuration bit. & 0 (atol): A-Law decompress, 1
    +            /// (ltoa) : A-Law compress, 2 (utol) : u-Law decompress, 3 (ltou) : u-Law compress.
    +            /// &
    +            RX_PCM_CONF: u2,
    +            /// Set this bit to bypass Compress/Decompress module for received data.
    +            RX_PCM_BYPASS: u1,
    +            /// 0 : I2S Rx only stop when reg_rx_start is cleared. 1: Stop when reg_rx_start is
    +            /// 0 or in_suc_eof is 1. 2: Stop I2S RX when reg_rx_start is 0 or RX FIFO is full.
    +            RX_STOP_MODE: u2,
    +            /// 1: I2S RX left alignment mode. 0: I2S RX right alignment mode.
    +            RX_LEFT_ALIGN: u1,
    +            /// 1: store 24 channel bits to 32 bits. 0:store 24 channel bits to 24 bits.
    +            RX_24_FILL_EN: u1,
    +            /// 0: WS should be 0 when receiving left channel data, and WS is 1in right channel.
    +            /// 1: WS should be 1 when receiving left channel data, and WS is 0in right channel.
    +            RX_WS_IDLE_POL: u1,
    +            /// I2S Rx bit endian. 1:small endian, the LSB is received first. 0:big endian, the
    +            /// MSB is received first.
    +            RX_BIT_ORDER: u1,
    +            /// 1: Enable I2S TDM Rx mode . 0: Disable.
    +            RX_TDM_EN: u1,
    +            /// 1: Enable I2S PDM Rx mode . 0: Disable.
    +            RX_PDM_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +        }), base_address + 0x20);
    +
    +        /// address: 0x6002d024
    +        /// I2S TX configure register
    +        pub const TX_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set this bit to reset transmitter
    +            TX_RESET: u1,
    +            /// Set this bit to reset Tx AFIFO
    +            TX_FIFO_RESET: u1,
    +            /// Set this bit to start transmitting data
    +            TX_START: u1,
    +            /// Set this bit to enable slave transmitter mode
    +            TX_SLAVE_MOD: u1,
    +            reserved0: u1,
    +            /// Set this bit to enable transmitter in mono mode
    +            TX_MONO: u1,
    +            /// 1: The value of Left channel data is equal to the value of right channel data in
    +            /// I2S TX mono mode or TDM channel select mode. 0: The invalid channel data is
    +            /// reg_i2s_single_data in I2S TX mono mode or TDM channel select mode.
    +            TX_CHAN_EQUAL: u1,
    +            /// I2S Tx byte endian, 1: low addr value to high addr. 0: low addr with low addr
    +            /// value.
    +            TX_BIG_ENDIAN: u1,
    +            /// Set 1 to update I2S TX registers from APB clock domain to I2S TX clock domain.
    +            /// This bit will be cleared by hardware after update register done.
    +            TX_UPDATE: u1,
    +            /// 1: The first channel data value is valid in I2S TX mono mode. 0: The second
    +            /// channel data value is valid in I2S TX mono mode.
    +            TX_MONO_FST_VLD: u1,
    +            /// I2S TX compress/decompress configuration bit. & 0 (atol): A-Law decompress, 1
    +            /// (ltoa) : A-Law compress, 2 (utol) : u-Law decompress, 3 (ltou) : u-Law compress.
    +            /// &
    +            TX_PCM_CONF: u2,
    +            /// Set this bit to bypass Compress/Decompress module for transmitted data.
    +            TX_PCM_BYPASS: u1,
    +            /// Set this bit to stop disable output BCK signal and WS signal when tx FIFO is
    +            /// emtpy
    +            TX_STOP_EN: u1,
    +            reserved1: u1,
    +            /// 1: I2S TX left alignment mode. 0: I2S TX right alignment mode.
    +            TX_LEFT_ALIGN: u1,
    +            /// 1: Sent 32 bits in 24 channel bits mode. 0: Sent 24 bits in 24 channel bits mode
    +            TX_24_FILL_EN: u1,
    +            /// 0: WS should be 0 when sending left channel data, and WS is 1in right channel.
    +            /// 1: WS should be 1 when sending left channel data, and WS is 0in right channel.
    +            TX_WS_IDLE_POL: u1,
    +            /// I2S Tx bit endian. 1:small endian, the LSB is sent first. 0:big endian, the MSB
    +            /// is sent first.
    +            TX_BIT_ORDER: u1,
    +            /// 1: Enable I2S TDM Tx mode . 0: Disable.
    +            TX_TDM_EN: u1,
    +            /// 1: Enable I2S PDM Tx mode . 0: Disable.
    +            TX_PDM_EN: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            /// I2S transmitter channel mode configuration bits.
    +            TX_CHAN_MOD: u3,
    +            /// Enable signal loop back mode with transmitter module and receiver module sharing
    +            /// the same WS and BCK signals.
    +            SIG_LOOPBACK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +        }), base_address + 0x24);
    +
    +        /// address: 0x6002d028
    +        /// I2S RX configure register 1
    +        pub const RX_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The width of rx_ws_out in TDM mode is (I2S_RX_TDM_WS_WIDTH[6:0] +1) * T_bck
    +            RX_TDM_WS_WIDTH: u7,
    +            /// Bit clock configuration bits in receiver mode.
    +            RX_BCK_DIV_NUM: u6,
    +            /// Set the bits to configure the valid data bit length of I2S receiver channel. 7:
    +            /// all the valid channel data is in 8-bit-mode. 15: all the valid channel data is
    +            /// in 16-bit-mode. 23: all the valid channel data is in 24-bit-mode. 31:all the
    +            /// valid channel data is in 32-bit-mode.
    +            RX_BITS_MOD: u5,
    +            /// I2S Rx half sample bits -1.
    +            RX_HALF_SAMPLE_BITS: u6,
    +            /// The Rx bit number for each channel minus 1in TDM mode.
    +            RX_TDM_CHAN_BITS: u5,
    +            /// Set this bit to enable receiver in Phillips standard mode
    +            RX_MSB_SHIFT: u1,
    +            padding0: u1,
    +            padding1: u1,
    +        }), base_address + 0x28);
    +
    +        /// address: 0x6002d02c
    +        /// I2S TX configure register 1
    +        pub const TX_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The width of tx_ws_out in TDM mode is (I2S_TX_TDM_WS_WIDTH[6:0] +1) * T_bck
    +            TX_TDM_WS_WIDTH: u7,
    +            /// Bit clock configuration bits in transmitter mode.
    +            TX_BCK_DIV_NUM: u6,
    +            /// Set the bits to configure the valid data bit length of I2S transmitter channel.
    +            /// 7: all the valid channel data is in 8-bit-mode. 15: all the valid channel data
    +            /// is in 16-bit-mode. 23: all the valid channel data is in 24-bit-mode. 31:all the
    +            /// valid channel data is in 32-bit-mode.
    +            TX_BITS_MOD: u5,
    +            /// I2S Tx half sample bits -1.
    +            TX_HALF_SAMPLE_BITS: u6,
    +            /// The Tx bit number for each channel minus 1in TDM mode.
    +            TX_TDM_CHAN_BITS: u5,
    +            /// Set this bit to enable transmitter in Phillips standard mode
    +            TX_MSB_SHIFT: u1,
    +            /// 1: BCK is not delayed to generate pos/neg edge in master mode. 0: BCK is delayed
    +            /// to generate pos/neg edge in master mode.
    +            TX_BCK_NO_DLY: u1,
    +            padding0: u1,
    +        }), base_address + 0x2c);
    +
    +        /// address: 0x6002d030
    +        /// I2S RX clock configure register
    +        pub const RX_CLKM_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Integral I2S clock divider value
    +            RX_CLKM_DIV_NUM: u8,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            /// I2S Rx module clock enable signal.
    +            RX_CLK_ACTIVE: u1,
    +            /// Select I2S Rx module source clock. 0: no clock. 1: APLL. 2: CLK160. 3:
    +            /// I2S_MCLK_in.
    +            RX_CLK_SEL: u2,
    +            /// 0: UseI2S Tx module clock as I2S_MCLK_OUT. 1: UseI2S Rx module clock as
    +            /// I2S_MCLK_OUT.
    +            MCLK_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +        }), base_address + 0x30);
    +
    +        /// address: 0x6002d034
    +        /// I2S TX clock configure register
    +        pub const TX_CLKM_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Integral I2S TX clock divider value. f_I2S_CLK = f_I2S_CLK_S/(N+b/a). There will
    +            /// be (a-b) * n-div and b * (n+1)-div. So the average combination will be: for b <=
    +            /// a/2, z * [x * n-div + (n+1)-div] + y * n-div. For b > a/2, z * [n-div + x *
    +            /// (n+1)-div] + y * (n+1)-div.
    +            TX_CLKM_DIV_NUM: u8,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            /// I2S Tx module clock enable signal.
    +            TX_CLK_ACTIVE: u1,
    +            /// Select I2S Tx module source clock. 0: XTAL clock. 1: APLL. 2: CLK160. 3:
    +            /// I2S_MCLK_in.
    +            TX_CLK_SEL: u2,
    +            /// Set this bit to enable clk gate
    +            CLK_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +        }), base_address + 0x34);
    +
    +        /// address: 0x6002d038
    +        /// I2S RX module clock divider configure register
    +        pub const RX_CLKM_DIV_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// For b <= a/2, the value of I2S_RX_CLKM_DIV_Z is b. For b > a/2, the value of
    +            /// I2S_RX_CLKM_DIV_Z is (a-b).
    +            RX_CLKM_DIV_Z: u9,
    +            /// For b <= a/2, the value of I2S_RX_CLKM_DIV_Y is (a%b) . For b > a/2, the value
    +            /// of I2S_RX_CLKM_DIV_Y is (a%(a-b)).
    +            RX_CLKM_DIV_Y: u9,
    +            /// For b <= a/2, the value of I2S_RX_CLKM_DIV_X is (a/b) - 1. For b > a/2, the
    +            /// value of I2S_RX_CLKM_DIV_X is (a/(a-b)) - 1.
    +            RX_CLKM_DIV_X: u9,
    +            /// For b <= a/2, the value of I2S_RX_CLKM_DIV_YN1 is 0 . For b > a/2, the value of
    +            /// I2S_RX_CLKM_DIV_YN1 is 1.
    +            RX_CLKM_DIV_YN1: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +        }), base_address + 0x38);
    +
    +        /// address: 0x6002d03c
    +        /// I2S TX module clock divider configure register
    +        pub const TX_CLKM_DIV_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// For b <= a/2, the value of I2S_TX_CLKM_DIV_Z is b. For b > a/2, the value of
    +            /// I2S_TX_CLKM_DIV_Z is (a-b).
    +            TX_CLKM_DIV_Z: u9,
    +            /// For b <= a/2, the value of I2S_TX_CLKM_DIV_Y is (a%b) . For b > a/2, the value
    +            /// of I2S_TX_CLKM_DIV_Y is (a%(a-b)).
    +            TX_CLKM_DIV_Y: u9,
    +            /// For b <= a/2, the value of I2S_TX_CLKM_DIV_X is (a/b) - 1. For b > a/2, the
    +            /// value of I2S_TX_CLKM_DIV_X is (a/(a-b)) - 1.
    +            TX_CLKM_DIV_X: u9,
    +            /// For b <= a/2, the value of I2S_TX_CLKM_DIV_YN1 is 0 . For b > a/2, the value of
    +            /// I2S_TX_CLKM_DIV_YN1 is 1.
    +            TX_CLKM_DIV_YN1: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +        }), base_address + 0x3c);
    +
    +        /// address: 0x6002d040
    +        /// I2S TX PCM2PDM configuration register
    +        pub const TX_PCM2PDM_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// I2S TX PDM bypass hp filter or not. The option has been removed.
    +            TX_PDM_HP_BYPASS: u1,
    +            /// I2S TX PDM OSR2 value
    +            TX_PDM_SINC_OSR2: u4,
    +            /// I2S TX PDM prescale for sigmadelta
    +            TX_PDM_PRESCALE: u8,
    +            /// I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4
    +            TX_PDM_HP_IN_SHIFT: u2,
    +            /// I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4
    +            TX_PDM_LP_IN_SHIFT: u2,
    +            /// I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4
    +            TX_PDM_SINC_IN_SHIFT: u2,
    +            /// I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4
    +            TX_PDM_SIGMADELTA_IN_SHIFT: u2,
    +            /// I2S TX PDM sigmadelta dither2 value
    +            TX_PDM_SIGMADELTA_DITHER2: u1,
    +            /// I2S TX PDM sigmadelta dither value
    +            TX_PDM_SIGMADELTA_DITHER: u1,
    +            /// I2S TX PDM dac mode enable
    +            TX_PDM_DAC_2OUT_EN: u1,
    +            /// I2S TX PDM dac 2channel enable
    +            TX_PDM_DAC_MODE_EN: u1,
    +            /// I2S TX PDM Converter enable
    +            PCM2PDM_CONV_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +        }), base_address + 0x40);
    +
    +        /// address: 0x6002d044
    +        /// I2S TX PCM2PDM configuration register
    +        pub const TX_PCM2PDM_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// I2S TX PDM Fp
    +            TX_PDM_FP: u10,
    +            /// I2S TX PDM Fs
    +            TX_PDM_FS: u10,
    +            /// The fourth parameter of PDM TX IIR_HP filter stage 2 is (504 +
    +            /// I2S_TX_IIR_HP_MULT12_5[2:0])
    +            TX_IIR_HP_MULT12_5: u3,
    +            /// The fourth parameter of PDM TX IIR_HP filter stage 1 is (504 +
    +            /// I2S_TX_IIR_HP_MULT12_0[2:0])
    +            TX_IIR_HP_MULT12_0: u3,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +        }), base_address + 0x44);
    +
    +        /// address: 0x6002d050
    +        /// I2S TX TDM mode control register
    +        pub const RX_TDM_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// 1: Enable the valid data input of I2S RX TDM or PDM channel 0. 0: Disable, just
    +            /// input 0 in this channel.
    +            RX_TDM_PDM_CHAN0_EN: u1,
    +            /// 1: Enable the valid data input of I2S RX TDM or PDM channel 1. 0: Disable, just
    +            /// input 0 in this channel.
    +            RX_TDM_PDM_CHAN1_EN: u1,
    +            /// 1: Enable the valid data input of I2S RX TDM or PDM channel 2. 0: Disable, just
    +            /// input 0 in this channel.
    +            RX_TDM_PDM_CHAN2_EN: u1,
    +            /// 1: Enable the valid data input of I2S RX TDM or PDM channel 3. 0: Disable, just
    +            /// input 0 in this channel.
    +            RX_TDM_PDM_CHAN3_EN: u1,
    +            /// 1: Enable the valid data input of I2S RX TDM or PDM channel 4. 0: Disable, just
    +            /// input 0 in this channel.
    +            RX_TDM_PDM_CHAN4_EN: u1,
    +            /// 1: Enable the valid data input of I2S RX TDM or PDM channel 5. 0: Disable, just
    +            /// input 0 in this channel.
    +            RX_TDM_PDM_CHAN5_EN: u1,
    +            /// 1: Enable the valid data input of I2S RX TDM or PDM channel 6. 0: Disable, just
    +            /// input 0 in this channel.
    +            RX_TDM_PDM_CHAN6_EN: u1,
    +            /// 1: Enable the valid data input of I2S RX TDM or PDM channel 7. 0: Disable, just
    +            /// input 0 in this channel.
    +            RX_TDM_PDM_CHAN7_EN: u1,
    +            /// 1: Enable the valid data input of I2S RX TDM channel 8. 0: Disable, just input 0
    +            /// in this channel.
    +            RX_TDM_CHAN8_EN: u1,
    +            /// 1: Enable the valid data input of I2S RX TDM channel 9. 0: Disable, just input 0
    +            /// in this channel.
    +            RX_TDM_CHAN9_EN: u1,
    +            /// 1: Enable the valid data input of I2S RX TDM channel 10. 0: Disable, just input
    +            /// 0 in this channel.
    +            RX_TDM_CHAN10_EN: u1,
    +            /// 1: Enable the valid data input of I2S RX TDM channel 11. 0: Disable, just input
    +            /// 0 in this channel.
    +            RX_TDM_CHAN11_EN: u1,
    +            /// 1: Enable the valid data input of I2S RX TDM channel 12. 0: Disable, just input
    +            /// 0 in this channel.
    +            RX_TDM_CHAN12_EN: u1,
    +            /// 1: Enable the valid data input of I2S RX TDM channel 13. 0: Disable, just input
    +            /// 0 in this channel.
    +            RX_TDM_CHAN13_EN: u1,
    +            /// 1: Enable the valid data input of I2S RX TDM channel 14. 0: Disable, just input
    +            /// 0 in this channel.
    +            RX_TDM_CHAN14_EN: u1,
    +            /// 1: Enable the valid data input of I2S RX TDM channel 15. 0: Disable, just input
    +            /// 0 in this channel.
    +            RX_TDM_CHAN15_EN: u1,
    +            /// The total channel number of I2S TX TDM mode.
    +            RX_TDM_TOT_CHAN_NUM: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x50);
    +
    +        /// address: 0x6002d054
    +        /// I2S TX TDM mode control register
    +        pub const TX_TDM_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// 1: Enable the valid data output of I2S TX TDM channel 0. 0: Disable, just output
    +            /// 0 in this channel.
    +            TX_TDM_CHAN0_EN: u1,
    +            /// 1: Enable the valid data output of I2S TX TDM channel 1. 0: Disable, just output
    +            /// 0 in this channel.
    +            TX_TDM_CHAN1_EN: u1,
    +            /// 1: Enable the valid data output of I2S TX TDM channel 2. 0: Disable, just output
    +            /// 0 in this channel.
    +            TX_TDM_CHAN2_EN: u1,
    +            /// 1: Enable the valid data output of I2S TX TDM channel 3. 0: Disable, just output
    +            /// 0 in this channel.
    +            TX_TDM_CHAN3_EN: u1,
    +            /// 1: Enable the valid data output of I2S TX TDM channel 4. 0: Disable, just output
    +            /// 0 in this channel.
    +            TX_TDM_CHAN4_EN: u1,
    +            /// 1: Enable the valid data output of I2S TX TDM channel 5. 0: Disable, just output
    +            /// 0 in this channel.
    +            TX_TDM_CHAN5_EN: u1,
    +            /// 1: Enable the valid data output of I2S TX TDM channel 6. 0: Disable, just output
    +            /// 0 in this channel.
    +            TX_TDM_CHAN6_EN: u1,
    +            /// 1: Enable the valid data output of I2S TX TDM channel 7. 0: Disable, just output
    +            /// 0 in this channel.
    +            TX_TDM_CHAN7_EN: u1,
    +            /// 1: Enable the valid data output of I2S TX TDM channel 8. 0: Disable, just output
    +            /// 0 in this channel.
    +            TX_TDM_CHAN8_EN: u1,
    +            /// 1: Enable the valid data output of I2S TX TDM channel 9. 0: Disable, just output
    +            /// 0 in this channel.
    +            TX_TDM_CHAN9_EN: u1,
    +            /// 1: Enable the valid data output of I2S TX TDM channel 10. 0: Disable, just
    +            /// output 0 in this channel.
    +            TX_TDM_CHAN10_EN: u1,
    +            /// 1: Enable the valid data output of I2S TX TDM channel 11. 0: Disable, just
    +            /// output 0 in this channel.
    +            TX_TDM_CHAN11_EN: u1,
    +            /// 1: Enable the valid data output of I2S TX TDM channel 12. 0: Disable, just
    +            /// output 0 in this channel.
    +            TX_TDM_CHAN12_EN: u1,
    +            /// 1: Enable the valid data output of I2S TX TDM channel 13. 0: Disable, just
    +            /// output 0 in this channel.
    +            TX_TDM_CHAN13_EN: u1,
    +            /// 1: Enable the valid data output of I2S TX TDM channel 14. 0: Disable, just
    +            /// output 0 in this channel.
    +            TX_TDM_CHAN14_EN: u1,
    +            /// 1: Enable the valid data output of I2S TX TDM channel 15. 0: Disable, just
    +            /// output 0 in this channel.
    +            TX_TDM_CHAN15_EN: u1,
    +            /// The total channel number of I2S TX TDM mode.
    +            TX_TDM_TOT_CHAN_NUM: u4,
    +            /// When DMA TX buffer stores the data of (REG_TX_TDM_TOT_CHAN_NUM + 1) channels,
    +            /// and only the data of the enabled channels is sent, then this bit should be set.
    +            /// Clear it when all the data stored in DMA TX buffer is for enabled channels.
    +            TX_TDM_SKIP_MSK_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +        }), base_address + 0x54);
    +
    +        /// address: 0x6002d058
    +        /// I2S RX timing control register
    +        pub const RX_TIMING = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The delay mode of I2S Rx SD input signal. 0: bypass. 1: delay by pos edge. 2:
    +            /// delay by neg edge. 3: not used.
    +            RX_SD_IN_DM: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            /// The delay mode of I2S Rx WS output signal. 0: bypass. 1: delay by pos edge. 2:
    +            /// delay by neg edge. 3: not used.
    +            RX_WS_OUT_DM: u2,
    +            reserved14: u1,
    +            reserved15: u1,
    +            /// The delay mode of I2S Rx BCK output signal. 0: bypass. 1: delay by pos edge. 2:
    +            /// delay by neg edge. 3: not used.
    +            RX_BCK_OUT_DM: u2,
    +            reserved16: u1,
    +            reserved17: u1,
    +            /// The delay mode of I2S Rx WS input signal. 0: bypass. 1: delay by pos edge. 2:
    +            /// delay by neg edge. 3: not used.
    +            RX_WS_IN_DM: u2,
    +            reserved18: u1,
    +            reserved19: u1,
    +            /// The delay mode of I2S Rx BCK input signal. 0: bypass. 1: delay by pos edge. 2:
    +            /// delay by neg edge. 3: not used.
    +            RX_BCK_IN_DM: u2,
    +            padding0: u1,
    +            padding1: u1,
    +        }), base_address + 0x58);
    +
    +        /// address: 0x6002d05c
    +        /// I2S TX timing control register
    +        pub const TX_TIMING = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The delay mode of I2S TX SD output signal. 0: bypass. 1: delay by pos edge. 2:
    +            /// delay by neg edge. 3: not used.
    +            TX_SD_OUT_DM: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// The delay mode of I2S TX SD1 output signal. 0: bypass. 1: delay by pos edge. 2:
    +            /// delay by neg edge. 3: not used.
    +            TX_SD1_OUT_DM: u2,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            /// The delay mode of I2S TX WS output signal. 0: bypass. 1: delay by pos edge. 2:
    +            /// delay by neg edge. 3: not used.
    +            TX_WS_OUT_DM: u2,
    +            reserved12: u1,
    +            reserved13: u1,
    +            /// The delay mode of I2S TX BCK output signal. 0: bypass. 1: delay by pos edge. 2:
    +            /// delay by neg edge. 3: not used.
    +            TX_BCK_OUT_DM: u2,
    +            reserved14: u1,
    +            reserved15: u1,
    +            /// The delay mode of I2S TX WS input signal. 0: bypass. 1: delay by pos edge. 2:
    +            /// delay by neg edge. 3: not used.
    +            TX_WS_IN_DM: u2,
    +            reserved16: u1,
    +            reserved17: u1,
    +            /// The delay mode of I2S TX BCK input signal. 0: bypass. 1: delay by pos edge. 2:
    +            /// delay by neg edge. 3: not used.
    +            TX_BCK_IN_DM: u2,
    +            padding0: u1,
    +            padding1: u1,
    +        }), base_address + 0x5c);
    +
    +        /// address: 0x6002d060
    +        /// I2S HUNG configure register.
    +        pub const LC_HUNG_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// the i2s_tx_hung_int interrupt or the i2s_rx_hung_int interrupt will be triggered
    +            /// when fifo hung counter is equal to this value
    +            LC_FIFO_TIMEOUT: u8,
    +            /// The bits are used to scale tick counter threshold. The tick counter is reset
    +            /// when counter value >= 88000/2^i2s_lc_fifo_timeout_shift
    +            LC_FIFO_TIMEOUT_SHIFT: u3,
    +            /// The enable bit for FIFO timeout
    +            LC_FIFO_TIMEOUT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0x60);
    +
    +        /// address: 0x6002d064
    +        /// I2S RX data number control register.
    +        pub const RXEOF_NUM = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The receive data bit length is (I2S_RX_BITS_MOD[4:0] + 1) *
    +            /// (REG_RX_EOF_NUM[11:0] + 1) . It will trigger in_suc_eof interrupt in the
    +            /// configured DMA RX channel.
    +            RX_EOF_NUM: u12,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0x64);
    +
    +        /// address: 0x6002d068
    +        /// I2S signal data register
    +        pub const CONF_SIGLE_DATA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The configured constant channel data to be sent out.
    +            SINGLE_DATA: u32,
    +        }), base_address + 0x68);
    +
    +        /// address: 0x6002d06c
    +        /// I2S TX status register
    +        pub const STATE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// 1: i2s_tx is idle state. 0: i2s_tx is working.
    +            TX_IDLE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x6c);
    +
    +        /// address: 0x6002d080
    +        /// Version control register
    +        pub const DATE = @intToPtr(*volatile MmioInt(32, u28), base_address + 0x80);
    +    };
    +
    +    /// Interrupt Core
    +    pub const INTERRUPT_CORE0 = struct {
    +        pub const base_address = 0x600c2000;
    +
    +        /// address: 0x600c2000
    +        /// mac intr map register
    +        pub const MAC_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x0);
    +
    +        /// address: 0x600c2004
    +        /// mac nmi_intr map register
    +        pub const MAC_NMI_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x4);
    +
    +        /// address: 0x600c2008
    +        /// pwr intr map register
    +        pub const PWR_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x8);
    +
    +        /// address: 0x600c200c
    +        /// bb intr map register
    +        pub const BB_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xc);
    +
    +        /// address: 0x600c2010
    +        /// bt intr map register
    +        pub const BT_MAC_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x10);
    +
    +        /// address: 0x600c2014
    +        /// bb_bt intr map register
    +        pub const BT_BB_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x14);
    +
    +        /// address: 0x600c2018
    +        /// bb_bt_nmi intr map register
    +        pub const BT_BB_NMI_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x18);
    +
    +        /// address: 0x600c201c
    +        /// rwbt intr map register
    +        pub const RWBT_IRQ_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x1c);
    +
    +        /// address: 0x600c2020
    +        /// rwble intr map register
    +        pub const RWBLE_IRQ_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x20);
    +
    +        /// address: 0x600c2024
    +        /// rwbt_nmi intr map register
    +        pub const RWBT_NMI_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x24);
    +
    +        /// address: 0x600c2028
    +        /// rwble_nmi intr map register
    +        pub const RWBLE_NMI_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x28);
    +
    +        /// address: 0x600c202c
    +        /// i2c intr map register
    +        pub const I2C_MST_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x2c);
    +
    +        /// address: 0x600c2030
    +        /// slc0 intr map register
    +        pub const SLC0_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x30);
    +
    +        /// address: 0x600c2034
    +        /// slc1 intr map register
    +        pub const SLC1_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x34);
    +
    +        /// address: 0x600c2038
    +        /// apb_ctrl intr map register
    +        pub const APB_CTRL_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x38);
    +
    +        /// address: 0x600c203c
    +        /// uchi0 intr map register
    +        pub const UHCI0_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x3c);
    +
    +        /// address: 0x600c2040
    +        /// gpio intr map register
    +        pub const GPIO_INTERRUPT_PRO_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x40);
    +
    +        /// address: 0x600c2044
    +        /// gpio_pro intr map register
    +        pub const GPIO_INTERRUPT_PRO_NMI_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x44);
    +
    +        /// address: 0x600c2048
    +        /// gpio_pro_nmi intr map register
    +        pub const SPI_INTR_1_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x48);
    +
    +        /// address: 0x600c204c
    +        /// spi1 intr map register
    +        pub const SPI_INTR_2_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x4c);
    +
    +        /// address: 0x600c2050
    +        /// spi2 intr map register
    +        pub const I2S1_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x50);
    +
    +        /// address: 0x600c2054
    +        /// i2s1 intr map register
    +        pub const UART_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x54);
    +
    +        /// address: 0x600c2058
    +        /// uart1 intr map register
    +        pub const UART1_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x58);
    +
    +        /// address: 0x600c205c
    +        /// ledc intr map register
    +        pub const LEDC_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x5c);
    +
    +        /// address: 0x600c2060
    +        /// efuse intr map register
    +        pub const EFUSE_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x60);
    +
    +        /// address: 0x600c2064
    +        /// can intr map register
    +        pub const CAN_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x64);
    +
    +        /// address: 0x600c2068
    +        /// usb intr map register
    +        pub const USB_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x68);
    +
    +        /// address: 0x600c206c
    +        /// rtc intr map register
    +        pub const RTC_CORE_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x6c);
    +
    +        /// address: 0x600c2070
    +        /// rmt intr map register
    +        pub const RMT_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x70);
    +
    +        /// address: 0x600c2074
    +        /// i2c intr map register
    +        pub const I2C_EXT0_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x74);
    +
    +        /// address: 0x600c2078
    +        /// timer1 intr map register
    +        pub const TIMER_INT1_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x78);
    +
    +        /// address: 0x600c207c
    +        /// timer2 intr map register
    +        pub const TIMER_INT2_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x7c);
    +
    +        /// address: 0x600c2080
    +        /// tg to intr map register
    +        pub const TG_T0_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x80);
    +
    +        /// address: 0x600c2084
    +        /// tg wdt intr map register
    +        pub const TG_WDT_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x84);
    +
    +        /// address: 0x600c2088
    +        /// tg1 to intr map register
    +        pub const TG1_T0_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x88);
    +
    +        /// address: 0x600c208c
    +        /// tg1 wdt intr map register
    +        pub const TG1_WDT_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x8c);
    +
    +        /// address: 0x600c2090
    +        /// cache ia intr map register
    +        pub const CACHE_IA_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x90);
    +
    +        /// address: 0x600c2094
    +        /// systimer intr map register
    +        pub const SYSTIMER_TARGET0_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x94);
    +
    +        /// address: 0x600c2098
    +        /// systimer target1 intr map register
    +        pub const SYSTIMER_TARGET1_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x98);
    +
    +        /// address: 0x600c209c
    +        /// systimer target2 intr map register
    +        pub const SYSTIMER_TARGET2_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x9c);
    +
    +        /// address: 0x600c20a0
    +        /// spi mem reject intr map register
    +        pub const SPI_MEM_REJECT_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xa0);
    +
    +        /// address: 0x600c20a4
    +        /// icache perload intr map register
    +        pub const ICACHE_PRELOAD_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xa4);
    +
    +        /// address: 0x600c20a8
    +        /// icache sync intr map register
    +        pub const ICACHE_SYNC_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xa8);
    +
    +        /// address: 0x600c20ac
    +        /// adc intr map register
    +        pub const APB_ADC_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xac);
    +
    +        /// address: 0x600c20b0
    +        /// dma ch0 intr map register
    +        pub const DMA_CH0_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xb0);
    +
    +        /// address: 0x600c20b4
    +        /// dma ch1 intr map register
    +        pub const DMA_CH1_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xb4);
    +
    +        /// address: 0x600c20b8
    +        /// dma ch2 intr map register
    +        pub const DMA_CH2_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xb8);
    +
    +        /// address: 0x600c20bc
    +        /// rsa intr map register
    +        pub const RSA_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xbc);
    +
    +        /// address: 0x600c20c0
    +        /// aes intr map register
    +        pub const AES_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xc0);
    +
    +        /// address: 0x600c20c4
    +        /// sha intr map register
    +        pub const SHA_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xc4);
    +
    +        /// address: 0x600c20c8
    +        /// cpu from cpu 0 intr map register
    +        pub const CPU_INTR_FROM_CPU_0_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xc8);
    +
    +        /// address: 0x600c20cc
    +        /// cpu from cpu 0 intr map register
    +        pub const CPU_INTR_FROM_CPU_1_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xcc);
    +
    +        /// address: 0x600c20d0
    +        /// cpu from cpu 1 intr map register
    +        pub const CPU_INTR_FROM_CPU_2_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xd0);
    +
    +        /// address: 0x600c20d4
    +        /// cpu from cpu 3 intr map register
    +        pub const CPU_INTR_FROM_CPU_3_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xd4);
    +
    +        /// address: 0x600c20d8
    +        /// assist debug intr map register
    +        pub const ASSIST_DEBUG_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xd8);
    +
    +        /// address: 0x600c20dc
    +        /// dma pms violatile intr map register
    +        pub const DMA_APBPERI_PMS_MONITOR_VIOLATE_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xdc);
    +
    +        /// address: 0x600c20e0
    +        /// iram0 pms violatile intr map register
    +        pub const CORE_0_IRAM0_PMS_MONITOR_VIOLATE_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xe0);
    +
    +        /// address: 0x600c20e4
    +        /// mac intr map register
    +        pub const CORE_0_DRAM0_PMS_MONITOR_VIOLATE_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xe4);
    +
    +        /// address: 0x600c20e8
    +        /// mac intr map register
    +        pub const CORE_0_PIF_PMS_MONITOR_VIOLATE_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xe8);
    +
    +        /// address: 0x600c20ec
    +        /// mac intr map register
    +        pub const CORE_0_PIF_PMS_MONITOR_VIOLATE_SIZE_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xec);
    +
    +        /// address: 0x600c20f0
    +        /// mac intr map register
    +        pub const BACKUP_PMS_VIOLATE_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xf0);
    +
    +        /// address: 0x600c20f4
    +        /// mac intr map register
    +        pub const CACHE_CORE0_ACS_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xf4);
    +
    +        /// address: 0x600c20f8
    +        /// mac intr map register
    +        pub const INTR_STATUS_REG_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_intr_status_0
    +            INTR_STATUS_0: u32,
    +        }), base_address + 0xf8);
    +
    +        /// address: 0x600c20fc
    +        /// mac intr map register
    +        pub const INTR_STATUS_REG_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_intr_status_1
    +            INTR_STATUS_1: u32,
    +        }), base_address + 0xfc);
    +
    +        /// address: 0x600c2100
    +        /// mac intr map register
    +        pub const CLOCK_GATE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_reg_clk_en
    +            REG_CLK_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x100);
    +
    +        /// address: 0x600c2104
    +        /// mac intr map register
    +        pub const CPU_INT_ENABLE = @intToPtr(*volatile u32, base_address + 0x104);
    +
    +        /// address: 0x600c2108
    +        /// mac intr map register
    +        pub const CPU_INT_TYPE = @intToPtr(*volatile u32, base_address + 0x108);
    +
    +        /// address: 0x600c210c
    +        /// mac intr map register
    +        pub const CPU_INT_CLEAR = @intToPtr(*volatile u32, base_address + 0x10c);
    +
    +        /// address: 0x600c2110
    +        /// mac intr map register
    +        pub const CPU_INT_EIP_STATUS = @intToPtr(*volatile u32, base_address + 0x110);
    +
    +        /// address: 0x600c2114
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_0_map
    +            CPU_PRI_0_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x114);
    +
    +        /// address: 0x600c2118
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_1_map
    +            CPU_PRI_1_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x118);
    +
    +        /// address: 0x600c211c
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_2_map
    +            CPU_PRI_2_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x11c);
    +
    +        /// address: 0x600c2120
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_3_map
    +            CPU_PRI_3_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x120);
    +
    +        /// address: 0x600c2124
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_4_map
    +            CPU_PRI_4_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x124);
    +
    +        /// address: 0x600c2128
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_5_map
    +            CPU_PRI_5_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x128);
    +
    +        /// address: 0x600c212c
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_6 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_6_map
    +            CPU_PRI_6_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x12c);
    +
    +        /// address: 0x600c2130
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_7 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_7_map
    +            CPU_PRI_7_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x130);
    +
    +        /// address: 0x600c2134
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_8 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_8_map
    +            CPU_PRI_8_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x134);
    +
    +        /// address: 0x600c2138
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_9 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_9_map
    +            CPU_PRI_9_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x138);
    +
    +        /// address: 0x600c213c
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_10 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_10_map
    +            CPU_PRI_10_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x13c);
    +
    +        /// address: 0x600c2140
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_11 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_11_map
    +            CPU_PRI_11_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x140);
    +
    +        /// address: 0x600c2144
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_12 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_12_map
    +            CPU_PRI_12_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x144);
    +
    +        /// address: 0x600c2148
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_13 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_13_map
    +            CPU_PRI_13_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x148);
    +
    +        /// address: 0x600c214c
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_14 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_14_map
    +            CPU_PRI_14_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x14c);
    +
    +        /// address: 0x600c2150
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_15 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_15_map
    +            CPU_PRI_15_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x150);
    +
    +        /// address: 0x600c2154
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_16 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_16_map
    +            CPU_PRI_16_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x154);
    +
    +        /// address: 0x600c2158
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_17 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_17_map
    +            CPU_PRI_17_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x158);
    +
    +        /// address: 0x600c215c
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_18 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_18_map
    +            CPU_PRI_18_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x15c);
    +
    +        /// address: 0x600c2160
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_19 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_19_map
    +            CPU_PRI_19_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x160);
    +
    +        /// address: 0x600c2164
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_20 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_20_map
    +            CPU_PRI_20_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x164);
    +
    +        /// address: 0x600c2168
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_21 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_21_map
    +            CPU_PRI_21_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x168);
    +
    +        /// address: 0x600c216c
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_22 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_22_map
    +            CPU_PRI_22_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x16c);
    +
    +        /// address: 0x600c2170
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_23 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_23_map
    +            CPU_PRI_23_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x170);
    +
    +        /// address: 0x600c2174
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_24 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_24_map
    +            CPU_PRI_24_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x174);
    +
    +        /// address: 0x600c2178
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_25 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_25_map
    +            CPU_PRI_25_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x178);
    +
    +        /// address: 0x600c217c
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_26 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_26_map
    +            CPU_PRI_26_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x17c);
    +
    +        /// address: 0x600c2180
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_27 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_27_map
    +            CPU_PRI_27_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x180);
    +
    +        /// address: 0x600c2184
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_28 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_28_map
    +            CPU_PRI_28_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x184);
    +
    +        /// address: 0x600c2188
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_29 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_29_map
    +            CPU_PRI_29_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x188);
    +
    +        /// address: 0x600c218c
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_30 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_30_map
    +            CPU_PRI_30_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x18c);
    +
    +        /// address: 0x600c2190
    +        /// mac intr map register
    +        pub const CPU_INT_PRI_31 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_core0_cpu_pri_31_map
    +            CPU_PRI_31_MAP: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x190);
    +
    +        /// address: 0x600c2194
    +        /// mac intr map register
    +        pub const CPU_INT_THRESH = @intToPtr(*volatile MmioInt(32, u4), base_address + 0x194);
    +
    +        /// address: 0x600c27fc
    +        /// mac intr map register
    +        pub const INTERRUPT_REG_DATE = @intToPtr(*volatile MmioInt(32, u28), base_address + 0x7fc);
    +    };
    +
    +    /// Input/Output Multiplexer
    +    pub const IO_MUX = struct {
    +        pub const base_address = 0x60009000;
    +
    +        /// address: 0x60009000
    +        /// Clock Output Configuration Register
    +        pub const PIN_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// If you want to output clock for I2S to CLK_OUT_out1, set this register to 0x0.
    +            /// CLK_OUT_out1 can be found in peripheral output signals.
    +            CLK_OUT1: u4,
    +            /// If you want to output clock for I2S to CLK_OUT_out2, set this register to 0x0.
    +            /// CLK_OUT_out2 can be found in peripheral output signals.
    +            CLK_OUT2: u4,
    +            /// If you want to output clock for I2S to CLK_OUT_out3, set this register to 0x0.
    +            /// CLK_OUT_out3 can be found in peripheral output signals.
    +            CLK_OUT3: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0x0);
    +
    +        /// address: 0x60009004
    +        /// IO MUX Configure Register for pad XTAL_32K_P
    +        pub const GPIO0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    +            MCU_OE: u1,
    +            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    +            SLP_SEL: u1,
    +            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    +            /// internal pull-down disabled.
    +            MCU_WPD: u1,
    +            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    +            /// internal pull-up disabled.
    +            MCU_WPU: u1,
    +            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    +            MCU_IE: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    +            /// pull-down disabled.
    +            FUN_WPD: u1,
    +            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    +            /// disabled.
    +            FUN_WPU: u1,
    +            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    +            FUN_IE: u1,
    +            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    +            FUN_DRV: u2,
    +            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    +            /// 2; etc.
    +            MCU_SEL: u3,
    +            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    +            FILTER_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x60009008
    +        /// IO MUX Configure Register for pad XTAL_32K_P
    +        pub const GPIO1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    +            MCU_OE: u1,
    +            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    +            SLP_SEL: u1,
    +            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    +            /// internal pull-down disabled.
    +            MCU_WPD: u1,
    +            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    +            /// internal pull-up disabled.
    +            MCU_WPU: u1,
    +            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    +            MCU_IE: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    +            /// pull-down disabled.
    +            FUN_WPD: u1,
    +            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    +            /// disabled.
    +            FUN_WPU: u1,
    +            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    +            FUN_IE: u1,
    +            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    +            FUN_DRV: u2,
    +            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    +            /// 2; etc.
    +            MCU_SEL: u3,
    +            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    +            FILTER_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x6000900c
    +        /// IO MUX Configure Register for pad XTAL_32K_P
    +        pub const GPIO2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    +            MCU_OE: u1,
    +            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    +            SLP_SEL: u1,
    +            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    +            /// internal pull-down disabled.
    +            MCU_WPD: u1,
    +            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    +            /// internal pull-up disabled.
    +            MCU_WPU: u1,
    +            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    +            MCU_IE: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    +            /// pull-down disabled.
    +            FUN_WPD: u1,
    +            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    +            /// disabled.
    +            FUN_WPU: u1,
    +            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    +            FUN_IE: u1,
    +            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    +            FUN_DRV: u2,
    +            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    +            /// 2; etc.
    +            MCU_SEL: u3,
    +            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    +            FILTER_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x60009010
    +        /// IO MUX Configure Register for pad XTAL_32K_P
    +        pub const GPIO3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    +            MCU_OE: u1,
    +            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    +            SLP_SEL: u1,
    +            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    +            /// internal pull-down disabled.
    +            MCU_WPD: u1,
    +            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    +            /// internal pull-up disabled.
    +            MCU_WPU: u1,
    +            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    +            MCU_IE: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    +            /// pull-down disabled.
    +            FUN_WPD: u1,
    +            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    +            /// disabled.
    +            FUN_WPU: u1,
    +            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    +            FUN_IE: u1,
    +            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    +            FUN_DRV: u2,
    +            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    +            /// 2; etc.
    +            MCU_SEL: u3,
    +            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    +            FILTER_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x10);
    +
    +        /// address: 0x60009014
    +        /// IO MUX Configure Register for pad XTAL_32K_P
    +        pub const GPIO4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    +            MCU_OE: u1,
    +            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    +            SLP_SEL: u1,
    +            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    +            /// internal pull-down disabled.
    +            MCU_WPD: u1,
    +            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    +            /// internal pull-up disabled.
    +            MCU_WPU: u1,
    +            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    +            MCU_IE: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    +            /// pull-down disabled.
    +            FUN_WPD: u1,
    +            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    +            /// disabled.
    +            FUN_WPU: u1,
    +            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    +            FUN_IE: u1,
    +            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    +            FUN_DRV: u2,
    +            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    +            /// 2; etc.
    +            MCU_SEL: u3,
    +            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    +            FILTER_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x14);
    +
    +        /// address: 0x60009018
    +        /// IO MUX Configure Register for pad XTAL_32K_P
    +        pub const GPIO5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    +            MCU_OE: u1,
    +            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    +            SLP_SEL: u1,
    +            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    +            /// internal pull-down disabled.
    +            MCU_WPD: u1,
    +            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    +            /// internal pull-up disabled.
    +            MCU_WPU: u1,
    +            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    +            MCU_IE: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    +            /// pull-down disabled.
    +            FUN_WPD: u1,
    +            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    +            /// disabled.
    +            FUN_WPU: u1,
    +            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    +            FUN_IE: u1,
    +            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    +            FUN_DRV: u2,
    +            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    +            /// 2; etc.
    +            MCU_SEL: u3,
    +            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    +            FILTER_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x6000901c
    +        /// IO MUX Configure Register for pad XTAL_32K_P
    +        pub const GPIO6 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    +            MCU_OE: u1,
    +            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    +            SLP_SEL: u1,
    +            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    +            /// internal pull-down disabled.
    +            MCU_WPD: u1,
    +            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    +            /// internal pull-up disabled.
    +            MCU_WPU: u1,
    +            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    +            MCU_IE: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    +            /// pull-down disabled.
    +            FUN_WPD: u1,
    +            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    +            /// disabled.
    +            FUN_WPU: u1,
    +            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    +            FUN_IE: u1,
    +            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    +            FUN_DRV: u2,
    +            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    +            /// 2; etc.
    +            MCU_SEL: u3,
    +            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    +            FILTER_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x60009020
    +        /// IO MUX Configure Register for pad XTAL_32K_P
    +        pub const GPIO7 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    +            MCU_OE: u1,
    +            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    +            SLP_SEL: u1,
    +            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    +            /// internal pull-down disabled.
    +            MCU_WPD: u1,
    +            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    +            /// internal pull-up disabled.
    +            MCU_WPU: u1,
    +            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    +            MCU_IE: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    +            /// pull-down disabled.
    +            FUN_WPD: u1,
    +            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    +            /// disabled.
    +            FUN_WPU: u1,
    +            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    +            FUN_IE: u1,
    +            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    +            FUN_DRV: u2,
    +            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    +            /// 2; etc.
    +            MCU_SEL: u3,
    +            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    +            FILTER_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x20);
    +
    +        /// address: 0x60009024
    +        /// IO MUX Configure Register for pad XTAL_32K_P
    +        pub const GPIO8 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    +            MCU_OE: u1,
    +            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    +            SLP_SEL: u1,
    +            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    +            /// internal pull-down disabled.
    +            MCU_WPD: u1,
    +            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    +            /// internal pull-up disabled.
    +            MCU_WPU: u1,
    +            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    +            MCU_IE: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    +            /// pull-down disabled.
    +            FUN_WPD: u1,
    +            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    +            /// disabled.
    +            FUN_WPU: u1,
    +            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    +            FUN_IE: u1,
    +            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    +            FUN_DRV: u2,
    +            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    +            /// 2; etc.
    +            MCU_SEL: u3,
    +            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    +            FILTER_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x24);
    +
    +        /// address: 0x60009028
    +        /// IO MUX Configure Register for pad XTAL_32K_P
    +        pub const GPIO9 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    +            MCU_OE: u1,
    +            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    +            SLP_SEL: u1,
    +            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    +            /// internal pull-down disabled.
    +            MCU_WPD: u1,
    +            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    +            /// internal pull-up disabled.
    +            MCU_WPU: u1,
    +            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    +            MCU_IE: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    +            /// pull-down disabled.
    +            FUN_WPD: u1,
    +            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    +            /// disabled.
    +            FUN_WPU: u1,
    +            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    +            FUN_IE: u1,
    +            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    +            FUN_DRV: u2,
    +            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    +            /// 2; etc.
    +            MCU_SEL: u3,
    +            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    +            FILTER_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x28);
    +
    +        /// address: 0x6000902c
    +        /// IO MUX Configure Register for pad XTAL_32K_P
    +        pub const GPIO10 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    +            MCU_OE: u1,
    +            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    +            SLP_SEL: u1,
    +            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    +            /// internal pull-down disabled.
    +            MCU_WPD: u1,
    +            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    +            /// internal pull-up disabled.
    +            MCU_WPU: u1,
    +            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    +            MCU_IE: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    +            /// pull-down disabled.
    +            FUN_WPD: u1,
    +            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    +            /// disabled.
    +            FUN_WPU: u1,
    +            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    +            FUN_IE: u1,
    +            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    +            FUN_DRV: u2,
    +            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    +            /// 2; etc.
    +            MCU_SEL: u3,
    +            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    +            FILTER_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x2c);
    +
    +        /// address: 0x60009030
    +        /// IO MUX Configure Register for pad XTAL_32K_P
    +        pub const GPIO11 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    +            MCU_OE: u1,
    +            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    +            SLP_SEL: u1,
    +            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    +            /// internal pull-down disabled.
    +            MCU_WPD: u1,
    +            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    +            /// internal pull-up disabled.
    +            MCU_WPU: u1,
    +            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    +            MCU_IE: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    +            /// pull-down disabled.
    +            FUN_WPD: u1,
    +            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    +            /// disabled.
    +            FUN_WPU: u1,
    +            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    +            FUN_IE: u1,
    +            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    +            FUN_DRV: u2,
    +            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    +            /// 2; etc.
    +            MCU_SEL: u3,
    +            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    +            FILTER_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x30);
    +
    +        /// address: 0x60009034
    +        /// IO MUX Configure Register for pad XTAL_32K_P
    +        pub const GPIO12 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    +            MCU_OE: u1,
    +            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    +            SLP_SEL: u1,
    +            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    +            /// internal pull-down disabled.
    +            MCU_WPD: u1,
    +            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    +            /// internal pull-up disabled.
    +            MCU_WPU: u1,
    +            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    +            MCU_IE: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    +            /// pull-down disabled.
    +            FUN_WPD: u1,
    +            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    +            /// disabled.
    +            FUN_WPU: u1,
    +            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    +            FUN_IE: u1,
    +            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    +            FUN_DRV: u2,
    +            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    +            /// 2; etc.
    +            MCU_SEL: u3,
    +            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    +            FILTER_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x34);
    +
    +        /// address: 0x60009038
    +        /// IO MUX Configure Register for pad XTAL_32K_P
    +        pub const GPIO13 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    +            MCU_OE: u1,
    +            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    +            SLP_SEL: u1,
    +            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    +            /// internal pull-down disabled.
    +            MCU_WPD: u1,
    +            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    +            /// internal pull-up disabled.
    +            MCU_WPU: u1,
    +            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    +            MCU_IE: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    +            /// pull-down disabled.
    +            FUN_WPD: u1,
    +            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    +            /// disabled.
    +            FUN_WPU: u1,
    +            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    +            FUN_IE: u1,
    +            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    +            FUN_DRV: u2,
    +            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    +            /// 2; etc.
    +            MCU_SEL: u3,
    +            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    +            FILTER_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x38);
    +
    +        /// address: 0x6000903c
    +        /// IO MUX Configure Register for pad XTAL_32K_P
    +        pub const GPIO14 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    +            MCU_OE: u1,
    +            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    +            SLP_SEL: u1,
    +            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    +            /// internal pull-down disabled.
    +            MCU_WPD: u1,
    +            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    +            /// internal pull-up disabled.
    +            MCU_WPU: u1,
    +            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    +            MCU_IE: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    +            /// pull-down disabled.
    +            FUN_WPD: u1,
    +            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    +            /// disabled.
    +            FUN_WPU: u1,
    +            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    +            FUN_IE: u1,
    +            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    +            FUN_DRV: u2,
    +            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    +            /// 2; etc.
    +            MCU_SEL: u3,
    +            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    +            FILTER_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x3c);
    +
    +        /// address: 0x60009040
    +        /// IO MUX Configure Register for pad XTAL_32K_P
    +        pub const GPIO15 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    +            MCU_OE: u1,
    +            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    +            SLP_SEL: u1,
    +            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    +            /// internal pull-down disabled.
    +            MCU_WPD: u1,
    +            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    +            /// internal pull-up disabled.
    +            MCU_WPU: u1,
    +            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    +            MCU_IE: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    +            /// pull-down disabled.
    +            FUN_WPD: u1,
    +            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    +            /// disabled.
    +            FUN_WPU: u1,
    +            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    +            FUN_IE: u1,
    +            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    +            FUN_DRV: u2,
    +            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    +            /// 2; etc.
    +            MCU_SEL: u3,
    +            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    +            FILTER_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x40);
    +
    +        /// address: 0x60009044
    +        /// IO MUX Configure Register for pad XTAL_32K_P
    +        pub const GPIO16 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    +            MCU_OE: u1,
    +            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    +            SLP_SEL: u1,
    +            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    +            /// internal pull-down disabled.
    +            MCU_WPD: u1,
    +            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    +            /// internal pull-up disabled.
    +            MCU_WPU: u1,
    +            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    +            MCU_IE: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    +            /// pull-down disabled.
    +            FUN_WPD: u1,
    +            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    +            /// disabled.
    +            FUN_WPU: u1,
    +            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    +            FUN_IE: u1,
    +            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    +            FUN_DRV: u2,
    +            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    +            /// 2; etc.
    +            MCU_SEL: u3,
    +            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    +            FILTER_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x44);
    +
    +        /// address: 0x60009048
    +        /// IO MUX Configure Register for pad XTAL_32K_P
    +        pub const GPIO17 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    +            MCU_OE: u1,
    +            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    +            SLP_SEL: u1,
    +            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    +            /// internal pull-down disabled.
    +            MCU_WPD: u1,
    +            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    +            /// internal pull-up disabled.
    +            MCU_WPU: u1,
    +            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    +            MCU_IE: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    +            /// pull-down disabled.
    +            FUN_WPD: u1,
    +            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    +            /// disabled.
    +            FUN_WPU: u1,
    +            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    +            FUN_IE: u1,
    +            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    +            FUN_DRV: u2,
    +            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    +            /// 2; etc.
    +            MCU_SEL: u3,
    +            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    +            FILTER_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x48);
    +
    +        /// address: 0x6000904c
    +        /// IO MUX Configure Register for pad XTAL_32K_P
    +        pub const GPIO18 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    +            MCU_OE: u1,
    +            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    +            SLP_SEL: u1,
    +            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    +            /// internal pull-down disabled.
    +            MCU_WPD: u1,
    +            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    +            /// internal pull-up disabled.
    +            MCU_WPU: u1,
    +            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    +            MCU_IE: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    +            /// pull-down disabled.
    +            FUN_WPD: u1,
    +            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    +            /// disabled.
    +            FUN_WPU: u1,
    +            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    +            FUN_IE: u1,
    +            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    +            FUN_DRV: u2,
    +            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    +            /// 2; etc.
    +            MCU_SEL: u3,
    +            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    +            FILTER_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x4c);
    +
    +        /// address: 0x60009050
    +        /// IO MUX Configure Register for pad XTAL_32K_P
    +        pub const GPIO19 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    +            MCU_OE: u1,
    +            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    +            SLP_SEL: u1,
    +            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    +            /// internal pull-down disabled.
    +            MCU_WPD: u1,
    +            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    +            /// internal pull-up disabled.
    +            MCU_WPU: u1,
    +            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    +            MCU_IE: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    +            /// pull-down disabled.
    +            FUN_WPD: u1,
    +            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    +            /// disabled.
    +            FUN_WPU: u1,
    +            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    +            FUN_IE: u1,
    +            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    +            FUN_DRV: u2,
    +            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    +            /// 2; etc.
    +            MCU_SEL: u3,
    +            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    +            FILTER_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x50);
    +
    +        /// address: 0x60009054
    +        /// IO MUX Configure Register for pad XTAL_32K_P
    +        pub const GPIO20 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    +            MCU_OE: u1,
    +            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    +            SLP_SEL: u1,
    +            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    +            /// internal pull-down disabled.
    +            MCU_WPD: u1,
    +            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    +            /// internal pull-up disabled.
    +            MCU_WPU: u1,
    +            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    +            MCU_IE: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    +            /// pull-down disabled.
    +            FUN_WPD: u1,
    +            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    +            /// disabled.
    +            FUN_WPU: u1,
    +            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    +            FUN_IE: u1,
    +            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    +            FUN_DRV: u2,
    +            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    +            /// 2; etc.
    +            MCU_SEL: u3,
    +            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    +            FILTER_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x54);
    +
    +        /// address: 0x60009058
    +        /// IO MUX Configure Register for pad XTAL_32K_P
    +        pub const GPIO21 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    +            MCU_OE: u1,
    +            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    +            SLP_SEL: u1,
    +            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    +            /// internal pull-down disabled.
    +            MCU_WPD: u1,
    +            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    +            /// internal pull-up disabled.
    +            MCU_WPU: u1,
    +            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    +            MCU_IE: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    +            /// pull-down disabled.
    +            FUN_WPD: u1,
    +            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    +            /// disabled.
    +            FUN_WPU: u1,
    +            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    +            FUN_IE: u1,
    +            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    +            FUN_DRV: u2,
    +            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    +            /// 2; etc.
    +            MCU_SEL: u3,
    +            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    +            FILTER_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x58);
    +
    +        /// address: 0x600090fc
    +        /// IO MUX Version Control Register
    +        pub const DATE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Version control register
    +            REG_DATE: u28,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +        }), base_address + 0xfc);
    +    };
    +
    +    /// LED Control PWM (Pulse Width Modulation)
    +    pub const LEDC = struct {
    +        pub const base_address = 0x60019000;
    +
    +        /// address: 0x60019000
    +        /// LEDC_LSCH0_CONF0.
    +        pub const LSCH0_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_timer_sel_lsch0.
    +            TIMER_SEL_LSCH0: u2,
    +            /// reg_sig_out_en_lsch0.
    +            SIG_OUT_EN_LSCH0: u1,
    +            /// reg_idle_lv_lsch0.
    +            IDLE_LV_LSCH0: u1,
    +            /// reg_para_up_lsch0.
    +            PARA_UP_LSCH0: u1,
    +            /// reg_ovf_num_lsch0.
    +            OVF_NUM_LSCH0: u10,
    +            /// reg_ovf_cnt_en_lsch0.
    +            OVF_CNT_EN_LSCH0: u1,
    +            /// reg_ovf_cnt_reset_lsch0.
    +            OVF_CNT_RESET_LSCH0: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +        }), base_address + 0x0);
    +
    +        /// address: 0x60019004
    +        /// LEDC_LSCH0_HPOINT.
    +        pub const LSCH0_HPOINT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_hpoint_lsch0.
    +            HPOINT_LSCH0: u14,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x60019008
    +        /// LEDC_LSCH0_DUTY.
    +        pub const LSCH0_DUTY = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_duty_lsch0.
    +            DUTY_LSCH0: u19,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x6001900c
    +        /// LEDC_LSCH0_CONF1.
    +        pub const LSCH0_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_duty_scale_lsch0.
    +            DUTY_SCALE_LSCH0: u10,
    +            /// reg_duty_cycle_lsch0.
    +            DUTY_CYCLE_LSCH0: u10,
    +            /// reg_duty_num_lsch0.
    +            DUTY_NUM_LSCH0: u10,
    +            /// reg_duty_inc_lsch0.
    +            DUTY_INC_LSCH0: u1,
    +            /// reg_duty_start_lsch0.
    +            DUTY_START_LSCH0: u1,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x60019010
    +        /// LEDC_LSCH0_DUTY_R.
    +        pub const LSCH0_DUTY_R = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_duty_lsch0_r.
    +            DUTY_LSCH0_R: u19,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +        }), base_address + 0x10);
    +
    +        /// address: 0x60019014
    +        /// LEDC_LSCH1_CONF0.
    +        pub const LSCH1_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_timer_sel_lsch1.
    +            TIMER_SEL_LSCH1: u2,
    +            /// reg_sig_out_en_lsch1.
    +            SIG_OUT_EN_LSCH1: u1,
    +            /// reg_idle_lv_lsch1.
    +            IDLE_LV_LSCH1: u1,
    +            /// reg_para_up_lsch1.
    +            PARA_UP_LSCH1: u1,
    +            /// reg_ovf_num_lsch1.
    +            OVF_NUM_LSCH1: u10,
    +            /// reg_ovf_cnt_en_lsch1.
    +            OVF_CNT_EN_LSCH1: u1,
    +            /// reg_ovf_cnt_reset_lsch1.
    +            OVF_CNT_RESET_LSCH1: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +        }), base_address + 0x14);
    +
    +        /// address: 0x60019018
    +        /// LEDC_LSCH1_HPOINT.
    +        pub const LSCH1_HPOINT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_hpoint_lsch1.
    +            HPOINT_LSCH1: u14,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x6001901c
    +        /// LEDC_LSCH1_DUTY.
    +        pub const LSCH1_DUTY = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_duty_lsch1.
    +            DUTY_LSCH1: u19,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x60019020
    +        /// LEDC_LSCH1_CONF1.
    +        pub const LSCH1_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_duty_scale_lsch1.
    +            DUTY_SCALE_LSCH1: u10,
    +            /// reg_duty_cycle_lsch1.
    +            DUTY_CYCLE_LSCH1: u10,
    +            /// reg_duty_num_lsch1.
    +            DUTY_NUM_LSCH1: u10,
    +            /// reg_duty_inc_lsch1.
    +            DUTY_INC_LSCH1: u1,
    +            /// reg_duty_start_lsch1.
    +            DUTY_START_LSCH1: u1,
    +        }), base_address + 0x20);
    +
    +        /// address: 0x60019024
    +        /// LEDC_LSCH1_DUTY_R.
    +        pub const LSCH1_DUTY_R = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_duty_lsch1_r.
    +            DUTY_LSCH1_R: u19,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +        }), base_address + 0x24);
    +
    +        /// address: 0x60019028
    +        /// LEDC_LSCH2_CONF0.
    +        pub const LSCH2_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_timer_sel_lsch2.
    +            TIMER_SEL_LSCH2: u2,
    +            /// reg_sig_out_en_lsch2.
    +            SIG_OUT_EN_LSCH2: u1,
    +            /// reg_idle_lv_lsch2.
    +            IDLE_LV_LSCH2: u1,
    +            /// reg_para_up_lsch2.
    +            PARA_UP_LSCH2: u1,
    +            /// reg_ovf_num_lsch2.
    +            OVF_NUM_LSCH2: u10,
    +            /// reg_ovf_cnt_en_lsch2.
    +            OVF_CNT_EN_LSCH2: u1,
    +            /// reg_ovf_cnt_reset_lsch2.
    +            OVF_CNT_RESET_LSCH2: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +        }), base_address + 0x28);
    +
    +        /// address: 0x6001902c
    +        /// LEDC_LSCH2_HPOINT.
    +        pub const LSCH2_HPOINT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_hpoint_lsch2.
    +            HPOINT_LSCH2: u14,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +        }), base_address + 0x2c);
    +
    +        /// address: 0x60019030
    +        /// LEDC_LSCH2_DUTY.
    +        pub const LSCH2_DUTY = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_duty_lsch2.
    +            DUTY_LSCH2: u19,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +        }), base_address + 0x30);
    +
    +        /// address: 0x60019034
    +        /// LEDC_LSCH2_CONF1.
    +        pub const LSCH2_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_duty_scale_lsch2.
    +            DUTY_SCALE_LSCH2: u10,
    +            /// reg_duty_cycle_lsch2.
    +            DUTY_CYCLE_LSCH2: u10,
    +            /// reg_duty_num_lsch2.
    +            DUTY_NUM_LSCH2: u10,
    +            /// reg_duty_inc_lsch2.
    +            DUTY_INC_LSCH2: u1,
    +            /// reg_duty_start_lsch2.
    +            DUTY_START_LSCH2: u1,
    +        }), base_address + 0x34);
    +
    +        /// address: 0x60019038
    +        /// LEDC_LSCH2_DUTY_R.
    +        pub const LSCH2_DUTY_R = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_duty_lsch2_r.
    +            DUTY_LSCH2_R: u19,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +        }), base_address + 0x38);
    +
    +        /// address: 0x6001903c
    +        /// LEDC_LSCH3_CONF0.
    +        pub const LSCH3_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_timer_sel_lsch3.
    +            TIMER_SEL_LSCH3: u2,
    +            /// reg_sig_out_en_lsch3.
    +            SIG_OUT_EN_LSCH3: u1,
    +            /// reg_idle_lv_lsch3.
    +            IDLE_LV_LSCH3: u1,
    +            /// reg_para_up_lsch3.
    +            PARA_UP_LSCH3: u1,
    +            /// reg_ovf_num_lsch3.
    +            OVF_NUM_LSCH3: u10,
    +            /// reg_ovf_cnt_en_lsch3.
    +            OVF_CNT_EN_LSCH3: u1,
    +            /// reg_ovf_cnt_reset_lsch3.
    +            OVF_CNT_RESET_LSCH3: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +        }), base_address + 0x3c);
    +
    +        /// address: 0x60019040
    +        /// LEDC_LSCH3_HPOINT.
    +        pub const LSCH3_HPOINT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_hpoint_lsch3.
    +            HPOINT_LSCH3: u14,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +        }), base_address + 0x40);
    +
    +        /// address: 0x60019044
    +        /// LEDC_LSCH3_DUTY.
    +        pub const LSCH3_DUTY = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_duty_lsch3.
    +            DUTY_LSCH3: u19,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +        }), base_address + 0x44);
    +
    +        /// address: 0x60019048
    +        /// LEDC_LSCH3_CONF1.
    +        pub const LSCH3_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_duty_scale_lsch3.
    +            DUTY_SCALE_LSCH3: u10,
    +            /// reg_duty_cycle_lsch3.
    +            DUTY_CYCLE_LSCH3: u10,
    +            /// reg_duty_num_lsch3.
    +            DUTY_NUM_LSCH3: u10,
    +            /// reg_duty_inc_lsch3.
    +            DUTY_INC_LSCH3: u1,
    +            /// reg_duty_start_lsch3.
    +            DUTY_START_LSCH3: u1,
    +        }), base_address + 0x48);
    +
    +        /// address: 0x6001904c
    +        /// LEDC_LSCH3_DUTY_R.
    +        pub const LSCH3_DUTY_R = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_duty_lsch3_r.
    +            DUTY_LSCH3_R: u19,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +        }), base_address + 0x4c);
    +
    +        /// address: 0x60019050
    +        /// LEDC_LSCH4_CONF0.
    +        pub const LSCH4_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_timer_sel_lsch4.
    +            TIMER_SEL_LSCH4: u2,
    +            /// reg_sig_out_en_lsch4.
    +            SIG_OUT_EN_LSCH4: u1,
    +            /// reg_idle_lv_lsch4.
    +            IDLE_LV_LSCH4: u1,
    +            /// reg_para_up_lsch4.
    +            PARA_UP_LSCH4: u1,
    +            /// reg_ovf_num_lsch4.
    +            OVF_NUM_LSCH4: u10,
    +            /// reg_ovf_cnt_en_lsch4.
    +            OVF_CNT_EN_LSCH4: u1,
    +            /// reg_ovf_cnt_reset_lsch4.
    +            OVF_CNT_RESET_LSCH4: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +        }), base_address + 0x50);
    +
    +        /// address: 0x60019054
    +        /// LEDC_LSCH4_HPOINT.
    +        pub const LSCH4_HPOINT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_hpoint_lsch4.
    +            HPOINT_LSCH4: u14,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +        }), base_address + 0x54);
    +
    +        /// address: 0x60019058
    +        /// LEDC_LSCH4_DUTY.
    +        pub const LSCH4_DUTY = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_duty_lsch4.
    +            DUTY_LSCH4: u19,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +        }), base_address + 0x58);
    +
    +        /// address: 0x6001905c
    +        /// LEDC_LSCH4_CONF1.
    +        pub const LSCH4_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_duty_scale_lsch4.
    +            DUTY_SCALE_LSCH4: u10,
    +            /// reg_duty_cycle_lsch4.
    +            DUTY_CYCLE_LSCH4: u10,
    +            /// reg_duty_num_lsch4.
    +            DUTY_NUM_LSCH4: u10,
    +            /// reg_duty_inc_lsch4.
    +            DUTY_INC_LSCH4: u1,
    +            /// reg_duty_start_lsch4.
    +            DUTY_START_LSCH4: u1,
    +        }), base_address + 0x5c);
    +
    +        /// address: 0x60019060
    +        /// LEDC_LSCH4_DUTY_R.
    +        pub const LSCH4_DUTY_R = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_duty_lsch4_r.
    +            DUTY_LSCH4_R: u19,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +        }), base_address + 0x60);
    +
    +        /// address: 0x60019064
    +        /// LEDC_LSCH5_CONF0.
    +        pub const LSCH5_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_timer_sel_lsch5.
    +            TIMER_SEL_LSCH5: u2,
    +            /// reg_sig_out_en_lsch5.
    +            SIG_OUT_EN_LSCH5: u1,
    +            /// reg_idle_lv_lsch5.
    +            IDLE_LV_LSCH5: u1,
    +            /// reg_para_up_lsch5.
    +            PARA_UP_LSCH5: u1,
    +            /// reg_ovf_num_lsch5.
    +            OVF_NUM_LSCH5: u10,
    +            /// reg_ovf_cnt_en_lsch5.
    +            OVF_CNT_EN_LSCH5: u1,
    +            /// reg_ovf_cnt_reset_lsch5.
    +            OVF_CNT_RESET_LSCH5: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +        }), base_address + 0x64);
    +
    +        /// address: 0x60019068
    +        /// LEDC_LSCH5_HPOINT.
    +        pub const LSCH5_HPOINT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_hpoint_lsch5.
    +            HPOINT_LSCH5: u14,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +        }), base_address + 0x68);
    +
    +        /// address: 0x6001906c
    +        /// LEDC_LSCH5_DUTY.
    +        pub const LSCH5_DUTY = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_duty_lsch5.
    +            DUTY_LSCH5: u19,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +        }), base_address + 0x6c);
    +
    +        /// address: 0x60019070
    +        /// LEDC_LSCH5_CONF1.
    +        pub const LSCH5_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_duty_scale_lsch5.
    +            DUTY_SCALE_LSCH5: u10,
    +            /// reg_duty_cycle_lsch5.
    +            DUTY_CYCLE_LSCH5: u10,
    +            /// reg_duty_num_lsch5.
    +            DUTY_NUM_LSCH5: u10,
    +            /// reg_duty_inc_lsch5.
    +            DUTY_INC_LSCH5: u1,
    +            /// reg_duty_start_lsch5.
    +            DUTY_START_LSCH5: u1,
    +        }), base_address + 0x70);
    +
    +        /// address: 0x60019074
    +        /// LEDC_LSCH5_DUTY_R.
    +        pub const LSCH5_DUTY_R = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_duty_lsch5_r.
    +            DUTY_LSCH5_R: u19,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +        }), base_address + 0x74);
    +
    +        /// address: 0x600190a0
    +        /// LEDC_LSTIMER0_CONF.
    +        pub const LSTIMER0_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_lstimer0_duty_res.
    +            LSTIMER0_DUTY_RES: u4,
    +            /// reg_clk_div_lstimer0.
    +            CLK_DIV_LSTIMER0: u18,
    +            /// reg_lstimer0_pause.
    +            LSTIMER0_PAUSE: u1,
    +            /// reg_lstimer0_rst.
    +            LSTIMER0_RST: u1,
    +            /// reg_tick_sel_lstimer0.
    +            TICK_SEL_LSTIMER0: u1,
    +            /// reg_lstimer0_para_up.
    +            LSTIMER0_PARA_UP: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +        }), base_address + 0xa0);
    +
    +        /// address: 0x600190a4
    +        /// LEDC_LSTIMER0_VALUE.
    +        pub const LSTIMER0_VALUE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_lstimer0_cnt.
    +            LSTIMER0_CNT: u14,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +        }), base_address + 0xa4);
    +
    +        /// address: 0x600190a8
    +        /// LEDC_LSTIMER1_CONF.
    +        pub const LSTIMER1_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_lstimer1_duty_res.
    +            LSTIMER1_DUTY_RES: u4,
    +            /// reg_clk_div_lstimer1.
    +            CLK_DIV_LSTIMER1: u18,
    +            /// reg_lstimer1_pause.
    +            LSTIMER1_PAUSE: u1,
    +            /// reg_lstimer1_rst.
    +            LSTIMER1_RST: u1,
    +            /// reg_tick_sel_lstimer1.
    +            TICK_SEL_LSTIMER1: u1,
    +            /// reg_lstimer1_para_up.
    +            LSTIMER1_PARA_UP: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +        }), base_address + 0xa8);
    +
    +        /// address: 0x600190ac
    +        /// LEDC_LSTIMER1_VALUE.
    +        pub const LSTIMER1_VALUE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_lstimer1_cnt.
    +            LSTIMER1_CNT: u14,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +        }), base_address + 0xac);
    +
    +        /// address: 0x600190b0
    +        /// LEDC_LSTIMER2_CONF.
    +        pub const LSTIMER2_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_lstimer2_duty_res.
    +            LSTIMER2_DUTY_RES: u4,
    +            /// reg_clk_div_lstimer2.
    +            CLK_DIV_LSTIMER2: u18,
    +            /// reg_lstimer2_pause.
    +            LSTIMER2_PAUSE: u1,
    +            /// reg_lstimer2_rst.
    +            LSTIMER2_RST: u1,
    +            /// reg_tick_sel_lstimer2.
    +            TICK_SEL_LSTIMER2: u1,
    +            /// reg_lstimer2_para_up.
    +            LSTIMER2_PARA_UP: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +        }), base_address + 0xb0);
    +
    +        /// address: 0x600190b4
    +        /// LEDC_LSTIMER2_VALUE.
    +        pub const LSTIMER2_VALUE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_lstimer2_cnt.
    +            LSTIMER2_CNT: u14,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +        }), base_address + 0xb4);
    +
    +        /// address: 0x600190b8
    +        /// LEDC_LSTIMER3_CONF.
    +        pub const LSTIMER3_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_lstimer3_duty_res.
    +            LSTIMER3_DUTY_RES: u4,
    +            /// reg_clk_div_lstimer3.
    +            CLK_DIV_LSTIMER3: u18,
    +            /// reg_lstimer3_pause.
    +            LSTIMER3_PAUSE: u1,
    +            /// reg_lstimer3_rst.
    +            LSTIMER3_RST: u1,
    +            /// reg_tick_sel_lstimer3.
    +            TICK_SEL_LSTIMER3: u1,
    +            /// reg_lstimer3_para_up.
    +            LSTIMER3_PARA_UP: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +        }), base_address + 0xb8);
    +
    +        /// address: 0x600190bc
    +        /// LEDC_LSTIMER3_VALUE.
    +        pub const LSTIMER3_VALUE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_lstimer3_cnt.
    +            LSTIMER3_CNT: u14,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +        }), base_address + 0xbc);
    +
    +        /// address: 0x600190c0
    +        /// LEDC_INT_RAW.
    +        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_lstimer0_ovf_int_raw.
    +            LSTIMER0_OVF_INT_RAW: u1,
    +            /// reg_lstimer1_ovf_int_raw.
    +            LSTIMER1_OVF_INT_RAW: u1,
    +            /// reg_lstimer2_ovf_int_raw.
    +            LSTIMER2_OVF_INT_RAW: u1,
    +            /// reg_lstimer3_ovf_int_raw.
    +            LSTIMER3_OVF_INT_RAW: u1,
    +            /// reg_duty_chng_end_lsch0_int_raw.
    +            DUTY_CHNG_END_LSCH0_INT_RAW: u1,
    +            /// reg_duty_chng_end_lsch1_int_raw.
    +            DUTY_CHNG_END_LSCH1_INT_RAW: u1,
    +            /// reg_duty_chng_end_lsch2_int_raw.
    +            DUTY_CHNG_END_LSCH2_INT_RAW: u1,
    +            /// reg_duty_chng_end_lsch3_int_raw.
    +            DUTY_CHNG_END_LSCH3_INT_RAW: u1,
    +            /// reg_duty_chng_end_lsch4_int_raw.
    +            DUTY_CHNG_END_LSCH4_INT_RAW: u1,
    +            /// reg_duty_chng_end_lsch5_int_raw.
    +            DUTY_CHNG_END_LSCH5_INT_RAW: u1,
    +            /// reg_ovf_cnt_lsch0_int_raw.
    +            OVF_CNT_LSCH0_INT_RAW: u1,
    +            /// reg_ovf_cnt_lsch1_int_raw.
    +            OVF_CNT_LSCH1_INT_RAW: u1,
    +            /// reg_ovf_cnt_lsch2_int_raw.
    +            OVF_CNT_LSCH2_INT_RAW: u1,
    +            /// reg_ovf_cnt_lsch3_int_raw.
    +            OVF_CNT_LSCH3_INT_RAW: u1,
    +            /// reg_ovf_cnt_lsch4_int_raw.
    +            OVF_CNT_LSCH4_INT_RAW: u1,
    +            /// reg_ovf_cnt_lsch5_int_raw.
    +            OVF_CNT_LSCH5_INT_RAW: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0xc0);
    +
    +        /// address: 0x600190c4
    +        /// LEDC_INT_ST.
    +        pub const INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_lstimer0_ovf_int_st.
    +            LSTIMER0_OVF_INT_ST: u1,
    +            /// reg_lstimer1_ovf_int_st.
    +            LSTIMER1_OVF_INT_ST: u1,
    +            /// reg_lstimer2_ovf_int_st.
    +            LSTIMER2_OVF_INT_ST: u1,
    +            /// reg_lstimer3_ovf_int_st.
    +            LSTIMER3_OVF_INT_ST: u1,
    +            /// reg_duty_chng_end_lsch0_int_st.
    +            DUTY_CHNG_END_LSCH0_INT_ST: u1,
    +            /// reg_duty_chng_end_lsch1_int_st.
    +            DUTY_CHNG_END_LSCH1_INT_ST: u1,
    +            /// reg_duty_chng_end_lsch2_int_st.
    +            DUTY_CHNG_END_LSCH2_INT_ST: u1,
    +            /// reg_duty_chng_end_lsch3_int_st.
    +            DUTY_CHNG_END_LSCH3_INT_ST: u1,
    +            /// reg_duty_chng_end_lsch4_int_st.
    +            DUTY_CHNG_END_LSCH4_INT_ST: u1,
    +            /// reg_duty_chng_end_lsch5_int_st.
    +            DUTY_CHNG_END_LSCH5_INT_ST: u1,
    +            /// reg_ovf_cnt_lsch0_int_st.
    +            OVF_CNT_LSCH0_INT_ST: u1,
    +            /// reg_ovf_cnt_lsch1_int_st.
    +            OVF_CNT_LSCH1_INT_ST: u1,
    +            /// reg_ovf_cnt_lsch2_int_st.
    +            OVF_CNT_LSCH2_INT_ST: u1,
    +            /// reg_ovf_cnt_lsch3_int_st.
    +            OVF_CNT_LSCH3_INT_ST: u1,
    +            /// reg_ovf_cnt_lsch4_int_st.
    +            OVF_CNT_LSCH4_INT_ST: u1,
    +            /// reg_ovf_cnt_lsch5_int_st.
    +            OVF_CNT_LSCH5_INT_ST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0xc4);
    +
    +        /// address: 0x600190c8
    +        /// LEDC_INT_ENA.
    +        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_lstimer0_ovf_int_ena.
    +            LSTIMER0_OVF_INT_ENA: u1,
    +            /// reg_lstimer1_ovf_int_ena.
    +            LSTIMER1_OVF_INT_ENA: u1,
    +            /// reg_lstimer2_ovf_int_ena.
    +            LSTIMER2_OVF_INT_ENA: u1,
    +            /// reg_lstimer3_ovf_int_ena.
    +            LSTIMER3_OVF_INT_ENA: u1,
    +            /// reg_duty_chng_end_lsch0_int_ena.
    +            DUTY_CHNG_END_LSCH0_INT_ENA: u1,
    +            /// reg_duty_chng_end_lsch1_int_ena.
    +            DUTY_CHNG_END_LSCH1_INT_ENA: u1,
    +            /// reg_duty_chng_end_lsch2_int_ena.
    +            DUTY_CHNG_END_LSCH2_INT_ENA: u1,
    +            /// reg_duty_chng_end_lsch3_int_ena.
    +            DUTY_CHNG_END_LSCH3_INT_ENA: u1,
    +            /// reg_duty_chng_end_lsch4_int_ena.
    +            DUTY_CHNG_END_LSCH4_INT_ENA: u1,
    +            /// reg_duty_chng_end_lsch5_int_ena.
    +            DUTY_CHNG_END_LSCH5_INT_ENA: u1,
    +            /// reg_ovf_cnt_lsch0_int_ena.
    +            OVF_CNT_LSCH0_INT_ENA: u1,
    +            /// reg_ovf_cnt_lsch1_int_ena.
    +            OVF_CNT_LSCH1_INT_ENA: u1,
    +            /// reg_ovf_cnt_lsch2_int_ena.
    +            OVF_CNT_LSCH2_INT_ENA: u1,
    +            /// reg_ovf_cnt_lsch3_int_ena.
    +            OVF_CNT_LSCH3_INT_ENA: u1,
    +            /// reg_ovf_cnt_lsch4_int_ena.
    +            OVF_CNT_LSCH4_INT_ENA: u1,
    +            /// reg_ovf_cnt_lsch5_int_ena.
    +            OVF_CNT_LSCH5_INT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0xc8);
    +
    +        /// address: 0x600190cc
    +        /// LEDC_INT_CLR.
    +        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_lstimer0_ovf_int_clr.
    +            LSTIMER0_OVF_INT_CLR: u1,
    +            /// reg_lstimer1_ovf_int_clr.
    +            LSTIMER1_OVF_INT_CLR: u1,
    +            /// reg_lstimer2_ovf_int_clr.
    +            LSTIMER2_OVF_INT_CLR: u1,
    +            /// reg_lstimer3_ovf_int_clr.
    +            LSTIMER3_OVF_INT_CLR: u1,
    +            /// reg_duty_chng_end_lsch0_int_clr.
    +            DUTY_CHNG_END_LSCH0_INT_CLR: u1,
    +            /// reg_duty_chng_end_lsch1_int_clr.
    +            DUTY_CHNG_END_LSCH1_INT_CLR: u1,
    +            /// reg_duty_chng_end_lsch2_int_clr.
    +            DUTY_CHNG_END_LSCH2_INT_CLR: u1,
    +            /// reg_duty_chng_end_lsch3_int_clr.
    +            DUTY_CHNG_END_LSCH3_INT_CLR: u1,
    +            /// reg_duty_chng_end_lsch4_int_clr.
    +            DUTY_CHNG_END_LSCH4_INT_CLR: u1,
    +            /// reg_duty_chng_end_lsch5_int_clr.
    +            DUTY_CHNG_END_LSCH5_INT_CLR: u1,
    +            /// reg_ovf_cnt_lsch0_int_clr.
    +            OVF_CNT_LSCH0_INT_CLR: u1,
    +            /// reg_ovf_cnt_lsch1_int_clr.
    +            OVF_CNT_LSCH1_INT_CLR: u1,
    +            /// reg_ovf_cnt_lsch2_int_clr.
    +            OVF_CNT_LSCH2_INT_CLR: u1,
    +            /// reg_ovf_cnt_lsch3_int_clr.
    +            OVF_CNT_LSCH3_INT_CLR: u1,
    +            /// reg_ovf_cnt_lsch4_int_clr.
    +            OVF_CNT_LSCH4_INT_CLR: u1,
    +            /// reg_ovf_cnt_lsch5_int_clr.
    +            OVF_CNT_LSCH5_INT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0xcc);
    +
    +        /// address: 0x600190d0
    +        /// LEDC_CONF.
    +        pub const CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_apb_clk_sel.
    +            APB_CLK_SEL: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            reserved25: u1,
    +            reserved26: u1,
    +            reserved27: u1,
    +            reserved28: u1,
    +            /// reg_clk_en.
    +            CLK_EN: u1,
    +        }), base_address + 0xd0);
    +
    +        /// address: 0x600190fc
    +        /// LEDC_DATE.
    +        pub const DATE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_ledc_date.
    +            LEDC_DATE: u32,
    +        }), base_address + 0xfc);
    +    };
    +
    +    /// Remote Control Peripheral
    +    pub const RMT = struct {
    +        pub const base_address = 0x60016000;
    +
    +        /// address: 0x60016000
    +        /// RMT_CH0DATA_REG.
    +        pub const CH0DATA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Reserved.
    +            DATA: u32,
    +        }), base_address + 0x0);
    +
    +        /// address: 0x60016004
    +        /// RMT_CH1DATA_REG.
    +        pub const CH1DATA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Reserved.
    +            DATA: u32,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x60016008
    +        /// RMT_CH2DATA_REG.
    +        pub const CH2DATA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Reserved.
    +            DATA: u32,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x6001600c
    +        /// RMT_CH3DATA_REG.
    +        pub const CH3DATA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Reserved.
    +            DATA: u32,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x60016010
    +        /// RMT_CH%sCONF%s_REG.
    +        pub const CH0_TX_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_tx_start_ch0.
    +            TX_START: u1,
    +            /// reg_mem_rd_rst_ch0.
    +            MEM_RD_RST: u1,
    +            /// reg_apb_mem_rst_ch0.
    +            APB_MEM_RST: u1,
    +            /// reg_tx_conti_mode_ch0.
    +            TX_CONTI_MODE: u1,
    +            /// reg_mem_tx_wrap_en_ch0.
    +            MEM_TX_WRAP_EN: u1,
    +            /// reg_idle_out_lv_ch0.
    +            IDLE_OUT_LV: u1,
    +            /// reg_idle_out_en_ch0.
    +            IDLE_OUT_EN: u1,
    +            /// reg_tx_stop_ch0.
    +            TX_STOP: u1,
    +            /// reg_div_cnt_ch0.
    +            DIV_CNT: u8,
    +            /// reg_mem_size_ch0.
    +            MEM_SIZE: u3,
    +            reserved0: u1,
    +            /// reg_carrier_eff_en_ch0.
    +            CARRIER_EFF_EN: u1,
    +            /// reg_carrier_en_ch0.
    +            CARRIER_EN: u1,
    +            /// reg_carrier_out_lv_ch0.
    +            CARRIER_OUT_LV: u1,
    +            /// reg_afifo_rst_ch0.
    +            AFIFO_RST: u1,
    +            /// reg_reg_conf_update_ch0.
    +            CONF_UPDATE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +        }), base_address + 0x10);
    +
    +        /// address: 0x60016014
    +        /// RMT_CH%sCONF%s_REG.
    +        pub const CH1_TX_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_tx_start_ch0.
    +            TX_START: u1,
    +            /// reg_mem_rd_rst_ch0.
    +            MEM_RD_RST: u1,
    +            /// reg_apb_mem_rst_ch0.
    +            APB_MEM_RST: u1,
    +            /// reg_tx_conti_mode_ch0.
    +            TX_CONTI_MODE: u1,
    +            /// reg_mem_tx_wrap_en_ch0.
    +            MEM_TX_WRAP_EN: u1,
    +            /// reg_idle_out_lv_ch0.
    +            IDLE_OUT_LV: u1,
    +            /// reg_idle_out_en_ch0.
    +            IDLE_OUT_EN: u1,
    +            /// reg_tx_stop_ch0.
    +            TX_STOP: u1,
    +            /// reg_div_cnt_ch0.
    +            DIV_CNT: u8,
    +            /// reg_mem_size_ch0.
    +            MEM_SIZE: u3,
    +            reserved0: u1,
    +            /// reg_carrier_eff_en_ch0.
    +            CARRIER_EFF_EN: u1,
    +            /// reg_carrier_en_ch0.
    +            CARRIER_EN: u1,
    +            /// reg_carrier_out_lv_ch0.
    +            CARRIER_OUT_LV: u1,
    +            /// reg_afifo_rst_ch0.
    +            AFIFO_RST: u1,
    +            /// reg_reg_conf_update_ch0.
    +            CONF_UPDATE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +        }), base_address + 0x14);
    +
    +        /// address: 0x60016018
    +        /// RMT_CH2CONF0_REG.
    +        pub const CH2_RX_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_div_cnt_ch2.
    +            DIV_CNT: u8,
    +            /// reg_idle_thres_ch2.
    +            IDLE_THRES: u15,
    +            /// reg_mem_size_ch2.
    +            MEM_SIZE: u3,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// reg_carrier_en_ch2.
    +            CARRIER_EN: u1,
    +            /// reg_carrier_out_lv_ch2.
    +            CARRIER_OUT_LV: u1,
    +            padding0: u1,
    +            padding1: u1,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x60016020
    +        /// RMT_CH2CONF0_REG.
    +        pub const CH3_RX_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_div_cnt_ch2.
    +            DIV_CNT: u8,
    +            /// reg_idle_thres_ch2.
    +            IDLE_THRES: u15,
    +            /// reg_mem_size_ch2.
    +            MEM_SIZE: u3,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// reg_carrier_en_ch2.
    +            CARRIER_EN: u1,
    +            /// reg_carrier_out_lv_ch2.
    +            CARRIER_OUT_LV: u1,
    +            padding0: u1,
    +            padding1: u1,
    +        }), base_address + 0x20);
    +
    +        /// address: 0x6001601c
    +        /// RMT_CH2CONF1_REG.
    +        pub const CH2CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_rx_en_ch2.
    +            RX_EN: u1,
    +            /// reg_mem_wr_rst_ch2.
    +            MEM_WR_RST: u1,
    +            /// reg_apb_mem_rst_ch2.
    +            APB_MEM_RST: u1,
    +            /// reg_mem_owner_ch2.
    +            MEM_OWNER: u1,
    +            /// reg_rx_filter_en_ch2.
    +            RX_FILTER_EN: u1,
    +            /// reg_rx_filter_thres_ch2.
    +            RX_FILTER_THRES: u8,
    +            /// reg_mem_rx_wrap_en_ch2.
    +            MEM_RX_WRAP_EN: u1,
    +            /// reg_afifo_rst_ch2.
    +            AFIFO_RST: u1,
    +            /// reg_conf_update_ch2.
    +            CONF_UPDATE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x60016024
    +        /// RMT_CH3CONF1_REG.
    +        pub const CH3CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_rx_en_ch3.
    +            RX_EN: u1,
    +            /// reg_mem_wr_rst_ch3.
    +            MEM_WR_RST: u1,
    +            /// reg_apb_mem_rst_ch3.
    +            APB_MEM_RST: u1,
    +            /// reg_mem_owner_ch3.
    +            MEM_OWNER: u1,
    +            /// reg_rx_filter_en_ch3.
    +            RX_FILTER_EN: u1,
    +            /// reg_rx_filter_thres_ch3.
    +            RX_FILTER_THRES: u8,
    +            /// reg_mem_rx_wrap_en_ch3.
    +            MEM_RX_WRAP_EN: u1,
    +            /// reg_afifo_rst_ch3.
    +            AFIFO_RST: u1,
    +            /// reg_conf_update_ch3.
    +            CONF_UPDATE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x24);
    +
    +        /// address: 0x60016028
    +        /// RMT_CH0STATUS_REG.
    +        pub const CH0STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_mem_raddr_ex_ch0.
    +            MEM_RADDR_EX: u9,
    +            /// reg_state_ch0.
    +            STATE: u3,
    +            /// reg_apb_mem_waddr_ch0.
    +            APB_MEM_WADDR: u9,
    +            /// reg_apb_mem_rd_err_ch0.
    +            APB_MEM_RD_ERR: u1,
    +            /// reg_mem_empty_ch0.
    +            MEM_EMPTY: u1,
    +            /// reg_apb_mem_wr_err_ch0.
    +            APB_MEM_WR_ERR: u1,
    +            /// reg_apb_mem_raddr_ch0.
    +            APB_MEM_RADDR: u8,
    +        }), base_address + 0x28);
    +
    +        /// address: 0x6001602c
    +        /// RMT_CH1STATUS_REG.
    +        pub const CH1STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_mem_raddr_ex_ch1.
    +            MEM_RADDR_EX: u9,
    +            /// reg_state_ch1.
    +            STATE: u3,
    +            /// reg_apb_mem_waddr_ch1.
    +            APB_MEM_WADDR: u9,
    +            /// reg_apb_mem_rd_err_ch1.
    +            APB_MEM_RD_ERR: u1,
    +            /// reg_mem_empty_ch1.
    +            MEM_EMPTY: u1,
    +            /// reg_apb_mem_wr_err_ch1.
    +            APB_MEM_WR_ERR: u1,
    +            /// reg_apb_mem_raddr_ch1.
    +            APB_MEM_RADDR: u8,
    +        }), base_address + 0x2c);
    +
    +        /// address: 0x60016030
    +        /// RMT_CH2STATUS_REG.
    +        pub const CH2STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_mem_waddr_ex_ch2.
    +            MEM_WADDR_EX: u9,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            /// reg_apb_mem_raddr_ch2.
    +            APB_MEM_RADDR: u9,
    +            reserved3: u1,
    +            /// reg_state_ch2.
    +            STATE: u3,
    +            /// reg_mem_owner_err_ch2.
    +            MEM_OWNER_ERR: u1,
    +            /// reg_mem_full_ch2.
    +            MEM_FULL: u1,
    +            /// reg_apb_mem_rd_err_ch2.
    +            APB_MEM_RD_ERR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +        }), base_address + 0x30);
    +
    +        /// address: 0x60016034
    +        /// RMT_CH3STATUS_REG.
    +        pub const CH3STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_mem_waddr_ex_ch3.
    +            MEM_WADDR_EX: u9,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            /// reg_apb_mem_raddr_ch3.
    +            APB_MEM_RADDR: u9,
    +            reserved3: u1,
    +            /// reg_state_ch3.
    +            STATE: u3,
    +            /// reg_mem_owner_err_ch3.
    +            MEM_OWNER_ERR: u1,
    +            /// reg_mem_full_ch3.
    +            MEM_FULL: u1,
    +            /// reg_apb_mem_rd_err_ch3.
    +            APB_MEM_RD_ERR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +        }), base_address + 0x34);
    +
    +        /// address: 0x60016038
    +        /// RMT_INT_RAW_REG.
    +        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    +            CH0_TX_END_INT_RAW: u1,
    +            CH1_TX_END_INT_RAW: u1,
    +            CH2_RX_END_INT_RAW: u1,
    +            CH3_RX_END_INT_RAW: u1,
    +            CH0_TX_ERR_INT_RAW: u1,
    +            CH1_TX_ERR_INT_RAW: u1,
    +            CH2_RX_ERR_INT_RAW: u1,
    +            CH3_RX_ERR_INT_RAW: u1,
    +            CH0_TX_THR_EVENT_INT_RAW: u1,
    +            CH1_TX_THR_EVENT_INT_RAW: u1,
    +            /// reg_ch2_rx_thr_event_int_raw.
    +            CH2_RX_THR_EVENT_INT_RAW: u1,
    +            /// reg_ch3_rx_thr_event_int_raw.
    +            CH3_RX_THR_EVENT_INT_RAW: u1,
    +            CH0_TX_LOOP_INT_RAW: u1,
    +            CH1_TX_LOOP_INT_RAW: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +        }), base_address + 0x38);
    +
    +        /// address: 0x6001603c
    +        /// RMT_INT_ST_REG.
    +        pub const INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            CH0_TX_END_INT_ST: u1,
    +            CH1_TX_END_INT_ST: u1,
    +            CH2_RX_END_INT_ST: u1,
    +            CH3_RX_END_INT_ST: u1,
    +            CH0_TX_ERR_INT_ST: u1,
    +            CH1_TX_ERR_INT_ST: u1,
    +            CH2_RX_ERR_INT_ST: u1,
    +            CH3_RX_ERR_INT_ST: u1,
    +            CH0_TX_THR_EVENT_INT_ST: u1,
    +            CH1_TX_THR_EVENT_INT_ST: u1,
    +            /// reg_ch2_rx_thr_event_int_st.
    +            CH2_RX_THR_EVENT_INT_ST: u1,
    +            /// reg_ch3_rx_thr_event_int_st.
    +            CH3_RX_THR_EVENT_INT_ST: u1,
    +            CH0_TX_LOOP_INT_ST: u1,
    +            CH1_TX_LOOP_INT_ST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +        }), base_address + 0x3c);
    +
    +        /// address: 0x60016040
    +        /// RMT_INT_ENA_REG.
    +        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    +            CH0_TX_END_INT_ENA: u1,
    +            CH1_TX_END_INT_ENA: u1,
    +            CH2_RX_END_INT_ENA: u1,
    +            CH3_RX_END_INT_ENA: u1,
    +            CH0_TX_ERR_INT_ENA: u1,
    +            CH1_TX_ERR_INT_ENA: u1,
    +            CH2_RX_ERR_INT_ENA: u1,
    +            CH3_RX_ERR_INT_ENA: u1,
    +            CH0_TX_THR_EVENT_INT_ENA: u1,
    +            CH1_TX_THR_EVENT_INT_ENA: u1,
    +            /// reg_ch2_rx_thr_event_int_ena.
    +            CH2_RX_THR_EVENT_INT_ENA: u1,
    +            /// reg_ch3_rx_thr_event_int_ena.
    +            CH3_RX_THR_EVENT_INT_ENA: u1,
    +            CH0_TX_LOOP_INT_ENA: u1,
    +            CH1_TX_LOOP_INT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +        }), base_address + 0x40);
    +
    +        /// address: 0x60016044
    +        /// RMT_INT_CLR_REG.
    +        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    +            CH0_TX_END_INT_CLR: u1,
    +            CH1_TX_END_INT_CLR: u1,
    +            CH2_RX_END_INT_CLR: u1,
    +            CH3_RX_END_INT_CLR: u1,
    +            CH0_TX_ERR_INT_CLR: u1,
    +            CH1_TX_ERR_INT_CLR: u1,
    +            CH2_RX_ERR_INT_CLR: u1,
    +            CH3_RX_ERR_INT_CLR: u1,
    +            CH0_TX_THR_EVENT_INT_CLR: u1,
    +            CH1_TX_THR_EVENT_INT_CLR: u1,
    +            /// reg_ch2_rx_thr_event_int_clr.
    +            CH2_RX_THR_EVENT_INT_CLR: u1,
    +            /// reg_ch3_rx_thr_event_int_clr.
    +            CH3_RX_THR_EVENT_INT_CLR: u1,
    +            CH0_TX_LOOP_INT_CLR: u1,
    +            CH1_TX_LOOP_INT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +        }), base_address + 0x44);
    +
    +        /// address: 0x60016048
    +        /// RMT_CH0CARRIER_DUTY_REG.
    +        pub const CH0CARRIER_DUTY = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_carrier_low_ch0.
    +            CARRIER_LOW: u16,
    +            /// reg_carrier_high_ch0.
    +            CARRIER_HIGH: u16,
    +        }), base_address + 0x48);
    +
    +        /// address: 0x6001604c
    +        /// RMT_CH1CARRIER_DUTY_REG.
    +        pub const CH1CARRIER_DUTY = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_carrier_low_ch1.
    +            CARRIER_LOW: u16,
    +            /// reg_carrier_high_ch1.
    +            CARRIER_HIGH: u16,
    +        }), base_address + 0x4c);
    +
    +        /// address: 0x60016050
    +        /// RMT_CH2_RX_CARRIER_RM_REG.
    +        pub const CH2_RX_CARRIER_RM = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_carrier_low_thres_ch2.
    +            CARRIER_LOW_THRES: u16,
    +            /// reg_carrier_high_thres_ch2.
    +            CARRIER_HIGH_THRES: u16,
    +        }), base_address + 0x50);
    +
    +        /// address: 0x60016054
    +        /// RMT_CH3_RX_CARRIER_RM_REG.
    +        pub const CH3_RX_CARRIER_RM = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_carrier_low_thres_ch3.
    +            CARRIER_LOW_THRES: u16,
    +            /// reg_carrier_high_thres_ch3.
    +            CARRIER_HIGH_THRES: u16,
    +        }), base_address + 0x54);
    +
    +        /// address: 0x60016058
    +        /// RMT_CH%s_TX_LIM_REG.
    +        pub const CH0_TX_LIM = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_rmt_tx_lim_ch0.
    +            TX_LIM: u9,
    +            /// reg_rmt_tx_loop_num_ch0.
    +            TX_LOOP_NUM: u10,
    +            /// reg_rmt_tx_loop_cnt_en_ch0.
    +            TX_LOOP_CNT_EN: u1,
    +            /// reg_loop_count_reset_ch0.
    +            LOOP_COUNT_RESET: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +        }), base_address + 0x58);
    +
    +        /// address: 0x6001605c
    +        /// RMT_CH%s_TX_LIM_REG.
    +        pub const CH1_TX_LIM = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_rmt_tx_lim_ch0.
    +            TX_LIM: u9,
    +            /// reg_rmt_tx_loop_num_ch0.
    +            TX_LOOP_NUM: u10,
    +            /// reg_rmt_tx_loop_cnt_en_ch0.
    +            TX_LOOP_CNT_EN: u1,
    +            /// reg_loop_count_reset_ch0.
    +            LOOP_COUNT_RESET: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +        }), base_address + 0x5c);
    +
    +        /// address: 0x60016060
    +        /// RMT_CH2_RX_LIM_REG.
    +        pub const CH2_RX_LIM = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_rmt_rx_lim_ch2.
    +            RX_LIM: u9,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0x60);
    +
    +        /// address: 0x60016064
    +        /// RMT_CH2_RX_LIM_REG.
    +        pub const CH3_RX_LIM = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_rmt_rx_lim_ch2.
    +            RX_LIM: u9,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0x64);
    +
    +        /// address: 0x60016068
    +        /// RMT_SYS_CONF_REG.
    +        pub const SYS_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_apb_fifo_mask.
    +            APB_FIFO_MASK: u1,
    +            /// reg_mem_clk_force_on.
    +            MEM_CLK_FORCE_ON: u1,
    +            /// reg_rmt_mem_force_pd.
    +            MEM_FORCE_PD: u1,
    +            /// reg_rmt_mem_force_pu.
    +            MEM_FORCE_PU: u1,
    +            /// reg_rmt_sclk_div_num.
    +            SCLK_DIV_NUM: u8,
    +            /// reg_rmt_sclk_div_a.
    +            SCLK_DIV_A: u6,
    +            /// reg_rmt_sclk_div_b.
    +            SCLK_DIV_B: u6,
    +            /// reg_rmt_sclk_sel.
    +            SCLK_SEL: u2,
    +            /// reg_rmt_sclk_active.
    +            SCLK_ACTIVE: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// reg_clk_en.
    +            CLK_EN: u1,
    +        }), base_address + 0x68);
    +
    +        /// address: 0x6001606c
    +        /// RMT_TX_SIM_REG.
    +        pub const TX_SIM = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_rmt_tx_sim_ch0.
    +            TX_SIM_CH0: u1,
    +            /// reg_rmt_tx_sim_ch1.
    +            TX_SIM_CH1: u1,
    +            /// reg_rmt_tx_sim_en.
    +            TX_SIM_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +        }), base_address + 0x6c);
    +
    +        /// address: 0x60016070
    +        /// RMT_REF_CNT_RST_REG.
    +        pub const REF_CNT_RST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_ref_cnt_rst_ch0.
    +            CH0: u1,
    +            /// reg_ref_cnt_rst_ch1.
    +            CH1: u1,
    +            /// reg_ref_cnt_rst_ch2.
    +            CH2: u1,
    +            /// reg_ref_cnt_rst_ch3.
    +            CH3: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x70);
    +
    +        /// address: 0x600160cc
    +        /// RMT_DATE_REG.
    +        pub const DATE = @intToPtr(*volatile MmioInt(32, u28), base_address + 0xcc);
    +    };
    +
    +    /// Hardware random number generator
    +    pub const RNG = struct {
    +        pub const base_address = 0x60026000;
    +
    +        /// address: 0x600260b0
    +        /// Random number data
    +        pub const DATA = @intToPtr(*volatile u32, base_address + 0xb0);
    +    };
    +
    +    /// RSA (Rivest Shamir Adleman) Accelerator
    +    pub const RSA = struct {
    +        pub const base_address = 0x6003c000;
    +
    +        /// address: 0x6003c000
    +        /// The memory that stores M
    +        pub const M_MEM = @intToPtr(*volatile [16]u8, base_address + 0x0);
    +
    +        /// address: 0x6003c200
    +        /// The memory that stores Z
    +        pub const Z_MEM = @intToPtr(*volatile [16]u8, base_address + 0x200);
    +
    +        /// address: 0x6003c400
    +        /// The memory that stores Y
    +        pub const Y_MEM = @intToPtr(*volatile [16]u8, base_address + 0x400);
    +
    +        /// address: 0x6003c600
    +        /// The memory that stores X
    +        pub const X_MEM = @intToPtr(*volatile [16]u8, base_address + 0x600);
    +
    +        /// address: 0x6003c800
    +        /// RSA M_prime register
    +        pub const M_PRIME = @intToPtr(*volatile u32, base_address + 0x800);
    +
    +        /// address: 0x6003c804
    +        /// RSA mode register
    +        pub const MODE = @intToPtr(*volatile MmioInt(32, u7), base_address + 0x804);
    +
    +        /// address: 0x6003c808
    +        /// RSA query clean register
    +        pub const QUERY_CLEAN = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x808);
    +
    +        /// address: 0x6003c80c
    +        /// RSA modular exponentiation trigger register.
    +        pub const SET_START_MODEXP = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x80c);
    +
    +        /// address: 0x6003c810
    +        /// RSA modular multiplication trigger register.
    +        pub const SET_START_MODMULT = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x810);
    +
    +        /// address: 0x6003c814
    +        /// RSA normal multiplication trigger register.
    +        pub const SET_START_MULT = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x814);
    +
    +        /// address: 0x6003c818
    +        /// RSA query idle register
    +        pub const QUERY_IDLE = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x818);
    +
    +        /// address: 0x6003c81c
    +        /// RSA interrupt clear register
    +        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// set this bit to clear RSA interrupt.
    +            CLEAR_INTERRUPT: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x81c);
    +
    +        /// address: 0x6003c820
    +        /// RSA constant time option register
    +        pub const CONSTANT_TIME = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x820);
    +
    +        /// address: 0x6003c824
    +        /// RSA search option
    +        pub const SEARCH_ENABLE = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x824);
    +
    +        /// address: 0x6003c828
    +        /// RSA search position configure register
    +        pub const SEARCH_POS = @intToPtr(*volatile MmioInt(32, u12), base_address + 0x828);
    +
    +        /// address: 0x6003c82c
    +        /// RSA interrupt enable register
    +        pub const INT_ENA = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x82c);
    +
    +        /// address: 0x6003c830
    +        /// RSA version control register
    +        pub const DATE = @intToPtr(*volatile MmioInt(32, u30), base_address + 0x830);
    +    };
    +
    +    /// Real-Time Clock Control
    +    pub const RTC_CNTL = struct {
    +        pub const base_address = 0x60008000;
    +
    +        /// address: 0x60008000
    +        /// rtc configure register
    +        pub const OPTIONS0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// {reg_sw_stall_appcpu_c1[5:0], reg_sw_stall_appcpu_c0[1:0]} == 0x86 will stall
    +            /// APP CPU
    +            SW_STALL_APPCPU_C0: u2,
    +            /// {reg_sw_stall_procpu_c1[5:0], reg_sw_stall_procpu_c0[1:0]} == 0x86 will stall
    +            /// PRO CPU
    +            SW_STALL_PROCPU_C0: u2,
    +            /// APP CPU SW reset
    +            SW_APPCPU_RST: u1,
    +            /// PRO CPU SW reset
    +            SW_PROCPU_RST: u1,
    +            /// BB_I2C force power down
    +            BB_I2C_FORCE_PD: u1,
    +            /// BB_I2C force power up
    +            BB_I2C_FORCE_PU: u1,
    +            /// BB_PLL _I2C force power down
    +            BBPLL_I2C_FORCE_PD: u1,
    +            /// BB_PLL_I2C force power up
    +            BBPLL_I2C_FORCE_PU: u1,
    +            /// BB_PLL force power down
    +            BBPLL_FORCE_PD: u1,
    +            /// BB_PLL force power up
    +            BBPLL_FORCE_PU: u1,
    +            /// crystall force power down
    +            XTL_FORCE_PD: u1,
    +            /// crystall force power up
    +            XTL_FORCE_PU: u1,
    +            /// wait bias_sleep and current source wakeup
    +            XTL_EN_WAIT: u4,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// analog configure
    +            XTL_EXT_CTR_SEL: u3,
    +            /// analog configure
    +            XTL_FORCE_ISO: u1,
    +            /// analog configure
    +            PLL_FORCE_ISO: u1,
    +            /// analog configure
    +            ANALOG_FORCE_ISO: u1,
    +            /// analog configure
    +            XTL_FORCE_NOISO: u1,
    +            /// analog configure
    +            PLL_FORCE_NOISO: u1,
    +            /// analog configure
    +            ANALOG_FORCE_NOISO: u1,
    +            /// digital wrap force reset in deep sleep
    +            DG_WRAP_FORCE_RST: u1,
    +            /// digital core force no reset in deep sleep
    +            DG_WRAP_FORCE_NORST: u1,
    +            /// SW system reset
    +            SW_SYS_RST: u1,
    +        }), base_address + 0x0);
    +
    +        /// address: 0x60008004
    +        /// rtc configure register
    +        pub const SLP_TIMER0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// configure the sleep time
    +            SLP_VAL_LO: u32,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x60008008
    +        /// rtc configure register
    +        pub const SLP_TIMER1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// RTC sleep timer high 16 bits
    +            SLP_VAL_HI: u16,
    +            /// timer alarm enable bit
    +            RTC_MAIN_TIMER_ALARM_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x6000800c
    +        /// rtc configure register
    +        pub const TIME_UPDATE = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            reserved25: u1,
    +            reserved26: u1,
    +            /// Enable to record system stall time
    +            TIMER_SYS_STALL: u1,
    +            /// Enable to record 40M XTAL OFF time
    +            TIMER_XTL_OFF: u1,
    +            /// enable to record system reset time
    +            TIMER_SYS_RST: u1,
    +            reserved27: u1,
    +            /// Set 1: to update register with RTC timer
    +            RTC_TIME_UPDATE: u1,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x60008010
    +        /// rtc configure register
    +        pub const TIME_LOW0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// RTC timer low 32 bits
    +            RTC_TIMER_VALUE0_LOW: u32,
    +        }), base_address + 0x10);
    +
    +        /// address: 0x60008014
    +        /// rtc configure register
    +        pub const TIME_HIGH0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// RTC timer high 16 bits
    +            RTC_TIMER_VALUE0_HIGH: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x14);
    +
    +        /// address: 0x60008018
    +        /// rtc configure register
    +        pub const STATE0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// rtc software interrupt to main cpu
    +            RTC_SW_CPU_INT: u1,
    +            /// clear rtc sleep reject cause
    +            RTC_SLP_REJECT_CAUSE_CLR: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            /// 1: APB to RTC using bridge
    +            APB2RTC_BRIDGE_SEL: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            /// SDIO active indication
    +            SDIO_ACTIVE_IND: u1,
    +            /// leep wakeup bit
    +            SLP_WAKEUP: u1,
    +            /// leep reject bit
    +            SLP_REJECT: u1,
    +            /// sleep enable bit
    +            SLEEP_EN: u1,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x6000801c
    +        /// rtc configure register
    +        pub const TIMER1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// CPU stall enable bit
    +            CPU_STALL_EN: u1,
    +            /// CPU stall wait cycles in fast_clk_rtc
    +            CPU_STALL_WAIT: u5,
    +            /// CK8M wait cycles in slow_clk_rtc
    +            CK8M_WAIT: u8,
    +            /// XTAL wait cycles in slow_clk_rtc
    +            XTL_BUF_WAIT: u10,
    +            /// PLL wait cycles in slow_clk_rtc
    +            PLL_BUF_WAIT: u8,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x60008020
    +        /// rtc configure register
    +        pub const TIMER2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            /// minimal cycles in slow_clk_rtc for CK8M in power down state
    +            MIN_TIME_CK8M_OFF: u8,
    +        }), base_address + 0x20);
    +
    +        /// address: 0x60008024
    +        /// rtc configure register
    +        pub const TIMER3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// wifi power domain wakeup time
    +            WIFI_WAIT_TIMER: u9,
    +            /// wifi power domain power on time
    +            WIFI_POWERUP_TIMER: u7,
    +            /// bt power domain wakeup time
    +            BT_WAIT_TIMER: u9,
    +            /// bt power domain power on time
    +            BT_POWERUP_TIMER: u7,
    +        }), base_address + 0x24);
    +
    +        /// address: 0x60008028
    +        /// rtc configure register
    +        pub const TIMER4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// cpu top power domain wakeup time
    +            CPU_TOP_WAIT_TIMER: u9,
    +            /// cpu top power domain power on time
    +            CPU_TOP_POWERUP_TIMER: u7,
    +            /// digital wrap power domain wakeup time
    +            DG_WRAP_WAIT_TIMER: u9,
    +            /// digital wrap power domain power on time
    +            DG_WRAP_POWERUP_TIMER: u7,
    +        }), base_address + 0x28);
    +
    +        /// address: 0x6000802c
    +        /// rtc configure register
    +        pub const TIMER5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            /// minimal sleep cycles in slow_clk_rtc
    +            MIN_SLP_VAL: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x2c);
    +
    +        /// address: 0x60008030
    +        /// rtc configure register
    +        pub const TIMER6 = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            /// digital peri power domain wakeup time
    +            DG_PERI_WAIT_TIMER: u9,
    +            /// digital peri power domain power on time
    +            DG_PERI_POWERUP_TIMER: u7,
    +        }), base_address + 0x30);
    +
    +        /// address: 0x60008034
    +        /// rtc configure register
    +        pub const ANA_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            /// force no bypass i2c power on reset
    +            RESET_POR_FORCE_PD: u1,
    +            /// force bypass i2c power on reset
    +            RESET_POR_FORCE_PU: u1,
    +            /// enable glitch reset
    +            GLITCH_RST_EN: u1,
    +            reserved18: u1,
    +            /// PLLA force power up
    +            SAR_I2C_PU: u1,
    +            /// PLLA force power down
    +            PLLA_FORCE_PD: u1,
    +            /// PLLA force power up
    +            PLLA_FORCE_PU: u1,
    +            /// start BBPLL calibration during sleep
    +            BBPLL_CAL_SLP_START: u1,
    +            /// 1: PVTMON power up
    +            PVTMON_PU: u1,
    +            /// 1: TXRF_I2C power up
    +            TXRF_I2C_PU: u1,
    +            /// 1: RFRX_PBUS power up
    +            RFRX_PBUS_PU: u1,
    +            reserved19: u1,
    +            /// 1: CKGEN_I2C power up
    +            CKGEN_I2C_PU: u1,
    +            /// power up pll i2c
    +            PLL_I2C_PU: u1,
    +        }), base_address + 0x34);
    +
    +        /// address: 0x60008038
    +        /// rtc configure register
    +        pub const RESET_STATE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reset cause of PRO CPU
    +            RESET_CAUSE_PROCPU: u6,
    +            /// reset cause of APP CPU
    +            RESET_CAUSE_APPCPU: u6,
    +            /// APP CPU state vector sel
    +            STAT_VECTOR_SEL_APPCPU: u1,
    +            /// PRO CPU state vector sel
    +            STAT_VECTOR_SEL_PROCPU: u1,
    +            /// PRO CPU reset_flag
    +            ALL_RESET_FLAG_PROCPU: u1,
    +            /// APP CPU reset flag
    +            ALL_RESET_FLAG_APPCPU: u1,
    +            /// clear PRO CPU reset_flag
    +            ALL_RESET_FLAG_CLR_PROCPU: u1,
    +            /// clear APP CPU reset flag
    +            ALL_RESET_FLAG_CLR_APPCPU: u1,
    +            /// APPCPU OcdHaltOnReset
    +            OCD_HALT_ON_RESET_APPCPU: u1,
    +            /// PROCPU OcdHaltOnReset
    +            OCD_HALT_ON_RESET_PROCPU: u1,
    +            /// configure jtag reset configure
    +            JTAG_RESET_FLAG_PROCPU: u1,
    +            /// configure jtag reset configure
    +            JTAG_RESET_FLAG_APPCPU: u1,
    +            /// configure jtag reset configure
    +            JTAG_RESET_FLAG_CLR_PROCPU: u1,
    +            /// configure jtag reset configure
    +            JTAG_RESET_FLAG_CLR_APPCPU: u1,
    +            /// configure dreset configure
    +            RTC_DRESET_MASK_APPCPU: u1,
    +            /// configure dreset configure
    +            RTC_DRESET_MASK_PROCPU: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +        }), base_address + 0x38);
    +
    +        /// address: 0x6000803c
    +        /// rtc configure register
    +        pub const WAKEUP_STATE = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            /// wakeup enable bitmap
    +            RTC_WAKEUP_ENA: u17,
    +        }), base_address + 0x3c);
    +
    +        /// address: 0x60008040
    +        /// rtc configure register
    +        pub const INT_ENA_RTC = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// enable sleep wakeup interrupt
    +            SLP_WAKEUP_INT_ENA: u1,
    +            /// enable sleep reject interrupt
    +            SLP_REJECT_INT_ENA: u1,
    +            reserved0: u1,
    +            /// enable RTC WDT interrupt
    +            RTC_WDT_INT_ENA: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            /// enable brown out interrupt
    +            RTC_BROWN_OUT_INT_ENA: u1,
    +            /// enable RTC main timer interrupt
    +            RTC_MAIN_TIMER_INT_ENA: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            /// enable super watch dog interrupt
    +            RTC_SWD_INT_ENA: u1,
    +            /// enable xtal32k_dead interrupt
    +            RTC_XTAL32K_DEAD_INT_ENA: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            /// enbale gitch det interrupt
    +            RTC_GLITCH_DET_INT_ENA: u1,
    +            /// enbale bbpll cal end interrupt
    +            RTC_BBPLL_CAL_INT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +        }), base_address + 0x40);
    +
    +        /// address: 0x60008044
    +        /// rtc configure register
    +        pub const INT_RAW_RTC = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// sleep wakeup interrupt raw
    +            SLP_WAKEUP_INT_RAW: u1,
    +            /// sleep reject interrupt raw
    +            SLP_REJECT_INT_RAW: u1,
    +            reserved0: u1,
    +            /// RTC WDT interrupt raw
    +            RTC_WDT_INT_RAW: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            /// brown out interrupt raw
    +            RTC_BROWN_OUT_INT_RAW: u1,
    +            /// RTC main timer interrupt raw
    +            RTC_MAIN_TIMER_INT_RAW: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            /// super watch dog interrupt raw
    +            RTC_SWD_INT_RAW: u1,
    +            /// xtal32k dead detection interrupt raw
    +            RTC_XTAL32K_DEAD_INT_RAW: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            /// glitch_det_interrupt_raw
    +            RTC_GLITCH_DET_INT_RAW: u1,
    +            /// bbpll cal end interrupt state
    +            RTC_BBPLL_CAL_INT_RAW: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +        }), base_address + 0x44);
    +
    +        /// address: 0x60008048
    +        /// rtc configure register
    +        pub const INT_ST_RTC = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// sleep wakeup interrupt state
    +            SLP_WAKEUP_INT_ST: u1,
    +            /// sleep reject interrupt state
    +            SLP_REJECT_INT_ST: u1,
    +            reserved0: u1,
    +            /// RTC WDT interrupt state
    +            RTC_WDT_INT_ST: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            /// brown out interrupt state
    +            RTC_BROWN_OUT_INT_ST: u1,
    +            /// RTC main timer interrupt state
    +            RTC_MAIN_TIMER_INT_ST: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            /// super watch dog interrupt state
    +            RTC_SWD_INT_ST: u1,
    +            /// xtal32k dead detection interrupt state
    +            RTC_XTAL32K_DEAD_INT_ST: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            /// glitch_det_interrupt state
    +            RTC_GLITCH_DET_INT_ST: u1,
    +            /// bbpll cal end interrupt state
    +            RTC_BBPLL_CAL_INT_ST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +        }), base_address + 0x48);
    +
    +        /// address: 0x6000804c
    +        /// rtc configure register
    +        pub const INT_CLR_RTC = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Clear sleep wakeup interrupt state
    +            SLP_WAKEUP_INT_CLR: u1,
    +            /// Clear sleep reject interrupt state
    +            SLP_REJECT_INT_CLR: u1,
    +            reserved0: u1,
    +            /// Clear RTC WDT interrupt state
    +            RTC_WDT_INT_CLR: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            /// Clear brown out interrupt state
    +            RTC_BROWN_OUT_INT_CLR: u1,
    +            /// Clear RTC main timer interrupt state
    +            RTC_MAIN_TIMER_INT_CLR: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            /// Clear super watch dog interrupt state
    +            RTC_SWD_INT_CLR: u1,
    +            /// Clear RTC WDT interrupt state
    +            RTC_XTAL32K_DEAD_INT_CLR: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            /// Clear glitch det interrupt state
    +            RTC_GLITCH_DET_INT_CLR: u1,
    +            /// clear bbpll cal end interrupt state
    +            RTC_BBPLL_CAL_INT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +        }), base_address + 0x4c);
    +
    +        /// address: 0x60008050
    +        /// rtc configure register
    +        pub const STORE0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reserved register
    +            RTC_SCRATCH0: u32,
    +        }), base_address + 0x50);
    +
    +        /// address: 0x60008054
    +        /// rtc configure register
    +        pub const STORE1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reserved register
    +            RTC_SCRATCH1: u32,
    +        }), base_address + 0x54);
    +
    +        /// address: 0x60008058
    +        /// rtc configure register
    +        pub const STORE2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reserved register
    +            RTC_SCRATCH2: u32,
    +        }), base_address + 0x58);
    +
    +        /// address: 0x6000805c
    +        /// rtc configure register
    +        pub const STORE3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reserved register
    +            RTC_SCRATCH3: u32,
    +        }), base_address + 0x5c);
    +
    +        /// address: 0x60008060
    +        /// rtc configure register
    +        pub const EXT_XTL_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// xtal 32k watch dog enable
    +            XTAL32K_WDT_EN: u1,
    +            /// xtal 32k watch dog clock force on
    +            XTAL32K_WDT_CLK_FO: u1,
    +            /// xtal 32k watch dog sw reset
    +            XTAL32K_WDT_RESET: u1,
    +            /// xtal 32k external xtal clock force on
    +            XTAL32K_EXT_CLK_FO: u1,
    +            /// xtal 32k switch to back up clock when xtal is dead
    +            XTAL32K_AUTO_BACKUP: u1,
    +            /// xtal 32k restart xtal when xtal is dead
    +            XTAL32K_AUTO_RESTART: u1,
    +            /// xtal 32k switch back xtal when xtal is restarted
    +            XTAL32K_AUTO_RETURN: u1,
    +            /// Xtal 32k xpd control by sw or fsm
    +            XTAL32K_XPD_FORCE: u1,
    +            /// apply an internal clock to help xtal 32k to start
    +            ENCKINIT_XTAL_32K: u1,
    +            /// 0: single-end buffer 1: differential buffer
    +            DBUF_XTAL_32K: u1,
    +            /// xtal_32k gm control
    +            DGM_XTAL_32K: u3,
    +            /// DRES_XTAL_32K
    +            DRES_XTAL_32K: u3,
    +            /// XPD_XTAL_32K
    +            XPD_XTAL_32K: u1,
    +            /// DAC_XTAL_32K
    +            DAC_XTAL_32K: u3,
    +            /// state of 32k_wdt
    +            RTC_WDT_STATE: u3,
    +            /// XTAL_32K sel. 0: external XTAL_32K
    +            RTC_XTAL32K_GPIO_SEL: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            /// 0: power down XTAL at high level
    +            XTL_EXT_CTR_LV: u1,
    +            /// enable gpio configure xtal power on
    +            XTL_EXT_CTR_EN: u1,
    +        }), base_address + 0x60);
    +
    +        /// address: 0x60008064
    +        /// rtc configure register
    +        pub const EXT_WAKEUP_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            reserved25: u1,
    +            reserved26: u1,
    +            reserved27: u1,
    +            reserved28: u1,
    +            reserved29: u1,
    +            reserved30: u1,
    +            /// enable filter for gpio wakeup event
    +            GPIO_WAKEUP_FILTER: u1,
    +        }), base_address + 0x64);
    +
    +        /// address: 0x60008068
    +        /// rtc configure register
    +        pub const SLP_REJECT_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            /// sleep reject enable
    +            RTC_SLEEP_REJECT_ENA: u18,
    +            /// enable reject for light sleep
    +            LIGHT_SLP_REJECT_EN: u1,
    +            /// enable reject for deep sleep
    +            DEEP_SLP_REJECT_EN: u1,
    +        }), base_address + 0x68);
    +
    +        /// address: 0x6000806c
    +        /// rtc configure register
    +        pub const CPU_PERIOD_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            reserved25: u1,
    +            reserved26: u1,
    +            reserved27: u1,
    +            reserved28: u1,
    +            /// CPU sel option
    +            RTC_CPUSEL_CONF: u1,
    +            /// CPU clk sel option
    +            RTC_CPUPERIOD_SEL: u2,
    +        }), base_address + 0x6c);
    +
    +        /// address: 0x60008070
    +        /// rtc configure register
    +        pub const CLK_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            /// efuse_clk_force_gating
    +            EFUSE_CLK_FORCE_GATING: u1,
    +            /// efuse_clk_force_nogating
    +            EFUSE_CLK_FORCE_NOGATING: u1,
    +            /// used to sync reg_ck8m_div_sel bus. Clear vld before set reg_ck8m_div_sel
    +            CK8M_DIV_SEL_VLD: u1,
    +            /// CK8M_D256_OUT divider. 00: div128
    +            CK8M_DIV: u2,
    +            /// disable CK8M and CK8M_D256_OUT
    +            ENB_CK8M: u1,
    +            /// 1: CK8M_D256_OUT is actually CK8M
    +            ENB_CK8M_DIV: u1,
    +            /// enable CK_XTAL_32K for digital core (no relationship with RTC core)
    +            DIG_XTAL32K_EN: u1,
    +            /// enable CK8M_D256_OUT for digital core (no relationship with RTC core)
    +            DIG_CLK8M_D256_EN: u1,
    +            /// enable CK8M for digital core (no relationship with RTC core)
    +            DIG_CLK8M_EN: u1,
    +            reserved1: u1,
    +            /// divider = reg_ck8m_div_sel + 1
    +            CK8M_DIV_SEL: u3,
    +            /// XTAL force no gating during sleep
    +            XTAL_FORCE_NOGATING: u1,
    +            /// CK8M force no gating during sleep
    +            CK8M_FORCE_NOGATING: u1,
    +            /// CK8M_DFREQ
    +            CK8M_DFREQ: u8,
    +            /// CK8M force power down
    +            CK8M_FORCE_PD: u1,
    +            /// CK8M force power up
    +            CK8M_FORCE_PU: u1,
    +            /// force enable xtal clk gating
    +            XTAL_GLOBAL_FORCE_GATING: u1,
    +            /// force bypass xtal clk gating
    +            XTAL_GLOBAL_FORCE_NOGATING: u1,
    +            /// fast_clk_rtc sel. 0: XTAL div 4
    +            FAST_CLK_RTC_SEL: u1,
    +            /// slelect rtc slow clk
    +            ANA_CLK_RTC_SEL: u2,
    +        }), base_address + 0x70);
    +
    +        /// address: 0x60008074
    +        /// rtc configure register
    +        pub const SLOW_CLK_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            /// used to sync div bus. clear vld before set reg_rtc_ana_clk_div
    +            RTC_ANA_CLK_DIV_VLD: u1,
    +            /// the clk divider num of RTC_CLK
    +            RTC_ANA_CLK_DIV: u8,
    +            /// flag rtc_slow_clk_next_edge
    +            RTC_SLOW_CLK_NEXT_EDGE: u1,
    +        }), base_address + 0x74);
    +
    +        /// address: 0x60008078
    +        /// rtc configure register
    +        pub const SDIO_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// timer count to apply reg_sdio_dcap after sdio power on
    +            SDIO_TIMER_TARGET: u8,
    +            reserved0: u1,
    +            /// Tieh = 1 mode drive ability. Initially set to 0 to limit charge current
    +            SDIO_DTHDRV: u2,
    +            /// ability to prevent LDO from overshoot
    +            SDIO_DCAP: u2,
    +            /// add resistor from ldo output to ground. 0: no res
    +            SDIO_INITI: u2,
    +            /// 0 to set init[1:0]=0
    +            SDIO_EN_INITI: u1,
    +            /// tune current limit threshold when tieh = 0. About 800mA/(8+d)
    +            SDIO_DCURLIM: u3,
    +            /// select current limit mode
    +            SDIO_MODECURLIM: u1,
    +            /// enable current limit
    +            SDIO_ENCURLIM: u1,
    +            /// power down SDIO_REG in sleep. Only active when reg_sdio_force = 0
    +            SDIO_REG_PD_EN: u1,
    +            /// 1: use SW option to control SDIO_REG
    +            SDIO_FORCE: u1,
    +            /// SW option for SDIO_TIEH. Only active when reg_sdio_force = 1
    +            SDIO_TIEH: u1,
    +            /// read only register for REG1P8_READY
    +            _1P8_READY: u1,
    +            /// SW option for DREFL_SDIO. Only active when reg_sdio_force = 1
    +            DREFL_SDIO: u2,
    +            /// SW option for DREFM_SDIO. Only active when reg_sdio_force = 1
    +            DREFM_SDIO: u2,
    +            /// SW option for DREFH_SDIO. Only active when reg_sdio_force = 1
    +            DREFH_SDIO: u2,
    +            XPD_SDIO: u1,
    +        }), base_address + 0x78);
    +
    +        /// address: 0x6000807c
    +        /// rtc configure register
    +        pub const BIAS_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            DG_VDD_DRV_B_SLP: u8,
    +            DG_VDD_DRV_B_SLP_EN: u1,
    +            reserved0: u1,
    +            /// bias buf when rtc in normal work state
    +            BIAS_BUF_IDLE: u1,
    +            /// bias buf when rtc in wakeup state
    +            BIAS_BUF_WAKE: u1,
    +            /// bias buf when rtc in sleep state
    +            BIAS_BUF_DEEP_SLP: u1,
    +            /// bias buf when rtc in monitor state
    +            BIAS_BUF_MONITOR: u1,
    +            /// xpd cur when rtc in sleep_state
    +            PD_CUR_DEEP_SLP: u1,
    +            /// xpd cur when rtc in monitor state
    +            PD_CUR_MONITOR: u1,
    +            /// bias_sleep when rtc in sleep_state
    +            BIAS_SLEEP_DEEP_SLP: u1,
    +            /// bias_sleep when rtc in monitor state
    +            BIAS_SLEEP_MONITOR: u1,
    +            /// DBG_ATTEN when rtc in sleep state
    +            DBG_ATTEN_DEEP_SLP: u4,
    +            /// DBG_ATTEN when rtc in monitor state
    +            DBG_ATTEN_MONITOR: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +        }), base_address + 0x7c);
    +
    +        /// address: 0x60008080
    +        /// rtc configure register
    +        pub const RTC_CNTL = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            /// software enable digital regulator cali
    +            DIG_REG_CAL_EN: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            /// SCK_DCAP
    +            SCK_DCAP: u8,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            /// RTC_DBOOST force power down
    +            DBOOST_FORCE_PD: u1,
    +            /// RTC_DBOOST force power up
    +            DBOOST_FORCE_PU: u1,
    +            /// RTC_REG force power down (for RTC_REG power down means decrease the voltage to
    +            /// 0.8v or lower )
    +            REGULATOR_FORCE_PD: u1,
    +            /// RTC_REG force power up
    +            REGULATOR_FORCE_PU: u1,
    +        }), base_address + 0x80);
    +
    +        /// address: 0x60008084
    +        /// rtc configure register
    +        pub const PWC = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            /// rtc pad force hold
    +            RTC_PAD_FORCE_HOLD: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +        }), base_address + 0x84);
    +
    +        /// address: 0x60008088
    +        /// rtc configure register
    +        pub const DIG_PWC = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// vdd_spi drv's software value
    +            VDD_SPI_PWR_DRV: u2,
    +            /// vdd_spi drv use software value
    +            VDD_SPI_PWR_FORCE: u1,
    +            /// memories in digital core force PD in sleep
    +            LSLP_MEM_FORCE_PD: u1,
    +            /// memories in digital core force PU in sleep
    +            LSLP_MEM_FORCE_PU: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            /// bt force power down
    +            BT_FORCE_PD: u1,
    +            /// bt force power up
    +            BT_FORCE_PU: u1,
    +            /// digital peri force power down
    +            DG_PERI_FORCE_PD: u1,
    +            /// digital peri force power up
    +            DG_PERI_FORCE_PU: u1,
    +            /// fastmemory retention mode in sleep
    +            RTC_FASTMEM_FORCE_LPD: u1,
    +            /// fastmemory donlt entry retention mode in sleep
    +            RTC_FASTMEM_FORCE_LPU: u1,
    +            /// wifi force power down
    +            WIFI_FORCE_PD: u1,
    +            /// wifi force power up
    +            WIFI_FORCE_PU: u1,
    +            /// digital core force power down
    +            DG_WRAP_FORCE_PD: u1,
    +            /// digital core force power up
    +            DG_WRAP_FORCE_PU: u1,
    +            /// cpu core force power down
    +            CPU_TOP_FORCE_PD: u1,
    +            /// cpu force power up
    +            CPU_TOP_FORCE_PU: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            /// enable power down bt in sleep
    +            BT_PD_EN: u1,
    +            /// enable power down digital peri in sleep
    +            DG_PERI_PD_EN: u1,
    +            /// enable power down cpu in sleep
    +            CPU_TOP_PD_EN: u1,
    +            /// enable power down wifi in sleep
    +            WIFI_PD_EN: u1,
    +            /// enable power down digital wrap in sleep
    +            DG_WRAP_PD_EN: u1,
    +        }), base_address + 0x88);
    +
    +        /// address: 0x6000808c
    +        /// rtc configure register
    +        pub const DIG_ISO = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            /// DIG_ISO force off
    +            FORCE_OFF: u1,
    +            /// DIG_ISO force on
    +            FORCE_ON: u1,
    +            /// read only register to indicate digital pad auto-hold status
    +            DG_PAD_AUTOHOLD: u1,
    +            /// wtite only register to clear digital pad auto-hold
    +            CLR_DG_PAD_AUTOHOLD: u1,
    +            /// digital pad enable auto-hold
    +            DG_PAD_AUTOHOLD_EN: u1,
    +            /// digital pad force no ISO
    +            DG_PAD_FORCE_NOISO: u1,
    +            /// digital pad force ISO
    +            DG_PAD_FORCE_ISO: u1,
    +            /// digital pad force un-hold
    +            DG_PAD_FORCE_UNHOLD: u1,
    +            /// digital pad force hold
    +            DG_PAD_FORCE_HOLD: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            /// bt force ISO
    +            BT_FORCE_ISO: u1,
    +            /// bt force no ISO
    +            BT_FORCE_NOISO: u1,
    +            /// Digital peri force ISO
    +            DG_PERI_FORCE_ISO: u1,
    +            /// digital peri force no ISO
    +            DG_PERI_FORCE_NOISO: u1,
    +            /// cpu force ISO
    +            CPU_TOP_FORCE_ISO: u1,
    +            /// cpu force no ISO
    +            CPU_TOP_FORCE_NOISO: u1,
    +            /// wifi force ISO
    +            WIFI_FORCE_ISO: u1,
    +            /// wifi force no ISO
    +            WIFI_FORCE_NOISO: u1,
    +            /// digital core force ISO
    +            DG_WRAP_FORCE_ISO: u1,
    +            /// digital core force no ISO
    +            DG_WRAP_FORCE_NOISO: u1,
    +        }), base_address + 0x8c);
    +
    +        /// address: 0x60008090
    +        /// rtc configure register
    +        pub const WDTCONFIG0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// chip reset siginal pulse width
    +            WDT_CHIP_RESET_WIDTH: u8,
    +            /// wdt reset whole chip enable
    +            WDT_CHIP_RESET_EN: u1,
    +            /// pause WDT in sleep
    +            WDT_PAUSE_IN_SLP: u1,
    +            /// enable WDT reset APP CPU
    +            WDT_APPCPU_RESET_EN: u1,
    +            /// enable WDT reset PRO CPU
    +            WDT_PROCPU_RESET_EN: u1,
    +            /// enable WDT in flash boot
    +            WDT_FLASHBOOT_MOD_EN: u1,
    +            /// system reset counter length
    +            WDT_SYS_RESET_LENGTH: u3,
    +            /// CPU reset counter length
    +            WDT_CPU_RESET_LENGTH: u3,
    +            /// 1: interrupt stage en
    +            WDT_STG3: u3,
    +            /// 1: interrupt stage en
    +            WDT_STG2: u3,
    +            /// 1: interrupt stage en
    +            WDT_STG1: u3,
    +            /// 1: interrupt stage en
    +            WDT_STG0: u3,
    +            /// enable rtc wdt
    +            WDT_EN: u1,
    +        }), base_address + 0x90);
    +
    +        /// address: 0x60008094
    +        /// rtc configure register
    +        pub const WDTCONFIG1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// the hold time of stage0
    +            WDT_STG0_HOLD: u32,
    +        }), base_address + 0x94);
    +
    +        /// address: 0x60008098
    +        /// rtc configure register
    +        pub const WDTCONFIG2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// the hold time of stage1
    +            WDT_STG1_HOLD: u32,
    +        }), base_address + 0x98);
    +
    +        /// address: 0x6000809c
    +        /// rtc configure register
    +        pub const WDTCONFIG3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// the hold time of stage2
    +            WDT_STG2_HOLD: u32,
    +        }), base_address + 0x9c);
    +
    +        /// address: 0x600080a0
    +        /// rtc configure register
    +        pub const WDTCONFIG4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// the hold time of stage3
    +            WDT_STG3_HOLD: u32,
    +        }), base_address + 0xa0);
    +
    +        /// address: 0x600080a4
    +        /// rtc configure register
    +        pub const WDTFEED = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            reserved25: u1,
    +            reserved26: u1,
    +            reserved27: u1,
    +            reserved28: u1,
    +            reserved29: u1,
    +            reserved30: u1,
    +            /// sw feed rtc wdt
    +            RTC_WDT_FEED: u1,
    +        }), base_address + 0xa4);
    +
    +        /// address: 0x600080a8
    +        /// rtc configure register
    +        pub const WDTWPROTECT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// the key of rtc wdt
    +            WDT_WKEY: u32,
    +        }), base_address + 0xa8);
    +
    +        /// address: 0x600080ac
    +        /// rtc configure register
    +        pub const SWD_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// swd reset flag
    +            SWD_RESET_FLAG: u1,
    +            /// swd interrupt for feeding
    +            SWD_FEED_INT: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            /// Bypass swd rst
    +            SWD_BYPASS_RST: u1,
    +            /// adjust signal width send to swd
    +            SWD_SIGNAL_WIDTH: u10,
    +            /// reset swd reset flag
    +            SWD_RST_FLAG_CLR: u1,
    +            /// Sw feed swd
    +            SWD_FEED: u1,
    +            /// disabel SWD
    +            SWD_DISABLE: u1,
    +            /// automatically feed swd when int comes
    +            SWD_AUTO_FEED_EN: u1,
    +        }), base_address + 0xac);
    +
    +        /// address: 0x600080b0
    +        /// rtc configure register
    +        pub const SWD_WPROTECT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// the key of super wdt
    +            SWD_WKEY: u32,
    +        }), base_address + 0xb0);
    +
    +        /// address: 0x600080b4
    +        /// rtc configure register
    +        pub const SW_CPU_STALL = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            /// {reg_sw_stall_appcpu_c1[5:0]
    +            SW_STALL_APPCPU_C1: u6,
    +            /// stall cpu by software
    +            SW_STALL_PROCPU_C1: u6,
    +        }), base_address + 0xb4);
    +
    +        /// address: 0x600080b8
    +        /// rtc configure register
    +        pub const STORE4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reserved register
    +            RTC_SCRATCH4: u32,
    +        }), base_address + 0xb8);
    +
    +        /// address: 0x600080bc
    +        /// rtc configure register
    +        pub const STORE5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reserved register
    +            RTC_SCRATCH5: u32,
    +        }), base_address + 0xbc);
    +
    +        /// address: 0x600080c0
    +        /// rtc configure register
    +        pub const STORE6 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reserved register
    +            RTC_SCRATCH6: u32,
    +        }), base_address + 0xc0);
    +
    +        /// address: 0x600080c4
    +        /// rtc configure register
    +        pub const STORE7 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reserved register
    +            RTC_SCRATCH7: u32,
    +        }), base_address + 0xc4);
    +
    +        /// address: 0x600080c8
    +        /// rtc configure register
    +        pub const LOW_POWER_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// rom0 power down
    +            XPD_ROM0: u1,
    +            reserved0: u1,
    +            /// External DCDC power down
    +            XPD_DIG_DCDC: u1,
    +            /// rtc peripheral iso
    +            RTC_PERI_ISO: u1,
    +            /// rtc peripheral power down
    +            XPD_RTC_PERI: u1,
    +            /// wifi iso
    +            WIFI_ISO: u1,
    +            /// wifi wrap power down
    +            XPD_WIFI: u1,
    +            /// digital wrap iso
    +            DIG_ISO: u1,
    +            /// digital wrap power down
    +            XPD_DIG: u1,
    +            /// touch should start to work
    +            RTC_TOUCH_STATE_START: u1,
    +            /// touch is about to working. Switch rtc main state
    +            RTC_TOUCH_STATE_SWITCH: u1,
    +            /// touch is in sleep state
    +            RTC_TOUCH_STATE_SLP: u1,
    +            /// touch is done
    +            RTC_TOUCH_STATE_DONE: u1,
    +            /// ulp/cocpu should start to work
    +            RTC_COCPU_STATE_START: u1,
    +            /// ulp/cocpu is about to working. Switch rtc main state
    +            RTC_COCPU_STATE_SWITCH: u1,
    +            /// ulp/cocpu is in sleep state
    +            RTC_COCPU_STATE_SLP: u1,
    +            /// ulp/cocpu is done
    +            RTC_COCPU_STATE_DONE: u1,
    +            /// no use any more
    +            RTC_MAIN_STATE_XTAL_ISO: u1,
    +            /// rtc main state machine is in states that pll should be running
    +            RTC_MAIN_STATE_PLL_ON: u1,
    +            /// rtc is ready to receive wake up trigger from wake up source
    +            RTC_RDY_FOR_WAKEUP: u1,
    +            /// rtc main state machine has been waited for some cycles
    +            RTC_MAIN_STATE_WAIT_END: u1,
    +            /// rtc main state machine is in the states of wakeup process
    +            RTC_IN_WAKEUP_STATE: u1,
    +            /// rtc main state machine is in the states of low power
    +            RTC_IN_LOW_POWER_STATE: u1,
    +            /// rtc main state machine is in wait 8m state
    +            RTC_MAIN_STATE_IN_WAIT_8M: u1,
    +            /// rtc main state machine is in wait pll state
    +            RTC_MAIN_STATE_IN_WAIT_PLL: u1,
    +            /// rtc main state machine is in wait xtal state
    +            RTC_MAIN_STATE_IN_WAIT_XTL: u1,
    +            /// rtc main state machine is in sleep state
    +            RTC_MAIN_STATE_IN_SLP: u1,
    +            /// rtc main state machine is in idle state
    +            RTC_MAIN_STATE_IN_IDLE: u1,
    +            /// rtc main state machine status
    +            RTC_MAIN_STATE: u4,
    +        }), base_address + 0xc8);
    +
    +        /// address: 0x600080cc
    +        /// rtc configure register
    +        pub const DIAG0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            RTC_LOW_POWER_DIAG1: u32,
    +        }), base_address + 0xcc);
    +
    +        /// address: 0x600080d0
    +        /// rtc configure register
    +        pub const PAD_HOLD = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// the hold configure of rtc gpio0
    +            RTC_GPIO_PIN0_HOLD: u1,
    +            /// the hold configure of rtc gpio1
    +            RTC_GPIO_PIN1_HOLD: u1,
    +            /// the hold configure of rtc gpio2
    +            RTC_GPIO_PIN2_HOLD: u1,
    +            /// the hold configure of rtc gpio3
    +            RTC_GPIO_PIN3_HOLD: u1,
    +            /// the hold configure of rtc gpio4
    +            RTC_GPIO_PIN4_HOLD: u1,
    +            /// the hold configure of rtc gpio5
    +            RTC_GPIO_PIN5_HOLD: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +        }), base_address + 0xd0);
    +
    +        /// address: 0x600080d4
    +        /// rtc configure register
    +        pub const DIG_PAD_HOLD = @intToPtr(*volatile u32, base_address + 0xd4);
    +
    +        /// address: 0x600080d8
    +        /// rtc configure register
    +        pub const BROWN_OUT = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// brown out interrupt wait cycles
    +            INT_WAIT: u10,
    +            /// enable close flash when brown out happens
    +            CLOSE_FLASH_ENA: u1,
    +            /// enable power down RF when brown out happens
    +            PD_RF_ENA: u1,
    +            /// brown out reset wait cycles
    +            RST_WAIT: u10,
    +            /// enable brown out reset
    +            RST_ENA: u1,
    +            /// 1: 4-pos reset
    +            RST_SEL: u1,
    +            /// brown_out origin reset enable
    +            ANA_RST_EN: u1,
    +            /// clear brown out counter
    +            CNT_CLR: u1,
    +            /// enable brown out
    +            ENA: u1,
    +            /// the flag of brown det from analog
    +            DET: u1,
    +        }), base_address + 0xd8);
    +
    +        /// address: 0x600080dc
    +        /// rtc configure register
    +        pub const TIME_LOW1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// RTC timer low 32 bits
    +            RTC_TIMER_VALUE1_LOW: u32,
    +        }), base_address + 0xdc);
    +
    +        /// address: 0x600080e0
    +        /// rtc configure register
    +        pub const TIME_HIGH1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// RTC timer high 16 bits
    +            RTC_TIMER_VALUE1_HIGH: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0xe0);
    +
    +        /// address: 0x600080e4
    +        /// rtc configure register
    +        pub const XTAL32K_CLK_FACTOR = @intToPtr(*volatile u32, base_address + 0xe4);
    +
    +        /// address: 0x600080e8
    +        /// rtc configure register
    +        pub const XTAL32K_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// cycles to wait to return noral xtal 32k
    +            XTAL32K_RETURN_WAIT: u4,
    +            /// cycles to wait to repower on xtal 32k
    +            XTAL32K_RESTART_WAIT: u16,
    +            /// If no clock detected for this amount of time
    +            XTAL32K_WDT_TIMEOUT: u8,
    +            /// if restarted xtal32k period is smaller than this
    +            XTAL32K_STABLE_THRES: u4,
    +        }), base_address + 0xe8);
    +
    +        /// address: 0x600080ec
    +        /// rtc configure register
    +        pub const USB_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            /// disable io_mux reset
    +            IO_MUX_RESET_DISABLE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +        }), base_address + 0xec);
    +
    +        /// address: 0x600080f0
    +        /// RTC_CNTL_RTC_SLP_REJECT_CAUSE_REG
    +        pub const SLP_REJECT_CAUSE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// sleep reject cause
    +            REJECT_CAUSE: u18,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0xf0);
    +
    +        /// address: 0x600080f4
    +        /// rtc configure register
    +        pub const OPTION1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// force chip entry download mode
    +            FORCE_DOWNLOAD_BOOT: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0xf4);
    +
    +        /// address: 0x600080f8
    +        /// RTC_CNTL_RTC_SLP_WAKEUP_CAUSE_REG
    +        pub const SLP_WAKEUP_CAUSE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// sleep wakeup cause
    +            WAKEUP_CAUSE: u17,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +        }), base_address + 0xf8);
    +
    +        /// address: 0x600080fc
    +        /// rtc configure register
    +        pub const ULP_CP_TIMER_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            /// sleep cycles for ULP-coprocessor timer
    +            ULP_CP_TIMER_SLP_CYCLE: u24,
    +        }), base_address + 0xfc);
    +
    +        /// address: 0x60008100
    +        /// rtc configure register
    +        pub const INT_ENA_RTC_W1TS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// enable sleep wakeup interrupt
    +            SLP_WAKEUP_INT_ENA_W1TS: u1,
    +            /// enable sleep reject interrupt
    +            SLP_REJECT_INT_ENA_W1TS: u1,
    +            reserved0: u1,
    +            /// enable RTC WDT interrupt
    +            RTC_WDT_INT_ENA_W1TS: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            /// enable brown out interrupt
    +            RTC_BROWN_OUT_INT_ENA_W1TS: u1,
    +            /// enable RTC main timer interrupt
    +            RTC_MAIN_TIMER_INT_ENA_W1TS: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            /// enable super watch dog interrupt
    +            RTC_SWD_INT_ENA_W1TS: u1,
    +            /// enable xtal32k_dead interrupt
    +            RTC_XTAL32K_DEAD_INT_ENA_W1TS: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            /// enbale gitch det interrupt
    +            RTC_GLITCH_DET_INT_ENA_W1TS: u1,
    +            /// enbale bbpll cal interrupt
    +            RTC_BBPLL_CAL_INT_ENA_W1TS: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +        }), base_address + 0x100);
    +
    +        /// address: 0x60008104
    +        /// rtc configure register
    +        pub const INT_ENA_RTC_W1TC = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// clear sleep wakeup interrupt enable
    +            SLP_WAKEUP_INT_ENA_W1TC: u1,
    +            /// clear sleep reject interrupt enable
    +            SLP_REJECT_INT_ENA_W1TC: u1,
    +            reserved0: u1,
    +            /// clear RTC WDT interrupt enable
    +            RTC_WDT_INT_ENA_W1TC: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            /// clear brown out interrupt enable
    +            RTC_BROWN_OUT_INT_ENA_W1TC: u1,
    +            /// Clear RTC main timer interrupt enable
    +            RTC_MAIN_TIMER_INT_ENA_W1TC: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            /// clear super watch dog interrupt enable
    +            RTC_SWD_INT_ENA_W1TC: u1,
    +            /// clear xtal32k_dead interrupt enable
    +            RTC_XTAL32K_DEAD_INT_ENA_W1TC: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            /// clear gitch det interrupt enable
    +            RTC_GLITCH_DET_INT_ENA_W1TC: u1,
    +            /// clear bbpll cal interrupt enable
    +            RTC_BBPLL_CAL_INT_ENA_W1TC: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +        }), base_address + 0x104);
    +
    +        /// address: 0x60008108
    +        /// rtc configure register
    +        pub const RETENTION_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            /// Retention clk sel
    +            RETENTION_CLK_SEL: u1,
    +            /// Retention done wait time
    +            RETENTION_DONE_WAIT: u3,
    +            /// Retention clkoff wait time
    +            RETENTION_CLKOFF_WAIT: u4,
    +            /// enable cpu retention when light sleep
    +            RETENTION_EN: u1,
    +            /// wait cycles for rention operation
    +            RETENTION_WAIT: u5,
    +        }), base_address + 0x108);
    +
    +        /// address: 0x6000810c
    +        /// rtc configure register
    +        pub const FIB_SEL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// select use analog fib signal
    +            RTC_FIB_SEL: u3,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +        }), base_address + 0x10c);
    +
    +        /// address: 0x60008110
    +        /// rtc configure register
    +        pub const GPIO_WAKEUP = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// rtc gpio wakeup flag
    +            RTC_GPIO_WAKEUP_STATUS: u6,
    +            /// clear rtc gpio wakeup flag
    +            RTC_GPIO_WAKEUP_STATUS_CLR: u1,
    +            /// enable rtc io clk gate
    +            RTC_GPIO_PIN_CLK_GATE: u1,
    +            /// configure gpio wakeup type
    +            RTC_GPIO_PIN5_INT_TYPE: u3,
    +            /// configure gpio wakeup type
    +            RTC_GPIO_PIN4_INT_TYPE: u3,
    +            /// configure gpio wakeup type
    +            RTC_GPIO_PIN3_INT_TYPE: u3,
    +            /// configure gpio wakeup type
    +            RTC_GPIO_PIN2_INT_TYPE: u3,
    +            /// configure gpio wakeup type
    +            RTC_GPIO_PIN1_INT_TYPE: u3,
    +            /// configure gpio wakeup type
    +            RTC_GPIO_PIN0_INT_TYPE: u3,
    +            /// enable wakeup from rtc gpio5
    +            RTC_GPIO_PIN5_WAKEUP_ENABLE: u1,
    +            /// enable wakeup from rtc gpio4
    +            RTC_GPIO_PIN4_WAKEUP_ENABLE: u1,
    +            /// enable wakeup from rtc gpio3
    +            RTC_GPIO_PIN3_WAKEUP_ENABLE: u1,
    +            /// enable wakeup from rtc gpio2
    +            RTC_GPIO_PIN2_WAKEUP_ENABLE: u1,
    +            /// enable wakeup from rtc gpio1
    +            RTC_GPIO_PIN1_WAKEUP_ENABLE: u1,
    +            /// enable wakeup from rtc gpio0
    +            RTC_GPIO_PIN0_WAKEUP_ENABLE: u1,
    +        }), base_address + 0x110);
    +
    +        /// address: 0x60008114
    +        /// rtc configure register
    +        pub const DBG_SEL = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            /// use for debug
    +            RTC_DEBUG_12M_NO_GATING: u1,
    +            /// use for debug
    +            RTC_DEBUG_BIT_SEL: u5,
    +            /// use for debug
    +            RTC_DEBUG_SEL0: u5,
    +            /// use for debug
    +            RTC_DEBUG_SEL1: u5,
    +            /// use for debug
    +            RTC_DEBUG_SEL2: u5,
    +            /// use for debug
    +            RTC_DEBUG_SEL3: u5,
    +            /// use for debug
    +            RTC_DEBUG_SEL4: u5,
    +        }), base_address + 0x114);
    +
    +        /// address: 0x60008118
    +        /// rtc configure register
    +        pub const DBG_MAP = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// use for debug
    +            RTC_GPIO_PIN5_MUX_SEL: u1,
    +            /// use for debug
    +            RTC_GPIO_PIN4_MUX_SEL: u1,
    +            /// use for debug
    +            RTC_GPIO_PIN3_MUX_SEL: u1,
    +            /// use for debug
    +            RTC_GPIO_PIN2_MUX_SEL: u1,
    +            /// use for debug
    +            RTC_GPIO_PIN1_MUX_SEL: u1,
    +            /// use for debug
    +            RTC_GPIO_PIN0_MUX_SEL: u1,
    +            /// use for debug
    +            RTC_GPIO_PIN5_FUN_SEL: u4,
    +            /// use for debug
    +            RTC_GPIO_PIN4_FUN_SEL: u4,
    +            /// use for debug
    +            RTC_GPIO_PIN3_FUN_SEL: u4,
    +            /// use for debug
    +            RTC_GPIO_PIN2_FUN_SEL: u4,
    +            /// use for debug
    +            RTC_GPIO_PIN1_FUN_SEL: u4,
    +            /// use for debug
    +            RTC_GPIO_PIN0_FUN_SEL: u4,
    +        }), base_address + 0x118);
    +
    +        /// address: 0x6000811c
    +        /// rtc configure register
    +        pub const SENSOR_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            reserved25: u1,
    +            reserved26: u1,
    +            /// reg_sar2_pwdet_cct
    +            SAR2_PWDET_CCT: u3,
    +            /// force power up SAR
    +            FORCE_XPD_SAR: u2,
    +        }), base_address + 0x11c);
    +
    +        /// address: 0x60008120
    +        /// rtc configure register
    +        pub const DBG_SAR_SEL = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            reserved25: u1,
    +            reserved26: u1,
    +            /// use for debug
    +            SAR_DEBUG_SEL: u5,
    +        }), base_address + 0x120);
    +
    +        /// address: 0x60008124
    +        /// rtc configure register
    +        pub const PG_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            reserved25: u1,
    +            /// power glitch desense
    +            POWER_GLITCH_DSENSE: u2,
    +            /// force disable power glitch
    +            POWER_GLITCH_FORCE_PD: u1,
    +            /// force enable power glitch
    +            POWER_GLITCH_FORCE_PU: u1,
    +            /// use efuse value control power glitch enable
    +            POWER_GLITCH_EFUSE_SEL: u1,
    +            /// enable power glitch
    +            POWER_GLITCH_EN: u1,
    +        }), base_address + 0x124);
    +
    +        /// address: 0x600081fc
    +        /// rtc configure register
    +        pub const DATE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// verision
    +            RTC_CNTL_DATE: u28,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +        }), base_address + 0x1fc);
    +    };
    +
    +    /// Sensitive
    +    pub const SENSITIVE = struct {
    +        pub const base_address = 0x600c1000;
    +
    +        /// address: 0x600c1000
    +        /// SENSITIVE_ROM_TABLE_LOCK_REG
    +        pub const ROM_TABLE_LOCK = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x0);
    +
    +        /// address: 0x600c1004
    +        /// SENSITIVE_ROM_TABLE_REG
    +        pub const ROM_TABLE = @intToPtr(*volatile u32, base_address + 0x4);
    +
    +        /// address: 0x600c1008
    +        /// SENSITIVE_PRIVILEGE_MODE_SEL_LOCK_REG
    +        pub const PRIVILEGE_MODE_SEL_LOCK = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x8);
    +
    +        /// address: 0x600c100c
    +        /// SENSITIVE_PRIVILEGE_MODE_SEL_REG
    +        pub const PRIVILEGE_MODE_SEL = @intToPtr(*volatile MmioInt(32, u1), base_address + 0xc);
    +
    +        /// address: 0x600c1010
    +        /// SENSITIVE_APB_PERIPHERAL_ACCESS_0_REG
    +        pub const APB_PERIPHERAL_ACCESS_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// apb_peripheral_access_lock
    +            APB_PERIPHERAL_ACCESS_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x10);
    +
    +        /// address: 0x600c1014
    +        /// SENSITIVE_APB_PERIPHERAL_ACCESS_1_REG
    +        pub const APB_PERIPHERAL_ACCESS_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// apb_peripheral_access_split_burst
    +            APB_PERIPHERAL_ACCESS_SPLIT_BURST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x14);
    +
    +        /// address: 0x600c1018
    +        /// SENSITIVE_INTERNAL_SRAM_USAGE_0_REG
    +        pub const INTERNAL_SRAM_USAGE_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// internal_sram_usage_lock
    +            INTERNAL_SRAM_USAGE_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x600c101c
    +        /// SENSITIVE_INTERNAL_SRAM_USAGE_1_REG
    +        pub const INTERNAL_SRAM_USAGE_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// internal_sram_usage_cpu_cache
    +            INTERNAL_SRAM_USAGE_CPU_CACHE: u1,
    +            /// internal_sram_usage_cpu_sram
    +            INTERNAL_SRAM_USAGE_CPU_SRAM: u3,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x600c1020
    +        /// SENSITIVE_INTERNAL_SRAM_USAGE_3_REG
    +        pub const INTERNAL_SRAM_USAGE_3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// internal_sram_usage_mac_dump_sram
    +            INTERNAL_SRAM_USAGE_MAC_DUMP_SRAM: u3,
    +            /// internal_sram_alloc_mac_dump
    +            INTERNAL_SRAM_ALLOC_MAC_DUMP: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x20);
    +
    +        /// address: 0x600c1024
    +        /// SENSITIVE_INTERNAL_SRAM_USAGE_4_REG
    +        pub const INTERNAL_SRAM_USAGE_4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// internal_sram_usage_log_sram
    +            INTERNAL_SRAM_USAGE_LOG_SRAM: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x24);
    +
    +        /// address: 0x600c1028
    +        /// SENSITIVE_CACHE_TAG_ACCESS_0_REG
    +        pub const CACHE_TAG_ACCESS_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// cache_tag_access_lock
    +            CACHE_TAG_ACCESS_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x28);
    +
    +        /// address: 0x600c102c
    +        /// SENSITIVE_CACHE_TAG_ACCESS_1_REG
    +        pub const CACHE_TAG_ACCESS_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// pro_i_tag_rd_acs
    +            PRO_I_TAG_RD_ACS: u1,
    +            /// pro_i_tag_wr_acs
    +            PRO_I_TAG_WR_ACS: u1,
    +            /// pro_d_tag_rd_acs
    +            PRO_D_TAG_RD_ACS: u1,
    +            /// pro_d_tag_wr_acs
    +            PRO_D_TAG_WR_ACS: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x2c);
    +
    +        /// address: 0x600c1030
    +        /// SENSITIVE_CACHE_MMU_ACCESS_0_REG
    +        pub const CACHE_MMU_ACCESS_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// cache_mmu_access_lock
    +            CACHE_MMU_ACCESS_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x30);
    +
    +        /// address: 0x600c1034
    +        /// SENSITIVE_CACHE_MMU_ACCESS_1_REG
    +        pub const CACHE_MMU_ACCESS_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// pro_mmu_rd_acs
    +            PRO_MMU_RD_ACS: u1,
    +            /// pro_mmu_wr_acs
    +            PRO_MMU_WR_ACS: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x34);
    +
    +        /// address: 0x600c1038
    +        /// SENSITIVE_DMA_APBPERI_SPI2_PMS_CONSTRAIN_0_REG
    +        pub const DMA_APBPERI_SPI2_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// dma_apbperi_spi2_pms_constrain_lock
    +            DMA_APBPERI_SPI2_PMS_CONSTRAIN_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x38);
    +
    +        /// address: 0x600c103c
    +        /// SENSITIVE_DMA_APBPERI_SPI2_PMS_CONSTRAIN_1_REG
    +        pub const DMA_APBPERI_SPI2_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// dma_apbperi_spi2_pms_constrain_sram_world_0_pms_0
    +            DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    +            /// dma_apbperi_spi2_pms_constrain_sram_world_0_pms_1
    +            DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    +            /// dma_apbperi_spi2_pms_constrain_sram_world_0_pms_2
    +            DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    +            /// dma_apbperi_spi2_pms_constrain_sram_world_0_pms_3
    +            DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// dma_apbperi_spi2_pms_constrain_sram_world_1_pms_0
    +            DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    +            /// dma_apbperi_spi2_pms_constrain_sram_world_1_pms_1
    +            DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    +            /// dma_apbperi_spi2_pms_constrain_sram_world_1_pms_2
    +            DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    +            /// dma_apbperi_spi2_pms_constrain_sram_world_1_pms_3
    +            DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x3c);
    +
    +        /// address: 0x600c1040
    +        /// SENSITIVE_DMA_APBPERI_UCHI0_PMS_CONSTRAIN_0_REG
    +        pub const DMA_APBPERI_UCHI0_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// dma_apbperi_uchi0_pms_constrain_lock
    +            DMA_APBPERI_UCHI0_PMS_CONSTRAIN_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x40);
    +
    +        /// address: 0x600c1044
    +        /// SENSITIVE_DMA_APBPERI_UCHI0_PMS_CONSTRAIN_1_REG
    +        pub const DMA_APBPERI_UCHI0_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_0
    +            DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    +            /// dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_1
    +            DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    +            /// dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_2
    +            DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    +            /// dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_3
    +            DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_0
    +            DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    +            /// dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_1
    +            DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    +            /// dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_2
    +            DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    +            /// dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_3
    +            DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x44);
    +
    +        /// address: 0x600c1048
    +        /// SENSITIVE_DMA_APBPERI_I2S0_PMS_CONSTRAIN_0_REG
    +        pub const DMA_APBPERI_I2S0_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// dma_apbperi_i2s0_pms_constrain_lock
    +            DMA_APBPERI_I2S0_PMS_CONSTRAIN_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x48);
    +
    +        /// address: 0x600c104c
    +        /// SENSITIVE_DMA_APBPERI_I2S0_PMS_CONSTRAIN_1_REG
    +        pub const DMA_APBPERI_I2S0_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_0
    +            DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    +            /// dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_1
    +            DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    +            /// dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_2
    +            DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    +            /// dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_3
    +            DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_0
    +            DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    +            /// dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_1
    +            DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    +            /// dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_2
    +            DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    +            /// dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_3
    +            DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x4c);
    +
    +        /// address: 0x600c1050
    +        /// SENSITIVE_DMA_APBPERI_MAC_PMS_CONSTRAIN_0_REG
    +        pub const DMA_APBPERI_MAC_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// dma_apbperi_mac_pms_constrain_lock
    +            DMA_APBPERI_MAC_PMS_CONSTRAIN_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x50);
    +
    +        /// address: 0x600c1054
    +        /// SENSITIVE_DMA_APBPERI_MAC_PMS_CONSTRAIN_1_REG
    +        pub const DMA_APBPERI_MAC_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// dma_apbperi_mac_pms_constrain_sram_world_0_pms_0
    +            DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    +            /// dma_apbperi_mac_pms_constrain_sram_world_0_pms_1
    +            DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    +            /// dma_apbperi_mac_pms_constrain_sram_world_0_pms_2
    +            DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    +            /// dma_apbperi_mac_pms_constrain_sram_world_0_pms_3
    +            DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// dma_apbperi_mac_pms_constrain_sram_world_1_pms_0
    +            DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    +            /// dma_apbperi_mac_pms_constrain_sram_world_1_pms_1
    +            DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    +            /// dma_apbperi_mac_pms_constrain_sram_world_1_pms_2
    +            DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    +            /// dma_apbperi_mac_pms_constrain_sram_world_1_pms_3
    +            DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x54);
    +
    +        /// address: 0x600c1058
    +        /// SENSITIVE_DMA_APBPERI_BACKUP_PMS_CONSTRAIN_0_REG
    +        pub const DMA_APBPERI_BACKUP_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// dma_apbperi_backup_pms_constrain_lock
    +            DMA_APBPERI_BACKUP_PMS_CONSTRAIN_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x58);
    +
    +        /// address: 0x600c105c
    +        /// SENSITIVE_DMA_APBPERI_BACKUP_PMS_CONSTRAIN_1_REG
    +        pub const DMA_APBPERI_BACKUP_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// dma_apbperi_backup_pms_constrain_sram_world_0_pms_0
    +            DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    +            /// dma_apbperi_backup_pms_constrain_sram_world_0_pms_1
    +            DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    +            /// dma_apbperi_backup_pms_constrain_sram_world_0_pms_2
    +            DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    +            /// dma_apbperi_backup_pms_constrain_sram_world_0_pms_3
    +            DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// dma_apbperi_backup_pms_constrain_sram_world_1_pms_0
    +            DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    +            /// dma_apbperi_backup_pms_constrain_sram_world_1_pms_1
    +            DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    +            /// dma_apbperi_backup_pms_constrain_sram_world_1_pms_2
    +            DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    +            /// dma_apbperi_backup_pms_constrain_sram_world_1_pms_3
    +            DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x5c);
    +
    +        /// address: 0x600c1060
    +        /// SENSITIVE_DMA_APBPERI_LC_PMS_CONSTRAIN_0_REG
    +        pub const DMA_APBPERI_LC_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// dma_apbperi_lc_pms_constrain_lock
    +            DMA_APBPERI_LC_PMS_CONSTRAIN_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x60);
    +
    +        /// address: 0x600c1064
    +        /// SENSITIVE_DMA_APBPERI_LC_PMS_CONSTRAIN_1_REG
    +        pub const DMA_APBPERI_LC_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// dma_apbperi_lc_pms_constrain_sram_world_0_pms_0
    +            DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    +            /// dma_apbperi_lc_pms_constrain_sram_world_0_pms_1
    +            DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    +            /// dma_apbperi_lc_pms_constrain_sram_world_0_pms_2
    +            DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    +            /// dma_apbperi_lc_pms_constrain_sram_world_0_pms_3
    +            DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// dma_apbperi_lc_pms_constrain_sram_world_1_pms_0
    +            DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    +            /// dma_apbperi_lc_pms_constrain_sram_world_1_pms_1
    +            DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    +            /// dma_apbperi_lc_pms_constrain_sram_world_1_pms_2
    +            DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    +            /// dma_apbperi_lc_pms_constrain_sram_world_1_pms_3
    +            DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x64);
    +
    +        /// address: 0x600c1068
    +        /// SENSITIVE_DMA_APBPERI_AES_PMS_CONSTRAIN_0_REG
    +        pub const DMA_APBPERI_AES_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// dma_apbperi_aes_pms_constrain_lock
    +            DMA_APBPERI_AES_PMS_CONSTRAIN_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x68);
    +
    +        /// address: 0x600c106c
    +        /// SENSITIVE_DMA_APBPERI_AES_PMS_CONSTRAIN_1_REG
    +        pub const DMA_APBPERI_AES_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// dma_apbperi_aes_pms_constrain_sram_world_0_pms_0
    +            DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    +            /// dma_apbperi_aes_pms_constrain_sram_world_0_pms_1
    +            DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    +            /// dma_apbperi_aes_pms_constrain_sram_world_0_pms_2
    +            DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    +            /// dma_apbperi_aes_pms_constrain_sram_world_0_pms_3
    +            DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// dma_apbperi_aes_pms_constrain_sram_world_1_pms_0
    +            DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    +            /// dma_apbperi_aes_pms_constrain_sram_world_1_pms_1
    +            DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    +            /// dma_apbperi_aes_pms_constrain_sram_world_1_pms_2
    +            DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    +            /// dma_apbperi_aes_pms_constrain_sram_world_1_pms_3
    +            DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x6c);
    +
    +        /// address: 0x600c1070
    +        /// SENSITIVE_DMA_APBPERI_SHA_PMS_CONSTRAIN_0_REG
    +        pub const DMA_APBPERI_SHA_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// dma_apbperi_sha_pms_constrain_lock
    +            DMA_APBPERI_SHA_PMS_CONSTRAIN_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x70);
    +
    +        /// address: 0x600c1074
    +        /// SENSITIVE_DMA_APBPERI_SHA_PMS_CONSTRAIN_1_REG
    +        pub const DMA_APBPERI_SHA_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// dma_apbperi_sha_pms_constrain_sram_world_0_pms_0
    +            DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    +            /// dma_apbperi_sha_pms_constrain_sram_world_0_pms_1
    +            DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    +            /// dma_apbperi_sha_pms_constrain_sram_world_0_pms_2
    +            DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    +            /// dma_apbperi_sha_pms_constrain_sram_world_0_pms_3
    +            DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// dma_apbperi_sha_pms_constrain_sram_world_1_pms_0
    +            DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    +            /// dma_apbperi_sha_pms_constrain_sram_world_1_pms_1
    +            DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    +            /// dma_apbperi_sha_pms_constrain_sram_world_1_pms_2
    +            DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    +            /// dma_apbperi_sha_pms_constrain_sram_world_1_pms_3
    +            DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x74);
    +
    +        /// address: 0x600c1078
    +        /// SENSITIVE_DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_0_REG
    +        pub const DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// dma_apbperi_adc_dac_pms_constrain_lock
    +            DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x78);
    +
    +        /// address: 0x600c107c
    +        /// SENSITIVE_DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_1_REG
    +        pub const DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_0
    +            DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    +            /// dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_1
    +            DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    +            /// dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_2
    +            DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    +            /// dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_3
    +            DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_0
    +            DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    +            /// dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_1
    +            DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    +            /// dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_2
    +            DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    +            /// dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_3
    +            DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x7c);
    +
    +        /// address: 0x600c1080
    +        /// SENSITIVE_DMA_APBPERI_PMS_MONITOR_0_REG
    +        pub const DMA_APBPERI_PMS_MONITOR_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// dma_apbperi_pms_monitor_lock
    +            DMA_APBPERI_PMS_MONITOR_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x80);
    +
    +        /// address: 0x600c1084
    +        /// SENSITIVE_DMA_APBPERI_PMS_MONITOR_1_REG
    +        pub const DMA_APBPERI_PMS_MONITOR_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// dma_apbperi_pms_monitor_violate_clr
    +            DMA_APBPERI_PMS_MONITOR_VIOLATE_CLR: u1,
    +            /// dma_apbperi_pms_monitor_violate_en
    +            DMA_APBPERI_PMS_MONITOR_VIOLATE_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x84);
    +
    +        /// address: 0x600c1088
    +        /// SENSITIVE_DMA_APBPERI_PMS_MONITOR_2_REG
    +        pub const DMA_APBPERI_PMS_MONITOR_2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// dma_apbperi_pms_monitor_violate_intr
    +            DMA_APBPERI_PMS_MONITOR_VIOLATE_INTR: u1,
    +            /// dma_apbperi_pms_monitor_violate_status_world
    +            DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_WORLD: u2,
    +            /// dma_apbperi_pms_monitor_violate_status_addr
    +            DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_ADDR: u24,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +        }), base_address + 0x88);
    +
    +        /// address: 0x600c108c
    +        /// SENSITIVE_DMA_APBPERI_PMS_MONITOR_3_REG
    +        pub const DMA_APBPERI_PMS_MONITOR_3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// dma_apbperi_pms_monitor_violate_status_wr
    +            DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_WR: u1,
    +            /// dma_apbperi_pms_monitor_violate_status_byteen
    +            DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_BYTEEN: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +        }), base_address + 0x8c);
    +
    +        /// address: 0x600c1090
    +        /// SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_0_REG
    +        pub const CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_x_iram0_dram0_dma_split_line_constrain_lock
    +            CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x90);
    +
    +        /// address: 0x600c1094
    +        /// SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_1_REG
    +        pub const CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_x_iram0_dram0_dma_sram_category_0
    +            CORE_X_IRAM0_DRAM0_DMA_SRAM_CATEGORY_0: u2,
    +            /// core_x_iram0_dram0_dma_sram_category_1
    +            CORE_X_IRAM0_DRAM0_DMA_SRAM_CATEGORY_1: u2,
    +            /// core_x_iram0_dram0_dma_sram_category_2
    +            CORE_X_IRAM0_DRAM0_DMA_SRAM_CATEGORY_2: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            /// core_x_iram0_dram0_dma_sram_splitaddr
    +            CORE_X_IRAM0_DRAM0_DMA_SRAM_SPLITADDR: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +        }), base_address + 0x94);
    +
    +        /// address: 0x600c1098
    +        /// SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_2_REG
    +        pub const CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_x_iram0_sram_line_0_category_0
    +            CORE_X_IRAM0_SRAM_LINE_0_CATEGORY_0: u2,
    +            /// core_x_iram0_sram_line_0_category_1
    +            CORE_X_IRAM0_SRAM_LINE_0_CATEGORY_1: u2,
    +            /// core_x_iram0_sram_line_0_category_2
    +            CORE_X_IRAM0_SRAM_LINE_0_CATEGORY_2: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            /// core_x_iram0_sram_line_0_splitaddr
    +            CORE_X_IRAM0_SRAM_LINE_0_SPLITADDR: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +        }), base_address + 0x98);
    +
    +        /// address: 0x600c109c
    +        /// SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_3_REG
    +        pub const CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_x_iram0_sram_line_1_category_0
    +            CORE_X_IRAM0_SRAM_LINE_1_CATEGORY_0: u2,
    +            /// core_x_iram0_sram_line_1_category_1
    +            CORE_X_IRAM0_SRAM_LINE_1_CATEGORY_1: u2,
    +            /// core_x_iram0_sram_line_1_category_2
    +            CORE_X_IRAM0_SRAM_LINE_1_CATEGORY_2: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            /// core_x_iram0_sram_line_1_splitaddr
    +            CORE_X_IRAM0_SRAM_LINE_1_SPLITADDR: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +        }), base_address + 0x9c);
    +
    +        /// address: 0x600c10a0
    +        /// SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_4_REG
    +        pub const CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_x_dram0_dma_sram_line_0_category_0
    +            CORE_X_DRAM0_DMA_SRAM_LINE_0_CATEGORY_0: u2,
    +            /// core_x_dram0_dma_sram_line_0_category_1
    +            CORE_X_DRAM0_DMA_SRAM_LINE_0_CATEGORY_1: u2,
    +            /// core_x_dram0_dma_sram_line_0_category_2
    +            CORE_X_DRAM0_DMA_SRAM_LINE_0_CATEGORY_2: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            /// core_x_dram0_dma_sram_line_0_splitaddr
    +            CORE_X_DRAM0_DMA_SRAM_LINE_0_SPLITADDR: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +        }), base_address + 0xa0);
    +
    +        /// address: 0x600c10a4
    +        /// SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_5_REG
    +        pub const CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_x_dram0_dma_sram_line_1_category_0
    +            CORE_X_DRAM0_DMA_SRAM_LINE_1_CATEGORY_0: u2,
    +            /// core_x_dram0_dma_sram_line_1_category_1
    +            CORE_X_DRAM0_DMA_SRAM_LINE_1_CATEGORY_1: u2,
    +            /// core_x_dram0_dma_sram_line_1_category_2
    +            CORE_X_DRAM0_DMA_SRAM_LINE_1_CATEGORY_2: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            /// core_x_dram0_dma_sram_line_1_splitaddr
    +            CORE_X_DRAM0_DMA_SRAM_LINE_1_SPLITADDR: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +        }), base_address + 0xa4);
    +
    +        /// address: 0x600c10a8
    +        /// SENSITIVE_CORE_X_IRAM0_PMS_CONSTRAIN_0_REG
    +        pub const CORE_X_IRAM0_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_x_iram0_pms_constrain_lock
    +            CORE_X_IRAM0_PMS_CONSTRAIN_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0xa8);
    +
    +        /// address: 0x600c10ac
    +        /// SENSITIVE_CORE_X_IRAM0_PMS_CONSTRAIN_1_REG
    +        pub const CORE_X_IRAM0_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_x_iram0_pms_constrain_sram_world_1_pms_0
    +            CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u3,
    +            /// core_x_iram0_pms_constrain_sram_world_1_pms_1
    +            CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u3,
    +            /// core_x_iram0_pms_constrain_sram_world_1_pms_2
    +            CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u3,
    +            /// core_x_iram0_pms_constrain_sram_world_1_pms_3
    +            CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u3,
    +            /// core_x_iram0_pms_constrain_sram_world_1_cachedataarray_pms_0
    +            CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_CACHEDATAARRAY_PMS_0: u3,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            /// core_x_iram0_pms_constrain_rom_world_1_pms
    +            CORE_X_IRAM0_PMS_CONSTRAIN_ROM_WORLD_1_PMS: u3,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +        }), base_address + 0xac);
    +
    +        /// address: 0x600c10b0
    +        /// SENSITIVE_CORE_X_IRAM0_PMS_CONSTRAIN_2_REG
    +        pub const CORE_X_IRAM0_PMS_CONSTRAIN_2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_x_iram0_pms_constrain_sram_world_0_pms_0
    +            CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u3,
    +            /// core_x_iram0_pms_constrain_sram_world_0_pms_1
    +            CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u3,
    +            /// core_x_iram0_pms_constrain_sram_world_0_pms_2
    +            CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u3,
    +            /// core_x_iram0_pms_constrain_sram_world_0_pms_3
    +            CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u3,
    +            /// core_x_iram0_pms_constrain_sram_world_0_cachedataarray_pms_0
    +            CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_CACHEDATAARRAY_PMS_0: u3,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            /// core_x_iram0_pms_constrain_rom_world_0_pms
    +            CORE_X_IRAM0_PMS_CONSTRAIN_ROM_WORLD_0_PMS: u3,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +        }), base_address + 0xb0);
    +
    +        /// address: 0x600c10b4
    +        /// SENSITIVE_CORE_0_IRAM0_PMS_MONITOR_0_REG
    +        pub const CORE_0_IRAM0_PMS_MONITOR_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_0_iram0_pms_monitor_lock
    +            CORE_0_IRAM0_PMS_MONITOR_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0xb4);
    +
    +        /// address: 0x600c10b8
    +        /// SENSITIVE_CORE_0_IRAM0_PMS_MONITOR_1_REG
    +        pub const CORE_0_IRAM0_PMS_MONITOR_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_0_iram0_pms_monitor_violate_clr
    +            CORE_0_IRAM0_PMS_MONITOR_VIOLATE_CLR: u1,
    +            /// core_0_iram0_pms_monitor_violate_en
    +            CORE_0_IRAM0_PMS_MONITOR_VIOLATE_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0xb8);
    +
    +        /// address: 0x600c10bc
    +        /// SENSITIVE_CORE_0_IRAM0_PMS_MONITOR_2_REG
    +        pub const CORE_0_IRAM0_PMS_MONITOR_2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_0_iram0_pms_monitor_violate_intr
    +            CORE_0_IRAM0_PMS_MONITOR_VIOLATE_INTR: u1,
    +            /// core_0_iram0_pms_monitor_violate_status_wr
    +            CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_WR: u1,
    +            /// core_0_iram0_pms_monitor_violate_status_loadstore
    +            CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_LOADSTORE: u1,
    +            /// core_0_iram0_pms_monitor_violate_status_world
    +            CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_WORLD: u2,
    +            /// core_0_iram0_pms_monitor_violate_status_addr
    +            CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_ADDR: u24,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +        }), base_address + 0xbc);
    +
    +        /// address: 0x600c10c0
    +        /// SENSITIVE_CORE_X_DRAM0_PMS_CONSTRAIN_0_REG
    +        pub const CORE_X_DRAM0_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_x_dram0_pms_constrain_lock
    +            CORE_X_DRAM0_PMS_CONSTRAIN_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0xc0);
    +
    +        /// address: 0x600c10c4
    +        /// SENSITIVE_CORE_X_DRAM0_PMS_CONSTRAIN_1_REG
    +        pub const CORE_X_DRAM0_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_x_dram0_pms_constrain_sram_world_0_pms_0
    +            CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    +            /// core_x_dram0_pms_constrain_sram_world_0_pms_1
    +            CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    +            /// core_x_dram0_pms_constrain_sram_world_0_pms_2
    +            CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    +            /// core_x_dram0_pms_constrain_sram_world_0_pms_3
    +            CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// core_x_dram0_pms_constrain_sram_world_1_pms_0
    +            CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    +            /// core_x_dram0_pms_constrain_sram_world_1_pms_1
    +            CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    +            /// core_x_dram0_pms_constrain_sram_world_1_pms_2
    +            CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    +            /// core_x_dram0_pms_constrain_sram_world_1_pms_3
    +            CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            /// core_x_dram0_pms_constrain_rom_world_0_pms
    +            CORE_X_DRAM0_PMS_CONSTRAIN_ROM_WORLD_0_PMS: u2,
    +            /// core_x_dram0_pms_constrain_rom_world_1_pms
    +            CORE_X_DRAM0_PMS_CONSTRAIN_ROM_WORLD_1_PMS: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +        }), base_address + 0xc4);
    +
    +        /// address: 0x600c10c8
    +        /// SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_0_REG
    +        pub const CORE_0_DRAM0_PMS_MONITOR_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_0_dram0_pms_monitor_lock
    +            CORE_0_DRAM0_PMS_MONITOR_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0xc8);
    +
    +        /// address: 0x600c10cc
    +        /// SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_1_REG
    +        pub const CORE_0_DRAM0_PMS_MONITOR_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_0_dram0_pms_monitor_violate_clr
    +            CORE_0_DRAM0_PMS_MONITOR_VIOLATE_CLR: u1,
    +            /// core_0_dram0_pms_monitor_violate_en
    +            CORE_0_DRAM0_PMS_MONITOR_VIOLATE_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0xcc);
    +
    +        /// address: 0x600c10d0
    +        /// SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_2_REG
    +        pub const CORE_0_DRAM0_PMS_MONITOR_2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_0_dram0_pms_monitor_violate_intr
    +            CORE_0_DRAM0_PMS_MONITOR_VIOLATE_INTR: u1,
    +            /// core_0_dram0_pms_monitor_violate_status_lock
    +            CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_LOCK: u1,
    +            /// core_0_dram0_pms_monitor_violate_status_world
    +            CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_WORLD: u2,
    +            /// core_0_dram0_pms_monitor_violate_status_addr
    +            CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_ADDR: u24,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +        }), base_address + 0xd0);
    +
    +        /// address: 0x600c10d4
    +        /// SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_3_REG
    +        pub const CORE_0_DRAM0_PMS_MONITOR_3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_0_dram0_pms_monitor_violate_status_wr
    +            CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_WR: u1,
    +            /// core_0_dram0_pms_monitor_violate_status_byteen
    +            CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_BYTEEN: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +        }), base_address + 0xd4);
    +
    +        /// address: 0x600c10d8
    +        /// SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_0_REG
    +        pub const CORE_0_PIF_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_0_pif_pms_constrain_lock
    +            CORE_0_PIF_PMS_CONSTRAIN_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0xd8);
    +
    +        /// address: 0x600c10dc
    +        /// SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_1_REG
    +        pub const CORE_0_PIF_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_0_pif_pms_constrain_world_0_uart
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_UART: u2,
    +            /// core_0_pif_pms_constrain_world_0_g0spi_1
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_G0SPI_1: u2,
    +            /// core_0_pif_pms_constrain_world_0_g0spi_0
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_G0SPI_0: u2,
    +            /// core_0_pif_pms_constrain_world_0_gpio
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_GPIO: u2,
    +            /// core_0_pif_pms_constrain_world_0_fe2
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_FE2: u2,
    +            /// core_0_pif_pms_constrain_world_0_fe
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_FE: u2,
    +            /// core_0_pif_pms_constrain_world_0_timer
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_TIMER: u2,
    +            /// core_0_pif_pms_constrain_world_0_rtc
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_RTC: u2,
    +            /// core_0_pif_pms_constrain_world_0_io_mux
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_IO_MUX: u2,
    +            /// core_0_pif_pms_constrain_world_0_wdg
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_WDG: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// core_0_pif_pms_constrain_world_0_misc
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_MISC: u2,
    +            /// core_0_pif_pms_constrain_world_0_i2c
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_I2C: u2,
    +            reserved4: u1,
    +            reserved5: u1,
    +            /// core_0_pif_pms_constrain_world_0_uart1
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_UART1: u2,
    +        }), base_address + 0xdc);
    +
    +        /// address: 0x600c10e0
    +        /// SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_2_REG
    +        pub const CORE_0_PIF_PMS_CONSTRAIN_2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_0_pif_pms_constrain_world_0_bt
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_BT: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// core_0_pif_pms_constrain_world_0_i2c_ext0
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_I2C_EXT0: u2,
    +            /// core_0_pif_pms_constrain_world_0_uhci0
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_UHCI0: u2,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// core_0_pif_pms_constrain_world_0_rmt
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_RMT: u2,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            /// core_0_pif_pms_constrain_world_0_ledc
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_LEDC: u2,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            /// core_0_pif_pms_constrain_world_0_bb
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_BB: u2,
    +            reserved12: u1,
    +            reserved13: u1,
    +            /// core_0_pif_pms_constrain_world_0_timergroup
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_TIMERGROUP: u2,
    +            /// core_0_pif_pms_constrain_world_0_timergroup1
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_TIMERGROUP1: u2,
    +            /// core_0_pif_pms_constrain_world_0_systimer
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SYSTIMER: u2,
    +        }), base_address + 0xe0);
    +
    +        /// address: 0x600c10e4
    +        /// SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_3_REG
    +        pub const CORE_0_PIF_PMS_CONSTRAIN_3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_0_pif_pms_constrain_world_0_spi_2
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SPI_2: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// core_0_pif_pms_constrain_world_0_apb_ctrl
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_APB_CTRL: u2,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            /// core_0_pif_pms_constrain_world_0_can
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CAN: u2,
    +            reserved6: u1,
    +            reserved7: u1,
    +            /// core_0_pif_pms_constrain_world_0_i2s1
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_I2S1: u2,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            /// core_0_pif_pms_constrain_world_0_rwbt
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_RWBT: u2,
    +            reserved14: u1,
    +            reserved15: u1,
    +            /// core_0_pif_pms_constrain_world_0_wifimac
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_WIFIMAC: u2,
    +            /// core_0_pif_pms_constrain_world_0_pwr
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_PWR: u2,
    +            padding0: u1,
    +            padding1: u1,
    +        }), base_address + 0xe4);
    +
    +        /// address: 0x600c10e8
    +        /// SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_4_REG
    +        pub const CORE_0_PIF_PMS_CONSTRAIN_4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// core_0_pif_pms_constrain_world_0_usb_wrap
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_USB_WRAP: u2,
    +            /// core_0_pif_pms_constrain_world_0_crypto_peri
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CRYPTO_PERI: u2,
    +            /// core_0_pif_pms_constrain_world_0_crypto_dma
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CRYPTO_DMA: u2,
    +            /// core_0_pif_pms_constrain_world_0_apb_adc
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_APB_ADC: u2,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// core_0_pif_pms_constrain_world_0_bt_pwr
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_BT_PWR: u2,
    +            /// core_0_pif_pms_constrain_world_0_usb_device
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_USB_DEVICE: u2,
    +            /// core_0_pif_pms_constrain_world_0_system
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SYSTEM: u2,
    +            /// core_0_pif_pms_constrain_world_0_sensitive
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SENSITIVE: u2,
    +            /// core_0_pif_pms_constrain_world_0_interrupt
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_INTERRUPT: u2,
    +            /// core_0_pif_pms_constrain_world_0_dma_copy
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_DMA_COPY: u2,
    +            /// core_0_pif_pms_constrain_world_0_cache_config
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CACHE_CONFIG: u2,
    +            /// core_0_pif_pms_constrain_world_0_ad
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_AD: u2,
    +            /// core_0_pif_pms_constrain_world_0_dio
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_DIO: u2,
    +            /// core_0_pif_pms_constrain_world_0_world_controller
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_WORLD_CONTROLLER: u2,
    +        }), base_address + 0xe8);
    +
    +        /// address: 0x600c10ec
    +        /// SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_5_REG
    +        pub const CORE_0_PIF_PMS_CONSTRAIN_5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_0_pif_pms_constrain_world_1_uart
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_UART: u2,
    +            /// core_0_pif_pms_constrain_world_1_g0spi_1
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_G0SPI_1: u2,
    +            /// core_0_pif_pms_constrain_world_1_g0spi_0
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_G0SPI_0: u2,
    +            /// core_0_pif_pms_constrain_world_1_gpio
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_GPIO: u2,
    +            /// core_0_pif_pms_constrain_world_1_fe2
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_FE2: u2,
    +            /// core_0_pif_pms_constrain_world_1_fe
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_FE: u2,
    +            /// core_0_pif_pms_constrain_world_1_timer
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_TIMER: u2,
    +            /// core_0_pif_pms_constrain_world_1_rtc
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_RTC: u2,
    +            /// core_0_pif_pms_constrain_world_1_io_mux
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_IO_MUX: u2,
    +            /// core_0_pif_pms_constrain_world_1_wdg
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_WDG: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// core_0_pif_pms_constrain_world_1_misc
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_MISC: u2,
    +            /// core_0_pif_pms_constrain_world_1_i2c
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_I2C: u2,
    +            reserved4: u1,
    +            reserved5: u1,
    +            /// core_0_pif_pms_constrain_world_1_uart1
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_UART1: u2,
    +        }), base_address + 0xec);
    +
    +        /// address: 0x600c10f0
    +        /// SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_6_REG
    +        pub const CORE_0_PIF_PMS_CONSTRAIN_6 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_0_pif_pms_constrain_world_1_bt
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_BT: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// core_0_pif_pms_constrain_world_1_i2c_ext0
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_I2C_EXT0: u2,
    +            /// core_0_pif_pms_constrain_world_1_uhci0
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_UHCI0: u2,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// core_0_pif_pms_constrain_world_1_rmt
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_RMT: u2,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            /// core_0_pif_pms_constrain_world_1_ledc
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_LEDC: u2,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            /// core_0_pif_pms_constrain_world_1_bb
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_BB: u2,
    +            reserved12: u1,
    +            reserved13: u1,
    +            /// core_0_pif_pms_constrain_world_1_timergroup
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_TIMERGROUP: u2,
    +            /// core_0_pif_pms_constrain_world_1_timergroup1
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_TIMERGROUP1: u2,
    +            /// core_0_pif_pms_constrain_world_1_systimer
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SYSTIMER: u2,
    +        }), base_address + 0xf0);
    +
    +        /// address: 0x600c10f4
    +        /// SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_7_REG
    +        pub const CORE_0_PIF_PMS_CONSTRAIN_7 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_0_pif_pms_constrain_world_1_spi_2
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SPI_2: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// core_0_pif_pms_constrain_world_1_apb_ctrl
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_APB_CTRL: u2,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            /// core_0_pif_pms_constrain_world_1_can
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CAN: u2,
    +            reserved6: u1,
    +            reserved7: u1,
    +            /// core_0_pif_pms_constrain_world_1_i2s1
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_I2S1: u2,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            /// core_0_pif_pms_constrain_world_1_rwbt
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_RWBT: u2,
    +            reserved14: u1,
    +            reserved15: u1,
    +            /// core_0_pif_pms_constrain_world_1_wifimac
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_WIFIMAC: u2,
    +            /// core_0_pif_pms_constrain_world_1_pwr
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_PWR: u2,
    +            padding0: u1,
    +            padding1: u1,
    +        }), base_address + 0xf4);
    +
    +        /// address: 0x600c10f8
    +        /// SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_8_REG
    +        pub const CORE_0_PIF_PMS_CONSTRAIN_8 = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// core_0_pif_pms_constrain_world_1_usb_wrap
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_USB_WRAP: u2,
    +            /// core_0_pif_pms_constrain_world_1_crypto_peri
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CRYPTO_PERI: u2,
    +            /// core_0_pif_pms_constrain_world_1_crypto_dma
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CRYPTO_DMA: u2,
    +            /// core_0_pif_pms_constrain_world_1_apb_adc
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_APB_ADC: u2,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// core_0_pif_pms_constrain_world_1_bt_pwr
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_BT_PWR: u2,
    +            /// core_0_pif_pms_constrain_world_1_usb_device
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_USB_DEVICE: u2,
    +            /// core_0_pif_pms_constrain_world_1_system
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SYSTEM: u2,
    +            /// core_0_pif_pms_constrain_world_1_sensitive
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SENSITIVE: u2,
    +            /// core_0_pif_pms_constrain_world_1_interrupt
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_INTERRUPT: u2,
    +            /// core_0_pif_pms_constrain_world_1_dma_copy
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_DMA_COPY: u2,
    +            /// core_0_pif_pms_constrain_world_1_cache_config
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CACHE_CONFIG: u2,
    +            /// core_0_pif_pms_constrain_world_1_ad
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_AD: u2,
    +            /// core_0_pif_pms_constrain_world_1_dio
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_DIO: u2,
    +            /// core_0_pif_pms_constrain_world_1_world_controller
    +            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_WORLD_CONTROLLER: u2,
    +        }), base_address + 0xf8);
    +
    +        /// address: 0x600c10fc
    +        /// SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_9_REG
    +        pub const CORE_0_PIF_PMS_CONSTRAIN_9 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_0_pif_pms_constrain_rtcfast_spltaddr_world_0
    +            CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_SPLTADDR_WORLD_0: u11,
    +            /// core_0_pif_pms_constrain_rtcfast_spltaddr_world_1
    +            CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_SPLTADDR_WORLD_1: u11,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +        }), base_address + 0xfc);
    +
    +        /// address: 0x600c1100
    +        /// SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_10_REG
    +        pub const CORE_0_PIF_PMS_CONSTRAIN_10 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_0_pif_pms_constrain_rtcfast_world_0_l
    +            CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_0_L: u3,
    +            /// core_0_pif_pms_constrain_rtcfast_world_0_h
    +            CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_0_H: u3,
    +            /// core_0_pif_pms_constrain_rtcfast_world_1_l
    +            CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_1_L: u3,
    +            /// core_0_pif_pms_constrain_rtcfast_world_1_h
    +            CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_1_H: u3,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0x100);
    +
    +        /// address: 0x600c1104
    +        /// SENSITIVE_REGION_PMS_CONSTRAIN_0_REG
    +        pub const REGION_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// region_pms_constrain_lock
    +            REGION_PMS_CONSTRAIN_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x104);
    +
    +        /// address: 0x600c1108
    +        /// SENSITIVE_REGION_PMS_CONSTRAIN_1_REG
    +        pub const REGION_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// region_pms_constrain_world_0_area_0
    +            REGION_PMS_CONSTRAIN_WORLD_0_AREA_0: u2,
    +            /// region_pms_constrain_world_0_area_1
    +            REGION_PMS_CONSTRAIN_WORLD_0_AREA_1: u2,
    +            /// region_pms_constrain_world_0_area_2
    +            REGION_PMS_CONSTRAIN_WORLD_0_AREA_2: u2,
    +            /// region_pms_constrain_world_0_area_3
    +            REGION_PMS_CONSTRAIN_WORLD_0_AREA_3: u2,
    +            /// region_pms_constrain_world_0_area_4
    +            REGION_PMS_CONSTRAIN_WORLD_0_AREA_4: u2,
    +            /// region_pms_constrain_world_0_area_5
    +            REGION_PMS_CONSTRAIN_WORLD_0_AREA_5: u2,
    +            /// region_pms_constrain_world_0_area_6
    +            REGION_PMS_CONSTRAIN_WORLD_0_AREA_6: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +        }), base_address + 0x108);
    +
    +        /// address: 0x600c110c
    +        /// SENSITIVE_REGION_PMS_CONSTRAIN_2_REG
    +        pub const REGION_PMS_CONSTRAIN_2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// region_pms_constrain_world_1_area_0
    +            REGION_PMS_CONSTRAIN_WORLD_1_AREA_0: u2,
    +            /// region_pms_constrain_world_1_area_1
    +            REGION_PMS_CONSTRAIN_WORLD_1_AREA_1: u2,
    +            /// region_pms_constrain_world_1_area_2
    +            REGION_PMS_CONSTRAIN_WORLD_1_AREA_2: u2,
    +            /// region_pms_constrain_world_1_area_3
    +            REGION_PMS_CONSTRAIN_WORLD_1_AREA_3: u2,
    +            /// region_pms_constrain_world_1_area_4
    +            REGION_PMS_CONSTRAIN_WORLD_1_AREA_4: u2,
    +            /// region_pms_constrain_world_1_area_5
    +            REGION_PMS_CONSTRAIN_WORLD_1_AREA_5: u2,
    +            /// region_pms_constrain_world_1_area_6
    +            REGION_PMS_CONSTRAIN_WORLD_1_AREA_6: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +        }), base_address + 0x10c);
    +
    +        /// address: 0x600c1110
    +        /// SENSITIVE_REGION_PMS_CONSTRAIN_3_REG
    +        pub const REGION_PMS_CONSTRAIN_3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// region_pms_constrain_addr_0
    +            REGION_PMS_CONSTRAIN_ADDR_0: u30,
    +            padding0: u1,
    +            padding1: u1,
    +        }), base_address + 0x110);
    +
    +        /// address: 0x600c1114
    +        /// SENSITIVE_REGION_PMS_CONSTRAIN_4_REG
    +        pub const REGION_PMS_CONSTRAIN_4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// region_pms_constrain_addr_1
    +            REGION_PMS_CONSTRAIN_ADDR_1: u30,
    +            padding0: u1,
    +            padding1: u1,
    +        }), base_address + 0x114);
    +
    +        /// address: 0x600c1118
    +        /// SENSITIVE_REGION_PMS_CONSTRAIN_5_REG
    +        pub const REGION_PMS_CONSTRAIN_5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// region_pms_constrain_addr_2
    +            REGION_PMS_CONSTRAIN_ADDR_2: u30,
    +            padding0: u1,
    +            padding1: u1,
    +        }), base_address + 0x118);
    +
    +        /// address: 0x600c111c
    +        /// SENSITIVE_REGION_PMS_CONSTRAIN_6_REG
    +        pub const REGION_PMS_CONSTRAIN_6 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// region_pms_constrain_addr_3
    +            REGION_PMS_CONSTRAIN_ADDR_3: u30,
    +            padding0: u1,
    +            padding1: u1,
    +        }), base_address + 0x11c);
    +
    +        /// address: 0x600c1120
    +        /// SENSITIVE_REGION_PMS_CONSTRAIN_7_REG
    +        pub const REGION_PMS_CONSTRAIN_7 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// region_pms_constrain_addr_4
    +            REGION_PMS_CONSTRAIN_ADDR_4: u30,
    +            padding0: u1,
    +            padding1: u1,
    +        }), base_address + 0x120);
    +
    +        /// address: 0x600c1124
    +        /// SENSITIVE_REGION_PMS_CONSTRAIN_8_REG
    +        pub const REGION_PMS_CONSTRAIN_8 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// region_pms_constrain_addr_5
    +            REGION_PMS_CONSTRAIN_ADDR_5: u30,
    +            padding0: u1,
    +            padding1: u1,
    +        }), base_address + 0x124);
    +
    +        /// address: 0x600c1128
    +        /// SENSITIVE_REGION_PMS_CONSTRAIN_9_REG
    +        pub const REGION_PMS_CONSTRAIN_9 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// region_pms_constrain_addr_6
    +            REGION_PMS_CONSTRAIN_ADDR_6: u30,
    +            padding0: u1,
    +            padding1: u1,
    +        }), base_address + 0x128);
    +
    +        /// address: 0x600c112c
    +        /// SENSITIVE_REGION_PMS_CONSTRAIN_10_REG
    +        pub const REGION_PMS_CONSTRAIN_10 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// region_pms_constrain_addr_7
    +            REGION_PMS_CONSTRAIN_ADDR_7: u30,
    +            padding0: u1,
    +            padding1: u1,
    +        }), base_address + 0x12c);
    +
    +        /// address: 0x600c1130
    +        /// SENSITIVE_CORE_0_PIF_PMS_MONITOR_0_REG
    +        pub const CORE_0_PIF_PMS_MONITOR_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_0_pif_pms_monitor_lock
    +            CORE_0_PIF_PMS_MONITOR_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x130);
    +
    +        /// address: 0x600c1134
    +        /// SENSITIVE_CORE_0_PIF_PMS_MONITOR_1_REG
    +        pub const CORE_0_PIF_PMS_MONITOR_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_0_pif_pms_monitor_violate_clr
    +            CORE_0_PIF_PMS_MONITOR_VIOLATE_CLR: u1,
    +            /// core_0_pif_pms_monitor_violate_en
    +            CORE_0_PIF_PMS_MONITOR_VIOLATE_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x134);
    +
    +        /// address: 0x600c1138
    +        /// SENSITIVE_CORE_0_PIF_PMS_MONITOR_2_REG
    +        pub const CORE_0_PIF_PMS_MONITOR_2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_0_pif_pms_monitor_violate_intr
    +            CORE_0_PIF_PMS_MONITOR_VIOLATE_INTR: u1,
    +            /// core_0_pif_pms_monitor_violate_status_hport_0
    +            CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HPORT_0: u1,
    +            /// core_0_pif_pms_monitor_violate_status_hsize
    +            CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HSIZE: u3,
    +            /// core_0_pif_pms_monitor_violate_status_hwrite
    +            CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HWRITE: u1,
    +            /// core_0_pif_pms_monitor_violate_status_hworld
    +            CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HWORLD: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x138);
    +
    +        /// address: 0x600c113c
    +        /// SENSITIVE_CORE_0_PIF_PMS_MONITOR_3_REG
    +        pub const CORE_0_PIF_PMS_MONITOR_3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_0_pif_pms_monitor_violate_status_haddr
    +            CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HADDR: u32,
    +        }), base_address + 0x13c);
    +
    +        /// address: 0x600c1140
    +        /// SENSITIVE_CORE_0_PIF_PMS_MONITOR_4_REG
    +        pub const CORE_0_PIF_PMS_MONITOR_4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_0_pif_pms_monitor_nonword_violate_clr
    +            CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_CLR: u1,
    +            /// core_0_pif_pms_monitor_nonword_violate_en
    +            CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x140);
    +
    +        /// address: 0x600c1144
    +        /// SENSITIVE_CORE_0_PIF_PMS_MONITOR_5_REG
    +        pub const CORE_0_PIF_PMS_MONITOR_5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_0_pif_pms_monitor_nonword_violate_intr
    +            CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_INTR: u1,
    +            /// core_0_pif_pms_monitor_nonword_violate_status_hsize
    +            CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_STATUS_HSIZE: u2,
    +            /// core_0_pif_pms_monitor_nonword_violate_status_hworld
    +            CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_STATUS_HWORLD: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +        }), base_address + 0x144);
    +
    +        /// address: 0x600c1148
    +        /// SENSITIVE_CORE_0_PIF_PMS_MONITOR_6_REG
    +        pub const CORE_0_PIF_PMS_MONITOR_6 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// core_0_pif_pms_monitor_nonword_violate_status_haddr
    +            CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_STATUS_HADDR: u32,
    +        }), base_address + 0x148);
    +
    +        /// address: 0x600c114c
    +        /// SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_0_REG
    +        pub const BACKUP_BUS_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// backup_bus_pms_constrain_lock
    +            BACKUP_BUS_PMS_CONSTRAIN_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x14c);
    +
    +        /// address: 0x600c1150
    +        /// SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_1_REG
    +        pub const BACKUP_BUS_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// backup_bus_pms_constrain_uart
    +            BACKUP_BUS_PMS_CONSTRAIN_UART: u2,
    +            /// backup_bus_pms_constrain_g0spi_1
    +            BACKUP_BUS_PMS_CONSTRAIN_G0SPI_1: u2,
    +            /// backup_bus_pms_constrain_g0spi_0
    +            BACKUP_BUS_PMS_CONSTRAIN_G0SPI_0: u2,
    +            /// backup_bus_pms_constrain_gpio
    +            BACKUP_BUS_PMS_CONSTRAIN_GPIO: u2,
    +            /// backup_bus_pms_constrain_fe2
    +            BACKUP_BUS_PMS_CONSTRAIN_FE2: u2,
    +            /// backup_bus_pms_constrain_fe
    +            BACKUP_BUS_PMS_CONSTRAIN_FE: u2,
    +            /// backup_bus_pms_constrain_timer
    +            BACKUP_BUS_PMS_CONSTRAIN_TIMER: u2,
    +            /// backup_bus_pms_constrain_rtc
    +            BACKUP_BUS_PMS_CONSTRAIN_RTC: u2,
    +            /// backup_bus_pms_constrain_io_mux
    +            BACKUP_BUS_PMS_CONSTRAIN_IO_MUX: u2,
    +            /// backup_bus_pms_constrain_wdg
    +            BACKUP_BUS_PMS_CONSTRAIN_WDG: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// backup_bus_pms_constrain_misc
    +            BACKUP_BUS_PMS_CONSTRAIN_MISC: u2,
    +            /// backup_bus_pms_constrain_i2c
    +            BACKUP_BUS_PMS_CONSTRAIN_I2C: u2,
    +            reserved4: u1,
    +            reserved5: u1,
    +            /// backup_bus_pms_constrain_uart1
    +            BACKUP_BUS_PMS_CONSTRAIN_UART1: u2,
    +        }), base_address + 0x150);
    +
    +        /// address: 0x600c1154
    +        /// SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_2_REG
    +        pub const BACKUP_BUS_PMS_CONSTRAIN_2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// backup_bus_pms_constrain_bt
    +            BACKUP_BUS_PMS_CONSTRAIN_BT: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// backup_bus_pms_constrain_i2c_ext0
    +            BACKUP_BUS_PMS_CONSTRAIN_I2C_EXT0: u2,
    +            /// backup_bus_pms_constrain_uhci0
    +            BACKUP_BUS_PMS_CONSTRAIN_UHCI0: u2,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// backup_bus_pms_constrain_rmt
    +            BACKUP_BUS_PMS_CONSTRAIN_RMT: u2,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            /// backup_bus_pms_constrain_ledc
    +            BACKUP_BUS_PMS_CONSTRAIN_LEDC: u2,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            /// backup_bus_pms_constrain_bb
    +            BACKUP_BUS_PMS_CONSTRAIN_BB: u2,
    +            reserved12: u1,
    +            reserved13: u1,
    +            /// backup_bus_pms_constrain_timergroup
    +            BACKUP_BUS_PMS_CONSTRAIN_TIMERGROUP: u2,
    +            /// backup_bus_pms_constrain_timergroup1
    +            BACKUP_BUS_PMS_CONSTRAIN_TIMERGROUP1: u2,
    +            /// backup_bus_pms_constrain_systimer
    +            BACKUP_BUS_PMS_CONSTRAIN_SYSTIMER: u2,
    +        }), base_address + 0x154);
    +
    +        /// address: 0x600c1158
    +        /// SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_3_REG
    +        pub const BACKUP_BUS_PMS_CONSTRAIN_3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// backup_bus_pms_constrain_spi_2
    +            BACKUP_BUS_PMS_CONSTRAIN_SPI_2: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// backup_bus_pms_constrain_apb_ctrl
    +            BACKUP_BUS_PMS_CONSTRAIN_APB_CTRL: u2,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            /// backup_bus_pms_constrain_can
    +            BACKUP_BUS_PMS_CONSTRAIN_CAN: u2,
    +            reserved6: u1,
    +            reserved7: u1,
    +            /// backup_bus_pms_constrain_i2s1
    +            BACKUP_BUS_PMS_CONSTRAIN_I2S1: u2,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            /// backup_bus_pms_constrain_rwbt
    +            BACKUP_BUS_PMS_CONSTRAIN_RWBT: u2,
    +            reserved14: u1,
    +            reserved15: u1,
    +            /// backup_bus_pms_constrain_wifimac
    +            BACKUP_BUS_PMS_CONSTRAIN_WIFIMAC: u2,
    +            /// backup_bus_pms_constrain_pwr
    +            BACKUP_BUS_PMS_CONSTRAIN_PWR: u2,
    +            padding0: u1,
    +            padding1: u1,
    +        }), base_address + 0x158);
    +
    +        /// address: 0x600c115c
    +        /// SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_4_REG
    +        pub const BACKUP_BUS_PMS_CONSTRAIN_4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// backup_bus_pms_constrain_usb_wrap
    +            BACKUP_BUS_PMS_CONSTRAIN_USB_WRAP: u2,
    +            /// backup_bus_pms_constrain_crypto_peri
    +            BACKUP_BUS_PMS_CONSTRAIN_CRYPTO_PERI: u2,
    +            /// backup_bus_pms_constrain_crypto_dma
    +            BACKUP_BUS_PMS_CONSTRAIN_CRYPTO_DMA: u2,
    +            /// backup_bus_pms_constrain_apb_adc
    +            BACKUP_BUS_PMS_CONSTRAIN_APB_ADC: u2,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// backup_bus_pms_constrain_bt_pwr
    +            BACKUP_BUS_PMS_CONSTRAIN_BT_PWR: u2,
    +            /// backup_bus_pms_constrain_usb_device
    +            BACKUP_BUS_PMS_CONSTRAIN_USB_DEVICE: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x15c);
    +
    +        /// address: 0x600c1160
    +        /// SENSITIVE_BACKUP_BUS_PMS_MONITOR_0_REG
    +        pub const BACKUP_BUS_PMS_MONITOR_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// backup_bus_pms_monitor_lock
    +            BACKUP_BUS_PMS_MONITOR_LOCK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x160);
    +
    +        /// address: 0x600c1164
    +        /// SENSITIVE_BACKUP_BUS_PMS_MONITOR_1_REG
    +        pub const BACKUP_BUS_PMS_MONITOR_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// backup_bus_pms_monitor_violate_clr
    +            BACKUP_BUS_PMS_MONITOR_VIOLATE_CLR: u1,
    +            /// backup_bus_pms_monitor_violate_en
    +            BACKUP_BUS_PMS_MONITOR_VIOLATE_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x164);
    +
    +        /// address: 0x600c1168
    +        /// SENSITIVE_BACKUP_BUS_PMS_MONITOR_2_REG
    +        pub const BACKUP_BUS_PMS_MONITOR_2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// backup_bus_pms_monitor_violate_intr
    +            BACKUP_BUS_PMS_MONITOR_VIOLATE_INTR: u1,
    +            /// backup_bus_pms_monitor_violate_status_htrans
    +            BACKUP_BUS_PMS_MONITOR_VIOLATE_STATUS_HTRANS: u2,
    +            /// backup_bus_pms_monitor_violate_status_hsize
    +            BACKUP_BUS_PMS_MONITOR_VIOLATE_STATUS_HSIZE: u3,
    +            /// backup_bus_pms_monitor_violate_status_hwrite
    +            BACKUP_BUS_PMS_MONITOR_VIOLATE_STATUS_HWRITE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x168);
    +
    +        /// address: 0x600c116c
    +        /// SENSITIVE_BACKUP_BUS_PMS_MONITOR_3_REG
    +        pub const BACKUP_BUS_PMS_MONITOR_3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// backup_bus_pms_monitor_violate_haddr
    +            BACKUP_BUS_PMS_MONITOR_VIOLATE_HADDR: u32,
    +        }), base_address + 0x16c);
    +
    +        /// address: 0x600c1170
    +        /// SENSITIVE_CLOCK_GATE_REG
    +        pub const CLOCK_GATE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// clk_en
    +            CLK_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x170);
    +
    +        /// address: 0x600c1ffc
    +        /// SENSITIVE_DATE_REG
    +        pub const DATE = @intToPtr(*volatile MmioInt(32, u28), base_address + 0xffc);
    +    };
    +
    +    /// SHA (Secure Hash Algorithm) Accelerator
    +    pub const SHA = struct {
    +        pub const base_address = 0x6003b000;
    +
    +        /// address: 0x6003b000
    +        /// Initial configuration register.
    +        pub const MODE = @intToPtr(*volatile MmioInt(32, u3), base_address + 0x0);
    +
    +        /// address: 0x6003b004
    +        /// SHA 512/t configuration register 0.
    +        pub const T_STRING = @intToPtr(*volatile u32, base_address + 0x4);
    +
    +        /// address: 0x6003b008
    +        /// SHA 512/t configuration register 1.
    +        pub const T_LENGTH = @intToPtr(*volatile MmioInt(32, u6), base_address + 0x8);
    +
    +        /// address: 0x6003b00c
    +        /// DMA configuration register 0.
    +        pub const DMA_BLOCK_NUM = @intToPtr(*volatile MmioInt(32, u6), base_address + 0xc);
    +
    +        /// address: 0x6003b010
    +        /// Typical SHA configuration register 0.
    +        pub const START = @intToPtr(*volatile MmioInt(32, u31), base_address + 0x10);
    +
    +        /// address: 0x6003b014
    +        /// Typical SHA configuration register 1.
    +        pub const CONTINUE = @intToPtr(*volatile MmioInt(32, u31), base_address + 0x14);
    +
    +        /// address: 0x6003b018
    +        /// Busy register.
    +        pub const BUSY = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Sha busy state. 1'b0: idle. 1'b1: busy.
    +            STATE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x6003b01c
    +        /// DMA configuration register 1.
    +        pub const DMA_START = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x1c);
    +
    +        /// address: 0x6003b020
    +        /// DMA configuration register 2.
    +        pub const DMA_CONTINUE = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x20);
    +
    +        /// address: 0x6003b024
    +        /// Interrupt clear register.
    +        pub const CLEAR_IRQ = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Clear sha interrupt.
    +            CLEAR_INTERRUPT: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x24);
    +
    +        /// address: 0x6003b028
    +        /// Interrupt enable register.
    +        pub const IRQ_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Sha interrupt enable register. 1'b0: disable(default). 1'b1: enable.
    +            INTERRUPT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x28);
    +
    +        /// address: 0x6003b02c
    +        /// Date register.
    +        pub const DATE = @intToPtr(*volatile MmioInt(32, u30), base_address + 0x2c);
    +
    +        /// address: 0x6003b040
    +        /// Sha H memory which contains intermediate hash or finial hash.
    +        pub const H_MEM = @intToPtr(*volatile [64]u8, base_address + 0x40);
    +
    +        /// address: 0x6003b080
    +        /// Sha M memory which contains message.
    +        pub const M_MEM = @intToPtr(*volatile [64]u8, base_address + 0x80);
    +    };
    +
    +    /// SPI (Serial Peripheral Interface) Controller
    +    pub const SPI0 = struct {
    +        pub const base_address = 0x60003000;
    +
    +        /// address: 0x60003008
    +        /// SPI0 control register.
    +        pub const CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            /// In the dummy phase the signal level of spi is output by the spi controller.
    +            FDUMMY_OUT: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            /// Apply 2 signals during command phase 1:enable 0: disable
    +            FCMD_DUAL: u1,
    +            /// Apply 4 signals during command phase 1:enable 0: disable
    +            FCMD_QUAD: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            /// This bit enable the bits: spi_mem_fread_qio, spi_mem_fread_dio,
    +            /// spi_mem_fread_qout and spi_mem_fread_dout. 1: enable 0: disable.
    +            FASTRD_MODE: u1,
    +            /// In the read operations, read-data phase apply 2 signals. 1: enable 0: disable.
    +            FREAD_DUAL: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            /// The bit is used to set MISO line polarity, 1: high 0, low
    +            Q_POL: u1,
    +            /// The bit is used to set MOSI line polarity, 1: high 0, low
    +            D_POL: u1,
    +            /// In the read operations read-data phase apply 4 signals. 1: enable 0: disable.
    +            FREAD_QUAD: u1,
    +            /// Write protect signal output when SPI is idle. 1: output high, 0: output low.
    +            WP: u1,
    +            reserved13: u1,
    +            /// In the read operations address phase and read-data phase apply 2 signals. 1:
    +            /// enable 0: disable.
    +            FREAD_DIO: u1,
    +            /// In the read operations address phase and read-data phase apply 4 signals. 1:
    +            /// enable 0: disable.
    +            FREAD_QIO: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x6000300c
    +        /// SPI0 control1 register.
    +        pub const CTRL1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// SPI clock mode bits. 0: SPI clock is off when CS inactive 1: SPI clock is
    +            /// delayed one cycle after CS inactive 2: SPI clock is delayed two cycles after CS
    +            /// inactive 3: SPI clock is alwasy on.
    +            CLK_MODE: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            reserved25: u1,
    +            reserved26: u1,
    +            reserved27: u1,
    +            /// SPI0 RX FIFO reset signal.
    +            RXFIFO_RST: u1,
    +            padding0: u1,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x60003010
    +        /// SPI0 control2 register.
    +        pub const CTRL2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// (cycles-1) of prepare phase by spi clock this bits are combined with
    +            /// spi_mem_cs_setup bit.
    +            CS_SETUP_TIME: u5,
    +            /// Spi cs signal is delayed to inactive by spi clock this bits are combined with
    +            /// spi_mem_cs_hold bit.
    +            CS_HOLD_TIME: u5,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            /// These bits are used to set the minimum CS high time tSHSL between SPI burst
    +            /// transfer when accesses to flash. tSHSL is (SPI_MEM_CS_HOLD_DELAY[5:0] + 1) MSPI
    +            /// core clock cycles.
    +            CS_HOLD_DELAY: u6,
    +            /// The FSM will be reset.
    +            SYNC_RESET: u1,
    +        }), base_address + 0x10);
    +
    +        /// address: 0x60003014
    +        /// SPI clock division control register.
    +        pub const CLOCK = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// In the master mode it must be equal to spi_mem_clkcnt_N.
    +            CLKCNT_L: u8,
    +            /// In the master mode it must be floor((spi_mem_clkcnt_N+1)/2-1).
    +            CLKCNT_H: u8,
    +            /// In the master mode it is the divider of spi_mem_clk. So spi_mem_clk frequency is
    +            /// system/(spi_mem_clkcnt_N+1)
    +            CLKCNT_N: u8,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            /// Set this bit in 1-division mode.
    +            CLK_EQU_SYSCLK: u1,
    +        }), base_address + 0x14);
    +
    +        /// address: 0x60003018
    +        /// SPI0 user register.
    +        pub const USER = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            /// spi cs keep low when spi is in done phase. 1: enable 0: disable.
    +            CS_HOLD: u1,
    +            /// spi cs is enable when spi is in prepare phase. 1: enable 0: disable.
    +            CS_SETUP: u1,
    +            reserved6: u1,
    +            /// the bit combined with spi_mem_mosi_delay_mode bits to set mosi signal delay
    +            /// mode.
    +            CK_OUT_EDGE: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            /// spi clock is disable in dummy phase when the bit is enable.
    +            USR_DUMMY_IDLE: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            /// This bit enable the dummy phase of an operation.
    +            USR_DUMMY: u1,
    +            padding0: u1,
    +            padding1: u1,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x6000301c
    +        /// SPI0 user1 register.
    +        pub const USER1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The length in spi_mem_clk cycles of dummy phase. The register value shall be
    +            /// (cycle_num-1).
    +            USR_DUMMY_CYCLELEN: u6,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            /// The length in bits of address phase. The register value shall be (bit_num-1).
    +            USR_ADDR_BITLEN: u6,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x60003020
    +        /// SPI0 user2 register.
    +        pub const USER2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of command.
    +            USR_COMMAND_VALUE: u16,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            /// The length in bits of command phase. The register value shall be (bit_num-1)
    +            USR_COMMAND_BITLEN: u4,
    +        }), base_address + 0x20);
    +
    +        /// address: 0x6000302c
    +        /// SPI0 read control register.
    +        pub const RD_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            /// Mode bits in the flash fast read mode it is combined with spi_mem_fastrd_mode
    +            /// bit.
    +            WB_MODE: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +        }), base_address + 0x2c);
    +
    +        /// address: 0x60003034
    +        /// SPI0 misc register
    +        pub const MISC = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            /// The bit is used to indicate the spi0_mst_st controlled transmitting is done.
    +            TRANS_END: u1,
    +            /// The bit is used to enable the interrupt of spi0_mst_st controlled transmitting
    +            /// is done.
    +            TRANS_END_INT_ENA: u1,
    +            /// The bit is used to indicate the spi0_slv_st controlled transmitting is done.
    +            CSPI_ST_TRANS_END: u1,
    +            /// The bit is used to enable the interrupt of spi0_slv_st controlled transmitting
    +            /// is done.
    +            CSPI_ST_TRANS_END_INT_ENA: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            /// 1: spi clk line is high when idle 0: spi clk line is low when idle
    +            CK_IDLE_EDGE: u1,
    +            /// spi cs line keep low when the bit is set.
    +            CS_KEEP_ACTIVE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x34);
    +
    +        /// address: 0x6000303c
    +        /// SPI0 bit mode control register.
    +        pub const CACHE_FCTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// For SPI0, Cache access enable, 1: enable, 0:disable.
    +            CACHE_REQ_EN: u1,
    +            /// For SPI0, cache read flash with 4 bytes address, 1: enable, 0:disable.
    +            CACHE_USR_ADDR_4BYTE: u1,
    +            /// For SPI0, cache read flash for user define command, 1: enable, 0:disable.
    +            CACHE_FLASH_USR_CMD: u1,
    +            /// For SPI0 flash, din phase apply 2 signals. 1: enable 0: disable. The bit is the
    +            /// same with spi_mem_fread_dio.
    +            FDIN_DUAL: u1,
    +            /// For SPI0 flash, dout phase apply 2 signals. 1: enable 0: disable. The bit is the
    +            /// same with spi_mem_fread_dio.
    +            FDOUT_DUAL: u1,
    +            /// For SPI0 flash, address phase apply 2 signals. 1: enable 0: disable. The bit is
    +            /// the same with spi_mem_fread_dio.
    +            FADDR_DUAL: u1,
    +            /// For SPI0 flash, din phase apply 4 signals. 1: enable 0: disable. The bit is the
    +            /// same with spi_mem_fread_qio.
    +            FDIN_QUAD: u1,
    +            /// For SPI0 flash, dout phase apply 4 signals. 1: enable 0: disable. The bit is the
    +            /// same with spi_mem_fread_qio.
    +            FDOUT_QUAD: u1,
    +            /// For SPI0 flash, address phase apply 4 signals. 1: enable 0: disable. The bit is
    +            /// the same with spi_mem_fread_qio.
    +            FADDR_QUAD: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0x3c);
    +
    +        /// address: 0x60003054
    +        /// SPI0 FSM status register
    +        pub const FSM = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The current status of SPI0 slave FSM: spi0_slv_st. 0: idle state, 1: preparation
    +            /// state, 2: send command state, 3: send address state, 4: wait state, 5: read data
    +            /// state, 6:write data state, 7: done state, 8: read data end state.
    +            CSPI_ST: u4,
    +            /// The current status of SPI0 master FSM: spi0_mst_st. 0: idle state,
    +            /// 1:EM_CACHE_GRANT , 2: program/erase suspend state, 3: SPI0 read data state, 4:
    +            /// wait cache/EDMA sent data is stored in SPI0 TX FIFO, 5: SPI0 write data state.
    +            EM_ST: u3,
    +            /// The lock delay time of SPI0/1 arbiter by spi0_slv_st, after PER is sent by SPI1.
    +            CSPI_LOCK_DELAY_TIME: u5,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0x54);
    +
    +        /// address: 0x600030a8
    +        /// SPI0 timing calibration register
    +        pub const TIMING_CALI = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The bit is used to enable timing adjust clock for all reading operations.
    +            TIMING_CLK_ENA: u1,
    +            /// The bit is used to enable timing auto-calibration for all reading operations.
    +            TIMING_CALI: u1,
    +            /// add extra dummy spi clock cycle length for spi clock calibration.
    +            EXTRA_DUMMY_CYCLELEN: u3,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +        }), base_address + 0xa8);
    +
    +        /// address: 0x600030ac
    +        /// SPI0 input delay mode control register
    +        pub const DIN_MODE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// the input signals are delayed by system clock cycles, 0: input without delayed,
    +            /// 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3:
    +            /// input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input
    +            /// with the spi_clk high edge, 6: input with the spi_clk low edge
    +            DIN0_MODE: u2,
    +            /// the input signals are delayed by system clock cycles, 0: input without delayed,
    +            /// 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3:
    +            /// input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input
    +            /// with the spi_clk high edge, 6: input with the spi_clk low edge
    +            DIN1_MODE: u2,
    +            /// the input signals are delayed by system clock cycles, 0: input without delayed,
    +            /// 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3:
    +            /// input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input
    +            /// with the spi_clk high edge, 6: input with the spi_clk low edge
    +            DIN2_MODE: u2,
    +            /// the input signals are delayed by system clock cycles, 0: input without delayed,
    +            /// 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3:
    +            /// input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input
    +            /// with the spi_clk high edge, 6: input with the spi_clk low edge
    +            DIN3_MODE: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0xac);
    +
    +        /// address: 0x600030b0
    +        /// SPI0 input delay number control register
    +        pub const DIN_NUM = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1:
    +            /// delayed by 2 cycles,...
    +            DIN0_NUM: u2,
    +            /// the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1:
    +            /// delayed by 2 cycles,...
    +            DIN1_NUM: u2,
    +            /// the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1:
    +            /// delayed by 2 cycles,...
    +            DIN2_NUM: u2,
    +            /// the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1:
    +            /// delayed by 2 cycles,...
    +            DIN3_NUM: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0xb0);
    +
    +        /// address: 0x600030b4
    +        /// SPI0 output delay mode control register
    +        pub const DOUT_MODE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// the output signals are delayed by system clock cycles, 0: output without
    +            /// delayed, 1: output with the posedge of clk_apb,2 output with the negedge of
    +            /// clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of
    +            /// clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low
    +            /// edge
    +            DOUT0_MODE: u1,
    +            /// the output signals are delayed by system clock cycles, 0: output without
    +            /// delayed, 1: output with the posedge of clk_apb,2 output with the negedge of
    +            /// clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of
    +            /// clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low
    +            /// edge
    +            DOUT1_MODE: u1,
    +            /// the output signals are delayed by system clock cycles, 0: output without
    +            /// delayed, 1: output with the posedge of clk_apb,2 output with the negedge of
    +            /// clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of
    +            /// clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low
    +            /// edge
    +            DOUT2_MODE: u1,
    +            /// the output signals are delayed by system clock cycles, 0: output without
    +            /// delayed, 1: output with the posedge of clk_apb,2 output with the negedge of
    +            /// clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of
    +            /// clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low
    +            /// edge
    +            DOUT3_MODE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0xb4);
    +
    +        /// address: 0x600030dc
    +        /// SPI0 clk_gate register
    +        pub const CLOCK_GATE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Register clock gate enable signal. 1: Enable. 0: Disable.
    +            CLK_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0xdc);
    +
    +        /// address: 0x600030e0
    +        /// SPI0 module clock select register
    +        pub const CORE_CLK_SEL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// When the digital system clock selects PLL clock and the frequency of PLL clock
    +            /// is 480MHz, the value of reg_spi01_clk_sel: 0: SPI0/1 module clock (clk) is
    +            /// 80MHz. 1: SPI0/1 module clock (clk) is 120MHz. 2: SPI0/1 module clock (clk)
    +            /// 160MHz. 3: Not used. When the digital system clock selects PLL clock and the
    +            /// frequency of PLL clock is 320MHz, the value of reg_spi01_clk_sel: 0: SPI0/1
    +            /// module clock (clk) is 80MHz. 1: SPI0/1 module clock (clk) is 80MHz. 2: SPI0/1
    +            /// module clock (clk) 160MHz. 3: Not used.
    +            SPI01_CLK_SEL: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0xe0);
    +
    +        /// address: 0x600033fc
    +        /// Version control register
    +        pub const DATE = @intToPtr(*volatile MmioInt(32, u28), base_address + 0x3fc);
    +    };
    +
    +    /// SPI (Serial Peripheral Interface) Controller
    +    pub const SPI1 = struct {
    +        pub const base_address = 0x60002000;
    +
    +        /// address: 0x60002000
    +        /// SPI1 memory command register
    +        pub const CMD = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The current status of SPI1 master FSM.
    +            SPI1_MST_ST: u4,
    +            /// The current status of SPI1 slave FSM: mspi_st. 0: idle state, 1: preparation
    +            /// state, 2: send command state, 3: send address state, 4: wait state, 5: read data
    +            /// state, 6:write data state, 7: done state, 8: read data end state.
    +            MSPI_ST: u4,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            /// In user mode, it is set to indicate that program/erase operation will be
    +            /// triggered. The bit is combined with spi_mem_usr bit. The bit will be cleared
    +            /// once the operation done.1: enable 0: disable.
    +            FLASH_PE: u1,
    +            /// User define command enable. An operation will be triggered when the bit is set.
    +            /// The bit will be cleared once the operation done.1: enable 0: disable.
    +            USR: u1,
    +            /// Drive Flash into high performance mode. The bit will be cleared once the
    +            /// operation done.1: enable 0: disable.
    +            FLASH_HPM: u1,
    +            /// This bit combined with reg_resandres bit releases Flash from the power-down
    +            /// state or high performance mode and obtains the devices ID. The bit will be
    +            /// cleared once the operation done.1: enable 0: disable.
    +            FLASH_RES: u1,
    +            /// Drive Flash into power down. An operation will be triggered when the bit is set.
    +            /// The bit will be cleared once the operation done.1: enable 0: disable.
    +            FLASH_DP: u1,
    +            /// Chip erase enable. Chip erase operation will be triggered when the bit is set.
    +            /// The bit will be cleared once the operation done.1: enable 0: disable.
    +            FLASH_CE: u1,
    +            /// Block erase enable(32KB) . Block erase operation will be triggered when the bit
    +            /// is set. The bit will be cleared once the operation done.1: enable 0: disable.
    +            FLASH_BE: u1,
    +            /// Sector erase enable(4KB). Sector erase operation will be triggered when the bit
    +            /// is set. The bit will be cleared once the operation done.1: enable 0: disable.
    +            FLASH_SE: u1,
    +            /// Page program enable(1 byte ~256 bytes data to be programmed). Page program
    +            /// operation will be triggered when the bit is set. The bit will be cleared once
    +            /// the operation done .1: enable 0: disable.
    +            FLASH_PP: u1,
    +            /// Write status register enable. Write status operation will be triggered when the
    +            /// bit is set. The bit will be cleared once the operation done.1: enable 0:
    +            /// disable.
    +            FLASH_WRSR: u1,
    +            /// Read status register-1. Read status operation will be triggered when the bit is
    +            /// set. The bit will be cleared once the operation done.1: enable 0: disable.
    +            FLASH_RDSR: u1,
    +            /// Read JEDEC ID . Read ID command will be sent when the bit is set. The bit will
    +            /// be cleared once the operation done. 1: enable 0: disable.
    +            FLASH_RDID: u1,
    +            /// Write flash disable. Write disable command will be sent when the bit is set. The
    +            /// bit will be cleared once the operation done. 1: enable 0: disable.
    +            FLASH_WRDI: u1,
    +            /// Write flash enable. Write enable command will be sent when the bit is set. The
    +            /// bit will be cleared once the operation done. 1: enable 0: disable.
    +            FLASH_WREN: u1,
    +            /// Read flash enable. Read flash operation will be triggered when the bit is set.
    +            /// The bit will be cleared once the operation done. 1: enable 0: disable.
    +            FLASH_READ: u1,
    +        }), base_address + 0x0);
    +
    +        /// address: 0x60002004
    +        /// SPI1 address register
    +        pub const ADDR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// In user mode, it is the memory address. other then the bit0-bit23 is the memory
    +            /// address, the bit24-bit31 are the byte length of a transfer.
    +            USR_ADDR_VALUE: u32,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x60002008
    +        /// SPI1 control register.
    +        pub const CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            /// In the dummy phase the signal level of spi is output by the spi controller.
    +            FDUMMY_OUT: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            /// Apply 2 signals during command phase 1:enable 0: disable
    +            FCMD_DUAL: u1,
    +            /// Apply 4 signals during command phase 1:enable 0: disable
    +            FCMD_QUAD: u1,
    +            reserved6: u1,
    +            /// For SPI1, initialize crc32 module before writing encrypted data to flash. Active
    +            /// low.
    +            FCS_CRC_EN: u1,
    +            /// For SPI1, enable crc32 when writing encrypted data to flash. 1: enable 0:disable
    +            TX_CRC_EN: u1,
    +            reserved7: u1,
    +            /// This bit enable the bits: spi_mem_fread_qio, spi_mem_fread_dio,
    +            /// spi_mem_fread_qout and spi_mem_fread_dout. 1: enable 0: disable.
    +            FASTRD_MODE: u1,
    +            /// In the read operations, read-data phase apply 2 signals. 1: enable 0: disable.
    +            FREAD_DUAL: u1,
    +            /// The Device ID is read out to SPI_MEM_RD_STATUS register, this bit combine with
    +            /// spi_mem_flash_res bit. 1: enable 0: disable.
    +            RESANDRES: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            /// The bit is used to set MISO line polarity, 1: high 0, low
    +            Q_POL: u1,
    +            /// The bit is used to set MOSI line polarity, 1: high 0, low
    +            D_POL: u1,
    +            /// In the read operations read-data phase apply 4 signals. 1: enable 0: disable.
    +            FREAD_QUAD: u1,
    +            /// Write protect signal output when SPI is idle. 1: output high, 0: output low.
    +            WP: u1,
    +            /// two bytes data will be written to status register when it is set. 1: enable 0:
    +            /// disable.
    +            WRSR_2B: u1,
    +            /// In the read operations address phase and read-data phase apply 2 signals. 1:
    +            /// enable 0: disable.
    +            FREAD_DIO: u1,
    +            /// In the read operations address phase and read-data phase apply 4 signals. 1:
    +            /// enable 0: disable.
    +            FREAD_QIO: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x6000200c
    +        /// SPI1 control1 register.
    +        pub const CTRL1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// SPI clock mode bits. 0: SPI clock is off when CS inactive 1: SPI clock is
    +            /// delayed one cycle after CS inactive 2: SPI clock is delayed two cycles after CS
    +            /// inactive 3: SPI clock is alwasy on.
    +            CLK_MODE: u2,
    +            /// After RES/DP/HPM command is sent, SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] *
    +            /// 512) SPI_CLK cycles.
    +            CS_HOLD_DLY_RES: u10,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x60002010
    +        /// SPI1 control2 register.
    +        pub const CTRL2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            reserved25: u1,
    +            reserved26: u1,
    +            reserved27: u1,
    +            reserved28: u1,
    +            reserved29: u1,
    +            reserved30: u1,
    +            /// The FSM will be reset.
    +            SYNC_RESET: u1,
    +        }), base_address + 0x10);
    +
    +        /// address: 0x60002014
    +        /// SPI1 clock division control register.
    +        pub const CLOCK = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// In the master mode it must be equal to spi_mem_clkcnt_N.
    +            CLKCNT_L: u8,
    +            /// In the master mode it must be floor((spi_mem_clkcnt_N+1)/2-1).
    +            CLKCNT_H: u8,
    +            /// In the master mode it is the divider of spi_mem_clk. So spi_mem_clk frequency is
    +            /// system/(spi_mem_clkcnt_N+1)
    +            CLKCNT_N: u8,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            /// reserved
    +            CLK_EQU_SYSCLK: u1,
    +        }), base_address + 0x14);
    +
    +        /// address: 0x60002018
    +        /// SPI1 user register.
    +        pub const USER = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            /// the bit combined with spi_mem_mosi_delay_mode bits to set mosi signal delay
    +            /// mode.
    +            CK_OUT_EDGE: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            /// In the write operations read-data phase apply 2 signals
    +            FWRITE_DUAL: u1,
    +            /// In the write operations read-data phase apply 4 signals
    +            FWRITE_QUAD: u1,
    +            /// In the write operations address phase and read-data phase apply 2 signals.
    +            FWRITE_DIO: u1,
    +            /// In the write operations address phase and read-data phase apply 4 signals.
    +            FWRITE_QIO: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            /// read-data phase only access to high-part of the buffer spi_mem_w8~spi_mem_w15.
    +            /// 1: enable 0: disable.
    +            USR_MISO_HIGHPART: u1,
    +            /// write-data phase only access to high-part of the buffer spi_mem_w8~spi_mem_w15.
    +            /// 1: enable 0: disable.
    +            USR_MOSI_HIGHPART: u1,
    +            /// SPI clock is disable in dummy phase when the bit is enable.
    +            USR_DUMMY_IDLE: u1,
    +            /// This bit enable the write-data phase of an operation.
    +            USR_MOSI: u1,
    +            /// This bit enable the read-data phase of an operation.
    +            USR_MISO: u1,
    +            /// This bit enable the dummy phase of an operation.
    +            USR_DUMMY: u1,
    +            /// This bit enable the address phase of an operation.
    +            USR_ADDR: u1,
    +            /// This bit enable the command phase of an operation.
    +            USR_COMMAND: u1,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x6000201c
    +        /// SPI1 user1 register.
    +        pub const USER1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The length in spi_mem_clk cycles of dummy phase. The register value shall be
    +            /// (cycle_num-1).
    +            USR_DUMMY_CYCLELEN: u6,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            /// The length in bits of address phase. The register value shall be (bit_num-1).
    +            USR_ADDR_BITLEN: u6,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x60002020
    +        /// SPI1 user2 register.
    +        pub const USER2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of command.
    +            USR_COMMAND_VALUE: u16,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            /// The length in bits of command phase. The register value shall be (bit_num-1)
    +            USR_COMMAND_BITLEN: u4,
    +        }), base_address + 0x20);
    +
    +        /// address: 0x60002024
    +        /// SPI1 send data bit length control register.
    +        pub const MOSI_DLEN = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The length in bits of write-data. The register value shall be (bit_num-1).
    +            USR_MOSI_DBITLEN: u10,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +        }), base_address + 0x24);
    +
    +        /// address: 0x60002028
    +        /// SPI1 receive data bit length control register.
    +        pub const MISO_DLEN = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The length in bits of read-data. The register value shall be (bit_num-1).
    +            USR_MISO_DBITLEN: u10,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +        }), base_address + 0x28);
    +
    +        /// address: 0x6000202c
    +        /// SPI1 status register.
    +        pub const RD_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value is stored when set spi_mem_flash_rdsr bit and spi_mem_flash_res bit.
    +            STATUS: u16,
    +            /// Mode bits in the flash fast read mode it is combined with spi_mem_fastrd_mode
    +            /// bit.
    +            WB_MODE: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +        }), base_address + 0x2c);
    +
    +        /// address: 0x60002034
    +        /// SPI1 misc register
    +        pub const MISC = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// SPI_CS0 pin enable, 1: disable SPI_CS0, 0: SPI_CS0 pin is active to select SPI
    +            /// device, such as flash, external RAM and so on.
    +            CS0_DIS: u1,
    +            /// SPI_CS1 pin enable, 1: disable SPI_CS1, 0: SPI_CS1 pin is active to select SPI
    +            /// device, such as flash, external RAM and so on.
    +            CS1_DIS: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            /// 1: spi clk line is high when idle 0: spi clk line is low when idle
    +            CK_IDLE_EDGE: u1,
    +            /// spi cs line keep low when the bit is set.
    +            CS_KEEP_ACTIVE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x34);
    +
    +        /// address: 0x60002038
    +        /// SPI1 TX CRC data register.
    +        pub const TX_CRC = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// For SPI1, the value of crc32.
    +            DATA: u32,
    +        }), base_address + 0x38);
    +
    +        /// address: 0x6000203c
    +        /// SPI1 bit mode control register.
    +        pub const CACHE_FCTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            /// For SPI1, cache read flash with 4 bytes address, 1: enable, 0:disable.
    +            CACHE_USR_ADDR_4BYTE: u1,
    +            reserved1: u1,
    +            /// For SPI1, din phase apply 2 signals. 1: enable 0: disable. The bit is the same
    +            /// with spi_mem_fread_dio.
    +            FDIN_DUAL: u1,
    +            /// For SPI1, dout phase apply 2 signals. 1: enable 0: disable. The bit is the same
    +            /// with spi_mem_fread_dio.
    +            FDOUT_DUAL: u1,
    +            /// For SPI1, address phase apply 2 signals. 1: enable 0: disable. The bit is the
    +            /// same with spi_mem_fread_dio.
    +            FADDR_DUAL: u1,
    +            /// For SPI1, din phase apply 4 signals. 1: enable 0: disable. The bit is the same
    +            /// with spi_mem_fread_qio.
    +            FDIN_QUAD: u1,
    +            /// For SPI1, dout phase apply 4 signals. 1: enable 0: disable. The bit is the same
    +            /// with spi_mem_fread_qio.
    +            FDOUT_QUAD: u1,
    +            /// For SPI1, address phase apply 4 signals. 1: enable 0: disable. The bit is the
    +            /// same with spi_mem_fread_qio.
    +            FADDR_QUAD: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0x3c);
    +
    +        /// address: 0x60002058
    +        /// SPI1 memory data buffer0
    +        pub const W0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF0: u32,
    +        }), base_address + 0x58);
    +
    +        /// address: 0x6000205c
    +        /// SPI1 memory data buffer1
    +        pub const W1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF1: u32,
    +        }), base_address + 0x5c);
    +
    +        /// address: 0x60002060
    +        /// SPI1 memory data buffer2
    +        pub const W2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF2: u32,
    +        }), base_address + 0x60);
    +
    +        /// address: 0x60002064
    +        /// SPI1 memory data buffer3
    +        pub const W3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF3: u32,
    +        }), base_address + 0x64);
    +
    +        /// address: 0x60002068
    +        /// SPI1 memory data buffer4
    +        pub const W4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF4: u32,
    +        }), base_address + 0x68);
    +
    +        /// address: 0x6000206c
    +        /// SPI1 memory data buffer5
    +        pub const W5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF5: u32,
    +        }), base_address + 0x6c);
    +
    +        /// address: 0x60002070
    +        /// SPI1 memory data buffer6
    +        pub const W6 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF6: u32,
    +        }), base_address + 0x70);
    +
    +        /// address: 0x60002074
    +        /// SPI1 memory data buffer7
    +        pub const W7 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF7: u32,
    +        }), base_address + 0x74);
    +
    +        /// address: 0x60002078
    +        /// SPI1 memory data buffer8
    +        pub const W8 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF8: u32,
    +        }), base_address + 0x78);
    +
    +        /// address: 0x6000207c
    +        /// SPI1 memory data buffer9
    +        pub const W9 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF9: u32,
    +        }), base_address + 0x7c);
    +
    +        /// address: 0x60002080
    +        /// SPI1 memory data buffer10
    +        pub const W10 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF10: u32,
    +        }), base_address + 0x80);
    +
    +        /// address: 0x60002084
    +        /// SPI1 memory data buffer11
    +        pub const W11 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF11: u32,
    +        }), base_address + 0x84);
    +
    +        /// address: 0x60002088
    +        /// SPI1 memory data buffer12
    +        pub const W12 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF12: u32,
    +        }), base_address + 0x88);
    +
    +        /// address: 0x6000208c
    +        /// SPI1 memory data buffer13
    +        pub const W13 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF13: u32,
    +        }), base_address + 0x8c);
    +
    +        /// address: 0x60002090
    +        /// SPI1 memory data buffer14
    +        pub const W14 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF14: u32,
    +        }), base_address + 0x90);
    +
    +        /// address: 0x60002094
    +        /// SPI1 memory data buffer15
    +        pub const W15 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF15: u32,
    +        }), base_address + 0x94);
    +
    +        /// address: 0x60002098
    +        /// SPI1 wait idle control register
    +        pub const FLASH_WAITI_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            /// The dummy phase enable when wait flash idle (RDSR)
    +            WAITI_DUMMY: u1,
    +            /// The command to wait flash idle(RDSR).
    +            WAITI_CMD: u8,
    +            /// The dummy cycle length when wait flash idle(RDSR).
    +            WAITI_DUMMY_CYCLELEN: u6,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x98);
    +
    +        /// address: 0x6000209c
    +        /// SPI1 flash suspend control register
    +        pub const FLASH_SUS_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// program erase resume bit, program erase suspend operation will be triggered when
    +            /// the bit is set. The bit will be cleared once the operation done.1: enable 0:
    +            /// disable.
    +            FLASH_PER: u1,
    +            /// program erase suspend bit, program erase suspend operation will be triggered
    +            /// when the bit is set. The bit will be cleared once the operation done.1: enable
    +            /// 0: disable.
    +            FLASH_PES: u1,
    +            /// 1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4 or *128) SPI_CLK cycles after
    +            /// program erase resume command is sent. 0: SPI1 does not wait after program erase
    +            /// resume command is sent.
    +            FLASH_PER_WAIT_EN: u1,
    +            /// 1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4 or *128) SPI_CLK cycles after
    +            /// program erase suspend command is sent. 0: SPI1 does not wait after program erase
    +            /// suspend command is sent.
    +            FLASH_PES_WAIT_EN: u1,
    +            /// Set this bit to enable PES end triggers PER transfer option. If this bit is 0,
    +            /// application should send PER after PES is done.
    +            PES_PER_EN: u1,
    +            /// Set this bit to enable Auto-suspending function.
    +            FLASH_PES_EN: u1,
    +            /// The mask value when check SUS/SUS1/SUS2 status bit. If the read status value is
    +            /// status_in[15:0](only status_in[7:0] is valid when only one byte of data is read
    +            /// out, status_in[15:0] is valid when two bytes of data are read out),
    +            /// SUS/SUS1/SUS2 = status_in[15:0]^ SPI_MEM_PESR_END_MSK[15:0].
    +            PESR_END_MSK: u16,
    +            /// 1: Read two bytes when check flash SUS/SUS1/SUS2 status bit. 0: Read one byte
    +            /// when check flash SUS/SUS1/SUS2 status bit
    +            RD_SUS_2B: u1,
    +            /// 1: Both WIP and SUS/SUS1/SUS2 bits should be checked to insure the resume status
    +            /// of flash. 0: Only need to check WIP is 0.
    +            PER_END_EN: u1,
    +            /// 1: Both WIP and SUS/SUS1/SUS2 bits should be checked to insure the suspend
    +            /// status of flash. 0: Only need to check WIP is 0.
    +            PES_END_EN: u1,
    +            /// When SPI1 checks SUS/SUS1/SUS2 bits fail for SPI_MEM_SUS_TIMEOUT_CNT[6:0] times,
    +            /// it will be treated as check pass.
    +            SUS_TIMEOUT_CNT: u7,
    +        }), base_address + 0x9c);
    +
    +        /// address: 0x600020a0
    +        /// SPI1 flash suspend command register
    +        pub const FLASH_SUS_CMD = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Program/Erase resume command.
    +            FLASH_PER_COMMAND: u8,
    +            /// Program/Erase suspend command.
    +            FLASH_PES_COMMAND: u8,
    +            /// Flash SUS/SUS1/SUS2 status bit read command. The command should be sent when
    +            /// SUS/SUS1/SUS2 bit should be checked to insure the suspend or resume status of
    +            /// flash.
    +            WAIT_PESR_COMMAND: u16,
    +        }), base_address + 0xa0);
    +
    +        /// address: 0x600020a4
    +        /// SPI1 flash suspend status register
    +        pub const SUS_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The status of flash suspend, only used in SPI1.
    +            FLASH_SUS: u1,
    +            /// 1: SPI1 sends out SPI_MEM_WAIT_PESR_COMMAND[15:0] to check SUS/SUS1/SUS2 bit. 0:
    +            /// SPI1 sends out SPI_MEM_WAIT_PESR_COMMAND[7:0] to check SUS/SUS1/SUS2 bit.
    +            WAIT_PESR_CMD_2B: u1,
    +            /// 1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after HPM
    +            /// command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK
    +            /// cycles after HPM command is sent.
    +            FLASH_HPM_DLY_128: u1,
    +            /// 1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after RES
    +            /// command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK
    +            /// cycles after RES command is sent.
    +            FLASH_RES_DLY_128: u1,
    +            /// 1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after DP
    +            /// command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK
    +            /// cycles after DP command is sent.
    +            FLASH_DP_DLY_128: u1,
    +            /// Valid when SPI_MEM_FLASH_PER_WAIT_EN is 1. 1: SPI1 waits
    +            /// (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after PER command is sent.
    +            /// 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after PER
    +            /// command is sent.
    +            FLASH_PER_DLY_128: u1,
    +            /// Valid when SPI_MEM_FLASH_PES_WAIT_EN is 1. 1: SPI1 waits
    +            /// (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after PES command is sent.
    +            /// 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after PES
    +            /// command is sent.
    +            FLASH_PES_DLY_128: u1,
    +            /// 1: Enable SPI0 lock SPI0/1 arbiter option. 0: Disable it.
    +            SPI0_LOCK_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0xa4);
    +
    +        /// address: 0x600020a8
    +        /// SPI1 timing control register
    +        pub const TIMING_CALI = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            /// The bit is used to enable timing auto-calibration for all reading operations.
    +            TIMING_CALI: u1,
    +            /// add extra dummy spi clock cycle length for spi clock calibration.
    +            EXTRA_DUMMY_CYCLELEN: u3,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +        }), base_address + 0xa8);
    +
    +        /// address: 0x600020c0
    +        /// SPI1 interrupt enable register
    +        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The enable bit for SPI_MEM_PER_END_INT interrupt.
    +            PER_END_INT_ENA: u1,
    +            /// The enable bit for SPI_MEM_PES_END_INT interrupt.
    +            PES_END_INT_ENA: u1,
    +            /// The enable bit for SPI_MEM_WPE_END_INT interrupt.
    +            WPE_END_INT_ENA: u1,
    +            /// The enable bit for SPI_MEM_SLV_ST_END_INT interrupt.
    +            SLV_ST_END_INT_ENA: u1,
    +            /// The enable bit for SPI_MEM_MST_ST_END_INT interrupt.
    +            MST_ST_END_INT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +        }), base_address + 0xc0);
    +
    +        /// address: 0x600020c4
    +        /// SPI1 interrupt clear register
    +        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The clear bit for SPI_MEM_PER_END_INT interrupt.
    +            PER_END_INT_CLR: u1,
    +            /// The clear bit for SPI_MEM_PES_END_INT interrupt.
    +            PES_END_INT_CLR: u1,
    +            /// The clear bit for SPI_MEM_WPE_END_INT interrupt.
    +            WPE_END_INT_CLR: u1,
    +            /// The clear bit for SPI_MEM_SLV_ST_END_INT interrupt.
    +            SLV_ST_END_INT_CLR: u1,
    +            /// The clear bit for SPI_MEM_MST_ST_END_INT interrupt.
    +            MST_ST_END_INT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +        }), base_address + 0xc4);
    +
    +        /// address: 0x600020c8
    +        /// SPI1 interrupt raw register
    +        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The raw bit for SPI_MEM_PER_END_INT interrupt. 1: Triggered when Auto Resume
    +            /// command (0x7A) is sent and flash is resumed. 0: Others.
    +            PER_END_INT_RAW: u1,
    +            /// The raw bit for SPI_MEM_PES_END_INT interrupt.1: Triggered when Auto Suspend
    +            /// command (0x75) is sent and flash is suspended. 0: Others.
    +            PES_END_INT_RAW: u1,
    +            /// The raw bit for SPI_MEM_WPE_END_INT interrupt. 1: Triggered when
    +            /// WRSR/PP/SE/BE/CE is sent and flash is already idle. 0: Others.
    +            WPE_END_INT_RAW: u1,
    +            /// The raw bit for SPI_MEM_SLV_ST_END_INT interrupt. 1: Triggered when spi1_slv_st
    +            /// is changed from non idle state to idle state. It means that SPI_CS raises high.
    +            /// 0: Others
    +            SLV_ST_END_INT_RAW: u1,
    +            /// The raw bit for SPI_MEM_MST_ST_END_INT interrupt. 1: Triggered when spi1_mst_st
    +            /// is changed from non idle state to idle state. 0: Others.
    +            MST_ST_END_INT_RAW: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +        }), base_address + 0xc8);
    +
    +        /// address: 0x600020cc
    +        /// SPI1 interrupt status register
    +        pub const INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The status bit for SPI_MEM_PER_END_INT interrupt.
    +            PER_END_INT_ST: u1,
    +            /// The status bit for SPI_MEM_PES_END_INT interrupt.
    +            PES_END_INT_ST: u1,
    +            /// The status bit for SPI_MEM_WPE_END_INT interrupt.
    +            WPE_END_INT_ST: u1,
    +            /// The status bit for SPI_MEM_SLV_ST_END_INT interrupt.
    +            SLV_ST_END_INT_ST: u1,
    +            /// The status bit for SPI_MEM_MST_ST_END_INT interrupt.
    +            MST_ST_END_INT_ST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +        }), base_address + 0xcc);
    +
    +        /// address: 0x600020dc
    +        /// SPI1 clk_gate register
    +        pub const CLOCK_GATE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Register clock gate enable signal. 1: Enable. 0: Disable.
    +            CLK_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0xdc);
    +
    +        /// address: 0x600023fc
    +        /// Version control register
    +        pub const DATE = @intToPtr(*volatile MmioInt(32, u28), base_address + 0x3fc);
    +    };
    +
    +    /// SPI (Serial Peripheral Interface) Controller
    +    pub const SPI2 = struct {
    +        pub const base_address = 0x60024000;
    +
    +        /// address: 0x60024000
    +        /// Command control register
    +        pub const CMD = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Define the APB cycles of SPI_CONF state. Can be configured in CONF state.
    +            CONF_BITLEN: u18,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            /// Set this bit to synchronize SPI registers from APB clock domain into SPI module
    +            /// clock domain, which is only used in SPI master mode.
    +            UPDATE: u1,
    +            /// User define command enable. An operation will be triggered when the bit is set.
    +            /// The bit will be cleared once the operation done.1: enable 0: disable. Can not be
    +            /// changed by CONF_buf.
    +            USR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +        }), base_address + 0x0);
    +
    +        /// address: 0x60024004
    +        /// Address value register
    +        pub const ADDR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Address to slave. Can be configured in CONF state.
    +            USR_ADDR_VALUE: u32,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x60024008
    +        /// SPI control register
    +        pub const CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            /// In the dummy phase the signal level of spi is output by the spi controller. Can
    +            /// be configured in CONF state.
    +            DUMMY_OUT: u1,
    +            reserved3: u1,
    +            /// Apply 2 signals during addr phase 1:enable 0: disable. Can be configured in CONF
    +            /// state.
    +            FADDR_DUAL: u1,
    +            /// Apply 4 signals during addr phase 1:enable 0: disable. Can be configured in CONF
    +            /// state.
    +            FADDR_QUAD: u1,
    +            reserved4: u1,
    +            /// Apply 2 signals during command phase 1:enable 0: disable. Can be configured in
    +            /// CONF state.
    +            FCMD_DUAL: u1,
    +            /// Apply 4 signals during command phase 1:enable 0: disable. Can be configured in
    +            /// CONF state.
    +            FCMD_QUAD: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            /// In the read operations, read-data phase apply 2 signals. 1: enable 0: disable.
    +            /// Can be configured in CONF state.
    +            FREAD_DUAL: u1,
    +            /// In the read operations read-data phase apply 4 signals. 1: enable 0: disable.
    +            /// Can be configured in CONF state.
    +            FREAD_QUAD: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            /// The bit is used to set MISO line polarity, 1: high 0, low. Can be configured in
    +            /// CONF state.
    +            Q_POL: u1,
    +            /// The bit is used to set MOSI line polarity, 1: high 0, low. Can be configured in
    +            /// CONF state.
    +            D_POL: u1,
    +            /// SPI_HOLD output value when SPI is idle. 1: output high, 0: output low. Can be
    +            /// configured in CONF state.
    +            HOLD_POL: u1,
    +            /// Write protect signal output when SPI is idle. 1: output high, 0: output low. Can
    +            /// be configured in CONF state.
    +            WP_POL: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            /// In read-data (MISO) phase 1: LSB first 0: MSB first. Can be configured in CONF
    +            /// state.
    +            RD_BIT_ORDER: u1,
    +            /// In command address write-data (MOSI) phases 1: LSB firs 0: MSB first. Can be
    +            /// configured in CONF state.
    +            WR_BIT_ORDER: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x6002400c
    +        /// SPI clock control register
    +        pub const CLOCK = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// In the master mode it must be equal to spi_clkcnt_N. In the slave mode it must
    +            /// be 0. Can be configured in CONF state.
    +            CLKCNT_L: u6,
    +            /// In the master mode it must be floor((spi_clkcnt_N+1)/2-1). In the slave mode it
    +            /// must be 0. Can be configured in CONF state.
    +            CLKCNT_H: u6,
    +            /// In the master mode it is the divider of spi_clk. So spi_clk frequency is
    +            /// system/(spi_clkdiv_pre+1)/(spi_clkcnt_N+1). Can be configured in CONF state.
    +            CLKCNT_N: u6,
    +            /// In the master mode it is pre-divider of spi_clk. Can be configured in CONF
    +            /// state.
    +            CLKDIV_PRE: u4,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            /// In the master mode 1: spi_clk is eqaul to system 0: spi_clk is divided from
    +            /// system clock. Can be configured in CONF state.
    +            CLK_EQU_SYSCLK: u1,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x60024010
    +        /// SPI USER control register
    +        pub const USER = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set the bit to enable full duplex communication. 1: enable 0: disable. Can be
    +            /// configured in CONF state.
    +            DOUTDIN: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// Both for master mode and slave mode. 1: spi controller is in QPI mode. 0:
    +            /// others. Can be configured in CONF state.
    +            QPI_MODE: u1,
    +            reserved2: u1,
    +            /// In the slave mode, this bit can be used to change the polarity of tsck. 0: tsck
    +            /// = spi_ck_i. 1:tsck = !spi_ck_i.
    +            TSCK_I_EDGE: u1,
    +            /// spi cs keep low when spi is in done phase. 1: enable 0: disable. Can be
    +            /// configured in CONF state.
    +            CS_HOLD: u1,
    +            /// spi cs is enable when spi is in prepare phase. 1: enable 0: disable. Can be
    +            /// configured in CONF state.
    +            CS_SETUP: u1,
    +            /// In the slave mode, this bit can be used to change the polarity of rsck. 0: rsck
    +            /// = !spi_ck_i. 1:rsck = spi_ck_i.
    +            RSCK_I_EDGE: u1,
    +            /// the bit combined with spi_mosi_delay_mode bits to set mosi signal delay mode.
    +            /// Can be configured in CONF state.
    +            CK_OUT_EDGE: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            /// In the write operations read-data phase apply 2 signals. Can be configured in
    +            /// CONF state.
    +            FWRITE_DUAL: u1,
    +            /// In the write operations read-data phase apply 4 signals. Can be configured in
    +            /// CONF state.
    +            FWRITE_QUAD: u1,
    +            reserved5: u1,
    +            /// 1: Enable the DMA CONF phase of next seg-trans operation, which means seg-trans
    +            /// will continue. 0: The seg-trans will end after the current SPI seg-trans or this
    +            /// is not seg-trans mode. Can be configured in CONF state.
    +            USR_CONF_NXT: u1,
    +            reserved6: u1,
    +            /// Set the bit to enable 3-line half duplex communication mosi and miso signals
    +            /// share the same pin. 1: enable 0: disable. Can be configured in CONF state.
    +            SIO: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            /// read-data phase only access to high-part of the buffer spi_w8~spi_w15. 1: enable
    +            /// 0: disable. Can be configured in CONF state.
    +            USR_MISO_HIGHPART: u1,
    +            /// write-data phase only access to high-part of the buffer spi_w8~spi_w15. 1:
    +            /// enable 0: disable. Can be configured in CONF state.
    +            USR_MOSI_HIGHPART: u1,
    +            /// spi clock is disable in dummy phase when the bit is enable. Can be configured in
    +            /// CONF state.
    +            USR_DUMMY_IDLE: u1,
    +            /// This bit enable the write-data phase of an operation. Can be configured in CONF
    +            /// state.
    +            USR_MOSI: u1,
    +            /// This bit enable the read-data phase of an operation. Can be configured in CONF
    +            /// state.
    +            USR_MISO: u1,
    +            /// This bit enable the dummy phase of an operation. Can be configured in CONF
    +            /// state.
    +            USR_DUMMY: u1,
    +            /// This bit enable the address phase of an operation. Can be configured in CONF
    +            /// state.
    +            USR_ADDR: u1,
    +            /// This bit enable the command phase of an operation. Can be configured in CONF
    +            /// state.
    +            USR_COMMAND: u1,
    +        }), base_address + 0x10);
    +
    +        /// address: 0x60024014
    +        /// SPI USER control register 1
    +        pub const USER1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The length in spi_clk cycles of dummy phase. The register value shall be
    +            /// (cycle_num-1). Can be configured in CONF state.
    +            USR_DUMMY_CYCLELEN: u8,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            /// 1: SPI transfer is ended when SPI RX AFIFO wfull error is valid in GP-SPI master
    +            /// FD/HD-mode. 0: SPI transfer is not ended when SPI RX AFIFO wfull error is valid
    +            /// in GP-SPI master FD/HD-mode.
    +            MST_WFULL_ERR_END_EN: u1,
    +            /// (cycles+1) of prepare phase by spi clock this bits are combined with
    +            /// spi_cs_setup bit. Can be configured in CONF state.
    +            CS_SETUP_TIME: u5,
    +            /// delay cycles of cs pin by spi clock this bits are combined with spi_cs_hold bit.
    +            /// Can be configured in CONF state.
    +            CS_HOLD_TIME: u5,
    +            /// The length in bits of address phase. The register value shall be (bit_num-1).
    +            /// Can be configured in CONF state.
    +            USR_ADDR_BITLEN: u5,
    +        }), base_address + 0x14);
    +
    +        /// address: 0x60024018
    +        /// SPI USER control register 2
    +        pub const USER2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of command. Can be configured in CONF state.
    +            USR_COMMAND_VALUE: u16,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            /// 1: SPI transfer is ended when SPI TX AFIFO read empty error is valid in GP-SPI
    +            /// master FD/HD-mode. 0: SPI transfer is not ended when SPI TX AFIFO read empty
    +            /// error is valid in GP-SPI master FD/HD-mode.
    +            MST_REMPTY_ERR_END_EN: u1,
    +            /// The length in bits of command phase. The register value shall be (bit_num-1).
    +            /// Can be configured in CONF state.
    +            USR_COMMAND_BITLEN: u4,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x6002401c
    +        /// SPI data bit length control register
    +        pub const MS_DLEN = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The value of these bits is the configured SPI transmission data bit length in
    +            /// master mode DMA controlled transfer or CPU controlled transfer. The value is
    +            /// also the configured bit length in slave mode DMA RX controlled transfer. The
    +            /// register value shall be (bit_num-1). Can be configured in CONF state.
    +            MS_DATA_BITLEN: u18,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x60024020
    +        /// SPI misc register
    +        pub const MISC = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// SPI CS0 pin enable, 1: disable CS0, 0: spi_cs0 signal is from/to CS0 pin. Can be
    +            /// configured in CONF state.
    +            CS0_DIS: u1,
    +            /// SPI CS1 pin enable, 1: disable CS1, 0: spi_cs1 signal is from/to CS1 pin. Can be
    +            /// configured in CONF state.
    +            CS1_DIS: u1,
    +            /// SPI CS2 pin enable, 1: disable CS2, 0: spi_cs2 signal is from/to CS2 pin. Can be
    +            /// configured in CONF state.
    +            CS2_DIS: u1,
    +            /// SPI CS3 pin enable, 1: disable CS3, 0: spi_cs3 signal is from/to CS3 pin. Can be
    +            /// configured in CONF state.
    +            CS3_DIS: u1,
    +            /// SPI CS4 pin enable, 1: disable CS4, 0: spi_cs4 signal is from/to CS4 pin. Can be
    +            /// configured in CONF state.
    +            CS4_DIS: u1,
    +            /// SPI CS5 pin enable, 1: disable CS5, 0: spi_cs5 signal is from/to CS5 pin. Can be
    +            /// configured in CONF state.
    +            CS5_DIS: u1,
    +            /// 1: spi clk out disable, 0: spi clk out enable. Can be configured in CONF state.
    +            CK_DIS: u1,
    +            /// In the master mode the bits are the polarity of spi cs line, the value is
    +            /// equivalent to spi_cs ^ spi_master_cs_pol. Can be configured in CONF state.
    +            MASTER_CS_POL: u6,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            /// spi slave input cs polarity select. 1: inv 0: not change. Can be configured in
    +            /// CONF state.
    +            SLAVE_CS_POL: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            /// 1: spi clk line is high when idle 0: spi clk line is low when idle. Can be
    +            /// configured in CONF state.
    +            CK_IDLE_EDGE: u1,
    +            /// spi cs line keep low when the bit is set. Can be configured in CONF state.
    +            CS_KEEP_ACTIVE: u1,
    +            /// 1: spi quad input swap enable 0: spi quad input swap disable. Can be configured
    +            /// in CONF state.
    +            QUAD_DIN_PIN_SWAP: u1,
    +        }), base_address + 0x20);
    +
    +        /// address: 0x60024024
    +        /// SPI input delay mode configuration
    +        pub const DIN_MODE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// the input signals are delayed by SPI module clock cycles, 0: input without
    +            /// delayed, 1: input with the posedge of clk_apb,2 input with the negedge of
    +            /// clk_apb, 3: input with the spi_clk. Can be configured in CONF state.
    +            DIN0_MODE: u2,
    +            /// the input signals are delayed by SPI module clock cycles, 0: input without
    +            /// delayed, 1: input with the posedge of clk_apb,2 input with the negedge of
    +            /// clk_apb, 3: input with the spi_clk. Can be configured in CONF state.
    +            DIN1_MODE: u2,
    +            /// the input signals are delayed by SPI module clock cycles, 0: input without
    +            /// delayed, 1: input with the posedge of clk_apb,2 input with the negedge of
    +            /// clk_apb, 3: input with the spi_clk. Can be configured in CONF state.
    +            DIN2_MODE: u2,
    +            /// the input signals are delayed by SPI module clock cycles, 0: input without
    +            /// delayed, 1: input with the posedge of clk_apb,2 input with the negedge of
    +            /// clk_apb, 3: input with the spi_clk. Can be configured in CONF state.
    +            DIN3_MODE: u2,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            /// 1:enable hclk in SPI input timing module. 0: disable it. Can be configured in
    +            /// CONF state.
    +            TIMING_HCLK_ACTIVE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +        }), base_address + 0x24);
    +
    +        /// address: 0x60024028
    +        /// SPI input delay number configuration
    +        pub const DIN_NUM = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle,
    +            /// 1: delayed by 2 cycles,... Can be configured in CONF state.
    +            DIN0_NUM: u2,
    +            /// the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle,
    +            /// 1: delayed by 2 cycles,... Can be configured in CONF state.
    +            DIN1_NUM: u2,
    +            /// the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle,
    +            /// 1: delayed by 2 cycles,... Can be configured in CONF state.
    +            DIN2_NUM: u2,
    +            /// the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle,
    +            /// 1: delayed by 2 cycles,... Can be configured in CONF state.
    +            DIN3_NUM: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x28);
    +
    +        /// address: 0x6002402c
    +        /// SPI output delay mode configuration
    +        pub const DOUT_MODE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The output signal 0 is delayed by the SPI module clock, 0: output without
    +            /// delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can
    +            /// be configured in CONF state.
    +            DOUT0_MODE: u1,
    +            /// The output signal 1 is delayed by the SPI module clock, 0: output without
    +            /// delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can
    +            /// be configured in CONF state.
    +            DOUT1_MODE: u1,
    +            /// The output signal 2 is delayed by the SPI module clock, 0: output without
    +            /// delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can
    +            /// be configured in CONF state.
    +            DOUT2_MODE: u1,
    +            /// The output signal 3 is delayed by the SPI module clock, 0: output without
    +            /// delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can
    +            /// be configured in CONF state.
    +            DOUT3_MODE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x2c);
    +
    +        /// address: 0x60024030
    +        /// SPI DMA control register
    +        pub const DMA_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            /// Enable dma segment transfer in spi dma half slave mode. 1: enable. 0: disable.
    +            DMA_SLV_SEG_TRANS_EN: u1,
    +            /// 1: spi_dma_infifo_full_vld is cleared by spi slave cmd 5. 0:
    +            /// spi_dma_infifo_full_vld is cleared by spi_trans_done.
    +            SLV_RX_SEG_TRANS_CLR_EN: u1,
    +            /// 1: spi_dma_outfifo_empty_vld is cleared by spi slave cmd 6. 0:
    +            /// spi_dma_outfifo_empty_vld is cleared by spi_trans_done.
    +            SLV_TX_SEG_TRANS_CLR_EN: u1,
    +            /// 1: spi_dma_inlink_eof is set when the number of dma pushed data bytes is equal
    +            /// to the value of spi_slv/mst_dma_rd_bytelen[19:0] in spi dma transition. 0:
    +            /// spi_dma_inlink_eof is set by spi_trans_done in non-seg-trans or
    +            /// spi_dma_seg_trans_done in seg-trans.
    +            RX_EOF_EN: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            /// Set this bit to enable SPI DMA controlled receive data mode.
    +            DMA_RX_ENA: u1,
    +            /// Set this bit to enable SPI DMA controlled send data mode.
    +            DMA_TX_ENA: u1,
    +            /// Set this bit to reset RX AFIFO, which is used to receive data in SPI master and
    +            /// slave mode transfer.
    +            RX_AFIFO_RST: u1,
    +            /// Set this bit to reset BUF TX AFIFO, which is used send data out in SPI slave CPU
    +            /// controlled mode transfer and master mode transfer.
    +            BUF_AFIFO_RST: u1,
    +            /// Set this bit to reset DMA TX AFIFO, which is used to send data out in SPI slave
    +            /// DMA controlled mode transfer.
    +            DMA_AFIFO_RST: u1,
    +        }), base_address + 0x30);
    +
    +        /// address: 0x60024034
    +        /// SPI DMA interrupt enable register
    +        pub const DMA_INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The enable bit for SPI_DMA_INFIFO_FULL_ERR_INT interrupt.
    +            DMA_INFIFO_FULL_ERR_INT_ENA: u1,
    +            /// The enable bit for SPI_DMA_OUTFIFO_EMPTY_ERR_INT interrupt.
    +            DMA_OUTFIFO_EMPTY_ERR_INT_ENA: u1,
    +            /// The enable bit for SPI slave Ex_QPI interrupt.
    +            SLV_EX_QPI_INT_ENA: u1,
    +            /// The enable bit for SPI slave En_QPI interrupt.
    +            SLV_EN_QPI_INT_ENA: u1,
    +            /// The enable bit for SPI slave CMD7 interrupt.
    +            SLV_CMD7_INT_ENA: u1,
    +            /// The enable bit for SPI slave CMD8 interrupt.
    +            SLV_CMD8_INT_ENA: u1,
    +            /// The enable bit for SPI slave CMD9 interrupt.
    +            SLV_CMD9_INT_ENA: u1,
    +            /// The enable bit for SPI slave CMDA interrupt.
    +            SLV_CMDA_INT_ENA: u1,
    +            /// The enable bit for SPI_SLV_RD_DMA_DONE_INT interrupt.
    +            SLV_RD_DMA_DONE_INT_ENA: u1,
    +            /// The enable bit for SPI_SLV_WR_DMA_DONE_INT interrupt.
    +            SLV_WR_DMA_DONE_INT_ENA: u1,
    +            /// The enable bit for SPI_SLV_RD_BUF_DONE_INT interrupt.
    +            SLV_RD_BUF_DONE_INT_ENA: u1,
    +            /// The enable bit for SPI_SLV_WR_BUF_DONE_INT interrupt.
    +            SLV_WR_BUF_DONE_INT_ENA: u1,
    +            /// The enable bit for SPI_TRANS_DONE_INT interrupt.
    +            TRANS_DONE_INT_ENA: u1,
    +            /// The enable bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt.
    +            DMA_SEG_TRANS_DONE_INT_ENA: u1,
    +            /// The enable bit for SPI_SEG_MAGIC_ERR_INT interrupt.
    +            SEG_MAGIC_ERR_INT_ENA: u1,
    +            /// The enable bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt.
    +            SLV_BUF_ADDR_ERR_INT_ENA: u1,
    +            /// The enable bit for SPI_SLV_CMD_ERR_INT interrupt.
    +            SLV_CMD_ERR_INT_ENA: u1,
    +            /// The enable bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt.
    +            MST_RX_AFIFO_WFULL_ERR_INT_ENA: u1,
    +            /// The enable bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt.
    +            MST_TX_AFIFO_REMPTY_ERR_INT_ENA: u1,
    +            /// The enable bit for SPI_APP2_INT interrupt.
    +            APP2_INT_ENA: u1,
    +            /// The enable bit for SPI_APP1_INT interrupt.
    +            APP1_INT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +        }), base_address + 0x34);
    +
    +        /// address: 0x60024038
    +        /// SPI DMA interrupt clear register
    +        pub const DMA_INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The clear bit for SPI_DMA_INFIFO_FULL_ERR_INT interrupt.
    +            DMA_INFIFO_FULL_ERR_INT_CLR: u1,
    +            /// The clear bit for SPI_DMA_OUTFIFO_EMPTY_ERR_INT interrupt.
    +            DMA_OUTFIFO_EMPTY_ERR_INT_CLR: u1,
    +            /// The clear bit for SPI slave Ex_QPI interrupt.
    +            SLV_EX_QPI_INT_CLR: u1,
    +            /// The clear bit for SPI slave En_QPI interrupt.
    +            SLV_EN_QPI_INT_CLR: u1,
    +            /// The clear bit for SPI slave CMD7 interrupt.
    +            SLV_CMD7_INT_CLR: u1,
    +            /// The clear bit for SPI slave CMD8 interrupt.
    +            SLV_CMD8_INT_CLR: u1,
    +            /// The clear bit for SPI slave CMD9 interrupt.
    +            SLV_CMD9_INT_CLR: u1,
    +            /// The clear bit for SPI slave CMDA interrupt.
    +            SLV_CMDA_INT_CLR: u1,
    +            /// The clear bit for SPI_SLV_RD_DMA_DONE_INT interrupt.
    +            SLV_RD_DMA_DONE_INT_CLR: u1,
    +            /// The clear bit for SPI_SLV_WR_DMA_DONE_INT interrupt.
    +            SLV_WR_DMA_DONE_INT_CLR: u1,
    +            /// The clear bit for SPI_SLV_RD_BUF_DONE_INT interrupt.
    +            SLV_RD_BUF_DONE_INT_CLR: u1,
    +            /// The clear bit for SPI_SLV_WR_BUF_DONE_INT interrupt.
    +            SLV_WR_BUF_DONE_INT_CLR: u1,
    +            /// The clear bit for SPI_TRANS_DONE_INT interrupt.
    +            TRANS_DONE_INT_CLR: u1,
    +            /// The clear bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt.
    +            DMA_SEG_TRANS_DONE_INT_CLR: u1,
    +            /// The clear bit for SPI_SEG_MAGIC_ERR_INT interrupt.
    +            SEG_MAGIC_ERR_INT_CLR: u1,
    +            /// The clear bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt.
    +            SLV_BUF_ADDR_ERR_INT_CLR: u1,
    +            /// The clear bit for SPI_SLV_CMD_ERR_INT interrupt.
    +            SLV_CMD_ERR_INT_CLR: u1,
    +            /// The clear bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt.
    +            MST_RX_AFIFO_WFULL_ERR_INT_CLR: u1,
    +            /// The clear bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt.
    +            MST_TX_AFIFO_REMPTY_ERR_INT_CLR: u1,
    +            /// The clear bit for SPI_APP2_INT interrupt.
    +            APP2_INT_CLR: u1,
    +            /// The clear bit for SPI_APP1_INT interrupt.
    +            APP1_INT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +        }), base_address + 0x38);
    +
    +        /// address: 0x6002403c
    +        /// SPI DMA interrupt raw register
    +        pub const DMA_INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// 1: The current data rate of DMA Rx is smaller than that of SPI, which will lose
    +            /// the receive data. 0: Others.
    +            DMA_INFIFO_FULL_ERR_INT_RAW: u1,
    +            /// 1: The current data rate of DMA TX is smaller than that of SPI. SPI will stop in
    +            /// master mode and send out all 0 in slave mode. 0: Others.
    +            DMA_OUTFIFO_EMPTY_ERR_INT_RAW: u1,
    +            /// The raw bit for SPI slave Ex_QPI interrupt. 1: SPI slave mode Ex_QPI
    +            /// transmission is ended. 0: Others.
    +            SLV_EX_QPI_INT_RAW: u1,
    +            /// The raw bit for SPI slave En_QPI interrupt. 1: SPI slave mode En_QPI
    +            /// transmission is ended. 0: Others.
    +            SLV_EN_QPI_INT_RAW: u1,
    +            /// The raw bit for SPI slave CMD7 interrupt. 1: SPI slave mode CMD7 transmission is
    +            /// ended. 0: Others.
    +            SLV_CMD7_INT_RAW: u1,
    +            /// The raw bit for SPI slave CMD8 interrupt. 1: SPI slave mode CMD8 transmission is
    +            /// ended. 0: Others.
    +            SLV_CMD8_INT_RAW: u1,
    +            /// The raw bit for SPI slave CMD9 interrupt. 1: SPI slave mode CMD9 transmission is
    +            /// ended. 0: Others.
    +            SLV_CMD9_INT_RAW: u1,
    +            /// The raw bit for SPI slave CMDA interrupt. 1: SPI slave mode CMDA transmission is
    +            /// ended. 0: Others.
    +            SLV_CMDA_INT_RAW: u1,
    +            /// The raw bit for SPI_SLV_RD_DMA_DONE_INT interrupt. 1: SPI slave mode Rd_DMA
    +            /// transmission is ended. 0: Others.
    +            SLV_RD_DMA_DONE_INT_RAW: u1,
    +            /// The raw bit for SPI_SLV_WR_DMA_DONE_INT interrupt. 1: SPI slave mode Wr_DMA
    +            /// transmission is ended. 0: Others.
    +            SLV_WR_DMA_DONE_INT_RAW: u1,
    +            /// The raw bit for SPI_SLV_RD_BUF_DONE_INT interrupt. 1: SPI slave mode Rd_BUF
    +            /// transmission is ended. 0: Others.
    +            SLV_RD_BUF_DONE_INT_RAW: u1,
    +            /// The raw bit for SPI_SLV_WR_BUF_DONE_INT interrupt. 1: SPI slave mode Wr_BUF
    +            /// transmission is ended. 0: Others.
    +            SLV_WR_BUF_DONE_INT_RAW: u1,
    +            /// The raw bit for SPI_TRANS_DONE_INT interrupt. 1: SPI master mode transmission is
    +            /// ended. 0: others.
    +            TRANS_DONE_INT_RAW: u1,
    +            /// The raw bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt. 1: spi master DMA
    +            /// full-duplex/half-duplex seg-conf-trans ends or slave half-duplex seg-trans ends.
    +            /// And data has been pushed to corresponding memory. 0: seg-conf-trans or seg-trans
    +            /// is not ended or not occurred.
    +            DMA_SEG_TRANS_DONE_INT_RAW: u1,
    +            /// The raw bit for SPI_SEG_MAGIC_ERR_INT interrupt. 1: The magic value in CONF
    +            /// buffer is error in the DMA seg-conf-trans. 0: others.
    +            SEG_MAGIC_ERR_INT_RAW: u1,
    +            /// The raw bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt. 1: The accessing data
    +            /// address of the current SPI slave mode CPU controlled FD, Wr_BUF or Rd_BUF
    +            /// transmission is bigger than 63. 0: Others.
    +            SLV_BUF_ADDR_ERR_INT_RAW: u1,
    +            /// The raw bit for SPI_SLV_CMD_ERR_INT interrupt. 1: The slave command value in the
    +            /// current SPI slave HD mode transmission is not supported. 0: Others.
    +            SLV_CMD_ERR_INT_RAW: u1,
    +            /// The raw bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt. 1: There is a RX AFIFO
    +            /// write-full error when SPI inputs data in master mode. 0: Others.
    +            MST_RX_AFIFO_WFULL_ERR_INT_RAW: u1,
    +            /// The raw bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt. 1: There is a TX BUF
    +            /// AFIFO read-empty error when SPI outputs data in master mode. 0: Others.
    +            MST_TX_AFIFO_REMPTY_ERR_INT_RAW: u1,
    +            /// The raw bit for SPI_APP2_INT interrupt. The value is only controlled by
    +            /// application.
    +            APP2_INT_RAW: u1,
    +            /// The raw bit for SPI_APP1_INT interrupt. The value is only controlled by
    +            /// application.
    +            APP1_INT_RAW: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +        }), base_address + 0x3c);
    +
    +        /// address: 0x60024040
    +        /// SPI DMA interrupt status register
    +        pub const DMA_INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The status bit for SPI_DMA_INFIFO_FULL_ERR_INT interrupt.
    +            DMA_INFIFO_FULL_ERR_INT_ST: u1,
    +            /// The status bit for SPI_DMA_OUTFIFO_EMPTY_ERR_INT interrupt.
    +            DMA_OUTFIFO_EMPTY_ERR_INT_ST: u1,
    +            /// The status bit for SPI slave Ex_QPI interrupt.
    +            SLV_EX_QPI_INT_ST: u1,
    +            /// The status bit for SPI slave En_QPI interrupt.
    +            SLV_EN_QPI_INT_ST: u1,
    +            /// The status bit for SPI slave CMD7 interrupt.
    +            SLV_CMD7_INT_ST: u1,
    +            /// The status bit for SPI slave CMD8 interrupt.
    +            SLV_CMD8_INT_ST: u1,
    +            /// The status bit for SPI slave CMD9 interrupt.
    +            SLV_CMD9_INT_ST: u1,
    +            /// The status bit for SPI slave CMDA interrupt.
    +            SLV_CMDA_INT_ST: u1,
    +            /// The status bit for SPI_SLV_RD_DMA_DONE_INT interrupt.
    +            SLV_RD_DMA_DONE_INT_ST: u1,
    +            /// The status bit for SPI_SLV_WR_DMA_DONE_INT interrupt.
    +            SLV_WR_DMA_DONE_INT_ST: u1,
    +            /// The status bit for SPI_SLV_RD_BUF_DONE_INT interrupt.
    +            SLV_RD_BUF_DONE_INT_ST: u1,
    +            /// The status bit for SPI_SLV_WR_BUF_DONE_INT interrupt.
    +            SLV_WR_BUF_DONE_INT_ST: u1,
    +            /// The status bit for SPI_TRANS_DONE_INT interrupt.
    +            TRANS_DONE_INT_ST: u1,
    +            /// The status bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt.
    +            DMA_SEG_TRANS_DONE_INT_ST: u1,
    +            /// The status bit for SPI_SEG_MAGIC_ERR_INT interrupt.
    +            SEG_MAGIC_ERR_INT_ST: u1,
    +            /// The status bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt.
    +            SLV_BUF_ADDR_ERR_INT_ST: u1,
    +            /// The status bit for SPI_SLV_CMD_ERR_INT interrupt.
    +            SLV_CMD_ERR_INT_ST: u1,
    +            /// The status bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt.
    +            MST_RX_AFIFO_WFULL_ERR_INT_ST: u1,
    +            /// The status bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt.
    +            MST_TX_AFIFO_REMPTY_ERR_INT_ST: u1,
    +            /// The status bit for SPI_APP2_INT interrupt.
    +            APP2_INT_ST: u1,
    +            /// The status bit for SPI_APP1_INT interrupt.
    +            APP1_INT_ST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +        }), base_address + 0x40);
    +
    +        /// address: 0x60024098
    +        /// SPI CPU-controlled buffer0
    +        pub const W0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF0: u32,
    +        }), base_address + 0x98);
    +
    +        /// address: 0x6002409c
    +        /// SPI CPU-controlled buffer1
    +        pub const W1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF1: u32,
    +        }), base_address + 0x9c);
    +
    +        /// address: 0x600240a0
    +        /// SPI CPU-controlled buffer2
    +        pub const W2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF2: u32,
    +        }), base_address + 0xa0);
    +
    +        /// address: 0x600240a4
    +        /// SPI CPU-controlled buffer3
    +        pub const W3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF3: u32,
    +        }), base_address + 0xa4);
    +
    +        /// address: 0x600240a8
    +        /// SPI CPU-controlled buffer4
    +        pub const W4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF4: u32,
    +        }), base_address + 0xa8);
    +
    +        /// address: 0x600240ac
    +        /// SPI CPU-controlled buffer5
    +        pub const W5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF5: u32,
    +        }), base_address + 0xac);
    +
    +        /// address: 0x600240b0
    +        /// SPI CPU-controlled buffer6
    +        pub const W6 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF6: u32,
    +        }), base_address + 0xb0);
    +
    +        /// address: 0x600240b4
    +        /// SPI CPU-controlled buffer7
    +        pub const W7 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF7: u32,
    +        }), base_address + 0xb4);
    +
    +        /// address: 0x600240b8
    +        /// SPI CPU-controlled buffer8
    +        pub const W8 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF8: u32,
    +        }), base_address + 0xb8);
    +
    +        /// address: 0x600240bc
    +        /// SPI CPU-controlled buffer9
    +        pub const W9 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF9: u32,
    +        }), base_address + 0xbc);
    +
    +        /// address: 0x600240c0
    +        /// SPI CPU-controlled buffer10
    +        pub const W10 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF10: u32,
    +        }), base_address + 0xc0);
    +
    +        /// address: 0x600240c4
    +        /// SPI CPU-controlled buffer11
    +        pub const W11 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF11: u32,
    +        }), base_address + 0xc4);
    +
    +        /// address: 0x600240c8
    +        /// SPI CPU-controlled buffer12
    +        pub const W12 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF12: u32,
    +        }), base_address + 0xc8);
    +
    +        /// address: 0x600240cc
    +        /// SPI CPU-controlled buffer13
    +        pub const W13 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF13: u32,
    +        }), base_address + 0xcc);
    +
    +        /// address: 0x600240d0
    +        /// SPI CPU-controlled buffer14
    +        pub const W14 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF14: u32,
    +        }), base_address + 0xd0);
    +
    +        /// address: 0x600240d4
    +        /// SPI CPU-controlled buffer15
    +        pub const W15 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// data buffer
    +            BUF15: u32,
    +        }), base_address + 0xd4);
    +
    +        /// address: 0x600240e0
    +        /// SPI slave control register
    +        pub const SLAVE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// SPI clock mode bits. 0: SPI clock is off when CS inactive 1: SPI clock is
    +            /// delayed one cycle after CS inactive 2: SPI clock is delayed two cycles after CS
    +            /// inactive 3: SPI clock is alwasy on. Can be configured in CONF state.
    +            CLK_MODE: u2,
    +            /// {CPOL, CPHA},1: support spi clk mode 1 and 3, first edge output data B[0]/B[7].
    +            /// 0: support spi clk mode 0 and 2, first edge output data B[1]/B[6].
    +            CLK_MODE_13: u1,
    +            /// It saves half a cycle when tsck is the same as rsck. 1: output data at rsck
    +            /// posedge 0: output data at tsck posedge
    +            RSCK_DATA_OUT: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// 1: SPI_SLV_DATA_BITLEN stores data bit length of master-read-slave data length
    +            /// in DMA controlled mode(Rd_DMA). 0: others
    +            SLV_RDDMA_BITLEN_EN: u1,
    +            /// 1: SPI_SLV_DATA_BITLEN stores data bit length of master-write-to-slave data
    +            /// length in DMA controlled mode(Wr_DMA). 0: others
    +            SLV_WRDMA_BITLEN_EN: u1,
    +            /// 1: SPI_SLV_DATA_BITLEN stores data bit length of master-read-slave data length
    +            /// in CPU controlled mode(Rd_BUF). 0: others
    +            SLV_RDBUF_BITLEN_EN: u1,
    +            /// 1: SPI_SLV_DATA_BITLEN stores data bit length of master-write-to-slave data
    +            /// length in CPU controlled mode(Wr_BUF). 0: others
    +            SLV_WRBUF_BITLEN_EN: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            /// The magic value of BM table in master DMA seg-trans.
    +            DMA_SEG_MAGIC_VALUE: u4,
    +            /// Set SPI work mode. 1: slave mode 0: master mode.
    +            MODE: u1,
    +            /// Software reset enable, reset the spi clock line cs line and data lines. Can be
    +            /// configured in CONF state.
    +            SOFT_RESET: u1,
    +            /// 1: Enable the DMA CONF phase of current seg-trans operation, which means
    +            /// seg-trans will start. 0: This is not seg-trans mode.
    +            USR_CONF: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +        }), base_address + 0xe0);
    +
    +        /// address: 0x600240e4
    +        /// SPI slave control register 1
    +        pub const SLAVE1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The transferred data bit length in SPI slave FD and HD mode.
    +            SLV_DATA_BITLEN: u18,
    +            /// In the slave mode it is the value of command.
    +            SLV_LAST_COMMAND: u8,
    +            /// In the slave mode it is the value of address.
    +            SLV_LAST_ADDR: u6,
    +        }), base_address + 0xe4);
    +
    +        /// address: 0x600240e8
    +        /// SPI module clock and register clock control
    +        pub const CLK_GATE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set this bit to enable clk gate
    +            CLK_EN: u1,
    +            /// Set this bit to power on the SPI module clock.
    +            MST_CLK_ACTIVE: u1,
    +            /// This bit is used to select SPI module clock source in master mode. 1:
    +            /// PLL_CLK_80M. 0: XTAL CLK.
    +            MST_CLK_SEL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +        }), base_address + 0xe8);
    +
    +        /// address: 0x600240f0
    +        /// Version control
    +        pub const DATE = @intToPtr(*volatile MmioInt(32, u28), base_address + 0xf0);
    +    };
    +
    +    /// System
    +    pub const SYSTEM = struct {
    +        pub const base_address = 0x600c0000;
    +
    +        /// address: 0x600c0000
    +        /// cpu_peripheral clock gating register
    +        pub const CPU_PERI_CLK_EN = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            /// reg_clk_en_assist_debug
    +            CLK_EN_ASSIST_DEBUG: u1,
    +            /// reg_clk_en_dedicated_gpio
    +            CLK_EN_DEDICATED_GPIO: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x0);
    +
    +        /// address: 0x600c0004
    +        /// cpu_peripheral reset register
    +        pub const CPU_PERI_RST_EN = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            /// reg_rst_en_assist_debug
    +            RST_EN_ASSIST_DEBUG: u1,
    +            /// reg_rst_en_dedicated_gpio
    +            RST_EN_DEDICATED_GPIO: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x600c0008
    +        /// cpu clock config register
    +        pub const CPU_PER_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_cpuperiod_sel
    +            CPUPERIOD_SEL: u2,
    +            /// reg_pll_freq_sel
    +            PLL_FREQ_SEL: u1,
    +            /// reg_cpu_wait_mode_force_on
    +            CPU_WAIT_MODE_FORCE_ON: u1,
    +            /// reg_cpu_waiti_delay_num
    +            CPU_WAITI_DELAY_NUM: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x600c000c
    +        /// memory power down mask register
    +        pub const MEM_PD_MASK = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_lslp_mem_pd_mask
    +            LSLP_MEM_PD_MASK: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x600c0010
    +        /// peripheral clock gating register
    +        pub const PERIP_CLK_EN0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_timers_clk_en
    +            TIMERS_CLK_EN: u1,
    +            /// reg_spi01_clk_en
    +            SPI01_CLK_EN: u1,
    +            /// reg_uart_clk_en
    +            UART_CLK_EN: u1,
    +            /// reg_wdg_clk_en
    +            WDG_CLK_EN: u1,
    +            /// reg_i2s0_clk_en
    +            I2S0_CLK_EN: u1,
    +            /// reg_uart1_clk_en
    +            UART1_CLK_EN: u1,
    +            /// reg_spi2_clk_en
    +            SPI2_CLK_EN: u1,
    +            /// reg_ext0_clk_en
    +            I2C_EXT0_CLK_EN: u1,
    +            /// reg_uhci0_clk_en
    +            UHCI0_CLK_EN: u1,
    +            /// reg_rmt_clk_en
    +            RMT_CLK_EN: u1,
    +            /// reg_pcnt_clk_en
    +            PCNT_CLK_EN: u1,
    +            /// reg_ledc_clk_en
    +            LEDC_CLK_EN: u1,
    +            /// reg_uhci1_clk_en
    +            UHCI1_CLK_EN: u1,
    +            /// reg_timergroup_clk_en
    +            TIMERGROUP_CLK_EN: u1,
    +            /// reg_efuse_clk_en
    +            EFUSE_CLK_EN: u1,
    +            /// reg_timergroup1_clk_en
    +            TIMERGROUP1_CLK_EN: u1,
    +            /// reg_spi3_clk_en
    +            SPI3_CLK_EN: u1,
    +            /// reg_pwm0_clk_en
    +            PWM0_CLK_EN: u1,
    +            /// reg_ext1_clk_en
    +            EXT1_CLK_EN: u1,
    +            /// reg_can_clk_en
    +            CAN_CLK_EN: u1,
    +            /// reg_pwm1_clk_en
    +            PWM1_CLK_EN: u1,
    +            /// reg_i2s1_clk_en
    +            I2S1_CLK_EN: u1,
    +            /// reg_spi2_dma_clk_en
    +            SPI2_DMA_CLK_EN: u1,
    +            /// reg_usb_device_clk_en
    +            USB_DEVICE_CLK_EN: u1,
    +            /// reg_uart_mem_clk_en
    +            UART_MEM_CLK_EN: u1,
    +            /// reg_pwm2_clk_en
    +            PWM2_CLK_EN: u1,
    +            /// reg_pwm3_clk_en
    +            PWM3_CLK_EN: u1,
    +            /// reg_spi3_dma_clk_en
    +            SPI3_DMA_CLK_EN: u1,
    +            /// reg_apb_saradc_clk_en
    +            APB_SARADC_CLK_EN: u1,
    +            /// reg_systimer_clk_en
    +            SYSTIMER_CLK_EN: u1,
    +            /// reg_adc2_arb_clk_en
    +            ADC2_ARB_CLK_EN: u1,
    +            /// reg_spi4_clk_en
    +            SPI4_CLK_EN: u1,
    +        }), base_address + 0x10);
    +
    +        /// address: 0x600c0014
    +        /// peripheral clock gating register
    +        pub const PERIP_CLK_EN1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            /// reg_crypto_aes_clk_en
    +            CRYPTO_AES_CLK_EN: u1,
    +            /// reg_crypto_sha_clk_en
    +            CRYPTO_SHA_CLK_EN: u1,
    +            /// reg_crypto_rsa_clk_en
    +            CRYPTO_RSA_CLK_EN: u1,
    +            /// reg_crypto_ds_clk_en
    +            CRYPTO_DS_CLK_EN: u1,
    +            /// reg_crypto_hmac_clk_en
    +            CRYPTO_HMAC_CLK_EN: u1,
    +            /// reg_dma_clk_en
    +            DMA_CLK_EN: u1,
    +            /// reg_sdio_host_clk_en
    +            SDIO_HOST_CLK_EN: u1,
    +            /// reg_lcd_cam_clk_en
    +            LCD_CAM_CLK_EN: u1,
    +            /// reg_uart2_clk_en
    +            UART2_CLK_EN: u1,
    +            /// reg_tsens_clk_en
    +            TSENS_CLK_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x14);
    +
    +        /// address: 0x600c0018
    +        /// reserved
    +        pub const PERIP_RST_EN0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_timers_rst
    +            TIMERS_RST: u1,
    +            /// reg_spi01_rst
    +            SPI01_RST: u1,
    +            /// reg_uart_rst
    +            UART_RST: u1,
    +            /// reg_wdg_rst
    +            WDG_RST: u1,
    +            /// reg_i2s0_rst
    +            I2S0_RST: u1,
    +            /// reg_uart1_rst
    +            UART1_RST: u1,
    +            /// reg_spi2_rst
    +            SPI2_RST: u1,
    +            /// reg_ext0_rst
    +            I2C_EXT0_RST: u1,
    +            /// reg_uhci0_rst
    +            UHCI0_RST: u1,
    +            /// reg_rmt_rst
    +            RMT_RST: u1,
    +            /// reg_pcnt_rst
    +            PCNT_RST: u1,
    +            /// reg_ledc_rst
    +            LEDC_RST: u1,
    +            /// reg_uhci1_rst
    +            UHCI1_RST: u1,
    +            /// reg_timergroup_rst
    +            TIMERGROUP_RST: u1,
    +            /// reg_efuse_rst
    +            EFUSE_RST: u1,
    +            /// reg_timergroup1_rst
    +            TIMERGROUP1_RST: u1,
    +            /// reg_spi3_rst
    +            SPI3_RST: u1,
    +            /// reg_pwm0_rst
    +            PWM0_RST: u1,
    +            /// reg_ext1_rst
    +            EXT1_RST: u1,
    +            /// reg_can_rst
    +            CAN_RST: u1,
    +            /// reg_pwm1_rst
    +            PWM1_RST: u1,
    +            /// reg_i2s1_rst
    +            I2S1_RST: u1,
    +            /// reg_spi2_dma_rst
    +            SPI2_DMA_RST: u1,
    +            /// reg_usb_device_rst
    +            USB_DEVICE_RST: u1,
    +            /// reg_uart_mem_rst
    +            UART_MEM_RST: u1,
    +            /// reg_pwm2_rst
    +            PWM2_RST: u1,
    +            /// reg_pwm3_rst
    +            PWM3_RST: u1,
    +            /// reg_spi3_dma_rst
    +            SPI3_DMA_RST: u1,
    +            /// reg_apb_saradc_rst
    +            APB_SARADC_RST: u1,
    +            /// reg_systimer_rst
    +            SYSTIMER_RST: u1,
    +            /// reg_adc2_arb_rst
    +            ADC2_ARB_RST: u1,
    +            /// reg_spi4_rst
    +            SPI4_RST: u1,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x600c001c
    +        /// peripheral reset register
    +        pub const PERIP_RST_EN1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            /// reg_crypto_aes_rst
    +            CRYPTO_AES_RST: u1,
    +            /// reg_crypto_sha_rst
    +            CRYPTO_SHA_RST: u1,
    +            /// reg_crypto_rsa_rst
    +            CRYPTO_RSA_RST: u1,
    +            /// reg_crypto_ds_rst
    +            CRYPTO_DS_RST: u1,
    +            /// reg_crypto_hmac_rst
    +            CRYPTO_HMAC_RST: u1,
    +            /// reg_dma_rst
    +            DMA_RST: u1,
    +            /// reg_sdio_host_rst
    +            SDIO_HOST_RST: u1,
    +            /// reg_lcd_cam_rst
    +            LCD_CAM_RST: u1,
    +            /// reg_uart2_rst
    +            UART2_RST: u1,
    +            /// reg_tsens_rst
    +            TSENS_RST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x600c0020
    +        /// clock config register
    +        pub const BT_LPCK_DIV_INT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_bt_lpck_div_num
    +            BT_LPCK_DIV_NUM: u12,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0x20);
    +
    +        /// address: 0x600c0024
    +        /// clock config register
    +        pub const BT_LPCK_DIV_FRAC = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_bt_lpck_div_b
    +            BT_LPCK_DIV_B: u12,
    +            /// reg_bt_lpck_div_a
    +            BT_LPCK_DIV_A: u12,
    +            /// reg_lpclk_sel_rtc_slow
    +            LPCLK_SEL_RTC_SLOW: u1,
    +            /// reg_lpclk_sel_8m
    +            LPCLK_SEL_8M: u1,
    +            /// reg_lpclk_sel_xtal
    +            LPCLK_SEL_XTAL: u1,
    +            /// reg_lpclk_sel_xtal32k
    +            LPCLK_SEL_XTAL32K: u1,
    +            /// reg_lpclk_rtc_en
    +            LPCLK_RTC_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +        }), base_address + 0x24);
    +
    +        /// address: 0x600c0028
    +        /// interrupt generate register
    +        pub const CPU_INTR_FROM_CPU_0 = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x28);
    +
    +        /// address: 0x600c002c
    +        /// interrupt generate register
    +        pub const CPU_INTR_FROM_CPU_1 = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x2c);
    +
    +        /// address: 0x600c0030
    +        /// interrupt generate register
    +        pub const CPU_INTR_FROM_CPU_2 = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x30);
    +
    +        /// address: 0x600c0034
    +        /// interrupt generate register
    +        pub const CPU_INTR_FROM_CPU_3 = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x34);
    +
    +        /// address: 0x600c0038
    +        /// rsa memory power control register
    +        pub const RSA_PD_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_rsa_mem_pd
    +            RSA_MEM_PD: u1,
    +            /// reg_rsa_mem_force_pu
    +            RSA_MEM_FORCE_PU: u1,
    +            /// reg_rsa_mem_force_pd
    +            RSA_MEM_FORCE_PD: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +        }), base_address + 0x38);
    +
    +        /// address: 0x600c003c
    +        /// edma clcok and reset register
    +        pub const EDMA_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_edma_clk_on
    +            EDMA_CLK_ON: u1,
    +            /// reg_edma_reset
    +            EDMA_RESET: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x3c);
    +
    +        /// address: 0x600c0040
    +        /// cache control register
    +        pub const CACHE_CONTROL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_icache_clk_on
    +            ICACHE_CLK_ON: u1,
    +            /// reg_icache_reset
    +            ICACHE_RESET: u1,
    +            /// reg_dcache_clk_on
    +            DCACHE_CLK_ON: u1,
    +            /// reg_dcache_reset
    +            DCACHE_RESET: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x40);
    +
    +        /// address: 0x600c0044
    +        /// SYSTEM_EXTERNAL_DEVICE_ENCRYPT_DECRYPT_CONTROL_REG
    +        pub const EXTERNAL_DEVICE_ENCRYPT_DECRYPT_CONTROL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_enable_spi_manual_encrypt
    +            ENABLE_SPI_MANUAL_ENCRYPT: u1,
    +            /// reg_enable_download_db_encrypt
    +            ENABLE_DOWNLOAD_DB_ENCRYPT: u1,
    +            /// reg_enable_download_g0cb_decrypt
    +            ENABLE_DOWNLOAD_G0CB_DECRYPT: u1,
    +            /// reg_enable_download_manual_encrypt
    +            ENABLE_DOWNLOAD_MANUAL_ENCRYPT: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x44);
    +
    +        /// address: 0x600c0048
    +        /// fast memory config register
    +        pub const RTC_FASTMEM_CONFIG = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            /// reg_rtc_mem_crc_start
    +            RTC_MEM_CRC_START: u1,
    +            /// reg_rtc_mem_crc_addr
    +            RTC_MEM_CRC_ADDR: u11,
    +            /// reg_rtc_mem_crc_len
    +            RTC_MEM_CRC_LEN: u11,
    +            /// reg_rtc_mem_crc_finish
    +            RTC_MEM_CRC_FINISH: u1,
    +        }), base_address + 0x48);
    +
    +        /// address: 0x600c004c
    +        /// reserved
    +        pub const RTC_FASTMEM_CRC = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_rtc_mem_crc_res
    +            RTC_MEM_CRC_RES: u32,
    +        }), base_address + 0x4c);
    +
    +        /// address: 0x600c0050
    +        /// eco register
    +        pub const REDUNDANT_ECO_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_redundant_eco_drive
    +            REDUNDANT_ECO_DRIVE: u1,
    +            /// reg_redundant_eco_result
    +            REDUNDANT_ECO_RESULT: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x50);
    +
    +        /// address: 0x600c0054
    +        /// clock gating register
    +        pub const CLOCK_GATE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_clk_en
    +            CLK_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x54);
    +
    +        /// address: 0x600c0058
    +        /// system clock config register
    +        pub const SYSCLK_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_pre_div_cnt
    +            PRE_DIV_CNT: u10,
    +            /// reg_soc_clk_sel
    +            SOC_CLK_SEL: u2,
    +            /// reg_clk_xtal_freq
    +            CLK_XTAL_FREQ: u7,
    +            /// reg_clk_div_en
    +            CLK_DIV_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x58);
    +
    +        /// address: 0x600c005c
    +        /// mem pvt register
    +        pub const MEM_PVT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_mem_path_len
    +            MEM_PATH_LEN: u4,
    +            /// reg_mem_err_cnt_clr
    +            MEM_ERR_CNT_CLR: u1,
    +            /// reg_mem_pvt_monitor_en
    +            MONITOR_EN: u1,
    +            /// reg_mem_timing_err_cnt
    +            MEM_TIMING_ERR_CNT: u16,
    +            /// reg_mem_vt_sel
    +            MEM_VT_SEL: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +        }), base_address + 0x5c);
    +
    +        /// address: 0x600c0060
    +        /// mem pvt register
    +        pub const COMB_PVT_LVT_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_comb_path_len_lvt
    +            COMB_PATH_LEN_LVT: u5,
    +            /// reg_comb_err_cnt_clr_lvt
    +            COMB_ERR_CNT_CLR_LVT: u1,
    +            /// reg_comb_pvt_monitor_en_lvt
    +            COMB_PVT_MONITOR_EN_LVT: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x60);
    +
    +        /// address: 0x600c0064
    +        /// mem pvt register
    +        pub const COMB_PVT_NVT_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_comb_path_len_nvt
    +            COMB_PATH_LEN_NVT: u5,
    +            /// reg_comb_err_cnt_clr_nvt
    +            COMB_ERR_CNT_CLR_NVT: u1,
    +            /// reg_comb_pvt_monitor_en_nvt
    +            COMB_PVT_MONITOR_EN_NVT: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x64);
    +
    +        /// address: 0x600c0068
    +        /// mem pvt register
    +        pub const COMB_PVT_HVT_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_comb_path_len_hvt
    +            COMB_PATH_LEN_HVT: u5,
    +            /// reg_comb_err_cnt_clr_hvt
    +            COMB_ERR_CNT_CLR_HVT: u1,
    +            /// reg_comb_pvt_monitor_en_hvt
    +            COMB_PVT_MONITOR_EN_HVT: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x68);
    +
    +        /// address: 0x600c006c
    +        /// mem pvt register
    +        pub const COMB_PVT_ERR_LVT_SITE0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_comb_timing_err_cnt_lvt_site0
    +            COMB_TIMING_ERR_CNT_LVT_SITE0: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x6c);
    +
    +        /// address: 0x600c0070
    +        /// mem pvt register
    +        pub const COMB_PVT_ERR_NVT_SITE0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_comb_timing_err_cnt_nvt_site0
    +            COMB_TIMING_ERR_CNT_NVT_SITE0: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x70);
    +
    +        /// address: 0x600c0074
    +        /// mem pvt register
    +        pub const COMB_PVT_ERR_HVT_SITE0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_comb_timing_err_cnt_hvt_site0
    +            COMB_TIMING_ERR_CNT_HVT_SITE0: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x74);
    +
    +        /// address: 0x600c0078
    +        /// mem pvt register
    +        pub const COMB_PVT_ERR_LVT_SITE1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_comb_timing_err_cnt_lvt_site1
    +            COMB_TIMING_ERR_CNT_LVT_SITE1: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x78);
    +
    +        /// address: 0x600c007c
    +        /// mem pvt register
    +        pub const COMB_PVT_ERR_NVT_SITE1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_comb_timing_err_cnt_nvt_site1
    +            COMB_TIMING_ERR_CNT_NVT_SITE1: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x7c);
    +
    +        /// address: 0x600c0080
    +        /// mem pvt register
    +        pub const COMB_PVT_ERR_HVT_SITE1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_comb_timing_err_cnt_hvt_site1
    +            COMB_TIMING_ERR_CNT_HVT_SITE1: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x80);
    +
    +        /// address: 0x600c0084
    +        /// mem pvt register
    +        pub const COMB_PVT_ERR_LVT_SITE2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_comb_timing_err_cnt_lvt_site2
    +            COMB_TIMING_ERR_CNT_LVT_SITE2: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x84);
    +
    +        /// address: 0x600c0088
    +        /// mem pvt register
    +        pub const COMB_PVT_ERR_NVT_SITE2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_comb_timing_err_cnt_nvt_site2
    +            COMB_TIMING_ERR_CNT_NVT_SITE2: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x88);
    +
    +        /// address: 0x600c008c
    +        /// mem pvt register
    +        pub const COMB_PVT_ERR_HVT_SITE2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_comb_timing_err_cnt_hvt_site2
    +            COMB_TIMING_ERR_CNT_HVT_SITE2: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x8c);
    +
    +        /// address: 0x600c0090
    +        /// mem pvt register
    +        pub const COMB_PVT_ERR_LVT_SITE3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_comb_timing_err_cnt_lvt_site3
    +            COMB_TIMING_ERR_CNT_LVT_SITE3: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x90);
    +
    +        /// address: 0x600c0094
    +        /// mem pvt register
    +        pub const COMB_PVT_ERR_NVT_SITE3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_comb_timing_err_cnt_nvt_site3
    +            COMB_TIMING_ERR_CNT_NVT_SITE3: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x94);
    +
    +        /// address: 0x600c0098
    +        /// mem pvt register
    +        pub const COMB_PVT_ERR_HVT_SITE3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_comb_timing_err_cnt_hvt_site3
    +            COMB_TIMING_ERR_CNT_HVT_SITE3: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x98);
    +
    +        /// address: 0x600c0ffc
    +        /// Version register
    +        pub const SYSTEM_REG_DATE = @intToPtr(*volatile MmioInt(32, u28), base_address + 0xffc);
    +    };
    +
    +    /// System Timer
    +    pub const SYSTIMER = struct {
    +        pub const base_address = 0x60023000;
    +
    +        /// address: 0x60023000
    +        /// SYSTIMER_CONF.
    +        pub const CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// systimer clock force on
    +            SYSTIMER_CLK_FO: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            /// target2 work enable
    +            TARGET2_WORK_EN: u1,
    +            /// target1 work enable
    +            TARGET1_WORK_EN: u1,
    +            /// target0 work enable
    +            TARGET0_WORK_EN: u1,
    +            /// If timer unit1 is stalled when core1 stalled
    +            TIMER_UNIT1_CORE1_STALL_EN: u1,
    +            /// If timer unit1 is stalled when core0 stalled
    +            TIMER_UNIT1_CORE0_STALL_EN: u1,
    +            /// If timer unit0 is stalled when core1 stalled
    +            TIMER_UNIT0_CORE1_STALL_EN: u1,
    +            /// If timer unit0 is stalled when core0 stalled
    +            TIMER_UNIT0_CORE0_STALL_EN: u1,
    +            /// timer unit1 work enable
    +            TIMER_UNIT1_WORK_EN: u1,
    +            /// timer unit0 work enable
    +            TIMER_UNIT0_WORK_EN: u1,
    +            /// register file clk gating
    +            CLK_EN: u1,
    +        }), base_address + 0x0);
    +
    +        /// address: 0x60023004
    +        /// SYSTIMER_UNIT0_OP.
    +        pub const UNIT0_OP = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            reserved25: u1,
    +            reserved26: u1,
    +            reserved27: u1,
    +            reserved28: u1,
    +            /// reg_timer_unit0_value_valid
    +            TIMER_UNIT0_VALUE_VALID: u1,
    +            /// update timer_unit0
    +            TIMER_UNIT0_UPDATE: u1,
    +            padding0: u1,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x60023008
    +        /// SYSTIMER_UNIT1_OP.
    +        pub const UNIT1_OP = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            reserved25: u1,
    +            reserved26: u1,
    +            reserved27: u1,
    +            reserved28: u1,
    +            /// timer value is sync and valid
    +            TIMER_UNIT1_VALUE_VALID: u1,
    +            /// update timer unit1
    +            TIMER_UNIT1_UPDATE: u1,
    +            padding0: u1,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x6002300c
    +        /// SYSTIMER_UNIT0_LOAD_HI.
    +        pub const UNIT0_LOAD_HI = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// timer unit0 load high 32 bit
    +            TIMER_UNIT0_LOAD_HI: u20,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x60023010
    +        /// SYSTIMER_UNIT0_LOAD_LO.
    +        pub const UNIT0_LOAD_LO = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// timer unit0 load low 32 bit
    +            TIMER_UNIT0_LOAD_LO: u32,
    +        }), base_address + 0x10);
    +
    +        /// address: 0x60023014
    +        /// SYSTIMER_UNIT1_LOAD_HI.
    +        pub const UNIT1_LOAD_HI = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// timer unit1 load high 32 bit
    +            TIMER_UNIT1_LOAD_HI: u20,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x14);
    +
    +        /// address: 0x60023018
    +        /// SYSTIMER_UNIT1_LOAD_LO.
    +        pub const UNIT1_LOAD_LO = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// timer unit1 load low 32 bit
    +            TIMER_UNIT1_LOAD_LO: u32,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x6002301c
    +        /// SYSTIMER_TARGET0_HI.
    +        pub const TARGET0_HI = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// timer taget0 high 32 bit
    +            TIMER_TARGET0_HI: u20,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x60023020
    +        /// SYSTIMER_TARGET0_LO.
    +        pub const TARGET0_LO = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// timer taget0 low 32 bit
    +            TIMER_TARGET0_LO: u32,
    +        }), base_address + 0x20);
    +
    +        /// address: 0x60023024
    +        /// SYSTIMER_TARGET1_HI.
    +        pub const TARGET1_HI = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// timer taget1 high 32 bit
    +            TIMER_TARGET1_HI: u20,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x24);
    +
    +        /// address: 0x60023028
    +        /// SYSTIMER_TARGET1_LO.
    +        pub const TARGET1_LO = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// timer taget1 low 32 bit
    +            TIMER_TARGET1_LO: u32,
    +        }), base_address + 0x28);
    +
    +        /// address: 0x6002302c
    +        /// SYSTIMER_TARGET2_HI.
    +        pub const TARGET2_HI = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// timer taget2 high 32 bit
    +            TIMER_TARGET2_HI: u20,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x2c);
    +
    +        /// address: 0x60023030
    +        /// SYSTIMER_TARGET2_LO.
    +        pub const TARGET2_LO = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// timer taget2 low 32 bit
    +            TIMER_TARGET2_LO: u32,
    +        }), base_address + 0x30);
    +
    +        /// address: 0x60023034
    +        /// SYSTIMER_TARGET0_CONF.
    +        pub const TARGET0_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// target0 period
    +            TARGET0_PERIOD: u26,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// Set target0 to period mode
    +            TARGET0_PERIOD_MODE: u1,
    +            /// select which unit to compare
    +            TARGET0_TIMER_UNIT_SEL: u1,
    +        }), base_address + 0x34);
    +
    +        /// address: 0x60023038
    +        /// SYSTIMER_TARGET1_CONF.
    +        pub const TARGET1_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// target1 period
    +            TARGET1_PERIOD: u26,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// Set target1 to period mode
    +            TARGET1_PERIOD_MODE: u1,
    +            /// select which unit to compare
    +            TARGET1_TIMER_UNIT_SEL: u1,
    +        }), base_address + 0x38);
    +
    +        /// address: 0x6002303c
    +        /// SYSTIMER_TARGET2_CONF.
    +        pub const TARGET2_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// target2 period
    +            TARGET2_PERIOD: u26,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            /// Set target2 to period mode
    +            TARGET2_PERIOD_MODE: u1,
    +            /// select which unit to compare
    +            TARGET2_TIMER_UNIT_SEL: u1,
    +        }), base_address + 0x3c);
    +
    +        /// address: 0x60023040
    +        /// SYSTIMER_UNIT0_VALUE_HI.
    +        pub const UNIT0_VALUE_HI = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// timer read value high 32bit
    +            TIMER_UNIT0_VALUE_HI: u20,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x40);
    +
    +        /// address: 0x60023044
    +        /// SYSTIMER_UNIT0_VALUE_LO.
    +        pub const UNIT0_VALUE_LO = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// timer read value low 32bit
    +            TIMER_UNIT0_VALUE_LO: u32,
    +        }), base_address + 0x44);
    +
    +        /// address: 0x60023048
    +        /// SYSTIMER_UNIT1_VALUE_HI.
    +        pub const UNIT1_VALUE_HI = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// timer read value high 32bit
    +            TIMER_UNIT1_VALUE_HI: u20,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x48);
    +
    +        /// address: 0x6002304c
    +        /// SYSTIMER_UNIT1_VALUE_LO.
    +        pub const UNIT1_VALUE_LO = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// timer read value low 32bit
    +            TIMER_UNIT1_VALUE_LO: u32,
    +        }), base_address + 0x4c);
    +
    +        /// address: 0x60023050
    +        /// SYSTIMER_COMP0_LOAD.
    +        pub const COMP0_LOAD = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// timer comp0 load value
    +            TIMER_COMP0_LOAD: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x50);
    +
    +        /// address: 0x60023054
    +        /// SYSTIMER_COMP1_LOAD.
    +        pub const COMP1_LOAD = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// timer comp1 load value
    +            TIMER_COMP1_LOAD: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x54);
    +
    +        /// address: 0x60023058
    +        /// SYSTIMER_COMP2_LOAD.
    +        pub const COMP2_LOAD = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// timer comp2 load value
    +            TIMER_COMP2_LOAD: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x58);
    +
    +        /// address: 0x6002305c
    +        /// SYSTIMER_UNIT0_LOAD.
    +        pub const UNIT0_LOAD = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// timer unit0 load value
    +            TIMER_UNIT0_LOAD: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x5c);
    +
    +        /// address: 0x60023060
    +        /// SYSTIMER_UNIT1_LOAD.
    +        pub const UNIT1_LOAD = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// timer unit1 load value
    +            TIMER_UNIT1_LOAD: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x60);
    +
    +        /// address: 0x60023064
    +        /// SYSTIMER_INT_ENA.
    +        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// interupt0 enable
    +            TARGET0_INT_ENA: u1,
    +            /// interupt1 enable
    +            TARGET1_INT_ENA: u1,
    +            /// interupt2 enable
    +            TARGET2_INT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +        }), base_address + 0x64);
    +
    +        /// address: 0x60023068
    +        /// SYSTIMER_INT_RAW.
    +        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// interupt0 raw
    +            TARGET0_INT_RAW: u1,
    +            /// interupt1 raw
    +            TARGET1_INT_RAW: u1,
    +            /// interupt2 raw
    +            TARGET2_INT_RAW: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +        }), base_address + 0x68);
    +
    +        /// address: 0x6002306c
    +        /// SYSTIMER_INT_CLR.
    +        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// interupt0 clear
    +            TARGET0_INT_CLR: u1,
    +            /// interupt1 clear
    +            TARGET1_INT_CLR: u1,
    +            /// interupt2 clear
    +            TARGET2_INT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +        }), base_address + 0x6c);
    +
    +        /// address: 0x60023070
    +        /// SYSTIMER_INT_ST.
    +        pub const INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_target0_int_st
    +            TARGET0_INT_ST: u1,
    +            /// reg_target1_int_st
    +            TARGET1_INT_ST: u1,
    +            /// reg_target2_int_st
    +            TARGET2_INT_ST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +        }), base_address + 0x70);
    +
    +        /// address: 0x600230fc
    +        /// SYSTIMER_DATE.
    +        pub const DATE = @intToPtr(*volatile u32, base_address + 0xfc);
    +    };
    +
    +    /// Timer Group
    +    pub const TIMG0 = struct {
    +        pub const base_address = 0x6001f000;
    +
    +        /// address: 0x6001f000
    +        /// TIMG_T0CONFIG_REG.
    +        pub const T0CONFIG = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            /// reg_t0_use_xtal.
    +            T0_USE_XTAL: u1,
    +            /// reg_t0_alarm_en.
    +            T0_ALARM_EN: u1,
    +            reserved9: u1,
    +            /// reg_t0_divcnt_rst.
    +            T0_DIVCNT_RST: u1,
    +            /// reg_t0_divider.
    +            T0_DIVIDER: u16,
    +            /// reg_t0_autoreload.
    +            T0_AUTORELOAD: u1,
    +            /// reg_t0_increase.
    +            T0_INCREASE: u1,
    +            /// reg_t0_en.
    +            T0_EN: u1,
    +        }), base_address + 0x0);
    +
    +        /// address: 0x6001f004
    +        /// TIMG_T0LO_REG.
    +        pub const T0LO = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// t0_lo
    +            T0_LO: u32,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x6001f008
    +        /// TIMG_T0HI_REG.
    +        pub const T0HI = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// t0_hi
    +            T0_HI: u22,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x6001f00c
    +        /// TIMG_T0UPDATE_REG.
    +        pub const T0UPDATE = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            reserved25: u1,
    +            reserved26: u1,
    +            reserved27: u1,
    +            reserved28: u1,
    +            reserved29: u1,
    +            reserved30: u1,
    +            /// t0_update
    +            T0_UPDATE: u1,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x6001f010
    +        /// TIMG_T0ALARMLO_REG.
    +        pub const T0ALARMLO = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_t0_alarm_lo.
    +            T0_ALARM_LO: u32,
    +        }), base_address + 0x10);
    +
    +        /// address: 0x6001f014
    +        /// TIMG_T0ALARMHI_REG.
    +        pub const T0ALARMHI = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_t0_alarm_hi.
    +            T0_ALARM_HI: u22,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +        }), base_address + 0x14);
    +
    +        /// address: 0x6001f018
    +        /// TIMG_T0LOADLO_REG.
    +        pub const T0LOADLO = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_t0_load_lo.
    +            T0_LOAD_LO: u32,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x6001f01c
    +        /// TIMG_T0LOADHI_REG.
    +        pub const T0LOADHI = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_t0_load_hi.
    +            T0_LOAD_HI: u22,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x6001f020
    +        /// TIMG_T0LOAD_REG.
    +        pub const T0LOAD = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// t0_load
    +            T0_LOAD: u32,
    +        }), base_address + 0x20);
    +
    +        /// address: 0x6001f048
    +        /// TIMG_WDTCONFIG0_REG.
    +        pub const WDTCONFIG0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            /// reg_wdt_appcpu_reset_en.
    +            WDT_APPCPU_RESET_EN: u1,
    +            /// reg_wdt_procpu_reset_en.
    +            WDT_PROCPU_RESET_EN: u1,
    +            /// reg_wdt_flashboot_mod_en.
    +            WDT_FLASHBOOT_MOD_EN: u1,
    +            /// reg_wdt_sys_reset_length.
    +            WDT_SYS_RESET_LENGTH: u3,
    +            /// reg_wdt_cpu_reset_length.
    +            WDT_CPU_RESET_LENGTH: u3,
    +            /// reg_wdt_use_xtal.
    +            WDT_USE_XTAL: u1,
    +            /// reg_wdt_conf_update_en.
    +            WDT_CONF_UPDATE_EN: u1,
    +            /// reg_wdt_stg3.
    +            WDT_STG3: u2,
    +            /// reg_wdt_stg2.
    +            WDT_STG2: u2,
    +            /// reg_wdt_stg1.
    +            WDT_STG1: u2,
    +            /// reg_wdt_stg0.
    +            WDT_STG0: u2,
    +            /// reg_wdt_en.
    +            WDT_EN: u1,
    +        }), base_address + 0x48);
    +
    +        /// address: 0x6001f04c
    +        /// TIMG_WDTCONFIG1_REG.
    +        pub const WDTCONFIG1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_wdt_divcnt_rst.
    +            WDT_DIVCNT_RST: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            /// reg_wdt_clk_prescale.
    +            WDT_CLK_PRESCALE: u16,
    +        }), base_address + 0x4c);
    +
    +        /// address: 0x6001f050
    +        /// TIMG_WDTCONFIG2_REG.
    +        pub const WDTCONFIG2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_wdt_stg0_hold.
    +            WDT_STG0_HOLD: u32,
    +        }), base_address + 0x50);
    +
    +        /// address: 0x6001f054
    +        /// TIMG_WDTCONFIG3_REG.
    +        pub const WDTCONFIG3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_wdt_stg1_hold.
    +            WDT_STG1_HOLD: u32,
    +        }), base_address + 0x54);
    +
    +        /// address: 0x6001f058
    +        /// TIMG_WDTCONFIG4_REG.
    +        pub const WDTCONFIG4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_wdt_stg2_hold.
    +            WDT_STG2_HOLD: u32,
    +        }), base_address + 0x58);
    +
    +        /// address: 0x6001f05c
    +        /// TIMG_WDTCONFIG5_REG.
    +        pub const WDTCONFIG5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_wdt_stg3_hold.
    +            WDT_STG3_HOLD: u32,
    +        }), base_address + 0x5c);
    +
    +        /// address: 0x6001f060
    +        /// TIMG_WDTFEED_REG.
    +        pub const WDTFEED = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// wdt_feed
    +            WDT_FEED: u32,
    +        }), base_address + 0x60);
    +
    +        /// address: 0x6001f064
    +        /// TIMG_WDTWPROTECT_REG.
    +        pub const WDTWPROTECT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_wdt_wkey.
    +            WDT_WKEY: u32,
    +        }), base_address + 0x64);
    +
    +        /// address: 0x6001f068
    +        /// TIMG_RTCCALICFG_REG.
    +        pub const RTCCALICFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            /// reg_rtc_cali_start_cycling.
    +            RTC_CALI_START_CYCLING: u1,
    +            /// reg_rtc_cali_clk_sel.0:rtcslowclock.1:clk_80m.2:xtal_32k
    +            RTC_CALI_CLK_SEL: u2,
    +            /// rtc_cali_rdy
    +            RTC_CALI_RDY: u1,
    +            /// reg_rtc_cali_max.
    +            RTC_CALI_MAX: u15,
    +            /// reg_rtc_cali_start.
    +            RTC_CALI_START: u1,
    +        }), base_address + 0x68);
    +
    +        /// address: 0x6001f06c
    +        /// TIMG_RTCCALICFG1_REG.
    +        pub const RTCCALICFG1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// rtc_cali_cycling_data_vld
    +            RTC_CALI_CYCLING_DATA_VLD: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            /// rtc_cali_value
    +            RTC_CALI_VALUE: u25,
    +        }), base_address + 0x6c);
    +
    +        /// address: 0x6001f070
    +        /// INT_ENA_TIMG_REG
    +        pub const INT_ENA_TIMERS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// t0_int_ena
    +            T0_INT_ENA: u1,
    +            /// wdt_int_ena
    +            WDT_INT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x70);
    +
    +        /// address: 0x6001f074
    +        /// INT_RAW_TIMG_REG
    +        pub const INT_RAW_TIMERS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// t0_int_raw
    +            T0_INT_RAW: u1,
    +            /// wdt_int_raw
    +            WDT_INT_RAW: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x74);
    +
    +        /// address: 0x6001f078
    +        /// INT_ST_TIMG_REG
    +        pub const INT_ST_TIMERS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// t0_int_st
    +            T0_INT_ST: u1,
    +            /// wdt_int_st
    +            WDT_INT_ST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x78);
    +
    +        /// address: 0x6001f07c
    +        /// INT_CLR_TIMG_REG
    +        pub const INT_CLR_TIMERS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// t0_int_clr
    +            T0_INT_CLR: u1,
    +            /// wdt_int_clr
    +            WDT_INT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x7c);
    +
    +        /// address: 0x6001f080
    +        /// TIMG_RTCCALICFG2_REG.
    +        pub const RTCCALICFG2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// timeoutindicator
    +            RTC_CALI_TIMEOUT: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// reg_rtc_cali_timeout_rst_cnt.Cyclesthatreleasecalibrationtimeoutreset
    +            RTC_CALI_TIMEOUT_RST_CNT: u4,
    +            /// reg_rtc_cali_timeout_thres.timeoutifcalivaluecountsoverthreshold
    +            RTC_CALI_TIMEOUT_THRES: u25,
    +        }), base_address + 0x80);
    +
    +        /// address: 0x6001f0f8
    +        /// TIMG_NTIMG_DATE_REG.
    +        pub const NTIMG_DATE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_ntimers_date.
    +            NTIMGS_DATE: u28,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +        }), base_address + 0xf8);
    +
    +        /// address: 0x6001f0fc
    +        /// TIMG_REGCLK_REG.
    +        pub const REGCLK = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            reserved25: u1,
    +            reserved26: u1,
    +            reserved27: u1,
    +            reserved28: u1,
    +            /// reg_wdt_clk_is_active.
    +            WDT_CLK_IS_ACTIVE: u1,
    +            /// reg_timer_clk_is_active.
    +            TIMER_CLK_IS_ACTIVE: u1,
    +            /// reg_clk_en.
    +            CLK_EN: u1,
    +        }), base_address + 0xfc);
    +    };
    +
    +    /// Timer Group
    +    pub const TIMG1 = struct {
    +        pub const base_address = 0x60020000;
    +
    +        /// address: 0x60020000
    +        /// TIMG_T0CONFIG_REG.
    +        pub const T0CONFIG = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            /// reg_t0_use_xtal.
    +            T0_USE_XTAL: u1,
    +            /// reg_t0_alarm_en.
    +            T0_ALARM_EN: u1,
    +            reserved9: u1,
    +            /// reg_t0_divcnt_rst.
    +            T0_DIVCNT_RST: u1,
    +            /// reg_t0_divider.
    +            T0_DIVIDER: u16,
    +            /// reg_t0_autoreload.
    +            T0_AUTORELOAD: u1,
    +            /// reg_t0_increase.
    +            T0_INCREASE: u1,
    +            /// reg_t0_en.
    +            T0_EN: u1,
    +        }), base_address + 0x0);
    +
    +        /// address: 0x60020004
    +        /// TIMG_T0LO_REG.
    +        pub const T0LO = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// t0_lo
    +            T0_LO: u32,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x60020008
    +        /// TIMG_T0HI_REG.
    +        pub const T0HI = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// t0_hi
    +            T0_HI: u22,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x6002000c
    +        /// TIMG_T0UPDATE_REG.
    +        pub const T0UPDATE = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            reserved25: u1,
    +            reserved26: u1,
    +            reserved27: u1,
    +            reserved28: u1,
    +            reserved29: u1,
    +            reserved30: u1,
    +            /// t0_update
    +            T0_UPDATE: u1,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x60020010
    +        /// TIMG_T0ALARMLO_REG.
    +        pub const T0ALARMLO = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_t0_alarm_lo.
    +            T0_ALARM_LO: u32,
    +        }), base_address + 0x10);
    +
    +        /// address: 0x60020014
    +        /// TIMG_T0ALARMHI_REG.
    +        pub const T0ALARMHI = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_t0_alarm_hi.
    +            T0_ALARM_HI: u22,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +        }), base_address + 0x14);
    +
    +        /// address: 0x60020018
    +        /// TIMG_T0LOADLO_REG.
    +        pub const T0LOADLO = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_t0_load_lo.
    +            T0_LOAD_LO: u32,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x6002001c
    +        /// TIMG_T0LOADHI_REG.
    +        pub const T0LOADHI = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_t0_load_hi.
    +            T0_LOAD_HI: u22,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x60020020
    +        /// TIMG_T0LOAD_REG.
    +        pub const T0LOAD = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// t0_load
    +            T0_LOAD: u32,
    +        }), base_address + 0x20);
    +
    +        /// address: 0x60020048
    +        /// TIMG_WDTCONFIG0_REG.
    +        pub const WDTCONFIG0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            /// reg_wdt_appcpu_reset_en.
    +            WDT_APPCPU_RESET_EN: u1,
    +            /// reg_wdt_procpu_reset_en.
    +            WDT_PROCPU_RESET_EN: u1,
    +            /// reg_wdt_flashboot_mod_en.
    +            WDT_FLASHBOOT_MOD_EN: u1,
    +            /// reg_wdt_sys_reset_length.
    +            WDT_SYS_RESET_LENGTH: u3,
    +            /// reg_wdt_cpu_reset_length.
    +            WDT_CPU_RESET_LENGTH: u3,
    +            /// reg_wdt_use_xtal.
    +            WDT_USE_XTAL: u1,
    +            /// reg_wdt_conf_update_en.
    +            WDT_CONF_UPDATE_EN: u1,
    +            /// reg_wdt_stg3.
    +            WDT_STG3: u2,
    +            /// reg_wdt_stg2.
    +            WDT_STG2: u2,
    +            /// reg_wdt_stg1.
    +            WDT_STG1: u2,
    +            /// reg_wdt_stg0.
    +            WDT_STG0: u2,
    +            /// reg_wdt_en.
    +            WDT_EN: u1,
    +        }), base_address + 0x48);
    +
    +        /// address: 0x6002004c
    +        /// TIMG_WDTCONFIG1_REG.
    +        pub const WDTCONFIG1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_wdt_divcnt_rst.
    +            WDT_DIVCNT_RST: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            /// reg_wdt_clk_prescale.
    +            WDT_CLK_PRESCALE: u16,
    +        }), base_address + 0x4c);
    +
    +        /// address: 0x60020050
    +        /// TIMG_WDTCONFIG2_REG.
    +        pub const WDTCONFIG2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_wdt_stg0_hold.
    +            WDT_STG0_HOLD: u32,
    +        }), base_address + 0x50);
    +
    +        /// address: 0x60020054
    +        /// TIMG_WDTCONFIG3_REG.
    +        pub const WDTCONFIG3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_wdt_stg1_hold.
    +            WDT_STG1_HOLD: u32,
    +        }), base_address + 0x54);
    +
    +        /// address: 0x60020058
    +        /// TIMG_WDTCONFIG4_REG.
    +        pub const WDTCONFIG4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_wdt_stg2_hold.
    +            WDT_STG2_HOLD: u32,
    +        }), base_address + 0x58);
    +
    +        /// address: 0x6002005c
    +        /// TIMG_WDTCONFIG5_REG.
    +        pub const WDTCONFIG5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_wdt_stg3_hold.
    +            WDT_STG3_HOLD: u32,
    +        }), base_address + 0x5c);
    +
    +        /// address: 0x60020060
    +        /// TIMG_WDTFEED_REG.
    +        pub const WDTFEED = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// wdt_feed
    +            WDT_FEED: u32,
    +        }), base_address + 0x60);
    +
    +        /// address: 0x60020064
    +        /// TIMG_WDTWPROTECT_REG.
    +        pub const WDTWPROTECT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_wdt_wkey.
    +            WDT_WKEY: u32,
    +        }), base_address + 0x64);
    +
    +        /// address: 0x60020068
    +        /// TIMG_RTCCALICFG_REG.
    +        pub const RTCCALICFG = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            /// reg_rtc_cali_start_cycling.
    +            RTC_CALI_START_CYCLING: u1,
    +            /// reg_rtc_cali_clk_sel.0:rtcslowclock.1:clk_80m.2:xtal_32k
    +            RTC_CALI_CLK_SEL: u2,
    +            /// rtc_cali_rdy
    +            RTC_CALI_RDY: u1,
    +            /// reg_rtc_cali_max.
    +            RTC_CALI_MAX: u15,
    +            /// reg_rtc_cali_start.
    +            RTC_CALI_START: u1,
    +        }), base_address + 0x68);
    +
    +        /// address: 0x6002006c
    +        /// TIMG_RTCCALICFG1_REG.
    +        pub const RTCCALICFG1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// rtc_cali_cycling_data_vld
    +            RTC_CALI_CYCLING_DATA_VLD: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            /// rtc_cali_value
    +            RTC_CALI_VALUE: u25,
    +        }), base_address + 0x6c);
    +
    +        /// address: 0x60020070
    +        /// INT_ENA_TIMG_REG
    +        pub const INT_ENA_TIMERS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// t0_int_ena
    +            T0_INT_ENA: u1,
    +            /// wdt_int_ena
    +            WDT_INT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x70);
    +
    +        /// address: 0x60020074
    +        /// INT_RAW_TIMG_REG
    +        pub const INT_RAW_TIMERS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// t0_int_raw
    +            T0_INT_RAW: u1,
    +            /// wdt_int_raw
    +            WDT_INT_RAW: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x74);
    +
    +        /// address: 0x60020078
    +        /// INT_ST_TIMG_REG
    +        pub const INT_ST_TIMERS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// t0_int_st
    +            T0_INT_ST: u1,
    +            /// wdt_int_st
    +            WDT_INT_ST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x78);
    +
    +        /// address: 0x6002007c
    +        /// INT_CLR_TIMG_REG
    +        pub const INT_CLR_TIMERS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// t0_int_clr
    +            T0_INT_CLR: u1,
    +            /// wdt_int_clr
    +            WDT_INT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x7c);
    +
    +        /// address: 0x60020080
    +        /// TIMG_RTCCALICFG2_REG.
    +        pub const RTCCALICFG2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// timeoutindicator
    +            RTC_CALI_TIMEOUT: u1,
    +            reserved0: u1,
    +            reserved1: u1,
    +            /// reg_rtc_cali_timeout_rst_cnt.Cyclesthatreleasecalibrationtimeoutreset
    +            RTC_CALI_TIMEOUT_RST_CNT: u4,
    +            /// reg_rtc_cali_timeout_thres.timeoutifcalivaluecountsoverthreshold
    +            RTC_CALI_TIMEOUT_THRES: u25,
    +        }), base_address + 0x80);
    +
    +        /// address: 0x600200f8
    +        /// TIMG_NTIMG_DATE_REG.
    +        pub const NTIMG_DATE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// reg_ntimers_date.
    +            NTIMGS_DATE: u28,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +        }), base_address + 0xf8);
    +
    +        /// address: 0x600200fc
    +        /// TIMG_REGCLK_REG.
    +        pub const REGCLK = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            reserved8: u1,
    +            reserved9: u1,
    +            reserved10: u1,
    +            reserved11: u1,
    +            reserved12: u1,
    +            reserved13: u1,
    +            reserved14: u1,
    +            reserved15: u1,
    +            reserved16: u1,
    +            reserved17: u1,
    +            reserved18: u1,
    +            reserved19: u1,
    +            reserved20: u1,
    +            reserved21: u1,
    +            reserved22: u1,
    +            reserved23: u1,
    +            reserved24: u1,
    +            reserved25: u1,
    +            reserved26: u1,
    +            reserved27: u1,
    +            reserved28: u1,
    +            /// reg_wdt_clk_is_active.
    +            WDT_CLK_IS_ACTIVE: u1,
    +            /// reg_timer_clk_is_active.
    +            TIMER_CLK_IS_ACTIVE: u1,
    +            /// reg_clk_en.
    +            CLK_EN: u1,
    +        }), base_address + 0xfc);
    +    };
    +
    +    /// Two-Wire Automotive Interface
    +    pub const TWAI = struct {
    +        pub const base_address = 0x6002b000;
    +
    +        /// address: 0x6002b000
    +        /// Mode Register
    +        pub const MODE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This bit is used to configure the operating mode of the TWAI Controller. 1:
    +            /// Reset mode; 0: Operating mode.
    +            RESET_MODE: u1,
    +            /// 1: Listen only mode. In this mode the nodes will only receive messages from the
    +            /// bus, without generating the acknowledge signal nor updating the RX error
    +            /// counter.
    +            LISTEN_ONLY_MODE: u1,
    +            /// 1: Self test mode. In this mode the TX nodes can perform a successful
    +            /// transmission without receiving the acknowledge signal. This mode is often used
    +            /// to test a single node with the self reception request command.
    +            SELF_TEST_MODE: u1,
    +            /// This bit is used to configure the filter mode. 0: Dual filter mode; 1: Single
    +            /// filter mode.
    +            RX_FILTER_MODE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x0);
    +
    +        /// address: 0x6002b004
    +        /// Command Register
    +        pub const CMD = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set the bit to 1 to allow the driving nodes start transmission.
    +            TX_REQ: u1,
    +            /// Set the bit to 1 to cancel a pending transmission request.
    +            ABORT_TX: u1,
    +            /// Set the bit to 1 to release the RX buffer.
    +            RELEASE_BUF: u1,
    +            /// Set the bit to 1 to clear the data overrun status bit.
    +            CLR_OVERRUN: u1,
    +            /// Self reception request command. Set the bit to 1 to allow a message be
    +            /// transmitted and received simultaneously.
    +            SELF_RX_REQ: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x6002b008
    +        /// Status register
    +        pub const STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// 1: The data in the RX buffer is not empty, with at least one received data
    +            /// packet.
    +            RX_BUF_ST: u1,
    +            /// 1: The RX FIFO is full and data overrun has occurred.
    +            OVERRUN_ST: u1,
    +            /// 1: The TX buffer is empty, the CPU may write a message into it.
    +            TX_BUF_ST: u1,
    +            /// 1: The TWAI controller has successfully received a packet from the bus.
    +            TX_COMPLETE: u1,
    +            /// 1: The TWAI Controller is receiving a message from the bus.
    +            RX_ST: u1,
    +            /// 1: The TWAI Controller is transmitting a message to the bus.
    +            TX_ST: u1,
    +            /// 1: At least one of the RX/TX error counter has reached or exceeded the value set
    +            /// in register TWAI_ERR_WARNING_LIMIT_REG.
    +            ERR_ST: u1,
    +            /// 1: In bus-off status, the TWAI Controller is no longer involved in bus
    +            /// activities.
    +            BUS_OFF_ST: u1,
    +            /// This bit reflects whether the data packet in the RX FIFO is complete. 1: The
    +            /// current packet is missing; 0: The current packet is complete
    +            MISS_ST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x6002b00c
    +        /// Interrupt Register
    +        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Receive interrupt. If this bit is set to 1, it indicates there are messages to
    +            /// be handled in the RX FIFO.
    +            RX_INT_ST: u1,
    +            /// Transmit interrupt. If this bit is set to 1, it indicates the message
    +            /// transmitting mis- sion is finished and a new transmission is able to execute.
    +            TX_INT_ST: u1,
    +            /// Error warning interrupt. If this bit is set to 1, it indicates the error status
    +            /// signal and the bus-off status signal of Status register have changed (e.g.,
    +            /// switched from 0 to 1 or from 1 to 0).
    +            ERR_WARN_INT_ST: u1,
    +            /// Data overrun interrupt. If this bit is set to 1, it indicates a data overrun
    +            /// interrupt is generated in the RX FIFO.
    +            OVERRUN_INT_ST: u1,
    +            reserved0: u1,
    +            /// Error passive interrupt. If this bit is set to 1, it indicates the TWAI
    +            /// Controller is switched between error active status and error passive status due
    +            /// to the change of error counters.
    +            ERR_PASSIVE_INT_ST: u1,
    +            /// Arbitration lost interrupt. If this bit is set to 1, it indicates an arbitration
    +            /// lost interrupt is generated.
    +            ARB_LOST_INT_ST: u1,
    +            /// Error interrupt. If this bit is set to 1, it indicates an error is detected on
    +            /// the bus.
    +            BUS_ERR_INT_ST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x6002b010
    +        /// Interrupt Enable Register
    +        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set this bit to 1 to enable receive interrupt.
    +            RX_INT_ENA: u1,
    +            /// Set this bit to 1 to enable transmit interrupt.
    +            TX_INT_ENA: u1,
    +            /// Set this bit to 1 to enable error warning interrupt.
    +            ERR_WARN_INT_ENA: u1,
    +            /// Set this bit to 1 to enable data overrun interrupt.
    +            OVERRUN_INT_ENA: u1,
    +            reserved0: u1,
    +            /// Set this bit to 1 to enable error passive interrupt.
    +            ERR_PASSIVE_INT_ENA: u1,
    +            /// Set this bit to 1 to enable arbitration lost interrupt.
    +            ARB_LOST_INT_ENA: u1,
    +            /// Set this bit to 1 to enable error interrupt.
    +            BUS_ERR_INT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x10);
    +
    +        /// address: 0x6002b018
    +        /// Bus Timing Register 0
    +        pub const BUS_TIMING_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Baud Rate Prescaler, determines the frequency dividing ratio.
    +            BAUD_PRESC: u13,
    +            reserved0: u1,
    +            /// Synchronization Jump Width (SJW), 1 \verb+~+ 14 Tq wide.
    +            SYNC_JUMP_WIDTH: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x6002b01c
    +        /// Bus Timing Register 1
    +        pub const BUS_TIMING_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The width of PBS1.
    +            TIME_SEG1: u4,
    +            /// The width of PBS2.
    +            TIME_SEG2: u3,
    +            /// The number of sample points. 0: the bus is sampled once; 1: the bus is sampled
    +            /// three times
    +            TIME_SAMP: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x6002b02c
    +        /// Arbitration Lost Capture Register
    +        pub const ARB_LOST_CAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x2c);
    +
    +        /// address: 0x6002b030
    +        /// Error Code Capture Register
    +        pub const ERR_CODE_CAP = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register contains information about the location of errors, see Table 181
    +            /// for details.
    +            ECC_SEGMENT: u5,
    +            /// This register contains information about transmission direction of the node when
    +            /// error occurs. 1: Error occurs when receiving a message; 0: Error occurs when
    +            /// transmitting a message
    +            ECC_DIRECTION: u1,
    +            /// This register contains information about error types: 00: bit error; 01: form
    +            /// error; 10: stuff error; 11: other type of error
    +            ECC_TYPE: u2,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x30);
    +
    +        /// address: 0x6002b034
    +        /// Error Warning Limit Register
    +        pub const ERR_WARNING_LIMIT = @intToPtr(*volatile MmioInt(32, u8), base_address + 0x34);
    +
    +        /// address: 0x6002b038
    +        /// Receive Error Counter Register
    +        pub const RX_ERR_CNT = @intToPtr(*volatile MmioInt(32, u8), base_address + 0x38);
    +
    +        /// address: 0x6002b03c
    +        /// Transmit Error Counter Register
    +        pub const TX_ERR_CNT = @intToPtr(*volatile MmioInt(32, u8), base_address + 0x3c);
    +
    +        /// address: 0x6002b040
    +        /// Data register 0
    +        pub const DATA_0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// In reset mode, it is acceptance code register 0 with R/W Permission. In
    +            /// operation mode, it stores the 0th byte information of the data to be transmitted
    +            /// under operating mode.
    +            TX_BYTE_0: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x40);
    +
    +        /// address: 0x6002b044
    +        /// Data register 1
    +        pub const DATA_1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// In reset mode, it is acceptance code register 1 with R/W Permission. In
    +            /// operation mode, it stores the 1st byte information of the data to be transmitted
    +            /// under operating mode.
    +            TX_BYTE_1: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x44);
    +
    +        /// address: 0x6002b048
    +        /// Data register 2
    +        pub const DATA_2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// In reset mode, it is acceptance code register 2 with R/W Permission. In
    +            /// operation mode, it stores the 2nd byte information of the data to be transmitted
    +            /// under operating mode.
    +            TX_BYTE_2: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x48);
    +
    +        /// address: 0x6002b04c
    +        /// Data register 3
    +        pub const DATA_3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// In reset mode, it is acceptance code register 3 with R/W Permission. In
    +            /// operation mode, it stores the 3rd byte information of the data to be transmitted
    +            /// under operating mode.
    +            TX_BYTE_3: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x4c);
    +
    +        /// address: 0x6002b050
    +        /// Data register 4
    +        pub const DATA_4 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// In reset mode, it is acceptance mask register 0 with R/W Permission. In
    +            /// operation mode, it stores the 4th byte information of the data to be transmitted
    +            /// under operating mode.
    +            TX_BYTE_4: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x50);
    +
    +        /// address: 0x6002b054
    +        /// Data register 5
    +        pub const DATA_5 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// In reset mode, it is acceptance mask register 1 with R/W Permission. In
    +            /// operation mode, it stores the 5th byte information of the data to be transmitted
    +            /// under operating mode.
    +            TX_BYTE_5: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x54);
    +
    +        /// address: 0x6002b058
    +        /// Data register 6
    +        pub const DATA_6 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// In reset mode, it is acceptance mask register 2 with R/W Permission. In
    +            /// operation mode, it stores the 6th byte information of the data to be transmitted
    +            /// under operating mode.
    +            TX_BYTE_6: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x58);
    +
    +        /// address: 0x6002b05c
    +        /// Data register 7
    +        pub const DATA_7 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// In reset mode, it is acceptance mask register 3 with R/W Permission. In
    +            /// operation mode, it stores the 7th byte information of the data to be transmitted
    +            /// under operating mode.
    +            TX_BYTE_7: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x5c);
    +
    +        /// address: 0x6002b060
    +        /// Data register 8
    +        pub const DATA_8 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stored the 8th byte information of the data to be transmitted under operating
    +            /// mode.
    +            TX_BYTE_8: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x60);
    +
    +        /// address: 0x6002b064
    +        /// Data register 9
    +        pub const DATA_9 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stored the 9th byte information of the data to be transmitted under operating
    +            /// mode.
    +            TX_BYTE_9: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x64);
    +
    +        /// address: 0x6002b068
    +        /// Data register 10
    +        pub const DATA_10 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stored the 10th byte information of the data to be transmitted under operating
    +            /// mode.
    +            TX_BYTE_10: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x68);
    +
    +        /// address: 0x6002b06c
    +        /// Data register 11
    +        pub const DATA_11 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stored the 11th byte information of the data to be transmitted under operating
    +            /// mode.
    +            TX_BYTE_11: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x6c);
    +
    +        /// address: 0x6002b070
    +        /// Data register 12
    +        pub const DATA_12 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stored the 12th byte information of the data to be transmitted under operating
    +            /// mode.
    +            TX_BYTE_12: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x70);
    +
    +        /// address: 0x6002b074
    +        /// Receive Message Counter Register
    +        pub const RX_MESSAGE_CNT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register reflects the number of messages available within the RX FIFO.
    +            RX_MESSAGE_COUNTER: u7,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +        }), base_address + 0x74);
    +
    +        /// address: 0x6002b07c
    +        /// Clock Divider register
    +        pub const CLOCK_DIVIDER = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// These bits are used to configure frequency dividing coefficients of the external
    +            /// CLKOUT pin.
    +            CD: u8,
    +            /// This bit can be configured under reset mode. 1: Disable the external CLKOUT pin;
    +            /// 0: Enable the external CLKOUT pin
    +            CLOCK_OFF: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0x7c);
    +    };
    +
    +    /// UART (Universal Asynchronous Receiver-Transmitter) Controller
    +    pub const UART0 = struct {
    +        pub const base_address = 0x60000000;
    +
    +        /// address: 0x60000000
    +        /// FIFO data register
    +        pub const FIFO = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// UART 0 accesses FIFO via this register.
    +            RXFIFO_RD_BYTE: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x0);
    +
    +        /// address: 0x60000004
    +        /// Raw interrupt status
    +        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This interrupt raw bit turns to high level when receiver receives more data than
    +            /// what rxfifo_full_thrhd specifies.
    +            RXFIFO_FULL_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when the amount of data in Tx-FIFO is
    +            /// less than what txfifo_empty_thrhd specifies .
    +            TXFIFO_EMPTY_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver detects a parity error
    +            /// in the data.
    +            PARITY_ERR_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver detects a data frame
    +            /// error .
    +            FRM_ERR_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver receives more data than
    +            /// the FIFO can store.
    +            RXFIFO_OVF_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver detects the edge change
    +            /// of DSRn signal.
    +            DSR_CHG_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver detects the edge change
    +            /// of CTSn signal.
    +            CTS_CHG_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver detects a 0 after the
    +            /// stop bit.
    +            BRK_DET_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver takes more time than
    +            /// rx_tout_thrhd to receive a byte.
    +            RXFIFO_TOUT_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver recevies Xon char when
    +            /// uart_sw_flow_con_en is set to 1.
    +            SW_XON_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver receives Xoff char when
    +            /// uart_sw_flow_con_en is set to 1.
    +            SW_XOFF_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver detects a glitch in the
    +            /// middle of a start bit.
    +            GLITCH_DET_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when transmitter completes sending
    +            /// NULL characters, after all data in Tx-FIFO are sent.
    +            TX_BRK_DONE_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when transmitter has kept the
    +            /// shortest duration after sending the last data.
    +            TX_BRK_IDLE_DONE_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when transmitter has send out all
    +            /// data in FIFO.
    +            TX_DONE_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver detects a parity error
    +            /// from the echo of transmitter in rs485 mode.
    +            RS485_PARITY_ERR_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver detects a data frame
    +            /// error from the echo of transmitter in rs485 mode.
    +            RS485_FRM_ERR_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when detects a clash between
    +            /// transmitter and receiver in rs485 mode.
    +            RS485_CLASH_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver detects the configured
    +            /// at_cmd char.
    +            AT_CMD_CHAR_DET_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when input rxd edge changes more
    +            /// times than what reg_active_threshold specifies in light sleeping mode.
    +            WAKEUP_INT_RAW: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x60000008
    +        /// Masked interrupt status
    +        pub const INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This is the status bit for rxfifo_full_int_raw when rxfifo_full_int_ena is set
    +            /// to 1.
    +            RXFIFO_FULL_INT_ST: u1,
    +            /// This is the status bit for txfifo_empty_int_raw when txfifo_empty_int_ena is set
    +            /// to 1.
    +            TXFIFO_EMPTY_INT_ST: u1,
    +            /// This is the status bit for parity_err_int_raw when parity_err_int_ena is set to
    +            /// 1.
    +            PARITY_ERR_INT_ST: u1,
    +            /// This is the status bit for frm_err_int_raw when frm_err_int_ena is set to 1.
    +            FRM_ERR_INT_ST: u1,
    +            /// This is the status bit for rxfifo_ovf_int_raw when rxfifo_ovf_int_ena is set to
    +            /// 1.
    +            RXFIFO_OVF_INT_ST: u1,
    +            /// This is the status bit for dsr_chg_int_raw when dsr_chg_int_ena is set to 1.
    +            DSR_CHG_INT_ST: u1,
    +            /// This is the status bit for cts_chg_int_raw when cts_chg_int_ena is set to 1.
    +            CTS_CHG_INT_ST: u1,
    +            /// This is the status bit for brk_det_int_raw when brk_det_int_ena is set to 1.
    +            BRK_DET_INT_ST: u1,
    +            /// This is the status bit for rxfifo_tout_int_raw when rxfifo_tout_int_ena is set
    +            /// to 1.
    +            RXFIFO_TOUT_INT_ST: u1,
    +            /// This is the status bit for sw_xon_int_raw when sw_xon_int_ena is set to 1.
    +            SW_XON_INT_ST: u1,
    +            /// This is the status bit for sw_xoff_int_raw when sw_xoff_int_ena is set to 1.
    +            SW_XOFF_INT_ST: u1,
    +            /// This is the status bit for glitch_det_int_raw when glitch_det_int_ena is set to
    +            /// 1.
    +            GLITCH_DET_INT_ST: u1,
    +            /// This is the status bit for tx_brk_done_int_raw when tx_brk_done_int_ena is set
    +            /// to 1.
    +            TX_BRK_DONE_INT_ST: u1,
    +            /// This is the stauts bit for tx_brk_idle_done_int_raw when
    +            /// tx_brk_idle_done_int_ena is set to 1.
    +            TX_BRK_IDLE_DONE_INT_ST: u1,
    +            /// This is the status bit for tx_done_int_raw when tx_done_int_ena is set to 1.
    +            TX_DONE_INT_ST: u1,
    +            /// This is the status bit for rs485_parity_err_int_raw when rs485_parity_int_ena is
    +            /// set to 1.
    +            RS485_PARITY_ERR_INT_ST: u1,
    +            /// This is the status bit for rs485_frm_err_int_raw when rs485_fm_err_int_ena is
    +            /// set to 1.
    +            RS485_FRM_ERR_INT_ST: u1,
    +            /// This is the status bit for rs485_clash_int_raw when rs485_clash_int_ena is set
    +            /// to 1.
    +            RS485_CLASH_INT_ST: u1,
    +            /// This is the status bit for at_cmd_det_int_raw when at_cmd_char_det_int_ena is
    +            /// set to 1.
    +            AT_CMD_CHAR_DET_INT_ST: u1,
    +            /// This is the status bit for uart_wakeup_int_raw when uart_wakeup_int_ena is set
    +            /// to 1.
    +            WAKEUP_INT_ST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x6000000c
    +        /// Interrupt enable bits
    +        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This is the enable bit for rxfifo_full_int_st register.
    +            RXFIFO_FULL_INT_ENA: u1,
    +            /// This is the enable bit for txfifo_empty_int_st register.
    +            TXFIFO_EMPTY_INT_ENA: u1,
    +            /// This is the enable bit for parity_err_int_st register.
    +            PARITY_ERR_INT_ENA: u1,
    +            /// This is the enable bit for frm_err_int_st register.
    +            FRM_ERR_INT_ENA: u1,
    +            /// This is the enable bit for rxfifo_ovf_int_st register.
    +            RXFIFO_OVF_INT_ENA: u1,
    +            /// This is the enable bit for dsr_chg_int_st register.
    +            DSR_CHG_INT_ENA: u1,
    +            /// This is the enable bit for cts_chg_int_st register.
    +            CTS_CHG_INT_ENA: u1,
    +            /// This is the enable bit for brk_det_int_st register.
    +            BRK_DET_INT_ENA: u1,
    +            /// This is the enable bit for rxfifo_tout_int_st register.
    +            RXFIFO_TOUT_INT_ENA: u1,
    +            /// This is the enable bit for sw_xon_int_st register.
    +            SW_XON_INT_ENA: u1,
    +            /// This is the enable bit for sw_xoff_int_st register.
    +            SW_XOFF_INT_ENA: u1,
    +            /// This is the enable bit for glitch_det_int_st register.
    +            GLITCH_DET_INT_ENA: u1,
    +            /// This is the enable bit for tx_brk_done_int_st register.
    +            TX_BRK_DONE_INT_ENA: u1,
    +            /// This is the enable bit for tx_brk_idle_done_int_st register.
    +            TX_BRK_IDLE_DONE_INT_ENA: u1,
    +            /// This is the enable bit for tx_done_int_st register.
    +            TX_DONE_INT_ENA: u1,
    +            /// This is the enable bit for rs485_parity_err_int_st register.
    +            RS485_PARITY_ERR_INT_ENA: u1,
    +            /// This is the enable bit for rs485_parity_err_int_st register.
    +            RS485_FRM_ERR_INT_ENA: u1,
    +            /// This is the enable bit for rs485_clash_int_st register.
    +            RS485_CLASH_INT_ENA: u1,
    +            /// This is the enable bit for at_cmd_char_det_int_st register.
    +            AT_CMD_CHAR_DET_INT_ENA: u1,
    +            /// This is the enable bit for uart_wakeup_int_st register.
    +            WAKEUP_INT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x60000010
    +        /// Interrupt clear bits
    +        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set this bit to clear the rxfifo_full_int_raw interrupt.
    +            RXFIFO_FULL_INT_CLR: u1,
    +            /// Set this bit to clear txfifo_empty_int_raw interrupt.
    +            TXFIFO_EMPTY_INT_CLR: u1,
    +            /// Set this bit to clear parity_err_int_raw interrupt.
    +            PARITY_ERR_INT_CLR: u1,
    +            /// Set this bit to clear frm_err_int_raw interrupt.
    +            FRM_ERR_INT_CLR: u1,
    +            /// Set this bit to clear rxfifo_ovf_int_raw interrupt.
    +            RXFIFO_OVF_INT_CLR: u1,
    +            /// Set this bit to clear the dsr_chg_int_raw interrupt.
    +            DSR_CHG_INT_CLR: u1,
    +            /// Set this bit to clear the cts_chg_int_raw interrupt.
    +            CTS_CHG_INT_CLR: u1,
    +            /// Set this bit to clear the brk_det_int_raw interrupt.
    +            BRK_DET_INT_CLR: u1,
    +            /// Set this bit to clear the rxfifo_tout_int_raw interrupt.
    +            RXFIFO_TOUT_INT_CLR: u1,
    +            /// Set this bit to clear the sw_xon_int_raw interrupt.
    +            SW_XON_INT_CLR: u1,
    +            /// Set this bit to clear the sw_xoff_int_raw interrupt.
    +            SW_XOFF_INT_CLR: u1,
    +            /// Set this bit to clear the glitch_det_int_raw interrupt.
    +            GLITCH_DET_INT_CLR: u1,
    +            /// Set this bit to clear the tx_brk_done_int_raw interrupt..
    +            TX_BRK_DONE_INT_CLR: u1,
    +            /// Set this bit to clear the tx_brk_idle_done_int_raw interrupt.
    +            TX_BRK_IDLE_DONE_INT_CLR: u1,
    +            /// Set this bit to clear the tx_done_int_raw interrupt.
    +            TX_DONE_INT_CLR: u1,
    +            /// Set this bit to clear the rs485_parity_err_int_raw interrupt.
    +            RS485_PARITY_ERR_INT_CLR: u1,
    +            /// Set this bit to clear the rs485_frm_err_int_raw interrupt.
    +            RS485_FRM_ERR_INT_CLR: u1,
    +            /// Set this bit to clear the rs485_clash_int_raw interrupt.
    +            RS485_CLASH_INT_CLR: u1,
    +            /// Set this bit to clear the at_cmd_char_det_int_raw interrupt.
    +            AT_CMD_CHAR_DET_INT_CLR: u1,
    +            /// Set this bit to clear the uart_wakeup_int_raw interrupt.
    +            WAKEUP_INT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x10);
    +
    +        /// address: 0x60000014
    +        /// Clock divider configuration
    +        pub const CLKDIV = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The integral part of the frequency divider factor.
    +            CLKDIV: u12,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            /// The decimal part of the frequency divider factor.
    +            FRAG: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +        }), base_address + 0x14);
    +
    +        /// address: 0x60000018
    +        /// Rx Filter configuration
    +        pub const RX_FILT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// when input pulse width is lower than this value, the pulse is ignored.
    +            GLITCH_FILT: u8,
    +            /// Set this bit to enable Rx signal filter.
    +            GLITCH_FILT_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x6000001c
    +        /// UART status register
    +        pub const STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the byte number of valid data in Rx-FIFO.
    +            RXFIFO_CNT: u10,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            /// The register represent the level value of the internal uart dsr signal.
    +            DSRN: u1,
    +            /// This register represent the level value of the internal uart cts signal.
    +            CTSN: u1,
    +            /// This register represent the level value of the internal uart rxd signal.
    +            RXD: u1,
    +            /// Stores the byte number of data in Tx-FIFO.
    +            TXFIFO_CNT: u10,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            /// This bit represents the level of the internal uart dtr signal.
    +            DTRN: u1,
    +            /// This bit represents the level of the internal uart rts signal.
    +            RTSN: u1,
    +            /// This bit represents the level of the internal uart txd signal.
    +            TXD: u1,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x60000020
    +        /// a
    +        pub const CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register is used to configure the parity check mode.
    +            PARITY: u1,
    +            /// Set this bit to enable uart parity check.
    +            PARITY_EN: u1,
    +            /// This register is used to set the length of data.
    +            BIT_NUM: u2,
    +            /// This register is used to set the length of stop bit.
    +            STOP_BIT_NUM: u2,
    +            /// This register is used to configure the software rts signal which is used in
    +            /// software flow control.
    +            SW_RTS: u1,
    +            /// This register is used to configure the software dtr signal which is used in
    +            /// software flow control.
    +            SW_DTR: u1,
    +            /// Set this bit to enbale transmitter to send NULL when the process of sending data
    +            /// is done.
    +            TXD_BRK: u1,
    +            /// Set this bit to enable IrDA loopback mode.
    +            IRDA_DPLX: u1,
    +            /// This is the start enable bit for IrDA transmitter.
    +            IRDA_TX_EN: u1,
    +            /// 1'h1: The IrDA transmitter's 11th bit is the same as 10th bit. 1'h0: Set IrDA
    +            /// transmitter's 11th bit to 0.
    +            IRDA_WCTL: u1,
    +            /// Set this bit to invert the level of IrDA transmitter.
    +            IRDA_TX_INV: u1,
    +            /// Set this bit to invert the level of IrDA receiver.
    +            IRDA_RX_INV: u1,
    +            /// Set this bit to enable uart loopback test mode.
    +            LOOPBACK: u1,
    +            /// Set this bit to enable flow control function for transmitter.
    +            TX_FLOW_EN: u1,
    +            /// Set this bit to enable IrDA protocol.
    +            IRDA_EN: u1,
    +            /// Set this bit to reset the uart receive-FIFO.
    +            RXFIFO_RST: u1,
    +            /// Set this bit to reset the uart transmit-FIFO.
    +            TXFIFO_RST: u1,
    +            /// Set this bit to inverse the level value of uart rxd signal.
    +            RXD_INV: u1,
    +            /// Set this bit to inverse the level value of uart cts signal.
    +            CTS_INV: u1,
    +            /// Set this bit to inverse the level value of uart dsr signal.
    +            DSR_INV: u1,
    +            /// Set this bit to inverse the level value of uart txd signal.
    +            TXD_INV: u1,
    +            /// Set this bit to inverse the level value of uart rts signal.
    +            RTS_INV: u1,
    +            /// Set this bit to inverse the level value of uart dtr signal.
    +            DTR_INV: u1,
    +            /// 1'h1: Force clock on for register. 1'h0: Support clock only when application
    +            /// writes registers.
    +            CLK_EN: u1,
    +            /// 1'h1: Receiver stops storing data into FIFO when data is wrong. 1'h0: Receiver
    +            /// stores the data even if the received data is wrong.
    +            ERR_WR_MASK: u1,
    +            /// This is the enable bit for detecting baudrate.
    +            AUTOBAUD_EN: u1,
    +            /// UART memory clock gate enable signal.
    +            MEM_CLK_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +        }), base_address + 0x20);
    +
    +        /// address: 0x60000024
    +        /// Configuration register 1
    +        pub const CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// It will produce rxfifo_full_int interrupt when receiver receives more data than
    +            /// this register value.
    +            RXFIFO_FULL_THRHD: u9,
    +            /// It will produce txfifo_empty_int interrupt when the data amount in Tx-FIFO is
    +            /// less than this register value.
    +            TXFIFO_EMPTY_THRHD: u9,
    +            /// Disable UART Rx data overflow detect.
    +            DIS_RX_DAT_OVF: u1,
    +            /// Set this bit to stop accumulating idle_cnt when hardware flow control works.
    +            RX_TOUT_FLOW_DIS: u1,
    +            /// This is the flow enable bit for UART receiver.
    +            RX_FLOW_EN: u1,
    +            /// This is the enble bit for uart receiver's timeout function.
    +            RX_TOUT_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +        }), base_address + 0x24);
    +
    +        /// address: 0x60000028
    +        /// Autobaud minimum low pulse duration register
    +        pub const LOWPULSE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the value of the minimum duration time of the low level
    +            /// pulse. It is used in baud rate-detect process.
    +            MIN_CNT: u12,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0x28);
    +
    +        /// address: 0x6000002c
    +        /// Autobaud minimum high pulse duration register
    +        pub const HIGHPULSE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the value of the maxinum duration time for the high level
    +            /// pulse. It is used in baud rate-detect process.
    +            MIN_CNT: u12,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0x2c);
    +
    +        /// address: 0x60000030
    +        /// Autobaud edge change count register
    +        pub const RXD_CNT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the count of rxd edge change. It is used in baud
    +            /// rate-detect process.
    +            RXD_EDGE_CNT: u10,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +        }), base_address + 0x30);
    +
    +        /// address: 0x60000034
    +        /// Software flow-control configuration
    +        pub const FLOW_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set this bit to enable software flow control. It is used with register sw_xon or
    +            /// sw_xoff.
    +            SW_FLOW_CON_EN: u1,
    +            /// Set this bit to remove flow control char from the received data.
    +            XONOFF_DEL: u1,
    +            /// Set this bit to enable the transmitter to go on sending data.
    +            FORCE_XON: u1,
    +            /// Set this bit to stop the transmitter from sending data.
    +            FORCE_XOFF: u1,
    +            /// Set this bit to send Xon char. It is cleared by hardware automatically.
    +            SEND_XON: u1,
    +            /// Set this bit to send Xoff char. It is cleared by hardware automatically.
    +            SEND_XOFF: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +        }), base_address + 0x34);
    +
    +        /// address: 0x60000038
    +        /// Sleep-mode configuration
    +        pub const SLEEP_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The uart is activated from light sleeping mode when the input rxd edge changes
    +            /// more times than this register value.
    +            ACTIVE_THRESHOLD: u10,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +        }), base_address + 0x38);
    +
    +        /// address: 0x6000003c
    +        /// Software flow-control character configuration
    +        pub const SWFC_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// When the data amount in Rx-FIFO is more than this register value with
    +            /// uart_sw_flow_con_en set to 1, it will send a Xoff char.
    +            XOFF_THRESHOLD: u9,
    +            /// This register stores the Xoff flow control char.
    +            XOFF_CHAR: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +        }), base_address + 0x3c);
    +
    +        /// address: 0x60000040
    +        /// Software flow-control character configuration
    +        pub const SWFC_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// When the data amount in Rx-FIFO is less than this register value with
    +            /// uart_sw_flow_con_en set to 1, it will send a Xon char.
    +            XON_THRESHOLD: u9,
    +            /// This register stores the Xon flow control char.
    +            XON_CHAR: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +        }), base_address + 0x40);
    +
    +        /// address: 0x60000044
    +        /// Tx Break character configuration
    +        pub const TXBRK_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register is used to configure the number of 0 to be sent after the process
    +            /// of sending data is done. It is active when txd_brk is set to 1.
    +            TX_BRK_NUM: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x44);
    +
    +        /// address: 0x60000048
    +        /// Frame-end idle configuration
    +        pub const IDLE_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// It will produce frame end signal when receiver takes more time to receive one
    +            /// byte data than this register value.
    +            RX_IDLE_THRHD: u10,
    +            /// This register is used to configure the duration time between transfers.
    +            TX_IDLE_NUM: u10,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x48);
    +
    +        /// address: 0x6000004c
    +        /// RS485 mode configuration
    +        pub const RS485_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set this bit to choose the rs485 mode.
    +            RS485_EN: u1,
    +            /// Set this bit to delay the stop bit by 1 bit.
    +            DL0_EN: u1,
    +            /// Set this bit to delay the stop bit by 1 bit.
    +            DL1_EN: u1,
    +            /// Set this bit to enable receiver could receive data when the transmitter is
    +            /// transmitting data in rs485 mode.
    +            RS485TX_RX_EN: u1,
    +            /// 1'h1: enable rs485 transmitter to send data when rs485 receiver line is busy.
    +            RS485RXBY_TX_EN: u1,
    +            /// This register is used to delay the receiver's internal data signal.
    +            RS485_RX_DLY_NUM: u1,
    +            /// This register is used to delay the transmitter's internal data signal.
    +            RS485_TX_DLY_NUM: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +        }), base_address + 0x4c);
    +
    +        /// address: 0x60000050
    +        /// Pre-sequence timing configuration
    +        pub const AT_CMD_PRECNT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register is used to configure the idle duration time before the first
    +            /// at_cmd is received by receiver.
    +            PRE_IDLE_NUM: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x50);
    +
    +        /// address: 0x60000054
    +        /// Post-sequence timing configuration
    +        pub const AT_CMD_POSTCNT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register is used to configure the duration time between the last at_cmd and
    +            /// the next data.
    +            POST_IDLE_NUM: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x54);
    +
    +        /// address: 0x60000058
    +        /// Timeout configuration
    +        pub const AT_CMD_GAPTOUT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register is used to configure the duration time between the at_cmd chars.
    +            RX_GAP_TOUT: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x58);
    +
    +        /// address: 0x6000005c
    +        /// AT escape sequence detection configuration
    +        pub const AT_CMD_CHAR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register is used to configure the content of at_cmd char.
    +            AT_CMD_CHAR: u8,
    +            /// This register is used to configure the num of continuous at_cmd chars received
    +            /// by receiver.
    +            CHAR_NUM: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x5c);
    +
    +        /// address: 0x60000060
    +        /// UART threshold and allocation configuration
    +        pub const MEM_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            /// This register is used to configure the amount of mem allocated for receive-FIFO.
    +            /// The default number is 128 bytes.
    +            RX_SIZE: u3,
    +            /// This register is used to configure the amount of mem allocated for
    +            /// transmit-FIFO. The default number is 128 bytes.
    +            TX_SIZE: u3,
    +            /// This register is used to configure the maximum amount of data that can be
    +            /// received when hardware flow control works.
    +            RX_FLOW_THRHD: u9,
    +            /// This register is used to configure the threshold time that receiver takes to
    +            /// receive one byte. The rxfifo_tout_int interrupt will be trigger when the
    +            /// receiver takes more time to receive one byte with rx_tout_en set to 1.
    +            RX_TOUT_THRHD: u10,
    +            /// Set this bit to force power down UART memory.
    +            MEM_FORCE_PD: u1,
    +            /// Set this bit to force power up UART memory.
    +            MEM_FORCE_PU: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +        }), base_address + 0x60);
    +
    +        /// address: 0x60000064
    +        /// Tx-FIFO write and read offset address.
    +        pub const MEM_TX_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the offset address in Tx-FIFO when software writes Tx-FIFO
    +            /// via APB.
    +            APB_TX_WADDR: u10,
    +            reserved0: u1,
    +            /// This register stores the offset address in Tx-FIFO when Tx-FSM reads data via
    +            /// Tx-FIFO_Ctrl.
    +            TX_RADDR: u10,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +        }), base_address + 0x64);
    +
    +        /// address: 0x60000068
    +        /// Rx-FIFO write and read offset address.
    +        pub const MEM_RX_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the offset address in RX-FIFO when software reads data from
    +            /// Rx-FIFO via APB. UART0 is 10'h100. UART1 is 10'h180.
    +            APB_RX_RADDR: u10,
    +            reserved0: u1,
    +            /// This register stores the offset address in Rx-FIFO when Rx-FIFO_Ctrl writes
    +            /// Rx-FIFO. UART0 is 10'h100. UART1 is 10'h180.
    +            RX_WADDR: u10,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +        }), base_address + 0x68);
    +
    +        /// address: 0x6000006c
    +        /// UART transmit and receive status.
    +        pub const FSM_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This is the status register of receiver.
    +            ST_URX_OUT: u4,
    +            /// This is the status register of transmitter.
    +            ST_UTX_OUT: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x6c);
    +
    +        /// address: 0x60000070
    +        /// Autobaud high pulse register
    +        pub const POSPULSE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the minimal input clock count between two positive edges.
    +            /// It is used in boudrate-detect process.
    +            POSEDGE_MIN_CNT: u12,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0x70);
    +
    +        /// address: 0x60000074
    +        /// Autobaud low pulse register
    +        pub const NEGPULSE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the minimal input clock count between two negative edges.
    +            /// It is used in boudrate-detect process.
    +            NEGEDGE_MIN_CNT: u12,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0x74);
    +
    +        /// address: 0x60000078
    +        /// UART core clock configuration
    +        pub const CLK_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The denominator of the frequency divider factor.
    +            SCLK_DIV_B: u6,
    +            /// The numerator of the frequency divider factor.
    +            SCLK_DIV_A: u6,
    +            /// The integral part of the frequency divider factor.
    +            SCLK_DIV_NUM: u8,
    +            /// UART clock source select. 1: 80Mhz, 2: 8Mhz, 3: XTAL.
    +            SCLK_SEL: u2,
    +            /// Set this bit to enable UART Tx/Rx clock.
    +            SCLK_EN: u1,
    +            /// Write 1 then write 0 to this bit, reset UART Tx/Rx.
    +            RST_CORE: u1,
    +            /// Set this bit to enable UART Tx clock.
    +            TX_SCLK_EN: u1,
    +            /// Set this bit to enable UART Rx clock.
    +            RX_SCLK_EN: u1,
    +            /// Write 1 then write 0 to this bit, reset UART Tx.
    +            TX_RST_CORE: u1,
    +            /// Write 1 then write 0 to this bit, reset UART Rx.
    +            RX_RST_CORE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +        }), base_address + 0x78);
    +
    +        /// address: 0x6000007c
    +        /// UART Version register
    +        pub const DATE = @intToPtr(*volatile u32, base_address + 0x7c);
    +
    +        /// address: 0x60000080
    +        /// UART ID register
    +        pub const ID = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register is used to configure the uart_id.
    +            ID: u30,
    +            /// This bit used to select synchronize mode. 1: Registers are auto synchronized
    +            /// into UART Core clock and UART core should be keep the same with APB clock. 0:
    +            /// After configure registers, software needs to write 1 to UART_REG_UPDATE to
    +            /// synchronize registers.
    +            HIGH_SPEED: u1,
    +            /// Software write 1 would synchronize registers into UART Core clock domain and
    +            /// would be cleared by hardware after synchronization is done.
    +            REG_UPDATE: u1,
    +        }), base_address + 0x80);
    +    };
    +
    +    /// UART (Universal Asynchronous Receiver-Transmitter) Controller
    +    pub const UART1 = struct {
    +        pub const base_address = 0x60010000;
    +
    +        /// address: 0x60010000
    +        /// FIFO data register
    +        pub const FIFO = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// UART 0 accesses FIFO via this register.
    +            RXFIFO_RD_BYTE: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x0);
    +
    +        /// address: 0x60010004
    +        /// Raw interrupt status
    +        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This interrupt raw bit turns to high level when receiver receives more data than
    +            /// what rxfifo_full_thrhd specifies.
    +            RXFIFO_FULL_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when the amount of data in Tx-FIFO is
    +            /// less than what txfifo_empty_thrhd specifies .
    +            TXFIFO_EMPTY_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver detects a parity error
    +            /// in the data.
    +            PARITY_ERR_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver detects a data frame
    +            /// error .
    +            FRM_ERR_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver receives more data than
    +            /// the FIFO can store.
    +            RXFIFO_OVF_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver detects the edge change
    +            /// of DSRn signal.
    +            DSR_CHG_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver detects the edge change
    +            /// of CTSn signal.
    +            CTS_CHG_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver detects a 0 after the
    +            /// stop bit.
    +            BRK_DET_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver takes more time than
    +            /// rx_tout_thrhd to receive a byte.
    +            RXFIFO_TOUT_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver recevies Xon char when
    +            /// uart_sw_flow_con_en is set to 1.
    +            SW_XON_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver receives Xoff char when
    +            /// uart_sw_flow_con_en is set to 1.
    +            SW_XOFF_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver detects a glitch in the
    +            /// middle of a start bit.
    +            GLITCH_DET_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when transmitter completes sending
    +            /// NULL characters, after all data in Tx-FIFO are sent.
    +            TX_BRK_DONE_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when transmitter has kept the
    +            /// shortest duration after sending the last data.
    +            TX_BRK_IDLE_DONE_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when transmitter has send out all
    +            /// data in FIFO.
    +            TX_DONE_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver detects a parity error
    +            /// from the echo of transmitter in rs485 mode.
    +            RS485_PARITY_ERR_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver detects a data frame
    +            /// error from the echo of transmitter in rs485 mode.
    +            RS485_FRM_ERR_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when detects a clash between
    +            /// transmitter and receiver in rs485 mode.
    +            RS485_CLASH_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when receiver detects the configured
    +            /// at_cmd char.
    +            AT_CMD_CHAR_DET_INT_RAW: u1,
    +            /// This interrupt raw bit turns to high level when input rxd edge changes more
    +            /// times than what reg_active_threshold specifies in light sleeping mode.
    +            WAKEUP_INT_RAW: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x60010008
    +        /// Masked interrupt status
    +        pub const INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This is the status bit for rxfifo_full_int_raw when rxfifo_full_int_ena is set
    +            /// to 1.
    +            RXFIFO_FULL_INT_ST: u1,
    +            /// This is the status bit for txfifo_empty_int_raw when txfifo_empty_int_ena is set
    +            /// to 1.
    +            TXFIFO_EMPTY_INT_ST: u1,
    +            /// This is the status bit for parity_err_int_raw when parity_err_int_ena is set to
    +            /// 1.
    +            PARITY_ERR_INT_ST: u1,
    +            /// This is the status bit for frm_err_int_raw when frm_err_int_ena is set to 1.
    +            FRM_ERR_INT_ST: u1,
    +            /// This is the status bit for rxfifo_ovf_int_raw when rxfifo_ovf_int_ena is set to
    +            /// 1.
    +            RXFIFO_OVF_INT_ST: u1,
    +            /// This is the status bit for dsr_chg_int_raw when dsr_chg_int_ena is set to 1.
    +            DSR_CHG_INT_ST: u1,
    +            /// This is the status bit for cts_chg_int_raw when cts_chg_int_ena is set to 1.
    +            CTS_CHG_INT_ST: u1,
    +            /// This is the status bit for brk_det_int_raw when brk_det_int_ena is set to 1.
    +            BRK_DET_INT_ST: u1,
    +            /// This is the status bit for rxfifo_tout_int_raw when rxfifo_tout_int_ena is set
    +            /// to 1.
    +            RXFIFO_TOUT_INT_ST: u1,
    +            /// This is the status bit for sw_xon_int_raw when sw_xon_int_ena is set to 1.
    +            SW_XON_INT_ST: u1,
    +            /// This is the status bit for sw_xoff_int_raw when sw_xoff_int_ena is set to 1.
    +            SW_XOFF_INT_ST: u1,
    +            /// This is the status bit for glitch_det_int_raw when glitch_det_int_ena is set to
    +            /// 1.
    +            GLITCH_DET_INT_ST: u1,
    +            /// This is the status bit for tx_brk_done_int_raw when tx_brk_done_int_ena is set
    +            /// to 1.
    +            TX_BRK_DONE_INT_ST: u1,
    +            /// This is the stauts bit for tx_brk_idle_done_int_raw when
    +            /// tx_brk_idle_done_int_ena is set to 1.
    +            TX_BRK_IDLE_DONE_INT_ST: u1,
    +            /// This is the status bit for tx_done_int_raw when tx_done_int_ena is set to 1.
    +            TX_DONE_INT_ST: u1,
    +            /// This is the status bit for rs485_parity_err_int_raw when rs485_parity_int_ena is
    +            /// set to 1.
    +            RS485_PARITY_ERR_INT_ST: u1,
    +            /// This is the status bit for rs485_frm_err_int_raw when rs485_fm_err_int_ena is
    +            /// set to 1.
    +            RS485_FRM_ERR_INT_ST: u1,
    +            /// This is the status bit for rs485_clash_int_raw when rs485_clash_int_ena is set
    +            /// to 1.
    +            RS485_CLASH_INT_ST: u1,
    +            /// This is the status bit for at_cmd_det_int_raw when at_cmd_char_det_int_ena is
    +            /// set to 1.
    +            AT_CMD_CHAR_DET_INT_ST: u1,
    +            /// This is the status bit for uart_wakeup_int_raw when uart_wakeup_int_ena is set
    +            /// to 1.
    +            WAKEUP_INT_ST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x6001000c
    +        /// Interrupt enable bits
    +        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This is the enable bit for rxfifo_full_int_st register.
    +            RXFIFO_FULL_INT_ENA: u1,
    +            /// This is the enable bit for txfifo_empty_int_st register.
    +            TXFIFO_EMPTY_INT_ENA: u1,
    +            /// This is the enable bit for parity_err_int_st register.
    +            PARITY_ERR_INT_ENA: u1,
    +            /// This is the enable bit for frm_err_int_st register.
    +            FRM_ERR_INT_ENA: u1,
    +            /// This is the enable bit for rxfifo_ovf_int_st register.
    +            RXFIFO_OVF_INT_ENA: u1,
    +            /// This is the enable bit for dsr_chg_int_st register.
    +            DSR_CHG_INT_ENA: u1,
    +            /// This is the enable bit for cts_chg_int_st register.
    +            CTS_CHG_INT_ENA: u1,
    +            /// This is the enable bit for brk_det_int_st register.
    +            BRK_DET_INT_ENA: u1,
    +            /// This is the enable bit for rxfifo_tout_int_st register.
    +            RXFIFO_TOUT_INT_ENA: u1,
    +            /// This is the enable bit for sw_xon_int_st register.
    +            SW_XON_INT_ENA: u1,
    +            /// This is the enable bit for sw_xoff_int_st register.
    +            SW_XOFF_INT_ENA: u1,
    +            /// This is the enable bit for glitch_det_int_st register.
    +            GLITCH_DET_INT_ENA: u1,
    +            /// This is the enable bit for tx_brk_done_int_st register.
    +            TX_BRK_DONE_INT_ENA: u1,
    +            /// This is the enable bit for tx_brk_idle_done_int_st register.
    +            TX_BRK_IDLE_DONE_INT_ENA: u1,
    +            /// This is the enable bit for tx_done_int_st register.
    +            TX_DONE_INT_ENA: u1,
    +            /// This is the enable bit for rs485_parity_err_int_st register.
    +            RS485_PARITY_ERR_INT_ENA: u1,
    +            /// This is the enable bit for rs485_parity_err_int_st register.
    +            RS485_FRM_ERR_INT_ENA: u1,
    +            /// This is the enable bit for rs485_clash_int_st register.
    +            RS485_CLASH_INT_ENA: u1,
    +            /// This is the enable bit for at_cmd_char_det_int_st register.
    +            AT_CMD_CHAR_DET_INT_ENA: u1,
    +            /// This is the enable bit for uart_wakeup_int_st register.
    +            WAKEUP_INT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x60010010
    +        /// Interrupt clear bits
    +        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set this bit to clear the rxfifo_full_int_raw interrupt.
    +            RXFIFO_FULL_INT_CLR: u1,
    +            /// Set this bit to clear txfifo_empty_int_raw interrupt.
    +            TXFIFO_EMPTY_INT_CLR: u1,
    +            /// Set this bit to clear parity_err_int_raw interrupt.
    +            PARITY_ERR_INT_CLR: u1,
    +            /// Set this bit to clear frm_err_int_raw interrupt.
    +            FRM_ERR_INT_CLR: u1,
    +            /// Set this bit to clear rxfifo_ovf_int_raw interrupt.
    +            RXFIFO_OVF_INT_CLR: u1,
    +            /// Set this bit to clear the dsr_chg_int_raw interrupt.
    +            DSR_CHG_INT_CLR: u1,
    +            /// Set this bit to clear the cts_chg_int_raw interrupt.
    +            CTS_CHG_INT_CLR: u1,
    +            /// Set this bit to clear the brk_det_int_raw interrupt.
    +            BRK_DET_INT_CLR: u1,
    +            /// Set this bit to clear the rxfifo_tout_int_raw interrupt.
    +            RXFIFO_TOUT_INT_CLR: u1,
    +            /// Set this bit to clear the sw_xon_int_raw interrupt.
    +            SW_XON_INT_CLR: u1,
    +            /// Set this bit to clear the sw_xoff_int_raw interrupt.
    +            SW_XOFF_INT_CLR: u1,
    +            /// Set this bit to clear the glitch_det_int_raw interrupt.
    +            GLITCH_DET_INT_CLR: u1,
    +            /// Set this bit to clear the tx_brk_done_int_raw interrupt..
    +            TX_BRK_DONE_INT_CLR: u1,
    +            /// Set this bit to clear the tx_brk_idle_done_int_raw interrupt.
    +            TX_BRK_IDLE_DONE_INT_CLR: u1,
    +            /// Set this bit to clear the tx_done_int_raw interrupt.
    +            TX_DONE_INT_CLR: u1,
    +            /// Set this bit to clear the rs485_parity_err_int_raw interrupt.
    +            RS485_PARITY_ERR_INT_CLR: u1,
    +            /// Set this bit to clear the rs485_frm_err_int_raw interrupt.
    +            RS485_FRM_ERR_INT_CLR: u1,
    +            /// Set this bit to clear the rs485_clash_int_raw interrupt.
    +            RS485_CLASH_INT_CLR: u1,
    +            /// Set this bit to clear the at_cmd_char_det_int_raw interrupt.
    +            AT_CMD_CHAR_DET_INT_CLR: u1,
    +            /// Set this bit to clear the uart_wakeup_int_raw interrupt.
    +            WAKEUP_INT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x10);
    +
    +        /// address: 0x60010014
    +        /// Clock divider configuration
    +        pub const CLKDIV = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The integral part of the frequency divider factor.
    +            CLKDIV: u12,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            reserved6: u1,
    +            reserved7: u1,
    +            /// The decimal part of the frequency divider factor.
    +            FRAG: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +        }), base_address + 0x14);
    +
    +        /// address: 0x60010018
    +        /// Rx Filter configuration
    +        pub const RX_FILT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// when input pulse width is lower than this value, the pulse is ignored.
    +            GLITCH_FILT: u8,
    +            /// Set this bit to enable Rx signal filter.
    +            GLITCH_FILT_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x6001001c
    +        /// UART status register
    +        pub const STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Stores the byte number of valid data in Rx-FIFO.
    +            RXFIFO_CNT: u10,
    +            reserved0: u1,
    +            reserved1: u1,
    +            reserved2: u1,
    +            /// The register represent the level value of the internal uart dsr signal.
    +            DSRN: u1,
    +            /// This register represent the level value of the internal uart cts signal.
    +            CTSN: u1,
    +            /// This register represent the level value of the internal uart rxd signal.
    +            RXD: u1,
    +            /// Stores the byte number of data in Tx-FIFO.
    +            TXFIFO_CNT: u10,
    +            reserved3: u1,
    +            reserved4: u1,
    +            reserved5: u1,
    +            /// This bit represents the level of the internal uart dtr signal.
    +            DTRN: u1,
    +            /// This bit represents the level of the internal uart rts signal.
    +            RTSN: u1,
    +            /// This bit represents the level of the internal uart txd signal.
    +            TXD: u1,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x60010020
    +        /// a
    +        pub const CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register is used to configure the parity check mode.
    +            PARITY: u1,
    +            /// Set this bit to enable uart parity check.
    +            PARITY_EN: u1,
    +            /// This register is used to set the length of data.
    +            BIT_NUM: u2,
    +            /// This register is used to set the length of stop bit.
    +            STOP_BIT_NUM: u2,
    +            /// This register is used to configure the software rts signal which is used in
    +            /// software flow control.
    +            SW_RTS: u1,
    +            /// This register is used to configure the software dtr signal which is used in
    +            /// software flow control.
    +            SW_DTR: u1,
    +            /// Set this bit to enbale transmitter to send NULL when the process of sending data
    +            /// is done.
    +            TXD_BRK: u1,
    +            /// Set this bit to enable IrDA loopback mode.
    +            IRDA_DPLX: u1,
    +            /// This is the start enable bit for IrDA transmitter.
    +            IRDA_TX_EN: u1,
    +            /// 1'h1: The IrDA transmitter's 11th bit is the same as 10th bit. 1'h0: Set IrDA
    +            /// transmitter's 11th bit to 0.
    +            IRDA_WCTL: u1,
    +            /// Set this bit to invert the level of IrDA transmitter.
    +            IRDA_TX_INV: u1,
    +            /// Set this bit to invert the level of IrDA receiver.
    +            IRDA_RX_INV: u1,
    +            /// Set this bit to enable uart loopback test mode.
    +            LOOPBACK: u1,
    +            /// Set this bit to enable flow control function for transmitter.
    +            TX_FLOW_EN: u1,
    +            /// Set this bit to enable IrDA protocol.
    +            IRDA_EN: u1,
    +            /// Set this bit to reset the uart receive-FIFO.
    +            RXFIFO_RST: u1,
    +            /// Set this bit to reset the uart transmit-FIFO.
    +            TXFIFO_RST: u1,
    +            /// Set this bit to inverse the level value of uart rxd signal.
    +            RXD_INV: u1,
    +            /// Set this bit to inverse the level value of uart cts signal.
    +            CTS_INV: u1,
    +            /// Set this bit to inverse the level value of uart dsr signal.
    +            DSR_INV: u1,
    +            /// Set this bit to inverse the level value of uart txd signal.
    +            TXD_INV: u1,
    +            /// Set this bit to inverse the level value of uart rts signal.
    +            RTS_INV: u1,
    +            /// Set this bit to inverse the level value of uart dtr signal.
    +            DTR_INV: u1,
    +            /// 1'h1: Force clock on for register. 1'h0: Support clock only when application
    +            /// writes registers.
    +            CLK_EN: u1,
    +            /// 1'h1: Receiver stops storing data into FIFO when data is wrong. 1'h0: Receiver
    +            /// stores the data even if the received data is wrong.
    +            ERR_WR_MASK: u1,
    +            /// This is the enable bit for detecting baudrate.
    +            AUTOBAUD_EN: u1,
    +            /// UART memory clock gate enable signal.
    +            MEM_CLK_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +        }), base_address + 0x20);
    +
    +        /// address: 0x60010024
    +        /// Configuration register 1
    +        pub const CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// It will produce rxfifo_full_int interrupt when receiver receives more data than
    +            /// this register value.
    +            RXFIFO_FULL_THRHD: u9,
    +            /// It will produce txfifo_empty_int interrupt when the data amount in Tx-FIFO is
    +            /// less than this register value.
    +            TXFIFO_EMPTY_THRHD: u9,
    +            /// Disable UART Rx data overflow detect.
    +            DIS_RX_DAT_OVF: u1,
    +            /// Set this bit to stop accumulating idle_cnt when hardware flow control works.
    +            RX_TOUT_FLOW_DIS: u1,
    +            /// This is the flow enable bit for UART receiver.
    +            RX_FLOW_EN: u1,
    +            /// This is the enble bit for uart receiver's timeout function.
    +            RX_TOUT_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +        }), base_address + 0x24);
    +
    +        /// address: 0x60010028
    +        /// Autobaud minimum low pulse duration register
    +        pub const LOWPULSE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the value of the minimum duration time of the low level
    +            /// pulse. It is used in baud rate-detect process.
    +            MIN_CNT: u12,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0x28);
    +
    +        /// address: 0x6001002c
    +        /// Autobaud minimum high pulse duration register
    +        pub const HIGHPULSE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the value of the maxinum duration time for the high level
    +            /// pulse. It is used in baud rate-detect process.
    +            MIN_CNT: u12,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0x2c);
    +
    +        /// address: 0x60010030
    +        /// Autobaud edge change count register
    +        pub const RXD_CNT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the count of rxd edge change. It is used in baud
    +            /// rate-detect process.
    +            RXD_EDGE_CNT: u10,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +        }), base_address + 0x30);
    +
    +        /// address: 0x60010034
    +        /// Software flow-control configuration
    +        pub const FLOW_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set this bit to enable software flow control. It is used with register sw_xon or
    +            /// sw_xoff.
    +            SW_FLOW_CON_EN: u1,
    +            /// Set this bit to remove flow control char from the received data.
    +            XONOFF_DEL: u1,
    +            /// Set this bit to enable the transmitter to go on sending data.
    +            FORCE_XON: u1,
    +            /// Set this bit to stop the transmitter from sending data.
    +            FORCE_XOFF: u1,
    +            /// Set this bit to send Xon char. It is cleared by hardware automatically.
    +            SEND_XON: u1,
    +            /// Set this bit to send Xoff char. It is cleared by hardware automatically.
    +            SEND_XOFF: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +        }), base_address + 0x34);
    +
    +        /// address: 0x60010038
    +        /// Sleep-mode configuration
    +        pub const SLEEP_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The uart is activated from light sleeping mode when the input rxd edge changes
    +            /// more times than this register value.
    +            ACTIVE_THRESHOLD: u10,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +        }), base_address + 0x38);
    +
    +        /// address: 0x6001003c
    +        /// Software flow-control character configuration
    +        pub const SWFC_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// When the data amount in Rx-FIFO is more than this register value with
    +            /// uart_sw_flow_con_en set to 1, it will send a Xoff char.
    +            XOFF_THRESHOLD: u9,
    +            /// This register stores the Xoff flow control char.
    +            XOFF_CHAR: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +        }), base_address + 0x3c);
    +
    +        /// address: 0x60010040
    +        /// Software flow-control character configuration
    +        pub const SWFC_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// When the data amount in Rx-FIFO is less than this register value with
    +            /// uart_sw_flow_con_en set to 1, it will send a Xon char.
    +            XON_THRESHOLD: u9,
    +            /// This register stores the Xon flow control char.
    +            XON_CHAR: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +        }), base_address + 0x40);
    +
    +        /// address: 0x60010044
    +        /// Tx Break character configuration
    +        pub const TXBRK_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register is used to configure the number of 0 to be sent after the process
    +            /// of sending data is done. It is active when txd_brk is set to 1.
    +            TX_BRK_NUM: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x44);
    +
    +        /// address: 0x60010048
    +        /// Frame-end idle configuration
    +        pub const IDLE_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// It will produce frame end signal when receiver takes more time to receive one
    +            /// byte data than this register value.
    +            RX_IDLE_THRHD: u10,
    +            /// This register is used to configure the duration time between transfers.
    +            TX_IDLE_NUM: u10,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +        }), base_address + 0x48);
    +
    +        /// address: 0x6001004c
    +        /// RS485 mode configuration
    +        pub const RS485_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set this bit to choose the rs485 mode.
    +            RS485_EN: u1,
    +            /// Set this bit to delay the stop bit by 1 bit.
    +            DL0_EN: u1,
    +            /// Set this bit to delay the stop bit by 1 bit.
    +            DL1_EN: u1,
    +            /// Set this bit to enable receiver could receive data when the transmitter is
    +            /// transmitting data in rs485 mode.
    +            RS485TX_RX_EN: u1,
    +            /// 1'h1: enable rs485 transmitter to send data when rs485 receiver line is busy.
    +            RS485RXBY_TX_EN: u1,
    +            /// This register is used to delay the receiver's internal data signal.
    +            RS485_RX_DLY_NUM: u1,
    +            /// This register is used to delay the transmitter's internal data signal.
    +            RS485_TX_DLY_NUM: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +        }), base_address + 0x4c);
    +
    +        /// address: 0x60010050
    +        /// Pre-sequence timing configuration
    +        pub const AT_CMD_PRECNT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register is used to configure the idle duration time before the first
    +            /// at_cmd is received by receiver.
    +            PRE_IDLE_NUM: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x50);
    +
    +        /// address: 0x60010054
    +        /// Post-sequence timing configuration
    +        pub const AT_CMD_POSTCNT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register is used to configure the duration time between the last at_cmd and
    +            /// the next data.
    +            POST_IDLE_NUM: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x54);
    +
    +        /// address: 0x60010058
    +        /// Timeout configuration
    +        pub const AT_CMD_GAPTOUT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register is used to configure the duration time between the at_cmd chars.
    +            RX_GAP_TOUT: u16,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x58);
    +
    +        /// address: 0x6001005c
    +        /// AT escape sequence detection configuration
    +        pub const AT_CMD_CHAR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register is used to configure the content of at_cmd char.
    +            AT_CMD_CHAR: u8,
    +            /// This register is used to configure the num of continuous at_cmd chars received
    +            /// by receiver.
    +            CHAR_NUM: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x5c);
    +
    +        /// address: 0x60010060
    +        /// UART threshold and allocation configuration
    +        pub const MEM_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            reserved0: u1,
    +            /// This register is used to configure the amount of mem allocated for receive-FIFO.
    +            /// The default number is 128 bytes.
    +            RX_SIZE: u3,
    +            /// This register is used to configure the amount of mem allocated for
    +            /// transmit-FIFO. The default number is 128 bytes.
    +            TX_SIZE: u3,
    +            /// This register is used to configure the maximum amount of data that can be
    +            /// received when hardware flow control works.
    +            RX_FLOW_THRHD: u9,
    +            /// This register is used to configure the threshold time that receiver takes to
    +            /// receive one byte. The rxfifo_tout_int interrupt will be trigger when the
    +            /// receiver takes more time to receive one byte with rx_tout_en set to 1.
    +            RX_TOUT_THRHD: u10,
    +            /// Set this bit to force power down UART memory.
    +            MEM_FORCE_PD: u1,
    +            /// Set this bit to force power up UART memory.
    +            MEM_FORCE_PU: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +        }), base_address + 0x60);
    +
    +        /// address: 0x60010064
    +        /// Tx-FIFO write and read offset address.
    +        pub const MEM_TX_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the offset address in Tx-FIFO when software writes Tx-FIFO
    +            /// via APB.
    +            APB_TX_WADDR: u10,
    +            reserved0: u1,
    +            /// This register stores the offset address in Tx-FIFO when Tx-FSM reads data via
    +            /// Tx-FIFO_Ctrl.
    +            TX_RADDR: u10,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +        }), base_address + 0x64);
    +
    +        /// address: 0x60010068
    +        /// Rx-FIFO write and read offset address.
    +        pub const MEM_RX_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the offset address in RX-FIFO when software reads data from
    +            /// Rx-FIFO via APB. UART0 is 10'h100. UART1 is 10'h180.
    +            APB_RX_RADDR: u10,
    +            reserved0: u1,
    +            /// This register stores the offset address in Rx-FIFO when Rx-FIFO_Ctrl writes
    +            /// Rx-FIFO. UART0 is 10'h100. UART1 is 10'h180.
    +            RX_WADDR: u10,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +        }), base_address + 0x68);
    +
    +        /// address: 0x6001006c
    +        /// UART transmit and receive status.
    +        pub const FSM_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This is the status register of receiver.
    +            ST_URX_OUT: u4,
    +            /// This is the status register of transmitter.
    +            ST_UTX_OUT: u4,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x6c);
    +
    +        /// address: 0x60010070
    +        /// Autobaud high pulse register
    +        pub const POSPULSE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the minimal input clock count between two positive edges.
    +            /// It is used in boudrate-detect process.
    +            POSEDGE_MIN_CNT: u12,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0x70);
    +
    +        /// address: 0x60010074
    +        /// Autobaud low pulse register
    +        pub const NEGPULSE = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register stores the minimal input clock count between two negative edges.
    +            /// It is used in boudrate-detect process.
    +            NEGEDGE_MIN_CNT: u12,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0x74);
    +
    +        /// address: 0x60010078
    +        /// UART core clock configuration
    +        pub const CLK_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The denominator of the frequency divider factor.
    +            SCLK_DIV_B: u6,
    +            /// The numerator of the frequency divider factor.
    +            SCLK_DIV_A: u6,
    +            /// The integral part of the frequency divider factor.
    +            SCLK_DIV_NUM: u8,
    +            /// UART clock source select. 1: 80Mhz, 2: 8Mhz, 3: XTAL.
    +            SCLK_SEL: u2,
    +            /// Set this bit to enable UART Tx/Rx clock.
    +            SCLK_EN: u1,
    +            /// Write 1 then write 0 to this bit, reset UART Tx/Rx.
    +            RST_CORE: u1,
    +            /// Set this bit to enable UART Tx clock.
    +            TX_SCLK_EN: u1,
    +            /// Set this bit to enable UART Rx clock.
    +            RX_SCLK_EN: u1,
    +            /// Write 1 then write 0 to this bit, reset UART Tx.
    +            TX_RST_CORE: u1,
    +            /// Write 1 then write 0 to this bit, reset UART Rx.
    +            RX_RST_CORE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +        }), base_address + 0x78);
    +
    +        /// address: 0x6001007c
    +        /// UART Version register
    +        pub const DATE = @intToPtr(*volatile u32, base_address + 0x7c);
    +
    +        /// address: 0x60010080
    +        /// UART ID register
    +        pub const ID = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// This register is used to configure the uart_id.
    +            ID: u30,
    +            /// This bit used to select synchronize mode. 1: Registers are auto synchronized
    +            /// into UART Core clock and UART core should be keep the same with APB clock. 0:
    +            /// After configure registers, software needs to write 1 to UART_REG_UPDATE to
    +            /// synchronize registers.
    +            HIGH_SPEED: u1,
    +            /// Software write 1 would synchronize registers into UART Core clock domain and
    +            /// would be cleared by hardware after synchronization is done.
    +            REG_UPDATE: u1,
    +        }), base_address + 0x80);
    +    };
    +
    +    /// Universal Host Controller Interface
    +    pub const UHCI0 = struct {
    +        pub const base_address = 0x60014000;
    +
    +        /// address: 0x60014000
    +        /// a
    +        pub const CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Write 1, then write 0 to this bit to reset decode state machine.
    +            TX_RST: u1,
    +            /// Write 1, then write 0 to this bit to reset encode state machine.
    +            RX_RST: u1,
    +            /// Set this bit to link up HCI and UART0.
    +            UART0_CE: u1,
    +            /// Set this bit to link up HCI and UART1.
    +            UART1_CE: u1,
    +            reserved0: u1,
    +            /// Set this bit to separate the data frame using a special char.
    +            SEPER_EN: u1,
    +            /// Set this bit to encode the data packet with a formatting header.
    +            HEAD_EN: u1,
    +            /// Set this bit to enable UHCI to receive the 16 bit CRC.
    +            CRC_REC_EN: u1,
    +            /// If this bit is set to 1, UHCI will end the payload receiving process when UART
    +            /// has been in idle state.
    +            UART_IDLE_EOF_EN: u1,
    +            /// If this bit is set to 1, UHCI decoder receiving payload data is end when the
    +            /// receiving byte count has reached the specified value. The value is payload
    +            /// length indicated by UHCI packet header when UHCI_HEAD_EN is 1 or the value is
    +            /// configuration value when UHCI_HEAD_EN is 0. If this bit is set to 0, UHCI
    +            /// decoder receiving payload data is end when 0xc0 is received.
    +            LEN_EOF_EN: u1,
    +            /// Set this bit to enable data integrity checking by appending a 16 bit CCITT-CRC
    +            /// to end of the payload.
    +            ENCODE_CRC_EN: u1,
    +            /// 1'b1: Force clock on for register. 1'b0: Support clock only when application
    +            /// writes registers.
    +            CLK_EN: u1,
    +            /// If this bit is set to 1, UHCI will end payload receive process when NULL frame
    +            /// is received by UART.
    +            UART_RX_BRK_EOF_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x0);
    +
    +        /// address: 0x60014004
    +        /// a
    +        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            RX_START_INT_RAW: u1,
    +            /// a
    +            TX_START_INT_RAW: u1,
    +            /// a
    +            RX_HUNG_INT_RAW: u1,
    +            /// a
    +            TX_HUNG_INT_RAW: u1,
    +            /// a
    +            SEND_S_REG_Q_INT_RAW: u1,
    +            /// a
    +            SEND_A_REG_Q_INT_RAW: u1,
    +            /// This is the interrupt raw bit. Triggered when there are some errors in EOF in
    +            /// the
    +            OUT_EOF_INT_RAW: u1,
    +            /// Soft control int raw bit.
    +            APP_CTRL0_INT_RAW: u1,
    +            /// Soft control int raw bit.
    +            APP_CTRL1_INT_RAW: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x60014008
    +        /// a
    +        pub const INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            RX_START_INT_ST: u1,
    +            /// a
    +            TX_START_INT_ST: u1,
    +            /// a
    +            RX_HUNG_INT_ST: u1,
    +            /// a
    +            TX_HUNG_INT_ST: u1,
    +            /// a
    +            SEND_S_REG_Q_INT_ST: u1,
    +            /// a
    +            SEND_A_REG_Q_INT_ST: u1,
    +            /// a
    +            OUTLINK_EOF_ERR_INT_ST: u1,
    +            /// a
    +            APP_CTRL0_INT_ST: u1,
    +            /// a
    +            APP_CTRL1_INT_ST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x6001400c
    +        /// a
    +        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            RX_START_INT_ENA: u1,
    +            /// a
    +            TX_START_INT_ENA: u1,
    +            /// a
    +            RX_HUNG_INT_ENA: u1,
    +            /// a
    +            TX_HUNG_INT_ENA: u1,
    +            /// a
    +            SEND_S_REG_Q_INT_ENA: u1,
    +            /// a
    +            SEND_A_REG_Q_INT_ENA: u1,
    +            /// a
    +            OUTLINK_EOF_ERR_INT_ENA: u1,
    +            /// a
    +            APP_CTRL0_INT_ENA: u1,
    +            /// a
    +            APP_CTRL1_INT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x60014010
    +        /// a
    +        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            RX_START_INT_CLR: u1,
    +            /// a
    +            TX_START_INT_CLR: u1,
    +            /// a
    +            RX_HUNG_INT_CLR: u1,
    +            /// a
    +            TX_HUNG_INT_CLR: u1,
    +            /// a
    +            SEND_S_REG_Q_INT_CLR: u1,
    +            /// a
    +            SEND_A_REG_Q_INT_CLR: u1,
    +            /// a
    +            OUTLINK_EOF_ERR_INT_CLR: u1,
    +            /// a
    +            APP_CTRL0_INT_CLR: u1,
    +            /// a
    +            APP_CTRL1_INT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0x10);
    +
    +        /// address: 0x60014014
    +        /// a
    +        pub const CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            CHECK_SUM_EN: u1,
    +            /// a
    +            CHECK_SEQ_EN: u1,
    +            /// a
    +            CRC_DISABLE: u1,
    +            /// a
    +            SAVE_HEAD: u1,
    +            /// a
    +            TX_CHECK_SUM_RE: u1,
    +            /// a
    +            TX_ACK_NUM_RE: u1,
    +            reserved0: u1,
    +            /// a
    +            WAIT_SW_START: u1,
    +            /// a
    +            SW_START: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0x14);
    +
    +        /// address: 0x60014018
    +        /// a
    +        pub const STATE0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            RX_ERR_CAUSE: u3,
    +            /// a
    +            DECODE_STATE: u3,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x6001401c
    +        /// a
    +        pub const STATE1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            ENCODE_STATE: u3,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x60014020
    +        /// a
    +        pub const ESCAPE_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            TX_C0_ESC_EN: u1,
    +            /// a
    +            TX_DB_ESC_EN: u1,
    +            /// a
    +            TX_11_ESC_EN: u1,
    +            /// a
    +            TX_13_ESC_EN: u1,
    +            /// a
    +            RX_C0_ESC_EN: u1,
    +            /// a
    +            RX_DB_ESC_EN: u1,
    +            /// a
    +            RX_11_ESC_EN: u1,
    +            /// a
    +            RX_13_ESC_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x20);
    +
    +        /// address: 0x60014024
    +        /// a
    +        pub const HUNG_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            TXFIFO_TIMEOUT: u8,
    +            /// a
    +            TXFIFO_TIMEOUT_SHIFT: u3,
    +            /// a
    +            TXFIFO_TIMEOUT_ENA: u1,
    +            /// a
    +            RXFIFO_TIMEOUT: u8,
    +            /// a
    +            RXFIFO_TIMEOUT_SHIFT: u3,
    +            /// a
    +            RXFIFO_TIMEOUT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +        }), base_address + 0x24);
    +
    +        /// address: 0x60014028
    +        /// a
    +        pub const ACK_NUM = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            ACK_NUM: u3,
    +            /// a
    +            LOAD: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x28);
    +
    +        /// address: 0x6001402c
    +        /// a
    +        pub const RX_HEAD = @intToPtr(*volatile u32, base_address + 0x2c);
    +
    +        /// address: 0x60014030
    +        /// a
    +        pub const QUICK_SENT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SINGLE_SEND_NUM: u3,
    +            /// a
    +            SINGLE_SEND_EN: u1,
    +            /// a
    +            ALWAYS_SEND_NUM: u3,
    +            /// a
    +            ALWAYS_SEND_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x30);
    +
    +        /// address: 0x60014034
    +        /// a
    +        pub const REG_Q0_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q0_WORD0: u32,
    +        }), base_address + 0x34);
    +
    +        /// address: 0x60014038
    +        /// a
    +        pub const REG_Q0_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q0_WORD1: u32,
    +        }), base_address + 0x38);
    +
    +        /// address: 0x6001403c
    +        /// a
    +        pub const REG_Q1_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q1_WORD0: u32,
    +        }), base_address + 0x3c);
    +
    +        /// address: 0x60014040
    +        /// a
    +        pub const REG_Q1_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q1_WORD1: u32,
    +        }), base_address + 0x40);
    +
    +        /// address: 0x60014044
    +        /// a
    +        pub const REG_Q2_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q2_WORD0: u32,
    +        }), base_address + 0x44);
    +
    +        /// address: 0x60014048
    +        /// a
    +        pub const REG_Q2_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q2_WORD1: u32,
    +        }), base_address + 0x48);
    +
    +        /// address: 0x6001404c
    +        /// a
    +        pub const REG_Q3_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q3_WORD0: u32,
    +        }), base_address + 0x4c);
    +
    +        /// address: 0x60014050
    +        /// a
    +        pub const REG_Q3_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q3_WORD1: u32,
    +        }), base_address + 0x50);
    +
    +        /// address: 0x60014054
    +        /// a
    +        pub const REG_Q4_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q4_WORD0: u32,
    +        }), base_address + 0x54);
    +
    +        /// address: 0x60014058
    +        /// a
    +        pub const REG_Q4_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q4_WORD1: u32,
    +        }), base_address + 0x58);
    +
    +        /// address: 0x6001405c
    +        /// a
    +        pub const REG_Q5_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q5_WORD0: u32,
    +        }), base_address + 0x5c);
    +
    +        /// address: 0x60014060
    +        /// a
    +        pub const REG_Q5_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q5_WORD1: u32,
    +        }), base_address + 0x60);
    +
    +        /// address: 0x60014064
    +        /// a
    +        pub const REG_Q6_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q6_WORD0: u32,
    +        }), base_address + 0x64);
    +
    +        /// address: 0x60014068
    +        /// a
    +        pub const REG_Q6_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q6_WORD1: u32,
    +        }), base_address + 0x68);
    +
    +        /// address: 0x6001406c
    +        /// a
    +        pub const ESC_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEPER_CHAR: u8,
    +            /// a
    +            SEPER_ESC_CHAR0: u8,
    +            /// a
    +            SEPER_ESC_CHAR1: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +        }), base_address + 0x6c);
    +
    +        /// address: 0x60014070
    +        /// a
    +        pub const ESC_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            ESC_SEQ0: u8,
    +            /// a
    +            ESC_SEQ0_CHAR0: u8,
    +            /// a
    +            ESC_SEQ0_CHAR1: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +        }), base_address + 0x70);
    +
    +        /// address: 0x60014074
    +        /// a
    +        pub const ESC_CONF2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            ESC_SEQ1: u8,
    +            /// a
    +            ESC_SEQ1_CHAR0: u8,
    +            /// a
    +            ESC_SEQ1_CHAR1: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +        }), base_address + 0x74);
    +
    +        /// address: 0x60014078
    +        /// a
    +        pub const ESC_CONF3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            ESC_SEQ2: u8,
    +            /// a
    +            ESC_SEQ2_CHAR0: u8,
    +            /// a
    +            ESC_SEQ2_CHAR1: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +        }), base_address + 0x78);
    +
    +        /// address: 0x6001407c
    +        /// a
    +        pub const PKT_THRES = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            PKT_THRS: u13,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x7c);
    +
    +        /// address: 0x60014080
    +        /// a
    +        pub const DATE = @intToPtr(*volatile u32, base_address + 0x80);
    +    };
    +
    +    /// Universal Host Controller Interface
    +    pub const UHCI1 = struct {
    +        pub const base_address = 0x6000c000;
    +
    +        /// address: 0x6000c000
    +        /// a
    +        pub const CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Write 1, then write 0 to this bit to reset decode state machine.
    +            TX_RST: u1,
    +            /// Write 1, then write 0 to this bit to reset encode state machine.
    +            RX_RST: u1,
    +            /// Set this bit to link up HCI and UART0.
    +            UART0_CE: u1,
    +            /// Set this bit to link up HCI and UART1.
    +            UART1_CE: u1,
    +            reserved0: u1,
    +            /// Set this bit to separate the data frame using a special char.
    +            SEPER_EN: u1,
    +            /// Set this bit to encode the data packet with a formatting header.
    +            HEAD_EN: u1,
    +            /// Set this bit to enable UHCI to receive the 16 bit CRC.
    +            CRC_REC_EN: u1,
    +            /// If this bit is set to 1, UHCI will end the payload receiving process when UART
    +            /// has been in idle state.
    +            UART_IDLE_EOF_EN: u1,
    +            /// If this bit is set to 1, UHCI decoder receiving payload data is end when the
    +            /// receiving byte count has reached the specified value. The value is payload
    +            /// length indicated by UHCI packet header when UHCI_HEAD_EN is 1 or the value is
    +            /// configuration value when UHCI_HEAD_EN is 0. If this bit is set to 0, UHCI
    +            /// decoder receiving payload data is end when 0xc0 is received.
    +            LEN_EOF_EN: u1,
    +            /// Set this bit to enable data integrity checking by appending a 16 bit CCITT-CRC
    +            /// to end of the payload.
    +            ENCODE_CRC_EN: u1,
    +            /// 1'b1: Force clock on for register. 1'b0: Support clock only when application
    +            /// writes registers.
    +            CLK_EN: u1,
    +            /// If this bit is set to 1, UHCI will end payload receive process when NULL frame
    +            /// is received by UART.
    +            UART_RX_BRK_EOF_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x0);
    +
    +        /// address: 0x6000c004
    +        /// a
    +        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            RX_START_INT_RAW: u1,
    +            /// a
    +            TX_START_INT_RAW: u1,
    +            /// a
    +            RX_HUNG_INT_RAW: u1,
    +            /// a
    +            TX_HUNG_INT_RAW: u1,
    +            /// a
    +            SEND_S_REG_Q_INT_RAW: u1,
    +            /// a
    +            SEND_A_REG_Q_INT_RAW: u1,
    +            /// This is the interrupt raw bit. Triggered when there are some errors in EOF in
    +            /// the
    +            OUT_EOF_INT_RAW: u1,
    +            /// Soft control int raw bit.
    +            APP_CTRL0_INT_RAW: u1,
    +            /// Soft control int raw bit.
    +            APP_CTRL1_INT_RAW: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x6000c008
    +        /// a
    +        pub const INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            RX_START_INT_ST: u1,
    +            /// a
    +            TX_START_INT_ST: u1,
    +            /// a
    +            RX_HUNG_INT_ST: u1,
    +            /// a
    +            TX_HUNG_INT_ST: u1,
    +            /// a
    +            SEND_S_REG_Q_INT_ST: u1,
    +            /// a
    +            SEND_A_REG_Q_INT_ST: u1,
    +            /// a
    +            OUTLINK_EOF_ERR_INT_ST: u1,
    +            /// a
    +            APP_CTRL0_INT_ST: u1,
    +            /// a
    +            APP_CTRL1_INT_ST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x6000c00c
    +        /// a
    +        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            RX_START_INT_ENA: u1,
    +            /// a
    +            TX_START_INT_ENA: u1,
    +            /// a
    +            RX_HUNG_INT_ENA: u1,
    +            /// a
    +            TX_HUNG_INT_ENA: u1,
    +            /// a
    +            SEND_S_REG_Q_INT_ENA: u1,
    +            /// a
    +            SEND_A_REG_Q_INT_ENA: u1,
    +            /// a
    +            OUTLINK_EOF_ERR_INT_ENA: u1,
    +            /// a
    +            APP_CTRL0_INT_ENA: u1,
    +            /// a
    +            APP_CTRL1_INT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x6000c010
    +        /// a
    +        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            RX_START_INT_CLR: u1,
    +            /// a
    +            TX_START_INT_CLR: u1,
    +            /// a
    +            RX_HUNG_INT_CLR: u1,
    +            /// a
    +            TX_HUNG_INT_CLR: u1,
    +            /// a
    +            SEND_S_REG_Q_INT_CLR: u1,
    +            /// a
    +            SEND_A_REG_Q_INT_CLR: u1,
    +            /// a
    +            OUTLINK_EOF_ERR_INT_CLR: u1,
    +            /// a
    +            APP_CTRL0_INT_CLR: u1,
    +            /// a
    +            APP_CTRL1_INT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0x10);
    +
    +        /// address: 0x6000c014
    +        /// a
    +        pub const CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            CHECK_SUM_EN: u1,
    +            /// a
    +            CHECK_SEQ_EN: u1,
    +            /// a
    +            CRC_DISABLE: u1,
    +            /// a
    +            SAVE_HEAD: u1,
    +            /// a
    +            TX_CHECK_SUM_RE: u1,
    +            /// a
    +            TX_ACK_NUM_RE: u1,
    +            reserved0: u1,
    +            /// a
    +            WAIT_SW_START: u1,
    +            /// a
    +            SW_START: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +        }), base_address + 0x14);
    +
    +        /// address: 0x6000c018
    +        /// a
    +        pub const STATE0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            RX_ERR_CAUSE: u3,
    +            /// a
    +            DECODE_STATE: u3,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x6000c01c
    +        /// a
    +        pub const STATE1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            ENCODE_STATE: u3,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x6000c020
    +        /// a
    +        pub const ESCAPE_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            TX_C0_ESC_EN: u1,
    +            /// a
    +            TX_DB_ESC_EN: u1,
    +            /// a
    +            TX_11_ESC_EN: u1,
    +            /// a
    +            TX_13_ESC_EN: u1,
    +            /// a
    +            RX_C0_ESC_EN: u1,
    +            /// a
    +            RX_DB_ESC_EN: u1,
    +            /// a
    +            RX_11_ESC_EN: u1,
    +            /// a
    +            RX_13_ESC_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x20);
    +
    +        /// address: 0x6000c024
    +        /// a
    +        pub const HUNG_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            TXFIFO_TIMEOUT: u8,
    +            /// a
    +            TXFIFO_TIMEOUT_SHIFT: u3,
    +            /// a
    +            TXFIFO_TIMEOUT_ENA: u1,
    +            /// a
    +            RXFIFO_TIMEOUT: u8,
    +            /// a
    +            RXFIFO_TIMEOUT_SHIFT: u3,
    +            /// a
    +            RXFIFO_TIMEOUT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +        }), base_address + 0x24);
    +
    +        /// address: 0x6000c028
    +        /// a
    +        pub const ACK_NUM = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            ACK_NUM: u3,
    +            /// a
    +            LOAD: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x28);
    +
    +        /// address: 0x6000c02c
    +        /// a
    +        pub const RX_HEAD = @intToPtr(*volatile u32, base_address + 0x2c);
    +
    +        /// address: 0x6000c030
    +        /// a
    +        pub const QUICK_SENT = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SINGLE_SEND_NUM: u3,
    +            /// a
    +            SINGLE_SEND_EN: u1,
    +            /// a
    +            ALWAYS_SEND_NUM: u3,
    +            /// a
    +            ALWAYS_SEND_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x30);
    +
    +        /// address: 0x6000c034
    +        /// a
    +        pub const REG_Q0_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q0_WORD0: u32,
    +        }), base_address + 0x34);
    +
    +        /// address: 0x6000c038
    +        /// a
    +        pub const REG_Q0_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q0_WORD1: u32,
    +        }), base_address + 0x38);
    +
    +        /// address: 0x6000c03c
    +        /// a
    +        pub const REG_Q1_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q1_WORD0: u32,
    +        }), base_address + 0x3c);
    +
    +        /// address: 0x6000c040
    +        /// a
    +        pub const REG_Q1_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q1_WORD1: u32,
    +        }), base_address + 0x40);
    +
    +        /// address: 0x6000c044
    +        /// a
    +        pub const REG_Q2_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q2_WORD0: u32,
    +        }), base_address + 0x44);
    +
    +        /// address: 0x6000c048
    +        /// a
    +        pub const REG_Q2_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q2_WORD1: u32,
    +        }), base_address + 0x48);
    +
    +        /// address: 0x6000c04c
    +        /// a
    +        pub const REG_Q3_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q3_WORD0: u32,
    +        }), base_address + 0x4c);
    +
    +        /// address: 0x6000c050
    +        /// a
    +        pub const REG_Q3_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q3_WORD1: u32,
    +        }), base_address + 0x50);
    +
    +        /// address: 0x6000c054
    +        /// a
    +        pub const REG_Q4_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q4_WORD0: u32,
    +        }), base_address + 0x54);
    +
    +        /// address: 0x6000c058
    +        /// a
    +        pub const REG_Q4_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q4_WORD1: u32,
    +        }), base_address + 0x58);
    +
    +        /// address: 0x6000c05c
    +        /// a
    +        pub const REG_Q5_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q5_WORD0: u32,
    +        }), base_address + 0x5c);
    +
    +        /// address: 0x6000c060
    +        /// a
    +        pub const REG_Q5_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q5_WORD1: u32,
    +        }), base_address + 0x60);
    +
    +        /// address: 0x6000c064
    +        /// a
    +        pub const REG_Q6_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q6_WORD0: u32,
    +        }), base_address + 0x64);
    +
    +        /// address: 0x6000c068
    +        /// a
    +        pub const REG_Q6_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEND_Q6_WORD1: u32,
    +        }), base_address + 0x68);
    +
    +        /// address: 0x6000c06c
    +        /// a
    +        pub const ESC_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            SEPER_CHAR: u8,
    +            /// a
    +            SEPER_ESC_CHAR0: u8,
    +            /// a
    +            SEPER_ESC_CHAR1: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +        }), base_address + 0x6c);
    +
    +        /// address: 0x6000c070
    +        /// a
    +        pub const ESC_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            ESC_SEQ0: u8,
    +            /// a
    +            ESC_SEQ0_CHAR0: u8,
    +            /// a
    +            ESC_SEQ0_CHAR1: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +        }), base_address + 0x70);
    +
    +        /// address: 0x6000c074
    +        /// a
    +        pub const ESC_CONF2 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            ESC_SEQ1: u8,
    +            /// a
    +            ESC_SEQ1_CHAR0: u8,
    +            /// a
    +            ESC_SEQ1_CHAR1: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +        }), base_address + 0x74);
    +
    +        /// address: 0x6000c078
    +        /// a
    +        pub const ESC_CONF3 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            ESC_SEQ2: u8,
    +            /// a
    +            ESC_SEQ2_CHAR0: u8,
    +            /// a
    +            ESC_SEQ2_CHAR1: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +        }), base_address + 0x78);
    +
    +        /// address: 0x6000c07c
    +        /// a
    +        pub const PKT_THRES = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// a
    +            PKT_THRS: u13,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +        }), base_address + 0x7c);
    +
    +        /// address: 0x6000c080
    +        /// a
    +        pub const DATE = @intToPtr(*volatile u32, base_address + 0x80);
    +    };
    +
    +    /// Full-speed USB Serial/JTAG Controller
    +    pub const USB_DEVICE = struct {
    +        pub const base_address = 0x60043000;
    +
    +        /// address: 0x60043000
    +        /// USB_DEVICE_EP1_REG.
    +        pub const EP1 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Write and read byte data to/from UART Tx/Rx FIFO through this field. When
    +            /// USB_DEVICE_SERIAL_IN_EMPTY_INT is set, then user can write data (up to 64 bytes)
    +            /// into UART Tx FIFO. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is set, user can
    +            /// check USB_DEVICE_OUT_EP1_WR_ADDR USB_DEVICE_OUT_EP0_RD_ADDR to know how many
    +            /// data is received, then read data from UART Rx FIFO.
    +            RDWR_BYTE: u8,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +        }), base_address + 0x0);
    +
    +        /// address: 0x60043004
    +        /// USB_DEVICE_EP1_CONF_REG.
    +        pub const EP1_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set this bit to indicate writing byte data to UART Tx FIFO is done.
    +            WR_DONE: u1,
    +            /// 1'b1: Indicate UART Tx FIFO is not full and can write data into in. After
    +            /// writing USB_DEVICE_WR_DONE, this bit would be 0 until data in UART Tx FIFO is
    +            /// read by USB Host.
    +            SERIAL_IN_EP_DATA_FREE: u1,
    +            /// 1'b1: Indicate there is data in UART Rx FIFO.
    +            SERIAL_OUT_EP_DATA_AVAIL: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +        }), base_address + 0x4);
    +
    +        /// address: 0x60043008
    +        /// USB_DEVICE_INT_RAW_REG.
    +        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The raw interrupt bit turns to high level when flush cmd is received for IN
    +            /// endpoint 2 of JTAG.
    +            JTAG_IN_FLUSH_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when SOF frame is received.
    +            SOF_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when Serial Port OUT Endpoint received
    +            /// one packet.
    +            SERIAL_OUT_RECV_PKT_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when Serial Port IN Endpoint is empty.
    +            SERIAL_IN_EMPTY_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when pid error is detected.
    +            PID_ERR_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when CRC5 error is detected.
    +            CRC5_ERR_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when CRC16 error is detected.
    +            CRC16_ERR_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when stuff error is detected.
    +            STUFF_ERR_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when IN token for IN endpoint 1 is
    +            /// received.
    +            IN_TOKEN_REC_IN_EP1_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when usb bus reset is detected.
    +            USB_BUS_RESET_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when OUT endpoint 1 received packet
    +            /// with zero palyload.
    +            OUT_EP1_ZERO_PAYLOAD_INT_RAW: u1,
    +            /// The raw interrupt bit turns to high level when OUT endpoint 2 received packet
    +            /// with zero palyload.
    +            OUT_EP2_ZERO_PAYLOAD_INT_RAW: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0x8);
    +
    +        /// address: 0x6004300c
    +        /// USB_DEVICE_INT_ST_REG.
    +        pub const INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The raw interrupt status bit for the USB_DEVICE_JTAG_IN_FLUSH_INT interrupt.
    +            JTAG_IN_FLUSH_INT_ST: u1,
    +            /// The raw interrupt status bit for the USB_DEVICE_SOF_INT interrupt.
    +            SOF_INT_ST: u1,
    +            /// The raw interrupt status bit for the USB_DEVICE_SERIAL_OUT_RECV_PKT_INT
    +            /// interrupt.
    +            SERIAL_OUT_RECV_PKT_INT_ST: u1,
    +            /// The raw interrupt status bit for the USB_DEVICE_SERIAL_IN_EMPTY_INT interrupt.
    +            SERIAL_IN_EMPTY_INT_ST: u1,
    +            /// The raw interrupt status bit for the USB_DEVICE_PID_ERR_INT interrupt.
    +            PID_ERR_INT_ST: u1,
    +            /// The raw interrupt status bit for the USB_DEVICE_CRC5_ERR_INT interrupt.
    +            CRC5_ERR_INT_ST: u1,
    +            /// The raw interrupt status bit for the USB_DEVICE_CRC16_ERR_INT interrupt.
    +            CRC16_ERR_INT_ST: u1,
    +            /// The raw interrupt status bit for the USB_DEVICE_STUFF_ERR_INT interrupt.
    +            STUFF_ERR_INT_ST: u1,
    +            /// The raw interrupt status bit for the USB_DEVICE_IN_TOKEN_REC_IN_EP1_INT
    +            /// interrupt.
    +            IN_TOKEN_REC_IN_EP1_INT_ST: u1,
    +            /// The raw interrupt status bit for the USB_DEVICE_USB_BUS_RESET_INT interrupt.
    +            USB_BUS_RESET_INT_ST: u1,
    +            /// The raw interrupt status bit for the USB_DEVICE_OUT_EP1_ZERO_PAYLOAD_INT
    +            /// interrupt.
    +            OUT_EP1_ZERO_PAYLOAD_INT_ST: u1,
    +            /// The raw interrupt status bit for the USB_DEVICE_OUT_EP2_ZERO_PAYLOAD_INT
    +            /// interrupt.
    +            OUT_EP2_ZERO_PAYLOAD_INT_ST: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0xc);
    +
    +        /// address: 0x60043010
    +        /// USB_DEVICE_INT_ENA_REG.
    +        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// The interrupt enable bit for the USB_DEVICE_JTAG_IN_FLUSH_INT interrupt.
    +            JTAG_IN_FLUSH_INT_ENA: u1,
    +            /// The interrupt enable bit for the USB_DEVICE_SOF_INT interrupt.
    +            SOF_INT_ENA: u1,
    +            /// The interrupt enable bit for the USB_DEVICE_SERIAL_OUT_RECV_PKT_INT interrupt.
    +            SERIAL_OUT_RECV_PKT_INT_ENA: u1,
    +            /// The interrupt enable bit for the USB_DEVICE_SERIAL_IN_EMPTY_INT interrupt.
    +            SERIAL_IN_EMPTY_INT_ENA: u1,
    +            /// The interrupt enable bit for the USB_DEVICE_PID_ERR_INT interrupt.
    +            PID_ERR_INT_ENA: u1,
    +            /// The interrupt enable bit for the USB_DEVICE_CRC5_ERR_INT interrupt.
    +            CRC5_ERR_INT_ENA: u1,
    +            /// The interrupt enable bit for the USB_DEVICE_CRC16_ERR_INT interrupt.
    +            CRC16_ERR_INT_ENA: u1,
    +            /// The interrupt enable bit for the USB_DEVICE_STUFF_ERR_INT interrupt.
    +            STUFF_ERR_INT_ENA: u1,
    +            /// The interrupt enable bit for the USB_DEVICE_IN_TOKEN_REC_IN_EP1_INT interrupt.
    +            IN_TOKEN_REC_IN_EP1_INT_ENA: u1,
    +            /// The interrupt enable bit for the USB_DEVICE_USB_BUS_RESET_INT interrupt.
    +            USB_BUS_RESET_INT_ENA: u1,
    +            /// The interrupt enable bit for the USB_DEVICE_OUT_EP1_ZERO_PAYLOAD_INT interrupt.
    +            OUT_EP1_ZERO_PAYLOAD_INT_ENA: u1,
    +            /// The interrupt enable bit for the USB_DEVICE_OUT_EP2_ZERO_PAYLOAD_INT interrupt.
    +            OUT_EP2_ZERO_PAYLOAD_INT_ENA: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0x10);
    +
    +        /// address: 0x60043014
    +        /// USB_DEVICE_INT_CLR_REG.
    +        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Set this bit to clear the USB_DEVICE_JTAG_IN_FLUSH_INT interrupt.
    +            JTAG_IN_FLUSH_INT_CLR: u1,
    +            /// Set this bit to clear the USB_DEVICE_JTAG_SOF_INT interrupt.
    +            SOF_INT_CLR: u1,
    +            /// Set this bit to clear the USB_DEVICE_SERIAL_OUT_RECV_PKT_INT interrupt.
    +            SERIAL_OUT_RECV_PKT_INT_CLR: u1,
    +            /// Set this bit to clear the USB_DEVICE_SERIAL_IN_EMPTY_INT interrupt.
    +            SERIAL_IN_EMPTY_INT_CLR: u1,
    +            /// Set this bit to clear the USB_DEVICE_PID_ERR_INT interrupt.
    +            PID_ERR_INT_CLR: u1,
    +            /// Set this bit to clear the USB_DEVICE_CRC5_ERR_INT interrupt.
    +            CRC5_ERR_INT_CLR: u1,
    +            /// Set this bit to clear the USB_DEVICE_CRC16_ERR_INT interrupt.
    +            CRC16_ERR_INT_CLR: u1,
    +            /// Set this bit to clear the USB_DEVICE_STUFF_ERR_INT interrupt.
    +            STUFF_ERR_INT_CLR: u1,
    +            /// Set this bit to clear the USB_DEVICE_IN_TOKEN_IN_EP1_INT interrupt.
    +            IN_TOKEN_REC_IN_EP1_INT_CLR: u1,
    +            /// Set this bit to clear the USB_DEVICE_USB_BUS_RESET_INT interrupt.
    +            USB_BUS_RESET_INT_CLR: u1,
    +            /// Set this bit to clear the USB_DEVICE_OUT_EP1_ZERO_PAYLOAD_INT interrupt.
    +            OUT_EP1_ZERO_PAYLOAD_INT_CLR: u1,
    +            /// Set this bit to clear the USB_DEVICE_OUT_EP2_ZERO_PAYLOAD_INT interrupt.
    +            OUT_EP2_ZERO_PAYLOAD_INT_CLR: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +        }), base_address + 0x14);
    +
    +        /// address: 0x60043018
    +        /// USB_DEVICE_CONF0_REG.
    +        pub const CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Select internal/external PHY
    +            PHY_SEL: u1,
    +            /// Enable software control USB D+ D- exchange
    +            EXCHG_PINS_OVERRIDE: u1,
    +            /// USB D+ D- exchange
    +            EXCHG_PINS: u1,
    +            /// Control single-end input high threshold,1.76V to 2V, step 80mV
    +            VREFH: u2,
    +            /// Control single-end input low threshold,0.8V to 1.04V, step 80mV
    +            VREFL: u2,
    +            /// Enable software control input threshold
    +            VREF_OVERRIDE: u1,
    +            /// Enable software control USB D+ D- pullup pulldown
    +            PAD_PULL_OVERRIDE: u1,
    +            /// Control USB D+ pull up.
    +            DP_PULLUP: u1,
    +            /// Control USB D+ pull down.
    +            DP_PULLDOWN: u1,
    +            /// Control USB D- pull up.
    +            DM_PULLUP: u1,
    +            /// Control USB D- pull down.
    +            DM_PULLDOWN: u1,
    +            /// Control pull up value.
    +            PULLUP_VALUE: u1,
    +            /// Enable USB pad function.
    +            USB_PAD_ENABLE: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +        }), base_address + 0x18);
    +
    +        /// address: 0x6004301c
    +        /// USB_DEVICE_TEST_REG.
    +        pub const TEST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Enable test of the USB pad
    +            ENABLE: u1,
    +            /// USB pad oen in test
    +            USB_OE: u1,
    +            /// USB D+ tx value in test
    +            TX_DP: u1,
    +            /// USB D- tx value in test
    +            TX_DM: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +        }), base_address + 0x1c);
    +
    +        /// address: 0x60043020
    +        /// USB_DEVICE_JFIFO_ST_REG.
    +        pub const JFIFO_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// JTAT in fifo counter.
    +            IN_FIFO_CNT: u2,
    +            /// 1: JTAG in fifo is empty.
    +            IN_FIFO_EMPTY: u1,
    +            /// 1: JTAG in fifo is full.
    +            IN_FIFO_FULL: u1,
    +            /// JTAT out fifo counter.
    +            OUT_FIFO_CNT: u2,
    +            /// 1: JTAG out fifo is empty.
    +            OUT_FIFO_EMPTY: u1,
    +            /// 1: JTAG out fifo is full.
    +            OUT_FIFO_FULL: u1,
    +            /// Write 1 to reset JTAG in fifo.
    +            IN_FIFO_RESET: u1,
    +            /// Write 1 to reset JTAG out fifo.
    +            OUT_FIFO_RESET: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +        }), base_address + 0x20);
    +
    +        /// address: 0x60043024
    +        /// USB_DEVICE_FRAM_NUM_REG.
    +        pub const FRAM_NUM = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// Frame index of received SOF frame.
    +            SOF_FRAME_INDEX: u11,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +        }), base_address + 0x24);
    +
    +        /// address: 0x60043028
    +        /// USB_DEVICE_IN_EP0_ST_REG.
    +        pub const IN_EP0_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// State of IN Endpoint 0.
    +            IN_EP0_STATE: u2,
    +            /// Write data address of IN endpoint 0.
    +            IN_EP0_WR_ADDR: u7,
    +            /// Read data address of IN endpoint 0.
    +            IN_EP0_RD_ADDR: u7,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x28);
    +
    +        /// address: 0x6004302c
    +        /// USB_DEVICE_IN_EP1_ST_REG.
    +        pub const IN_EP1_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// State of IN Endpoint 1.
    +            IN_EP1_STATE: u2,
    +            /// Write data address of IN endpoint 1.
    +            IN_EP1_WR_ADDR: u7,
    +            /// Read data address of IN endpoint 1.
    +            IN_EP1_RD_ADDR: u7,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x2c);
    +
    +        /// address: 0x60043030
    +        /// USB_DEVICE_IN_EP2_ST_REG.
    +        pub const IN_EP2_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// State of IN Endpoint 2.
    +            IN_EP2_STATE: u2,
    +            /// Write data address of IN endpoint 2.
    +            IN_EP2_WR_ADDR: u7,
    +            /// Read data address of IN endpoint 2.
    +            IN_EP2_RD_ADDR: u7,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x30);
    +
    +        /// address: 0x60043034
    +        /// USB_DEVICE_IN_EP3_ST_REG.
    +        pub const IN_EP3_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// State of IN Endpoint 3.
    +            IN_EP3_STATE: u2,
    +            /// Write data address of IN endpoint 3.
    +            IN_EP3_WR_ADDR: u7,
    +            /// Read data address of IN endpoint 3.
    +            IN_EP3_RD_ADDR: u7,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x34);
    +
    +        /// address: 0x60043038
    +        /// USB_DEVICE_OUT_EP0_ST_REG.
    +        pub const OUT_EP0_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// State of OUT Endpoint 0.
    +            OUT_EP0_STATE: u2,
    +            /// Write data address of OUT endpoint 0. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is
    +            /// detected, there are USB_DEVICE_OUT_EP0_WR_ADDR-2 bytes data in OUT EP0.
    +            OUT_EP0_WR_ADDR: u7,
    +            /// Read data address of OUT endpoint 0.
    +            OUT_EP0_RD_ADDR: u7,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x38);
    +
    +        /// address: 0x6004303c
    +        /// USB_DEVICE_OUT_EP1_ST_REG.
    +        pub const OUT_EP1_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// State of OUT Endpoint 1.
    +            OUT_EP1_STATE: u2,
    +            /// Write data address of OUT endpoint 1. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is
    +            /// detected, there are USB_DEVICE_OUT_EP1_WR_ADDR-2 bytes data in OUT EP1.
    +            OUT_EP1_WR_ADDR: u7,
    +            /// Read data address of OUT endpoint 1.
    +            OUT_EP1_RD_ADDR: u7,
    +            /// Data count in OUT endpoint 1 when one packet is received.
    +            OUT_EP1_REC_DATA_CNT: u7,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +        }), base_address + 0x3c);
    +
    +        /// address: 0x60043040
    +        /// USB_DEVICE_OUT_EP2_ST_REG.
    +        pub const OUT_EP2_ST = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// State of OUT Endpoint 2.
    +            OUT_EP2_STATE: u2,
    +            /// Write data address of OUT endpoint 2. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is
    +            /// detected, there are USB_DEVICE_OUT_EP2_WR_ADDR-2 bytes data in OUT EP2.
    +            OUT_EP2_WR_ADDR: u7,
    +            /// Read data address of OUT endpoint 2.
    +            OUT_EP2_RD_ADDR: u7,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +        }), base_address + 0x40);
    +
    +        /// address: 0x60043044
    +        /// USB_DEVICE_MISC_CONF_REG.
    +        pub const MISC_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// 1'h1: Force clock on for register. 1'h0: Support clock only when application
    +            /// writes registers.
    +            CLK_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +            padding30: u1,
    +        }), base_address + 0x44);
    +
    +        /// address: 0x60043048
    +        /// USB_DEVICE_MEM_CONF_REG.
    +        pub const MEM_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    +            /// 1: power down usb memory.
    +            USB_MEM_PD: u1,
    +            /// 1: Force clock on for usb memory.
    +            USB_MEM_CLK_EN: u1,
    +            padding0: u1,
    +            padding1: u1,
    +            padding2: u1,
    +            padding3: u1,
    +            padding4: u1,
    +            padding5: u1,
    +            padding6: u1,
    +            padding7: u1,
    +            padding8: u1,
    +            padding9: u1,
    +            padding10: u1,
    +            padding11: u1,
    +            padding12: u1,
    +            padding13: u1,
    +            padding14: u1,
    +            padding15: u1,
    +            padding16: u1,
    +            padding17: u1,
    +            padding18: u1,
    +            padding19: u1,
    +            padding20: u1,
    +            padding21: u1,
    +            padding22: u1,
    +            padding23: u1,
    +            padding24: u1,
    +            padding25: u1,
    +            padding26: u1,
    +            padding27: u1,
    +            padding28: u1,
    +            padding29: u1,
    +        }), base_address + 0x48);
    +
    +        /// address: 0x60043080
    +        /// USB_DEVICE_DATE_REG.
    +        pub const DATE = @intToPtr(*volatile u32, base_address + 0x80);
    +    };
    +
    +    /// XTS-AES-128 Flash Encryption
    +    pub const XTS_AES = struct {
    +        pub const base_address = 0x600cc000;
    +
    +        /// address: 0x600cc000
    +        /// The memory that stores plaintext
    +        pub const PLAIN_MEM = @intToPtr(*volatile [16]u8, base_address + 0x0);
    +
    +        /// address: 0x600cc040
    +        /// XTS-AES line-size register
    +        pub const LINESIZE = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x40);
    +
    +        /// address: 0x600cc044
    +        /// XTS-AES destination register
    +        pub const DESTINATION = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x44);
    +
    +        /// address: 0x600cc048
    +        /// XTS-AES physical address register
    +        pub const PHYSICAL_ADDRESS = @intToPtr(*volatile MmioInt(32, u30), base_address + 0x48);
    +
    +        /// address: 0x600cc04c
    +        /// XTS-AES trigger register
    +        pub const TRIGGER = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x4c);
    +
    +        /// address: 0x600cc050
    +        /// XTS-AES release register
    +        pub const RELEASE = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x50);
    +
    +        /// address: 0x600cc054
    +        /// XTS-AES destroy register
    +        pub const DESTROY = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x54);
    +
    +        /// address: 0x600cc058
    +        /// XTS-AES status register
    +        pub const STATE = @intToPtr(*volatile MmioInt(32, u2), base_address + 0x58);
    +
    +        /// address: 0x600cc05c
    +        /// XTS-AES version control register
    +        pub const DATE = @intToPtr(*volatile MmioInt(32, u30), base_address + 0x5c);
    +    };
    +};
    +
    +const std = @import("std");
    +
    +pub fn mmio(addr: usize, comptime size: u8, comptime PackedT: type) *volatile Mmio(size, PackedT) {
    +    return @intToPtr(*volatile Mmio(size, PackedT), addr);
    +}
    +
    +pub fn Mmio(comptime size: u8, comptime PackedT: type) type {
    +    if ((size % 8) != 0)
    +        @compileError("size must be divisible by 8!");
    +
    +    if (!std.math.isPowerOfTwo(size / 8))
    +        @compileError("size must encode a power of two number of bytes!");
    +
    +    const IntT = std.meta.Int(.unsigned, size);
    +
    +    if (@sizeOf(PackedT) != (size / 8))
    +        @compileError(std.fmt.comptimePrint("IntT and PackedT must have the same size!, they are {} and {} bytes respectively", .{ size / 8, @sizeOf(PackedT) }));
    +
    +    return extern struct {
    +        const Self = @This();
    +
    +        raw: IntT,
    +
    +        pub const underlying_type = PackedT;
    +
    +        pub inline fn read(addr: *volatile Self) PackedT {
    +            return @bitCast(PackedT, addr.raw);
    +        }
    +
    +        pub inline fn write(addr: *volatile Self, val: PackedT) void {
    +            // This is a workaround for a compiler bug related to miscompilation
    +            // If the tmp var is not used, result location will fuck things up
    +            var tmp = @bitCast(IntT, val);
    +            addr.raw = tmp;
    +        }
    +
    +        pub inline fn modify(addr: *volatile Self, fields: anytype) void {
    +            var val = read(addr);
    +            inline for (@typeInfo(@TypeOf(fields)).Struct.fields) |field| {
    +                @field(val, field.name) = @field(fields, field.name);
    +            }
    +            write(addr, val);
    +        }
    +
    +        pub inline fn toggle(addr: *volatile Self, fields: anytype) void {
    +            var val = read(addr);
    +            inline for (@typeInfo(@TypeOf(fields)).Struct.fields) |field| {
    +                @field(val, @tagName(field.default_value.?)) = !@field(val, @tagName(field.default_value.?));
    +            }
    +            write(addr, val);
    +        }
    +    };
    +}
    +
    +pub fn MmioInt(comptime size: u8, comptime T: type) type {
    +    return extern struct {
    +        const Self = @This();
    +
    +        raw: std.meta.Int(.unsigned, size),
    +
    +        pub inline fn read(addr: *volatile Self) T {
    +            return @truncate(T, addr.raw);
    +        }
    +
    +        pub inline fn modify(addr: *volatile Self, val: T) void {
    +            const Int = std.meta.Int(.unsigned, size);
    +            const mask = ~@as(Int, (1 << @bitSizeOf(T)) - 1);
    +
    +            var tmp = addr.raw;
    +            addr.raw = (tmp & mask) | val;
    +        }
    +    };
    +}
    +
    +pub fn mmioInt(addr: usize, comptime size: usize, comptime T: type) *volatile MmioInt(size, T) {
    +    return @intToPtr(*volatile MmioInt(size, T), addr);
    +}
    +
    +pub const InterruptVector = extern union {
    +    C: fn () callconv(.C) void,
    +    Naked: fn () callconv(.Naked) void,
    +    // Interrupt is not supported on arm
    +};
    +
    +const unhandled = InterruptVector{
    +    .C = struct {
    +        fn tmp() callconv(.C) noreturn {
    +            @panic("unhandled interrupt");
    +        }
    +    }.tmp,
    +};
    
    From e7e70cb96c5aaae4044ea903df1ac278f7d30f14 Mon Sep 17 00:00:00 2001
    From: =?UTF-8?q?Felix=20=22xq=22=20Quei=C3=9Fner?= 
    Date: Sat, 8 Oct 2022 13:02:39 +0200
    Subject: [PATCH 04/29] LED 1 is RED. Reset loop tho
    
    ---
     build.zig                       | 59 +++++++++++++++++++--------------
     src/example/blinky.zig          | 29 ++++++++++++++++
     src/main.zig                    | 24 --------------
     src/package/esp32-c3.zig        | 45 +++++++++++++++++++++++++
     src/package/espressif-riscv.zig | 12 +++++++
     vendor/microzig                 |  2 +-
     6 files changed, 122 insertions(+), 49 deletions(-)
     create mode 100644 src/example/blinky.zig
     delete mode 100644 src/main.zig
     create mode 100644 src/package/esp32-c3.zig
     create mode 100644 src/package/espressif-riscv.zig
    
    diff --git a/build.zig b/build.zig
    index 035b12a..3f49cf7 100644
    --- a/build.zig
    +++ b/build.zig
    @@ -1,34 +1,45 @@
     const std = @import("std");
    +const microzig = @import("zpm.zig").sdks.microzig;
     
     pub fn build(b: *std.build.Builder) void {
    -    // Standard target options allows the person running `zig build` to choose
    -    // what target to build for. Here we do not override the defaults, which
    -    // means any target is allowed, and the default is native. Other options
    -    // for restricting supported target set are available.
    -    const target = b.standardTargetOptions(.{});
    -
    -    // Standard release options allow the person running `zig build` to select
    -    // between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall.
         const mode = b.standardReleaseOptions();
     
    -    const exe = b.addExecutable("esp32-c3-bringup", "src/main.zig");
    -    exe.setTarget(target);
    -    exe.setBuildMode(mode);
    -    exe.install();
    +    const esp32_c3_cpu = microzig.Cpu{
    +        .name = "Espressif RISC-V",
    +        .path = "src/package/espressif-riscv.zig",
    +        .target = std.zig.CrossTarget{
    +            .cpu_arch = .riscv32,
    +            .cpu_model = .{ .explicit = &std.Target.riscv.cpu.generic_rv32 },
    +            .cpu_features_add = std.Target.riscv.featureSet(&.{
    +                std.Target.riscv.Feature.c,
    +                std.Target.riscv.Feature.m,
    +            }),
    +            .os_tag = .freestanding,
    +            .abi = .eabi,
    +        },
    +    };
     
    -    const run_cmd = exe.run();
    -    run_cmd.step.dependOn(b.getInstallStep());
    -    if (b.args) |args| {
    -        run_cmd.addArgs(args);
    -    }
    +    const esp32_c3 = microzig.Chip{
    +        .name = "ESP32 C3",
    +        .path = "src/package/esp32-c3.zig",
    +        .cpu = esp32_c3_cpu,
    +        .memory_regions = &.{
    +            .{ .kind = .flash, .offset = 0x4200_0000, .length = 0x0080_0000 }, // external memory, ibus
    +            .{ .kind = .ram, .offset = 0x3FC8_0000, .length = 0x0006_0000 }, // sram 1, data bus
    +        },
    +    };
     
    -    const run_step = b.step("run", "Run the app");
    -    run_step.dependOn(&run_cmd.step);
    +    var exe = microzig.addEmbeddedExecutable(
    +        b,
    +        "esp-bringup",
    +        "src/example/blinky.zig",
    +        .{ .chip = esp32_c3 },
    +        .{},
    +    );
    +    exe.setBuildMode(mode);
    +    exe.install();
     
    -    const exe_tests = b.addTest("src/main.zig");
    -    exe_tests.setTarget(target);
    -    exe_tests.setBuildMode(mode);
    +    const raw_step = exe.installRaw("firmware.bin", .{});
     
    -    const test_step = b.step("test", "Run unit tests");
    -    test_step.dependOn(&exe_tests.step);
    +    b.getInstallStep().dependOn(&raw_step.step);
     }
    diff --git a/src/example/blinky.zig b/src/example/blinky.zig
    new file mode 100644
    index 0000000..6bba15b
    --- /dev/null
    +++ b/src/example/blinky.zig
    @@ -0,0 +1,29 @@
    +const std = @import("std");
    +const microzig = @import("microzig");
    +
    +pub fn main() !void {
    +    // const led_r_mux = @ptrToInt(*volatile u32, IO_MUX_BASE + IO_MUX_GPIOn_REG(LED_R_PIN));
    +    // const led_g_mux = @ptrToInt(*volatile u32, IO_MUX_BASE + IO_MUX_GPIOn_REG(LED_G_PIN));
    +    // const led_b_mux = @ptrToInt(*volatile u32, IO_MUX_BASE + IO_MUX_GPIOn_REG(LED_B_PIN));
    +
    +    // led_r_mux.* = 0x80;
    +
    +    const gpio_out = @intToPtr(*volatile u32, GPIO_BASE + GPIO_OUT_REG);
    +    const gpio_ena = @intToPtr(*volatile u32, GPIO_BASE + GPIO_ENABLE_REG);
    +    gpio_ena.* = (1 << LED_R_PIN) | (1 << LED_G_PIN) | (1 << LED_B_PIN);
    +    gpio_out.* = (1 << LED_R_PIN) | (1 << LED_G_PIN) | (1 << LED_B_PIN);
    +}
    +
    +const GPIO_BASE = 0x6000_4000;
    +const IO_MUX_BASE = 0x6000_9000;
    +
    +const GPIO_OUT_REG = 0x0004;
    +const GPIO_ENABLE_REG = 0x0020;
    +
    +fn GPIO_FUNCn_OUT_SEL_CFG_REG(comptime n: comptime_int) comptime_int {
    +    return 0x0554 + 4 * n;
    +}
    +
    +const LED_R_PIN = 3;
    +const LED_G_PIN = 4;
    +const LED_B_PIN = 5;
    diff --git a/src/main.zig b/src/main.zig
    deleted file mode 100644
    index c8a3f67..0000000
    --- a/src/main.zig
    +++ /dev/null
    @@ -1,24 +0,0 @@
    -const std = @import("std");
    -
    -pub fn main() !void {
    -    // Prints to stderr (it's a shortcut based on `std.io.getStdErr()`)
    -    std.debug.print("All your {s} are belong to us.\n", .{"codebase"});
    -
    -    // stdout is for the actual output of your application, for example if you
    -    // are implementing gzip, then only the compressed bytes should be sent to
    -    // stdout, not any debugging messages.
    -    const stdout_file = std.io.getStdOut().writer();
    -    var bw = std.io.bufferedWriter(stdout_file);
    -    const stdout = bw.writer();
    -
    -    try stdout.print("Run `zig build test` to run the tests.\n", .{});
    -
    -    try bw.flush(); // don't forget to flush!
    -}
    -
    -test "simple test" {
    -    var list = std.ArrayList(i32).init(std.testing.allocator);
    -    defer list.deinit(); // try commenting this out and see if zig detects the memory leak!
    -    try list.append(42);
    -    try std.testing.expectEqual(@as(i32, 42), list.pop());
    -}
    diff --git a/src/package/esp32-c3.zig b/src/package/esp32-c3.zig
    new file mode 100644
    index 0000000..0a0f4fe
    --- /dev/null
    +++ b/src/package/esp32-c3.zig
    @@ -0,0 +1,45 @@
    +const std = @import("std");
    +const microzig = @import("microzig");
    +
    +pub const startup_logic = struct {
    +    comptime {
    +        // See this:
    +        // https://github.com/espressif/esp32c3-direct-boot-example
    +
    +        // Direct Boot: does not support Security Boot and programs run directly in flash. To enable this mode, make
    +        // sure that the first two words of the bin file downloading to flash (address: 0x42000000) are 0xaedb041d.
    +
    +        // In this case, the ROM bootloader sets up Flash MMU to map 4 MB of Flash to
    +        // addresses 0x42000000 (for code execution) and 0x3C000000 (for read-only data
    +        // access). The bootloader then jumps to address 0x42000008, i.e. to the
    +        // instruction at offset 8 in flash, immediately after the magic numbers.
    +
    +        asm (std.fmt.comptimePrint(".equ MICROZIG_INITIAL_STACK, {}", .{microzig.config.end_of_stack}));
    +
    +        asm (
    +            \\.extern _start
    +            \\.section microzig_flash_start
    +            \\.align 4
    +            \\.byte 0x1d, 0x04, 0xdb, 0xae
    +            \\.byte 0x1d, 0x04, 0xdb, 0xae
    +        );
    +    }
    +
    +    extern fn microzig_main() noreturn;
    +
    +    export fn _start() linksection("microzig_flash_start") callconv(.C) noreturn {
    +        asm volatile (
    +            \\li sp, MICROZIG_INITIAL_STACK
    +            \\lui  a0, %%hi(_rv32_trap)
    +            \\addi a0, a0, %%lo(_rv32_trap)
    +            \\sw t0, 0x305(zero)
    +        );
    +
    +        microzig.initializeSystemMemories();
    +        microzig_main();
    +    }
    +
    +    export fn _rv32_trap() callconv(.C) noreturn {
    +        while (true) {}
    +    }
    +};
    diff --git a/src/package/espressif-riscv.zig b/src/package/espressif-riscv.zig
    new file mode 100644
    index 0000000..34dbffd
    --- /dev/null
    +++ b/src/package/espressif-riscv.zig
    @@ -0,0 +1,12 @@
    +const std = @import("std");
    +const microzig = @import("microzig");
    +
    +pub inline fn cli() void {
    +    asm volatile ("");
    +}
    +
    +pub inline fn sei() void {
    +    asm volatile ("");
    +}
    +
    +pub const startup_logic = microzig.chip.startup_logic;
    diff --git a/vendor/microzig b/vendor/microzig
    index 15bc1fc..0d9721d 160000
    --- a/vendor/microzig
    +++ b/vendor/microzig
    @@ -1 +1 @@
    -Subproject commit 15bc1fc06da3b6c622a21fa438e40be247d9dee1
    +Subproject commit 0d9721d9070c356f4ffaf6f4a312bccdb574b8a9
    
    From 33984fa9605172a8b8e55711738d2e1b4be97247 Mon Sep 17 00:00:00 2001
    From: Matt Knight 
    Date: Sat, 8 Oct 2022 13:13:43 +0200
    Subject: [PATCH 05/29] one readme
    
    ---
     README.md | 1 -
     1 file changed, 1 deletion(-)
     delete mode 100644 README.md
    
    diff --git a/README.md b/README.md
    deleted file mode 100644
    index 2cd0dfa..0000000
    --- a/README.md
    +++ /dev/null
    @@ -1 +0,0 @@
    -# esp32-c3-bringup
    
    From e84264e64ba5fc8cf5e01a5035c8e64e2fe2270a Mon Sep 17 00:00:00 2001
    From: =?UTF-8?q?Felix=20=22xq=22=20Quei=C3=9Fner?= 
    Date: Sat, 8 Oct 2022 16:19:20 +0200
    Subject: [PATCH 06/29] Blinky! \o/
    
    ---
     build.zig                                  |  2 +-
     perform-flash.sh                           | 13 +++++
     src/example/blinky.zig                     | 59 +++++++++++++++-------
     src/hal/root.zig                           | 54 ++++++++++++++++++++
     src/package/esp32-c3.zig                   | 42 +++++++++++----
     src/package/espressif-riscv.zig            | 31 +++++++++++-
     src/{esp32c3.zig => package/registers.zig} |  0
     7 files changed, 171 insertions(+), 30 deletions(-)
     create mode 100755 perform-flash.sh
     create mode 100644 src/hal/root.zig
     rename src/{esp32c3.zig => package/registers.zig} (100%)
    
    diff --git a/build.zig b/build.zig
    index 3f49cf7..c0d71db 100644
    --- a/build.zig
    +++ b/build.zig
    @@ -34,7 +34,7 @@ pub fn build(b: *std.build.Builder) void {
             "esp-bringup",
             "src/example/blinky.zig",
             .{ .chip = esp32_c3 },
    -        .{},
    +        .{ .hal_package_path = .{ .path = "src/hal/root.zig" } },
         );
         exe.setBuildMode(mode);
         exe.install();
    diff --git a/perform-flash.sh b/perform-flash.sh
    new file mode 100755
    index 0000000..ce1f5de
    --- /dev/null
    +++ b/perform-flash.sh
    @@ -0,0 +1,13 @@
    +#!/bin/bash
    +
    +set -e
    +
    +clear
    +zig build -Drelease-small
    +llvm-objdump -S ./zig-out/bin/esp-bringup > /tmp/dump.txt
    +esptool.py \
    +  --port /dev/ttyUSB0 \
    +  --baud 115200 \
    +  write_flash 0x00000000 zig-out/bin/firmware.bin \
    +  --verify
    +picocom --baud 115200 /dev/ttyUSB0
    \ No newline at end of file
    diff --git a/src/example/blinky.zig b/src/example/blinky.zig
    index 6bba15b..0518c53 100644
    --- a/src/example/blinky.zig
    +++ b/src/example/blinky.zig
    @@ -1,29 +1,52 @@
     const std = @import("std");
     const microzig = @import("microzig");
     
    +const dogfood: u32 = 0x50D83AA1;
    +const super_dogfood: u32 = 0x8F1D312A;
    +
     pub fn main() !void {
    -    // const led_r_mux = @ptrToInt(*volatile u32, IO_MUX_BASE + IO_MUX_GPIOn_REG(LED_R_PIN));
    -    // const led_g_mux = @ptrToInt(*volatile u32, IO_MUX_BASE + IO_MUX_GPIOn_REG(LED_G_PIN));
    -    // const led_b_mux = @ptrToInt(*volatile u32, IO_MUX_BASE + IO_MUX_GPIOn_REG(LED_B_PIN));
    +    microzig.chip.registers.TIMG0.WDTWPROTECT.raw = dogfood;
    +    microzig.chip.registers.TIMG0.WDTCONFIG0.raw = 0;
    +    microzig.chip.registers.TIMG0.WDTWPROTECT.raw = 0;
     
    -    // led_r_mux.* = 0x80;
    +    microzig.chip.registers.RTC_CNTL.WDTWPROTECT.raw = dogfood;
    +    microzig.chip.registers.RTC_CNTL.WDTCONFIG0.raw = 0;
    +    microzig.chip.registers.RTC_CNTL.WDTWPROTECT.raw = 0;
     
    -    const gpio_out = @intToPtr(*volatile u32, GPIO_BASE + GPIO_OUT_REG);
    -    const gpio_ena = @intToPtr(*volatile u32, GPIO_BASE + GPIO_ENABLE_REG);
    -    gpio_ena.* = (1 << LED_R_PIN) | (1 << LED_G_PIN) | (1 << LED_B_PIN);
    -    gpio_out.* = (1 << LED_R_PIN) | (1 << LED_G_PIN) | (1 << LED_B_PIN);
    -}
    +    microzig.chip.registers.RTC_CNTL.SWD_WPROTECT.raw = super_dogfood;
    +    microzig.chip.registers.RTC_CNTL.SWD_CONF.modify(.{ .SWD_DISABLE = 1 });
    +    microzig.chip.registers.RTC_CNTL.SWD_WPROTECT.raw = 0;
    +
    +    microzig.chip.registers.INTERRUPT_CORE0.CPU_INT_ENABLE.* = 0;
     
    -const GPIO_BASE = 0x6000_4000;
    -const IO_MUX_BASE = 0x6000_9000;
    +    microzig.hal.gpio.init(LED_R_PIN, .{
    +        .direction = .output,
    +        .direct_io = true,
    +    });
    +    microzig.hal.gpio.init(LED_G_PIN, .{
    +        .direction = .output,
    +        .direct_io = true,
    +    });
    +    microzig.hal.gpio.init(LED_B_PIN, .{
    +        .direction = .output,
    +        .direct_io = true,
    +    });
     
    -const GPIO_OUT_REG = 0x0004;
    -const GPIO_ENABLE_REG = 0x0020;
    +    microzig.hal.uart.write(0, "Hello from Zig!\r\n");
     
    -fn GPIO_FUNCn_OUT_SEL_CFG_REG(comptime n: comptime_int) comptime_int {
    -    return 0x0554 + 4 * n;
    +    while (true) {
    +        microzig.chip.registers.GPIO.OUT.modify(.{ .DATA_ORIG = (1 << LED_R_PIN) });
    +        microzig.hal.uart.write(0, "R");
    +        microzig.debug.busySleep(1_000_000);
    +        microzig.chip.registers.GPIO.OUT.modify(.{ .DATA_ORIG = (1 << LED_G_PIN) });
    +        microzig.hal.uart.write(0, "G");
    +        microzig.debug.busySleep(1_000_000);
    +        microzig.chip.registers.GPIO.OUT.modify(.{ .DATA_ORIG = (1 << LED_B_PIN) });
    +        microzig.hal.uart.write(0, "B");
    +        microzig.debug.busySleep(1_000_000);
    +    }
     }
     
    -const LED_R_PIN = 3;
    -const LED_G_PIN = 4;
    -const LED_B_PIN = 5;
    +const LED_R_PIN = 3; // GPIO
    +const LED_G_PIN = 16; // GPIO
    +const LED_B_PIN = 17; // GPIO
    diff --git a/src/hal/root.zig b/src/hal/root.zig
    new file mode 100644
    index 0000000..d87dab8
    --- /dev/null
    +++ b/src/hal/root.zig
    @@ -0,0 +1,54 @@
    +const std = @import("std");
    +const microzig = @import("microzig");
    +const regz = microzig.chip.registers;
    +
    +pub const gpio = struct {
    +    fn getRegNamed(comptime fld: []const u8) @TypeOf(@field(regz.GPIO, fld)) {
    +        return @field(regz.GPIO, fld);
    +    }
    +
    +    fn getReg(comptime template: []const u8, comptime pin: comptime_int) @TypeOf(@field(regz.GPIO, std.fmt.comptimePrint(template, .{pin}))) {
    +        return getRegNamed(comptime std.fmt.comptimePrint(template, .{pin}));
    +    }
    +
    +    fn assertRange(comptime p: comptime_int) void {
    +        if (p < 0 or p >= 21)
    +            @compileError(std.fmt.comptimePrint("GPIO {} does not exist. GPIO pins can be between 0 and 21", .{p}));
    +    }
    +
    +    pub const Config = struct {
    +        function: u8 = 0x80,
    +        invert_function: bool = false,
    +        direction: microzig.gpio.Direction,
    +        direct_io: bool = false,
    +        invert_direct_io: bool = false,
    +    };
    +
    +    pub fn init(comptime pin: comptime_int, comptime config: Config) void {
    +        assertRange(pin);
    +        getReg("FUNC{}_OUT_SEL_CFG", pin).modify(.{
    +            .OUT_SEL = config.function,
    +            .INV_SEL = @boolToInt(config.invert_function),
    +            .OEN_SEL = @boolToInt(config.direct_io),
    +            .OEN_INV_SEL = @boolToInt(config.invert_direct_io),
    +        });
    +        switch (config.direction) {
    +            .input => microzig.chip.registers.GPIO.ENABLE.raw &= ~(@as(u32, 1) << pin),
    +            .output => microzig.chip.registers.GPIO.ENABLE.raw |= (@as(u32, 1) << pin),
    +        }
    +    }
    +};
    +
    +pub const uart = struct {
    +    fn reg(comptime index: comptime_int) @TypeOf(@field(regz, std.fmt.comptimePrint("UART{}", .{index}))) {
    +        return @field(regz, std.fmt.comptimePrint("UART{}", .{index}));
    +    }
    +
    +    pub fn write(comptime index: comptime_int, slice: []const u8) void {
    +        const r = reg(index);
    +        for (slice) |c| {
    +            while (r.STATUS.read().TXFIFO_CNT > 8) {}
    +            r.FIFO.raw = c;
    +        }
    +    }
    +};
    diff --git a/src/package/esp32-c3.zig b/src/package/esp32-c3.zig
    index 0a0f4fe..0ab4944 100644
    --- a/src/package/esp32-c3.zig
    +++ b/src/package/esp32-c3.zig
    @@ -1,6 +1,8 @@
     const std = @import("std");
     const microzig = @import("microzig");
     
    +pub const registers = @import("registers.zig").registers;
    +
     pub const startup_logic = struct {
         comptime {
             // See this:
    @@ -14,8 +16,6 @@ pub const startup_logic = struct {
             // access). The bootloader then jumps to address 0x42000008, i.e. to the
             // instruction at offset 8 in flash, immediately after the magic numbers.
     
    -        asm (std.fmt.comptimePrint(".equ MICROZIG_INITIAL_STACK, {}", .{microzig.config.end_of_stack}));
    -
             asm (
                 \\.extern _start
                 \\.section microzig_flash_start
    @@ -27,14 +27,14 @@ pub const startup_logic = struct {
     
         extern fn microzig_main() noreturn;
     
    -    export fn _start() linksection("microzig_flash_start") callconv(.C) noreturn {
    -        asm volatile (
    -            \\li sp, MICROZIG_INITIAL_STACK
    -            \\lui  a0, %%hi(_rv32_trap)
    -            \\addi a0, a0, %%lo(_rv32_trap)
    -            \\sw t0, 0x305(zero)
    +    export fn _start() linksection("microzig_flash_start") callconv(.Naked) noreturn {
    +        microzig.cpu.cli();
    +        asm volatile ("mv sp, %[eos]"
    +            :
    +            : [eos] "r" (@as(u32, microzig.config.end_of_stack)),
             );
    -
    +        asm volatile ("la gp, __global_pointer$");
    +        microzig.cpu.setStatusBit(.mtvec, microzig.config.end_of_stack);
             microzig.initializeSystemMemories();
             microzig_main();
         }
    @@ -42,4 +42,28 @@ pub const startup_logic = struct {
         export fn _rv32_trap() callconv(.C) noreturn {
             while (true) {}
         }
    +
    +    const vector_table = [_]fn () callconv(.C) noreturn{
    +        _rv32_trap,
    +        _rv32_trap,
    +        _rv32_trap,
    +        _rv32_trap,
    +        _rv32_trap,
    +        _rv32_trap,
    +        _rv32_trap,
    +        _rv32_trap,
    +        _rv32_trap,
    +        _rv32_trap,
    +        _rv32_trap,
    +        _rv32_trap,
    +        _rv32_trap,
    +        _rv32_trap,
    +        _rv32_trap,
    +        _rv32_trap,
    +        _rv32_trap,
    +        _rv32_trap,
    +        _rv32_trap,
    +        _rv32_trap,
    +        _rv32_trap,
    +    };
     };
    diff --git a/src/package/espressif-riscv.zig b/src/package/espressif-riscv.zig
    index 34dbffd..06d7bc4 100644
    --- a/src/package/espressif-riscv.zig
    +++ b/src/package/espressif-riscv.zig
    @@ -1,12 +1,39 @@
     const std = @import("std");
     const microzig = @import("microzig");
     
    +pub const StatusRegister = enum(u8) {
    +    // machine information
    +    mvendorid,
    +    marchid,
    +    mimpid,
    +    mhartid,
    +
    +    // machine trap setup
    +    mstatus,
    +    misa,
    +    mtvec,
    +};
    +
    +pub inline fn setStatusBit(comptime reg: StatusRegister, bits: u32) void {
    +    asm volatile ("csrrs zero, " ++ @tagName(reg) ++ ", %[value]"
    +        :
    +        : [value] "r" (bits),
    +    );
    +}
    +
    +pub inline fn clearStatusBit(comptime reg: StatusRegister, bits: u32) void {
    +    asm volatile ("csrrc zero, " ++ @tagName(reg) ++ ", %[value]"
    +        :
    +        : [value] "r" (bits),
    +    );
    +}
    +
     pub inline fn cli() void {
    -    asm volatile ("");
    +    clearStatusBit(.mstatus, 0x08);
     }
     
     pub inline fn sei() void {
    -    asm volatile ("");
    +    setStatusBit(.mstatus, 0x08);
     }
     
     pub const startup_logic = microzig.chip.startup_logic;
    diff --git a/src/esp32c3.zig b/src/package/registers.zig
    similarity index 100%
    rename from src/esp32c3.zig
    rename to src/package/registers.zig
    
    From 24bb6dced705bef2d5db29a4cdb398327ff1dffb Mon Sep 17 00:00:00 2001
    From: Matt Knight 
    Date: Mon, 20 Feb 2023 11:03:20 -0800
    Subject: [PATCH 07/29] add microzig submodule (#1)
    
    ---
     .gitmodules   | 3 +++
     deps/microzig | 1 +
     2 files changed, 4 insertions(+)
     create mode 160000 deps/microzig
    
    diff --git a/.gitmodules b/.gitmodules
    index 54620ef..911b8cf 100644
    --- a/.gitmodules
    +++ b/.gitmodules
    @@ -1,3 +1,6 @@
     [submodule "vendor/microzig"]
     	path = vendor/microzig
     	url = https://github.com/ZigEmbeddedGroup/microzig
    +[submodule "deps/microzig"]
    +	path = deps/microzig
    +	url = https://github.com/ZigEmbeddedGroup/microzig.git
    diff --git a/deps/microzig b/deps/microzig
    new file mode 160000
    index 0000000..4bb6561
    --- /dev/null
    +++ b/deps/microzig
    @@ -0,0 +1 @@
    +Subproject commit 4bb65617a47dc30282ffe340cc45d202b973650b
    
    From f625be1dff15eb1dac1fd5c29e2c7dec4604d3bd Mon Sep 17 00:00:00 2001
    From: Matt Knight 
    Date: Mon, 20 Feb 2023 11:11:54 -0800
    Subject: [PATCH 08/29] update microzig (#2)
    
    Co-authored-by: mattnite 
    ---
     deps/microzig | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/deps/microzig b/deps/microzig
    index 4bb6561..831cfff 160000
    --- a/deps/microzig
    +++ b/deps/microzig
    @@ -1 +1 @@
    -Subproject commit 4bb65617a47dc30282ffe340cc45d202b973650b
    +Subproject commit 831cfff35c259d68ee023ba7bb94dae8b7b94bec
    
    From 92d7d14d124c799f20c3074633565993fbc2585b Mon Sep 17 00:00:00 2001
    From: Matt Knight 
    Date: Tue, 28 Feb 2023 01:37:40 -0800
    Subject: [PATCH 09/29] Update microzig (#3)
    
    * update microzig
    
    * update to new api
    
    ---------
    
    Co-authored-by: mattnite 
    ---
     build.zig     | 25 ++++++++++++++++---------
     deps/microzig |  2 +-
     2 files changed, 17 insertions(+), 10 deletions(-)
    
    diff --git a/build.zig b/build.zig
    index c0d71db..dd5a65c 100644
    --- a/build.zig
    +++ b/build.zig
    @@ -2,7 +2,7 @@ const std = @import("std");
     const microzig = @import("zpm.zig").sdks.microzig;
     
     pub fn build(b: *std.build.Builder) void {
    -    const mode = b.standardReleaseOptions();
    +    const optimize = b.standardOptimizeOption(.{});
     
         const esp32_c3_cpu = microzig.Cpu{
             .name = "Espressif RISC-V",
    @@ -21,7 +21,13 @@ pub fn build(b: *std.build.Builder) void {
     
         const esp32_c3 = microzig.Chip{
             .name = "ESP32 C3",
    -        .path = "src/package/esp32-c3.zig",
    +        .source = .{
    +            .path = "src/package/esp32-c3.zig",
    +        },
    +        .hal = .{
    +            .source = "src/hal/root.zig",
    +        },
    +
             .cpu = esp32_c3_cpu,
             .memory_regions = &.{
                 .{ .kind = .flash, .offset = 0x4200_0000, .length = 0x0080_0000 }, // external memory, ibus
    @@ -29,13 +35,14 @@ pub fn build(b: *std.build.Builder) void {
             },
         };
     
    -    var exe = microzig.addEmbeddedExecutable(
    -        b,
    -        "esp-bringup",
    -        "src/example/blinky.zig",
    -        .{ .chip = esp32_c3 },
    -        .{ .hal_package_path = .{ .path = "src/hal/root.zig" } },
    -    );
    +    var exe = microzig.addEmbeddedExecutable(b, .{
    +        .name = "esp-bringup",
    +        .source_file = .{
    +            .path = "src/example/blinky.zig",
    +        },
    +        .backing = .{ .chip = esp32_c3 },
    +        .optimize = optimize,
    +    });
         exe.setBuildMode(mode);
         exe.install();
     
    diff --git a/deps/microzig b/deps/microzig
    index 831cfff..b6fc3ab 160000
    --- a/deps/microzig
    +++ b/deps/microzig
    @@ -1 +1 @@
    -Subproject commit 831cfff35c259d68ee023ba7bb94dae8b7b94bec
    +Subproject commit b6fc3abbf7a91cb0cdafc7843ac7e6c26042ff84
    
    From 52092330a2a251962bf8681f0148b5dafb682c4a Mon Sep 17 00:00:00 2001
    From: Matt Knight 
    Date: Tue, 28 Feb 2023 01:46:44 -0800
    Subject: [PATCH 10/29] update microzig (#4)
    
    Co-authored-by: mattnite 
    ---
     deps/microzig | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/deps/microzig b/deps/microzig
    index b6fc3ab..08e7d5b 160000
    --- a/deps/microzig
    +++ b/deps/microzig
    @@ -1 +1 @@
    -Subproject commit b6fc3abbf7a91cb0cdafc7843ac7e6c26042ff84
    +Subproject commit 08e7d5b01a8ca6a53e3892f763507f1ff3b07725
    
    From 2381f96b9afee214b3e7f84beab937038e0b947b Mon Sep 17 00:00:00 2001
    From: Matt Knight 
    Date: Thu, 2 Mar 2023 01:13:42 -0800
    Subject: [PATCH 11/29] organzie (#5)
    
    * organzie
    
    * add buildkite pipeline
    ---
     .buildkite/pipeline.yml                       |     4 +
     build.zig                                     |    43 +-
     src/chips.zig                                 |    23 +
     src/chips/ESP32_C3.json                       | 33570 ++++++++++++++
     src/chips/ESP32_C3.zig                        | 12378 +++++
     src/cpus.zig                                  |    23 +
     .../esp32-c3.zig => cpus/espressif-riscv.zig} |    38 +-
     src/example/blinky.zig                        |    37 +-
     src/{hal/root.zig => hals/ESP32_C3.zig}       |    23 +-
     src/package/espressif-riscv.zig               |    39 -
     src/package/registers.zig                     | 37956 ----------------
     11 files changed, 46068 insertions(+), 38066 deletions(-)
     create mode 100644 .buildkite/pipeline.yml
     create mode 100644 src/chips.zig
     create mode 100644 src/chips/ESP32_C3.json
     create mode 100644 src/chips/ESP32_C3.zig
     create mode 100644 src/cpus.zig
     rename src/{package/esp32-c3.zig => cpus/espressif-riscv.zig} (72%)
     rename src/{hal/root.zig => hals/ESP32_C3.zig} (57%)
     delete mode 100644 src/package/espressif-riscv.zig
     delete mode 100644 src/package/registers.zig
    
    diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml
    new file mode 100644
    index 0000000..7767bbb
    --- /dev/null
    +++ b/.buildkite/pipeline.yml
    @@ -0,0 +1,4 @@
    +steps:
    +  - group: Build
    +    steps:
    +    - command: zig build
    diff --git a/build.zig b/build.zig
    index dd5a65c..f96f446 100644
    --- a/build.zig
    +++ b/build.zig
    @@ -1,52 +1,19 @@
     const std = @import("std");
    -const microzig = @import("zpm.zig").sdks.microzig;
    +const microzig = @import("deps/microzig/build.zig");
    +
    +pub const chips = @import("src/chips.zig");
    +pub const cpus = @import("src/cpus.zig");
     
     pub fn build(b: *std.build.Builder) void {
         const optimize = b.standardOptimizeOption(.{});
     
    -    const esp32_c3_cpu = microzig.Cpu{
    -        .name = "Espressif RISC-V",
    -        .path = "src/package/espressif-riscv.zig",
    -        .target = std.zig.CrossTarget{
    -            .cpu_arch = .riscv32,
    -            .cpu_model = .{ .explicit = &std.Target.riscv.cpu.generic_rv32 },
    -            .cpu_features_add = std.Target.riscv.featureSet(&.{
    -                std.Target.riscv.Feature.c,
    -                std.Target.riscv.Feature.m,
    -            }),
    -            .os_tag = .freestanding,
    -            .abi = .eabi,
    -        },
    -    };
    -
    -    const esp32_c3 = microzig.Chip{
    -        .name = "ESP32 C3",
    -        .source = .{
    -            .path = "src/package/esp32-c3.zig",
    -        },
    -        .hal = .{
    -            .source = "src/hal/root.zig",
    -        },
    -
    -        .cpu = esp32_c3_cpu,
    -        .memory_regions = &.{
    -            .{ .kind = .flash, .offset = 0x4200_0000, .length = 0x0080_0000 }, // external memory, ibus
    -            .{ .kind = .ram, .offset = 0x3FC8_0000, .length = 0x0006_0000 }, // sram 1, data bus
    -        },
    -    };
    -
         var exe = microzig.addEmbeddedExecutable(b, .{
             .name = "esp-bringup",
             .source_file = .{
                 .path = "src/example/blinky.zig",
             },
    -        .backing = .{ .chip = esp32_c3 },
    +        .backing = .{ .chip = chips.esp32_c3 },
             .optimize = optimize,
         });
    -    exe.setBuildMode(mode);
         exe.install();
    -
    -    const raw_step = exe.installRaw("firmware.bin", .{});
    -
    -    b.getInstallStep().dependOn(&raw_step.step);
     }
    diff --git a/src/chips.zig b/src/chips.zig
    new file mode 100644
    index 0000000..14769f3
    --- /dev/null
    +++ b/src/chips.zig
    @@ -0,0 +1,23 @@
    +const std = @import("std");
    +const microzig = @import("../deps/microzig/build.zig");
    +const cpus = @import("cpus.zig");
    +
    +fn root_dir() []const u8 {
    +    return std.fs.path.dirname(@src().file) orelse unreachable;
    +}
    +
    +pub const esp32_c3 = microzig.Chip{
    +    .name = "ESP32-C3",
    +    .source = .{
    +        .path = root_dir() ++ "/chips/ESP32_C3.zig",
    +    },
    +    .hal = .{
    +        .path = root_dir() ++ "/hals/ESP32_C3.zig",
    +    },
    +
    +    .cpu = cpus.esp32_c3,
    +    .memory_regions = &.{
    +        .{ .kind = .flash, .offset = 0x4200_0000, .length = 0x0080_0000 }, // external memory, ibus
    +        .{ .kind = .ram, .offset = 0x3FC8_0000, .length = 0x0006_0000 }, // sram 1, data bus
    +    },
    +};
    diff --git a/src/chips/ESP32_C3.json b/src/chips/ESP32_C3.json
    new file mode 100644
    index 0000000..4691dc7
    --- /dev/null
    +++ b/src/chips/ESP32_C3.json
    @@ -0,0 +1,33570 @@
    +{
    +  "version": "0.1.0",
    +  "types": {
    +    "peripherals": {
    +      "AES": {
    +        "description": "AES (Advanced Encryption Standard) Accelerator",
    +        "children": {
    +          "registers": {
    +            "KEY_0": {
    +              "description": "Key material key_0 configure register",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY_0": {
    +                    "description": "This bits stores key_0 that is a part of key material.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "KEY_1": {
    +              "description": "Key material key_1 configure register",
    +              "offset": 4,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY_1": {
    +                    "description": "This bits stores key_1 that is a part of key material.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "KEY_2": {
    +              "description": "Key material key_2 configure register",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY_2": {
    +                    "description": "This bits stores key_2 that is a part of key material.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "KEY_3": {
    +              "description": "Key material key_3 configure register",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY_3": {
    +                    "description": "This bits stores key_3 that is a part of key material.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "KEY_4": {
    +              "description": "Key material key_4 configure register",
    +              "offset": 16,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY_4": {
    +                    "description": "This bits stores key_4 that is a part of key material.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "KEY_5": {
    +              "description": "Key material key_5 configure register",
    +              "offset": 20,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY_5": {
    +                    "description": "This bits stores key_5 that is a part of key material.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "KEY_6": {
    +              "description": "Key material key_6 configure register",
    +              "offset": 24,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY_6": {
    +                    "description": "This bits stores key_6 that is a part of key material.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "KEY_7": {
    +              "description": "Key material key_7 configure register",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY_7": {
    +                    "description": "This bits stores key_7 that is a part of key material.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "TEXT_IN_0": {
    +              "description": "source text material text_in_0 configure register",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TEXT_IN_0": {
    +                    "description": "This bits stores text_in_0 that is a part of source text material.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "TEXT_IN_1": {
    +              "description": "source text material text_in_1 configure register",
    +              "offset": 36,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TEXT_IN_1": {
    +                    "description": "This bits stores text_in_1 that is a part of source text material.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "TEXT_IN_2": {
    +              "description": "source text material text_in_2 configure register",
    +              "offset": 40,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TEXT_IN_2": {
    +                    "description": "This bits stores text_in_2 that is a part of source text material.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "TEXT_IN_3": {
    +              "description": "source text material text_in_3 configure register",
    +              "offset": 44,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TEXT_IN_3": {
    +                    "description": "This bits stores text_in_3 that is a part of source text material.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "TEXT_OUT_0": {
    +              "description": "result text material text_out_0 configure register",
    +              "offset": 48,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TEXT_OUT_0": {
    +                    "description": "This bits stores text_out_0 that is a part of result text material.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "TEXT_OUT_1": {
    +              "description": "result text material text_out_1 configure register",
    +              "offset": 52,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TEXT_OUT_1": {
    +                    "description": "This bits stores text_out_1 that is a part of result text material.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "TEXT_OUT_2": {
    +              "description": "result text material text_out_2 configure register",
    +              "offset": 56,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TEXT_OUT_2": {
    +                    "description": "This bits stores text_out_2 that is a part of result text material.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "TEXT_OUT_3": {
    +              "description": "result text material text_out_3 configure register",
    +              "offset": 60,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TEXT_OUT_3": {
    +                    "description": "This bits stores text_out_3 that is a part of result text material.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "MODE": {
    +              "description": "AES Mode register",
    +              "offset": 64,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "MODE": {
    +                    "description": "This bits decides which one operation mode will be used. 3'd0: AES-EN-128, 3'd1: AES-EN-192, 3'd2: AES-EN-256, 3'd4: AES-DE-128, 3'd5: AES-DE-192, 3'd6: AES-DE-256.",
    +                    "offset": 0,
    +                    "size": 3
    +                  }
    +                }
    +              }
    +            },
    +            "ENDIAN": {
    +              "description": "AES Endian configure register",
    +              "offset": 68,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ENDIAN": {
    +                    "description": "endian. [1:0] key endian, [3:2] text_in endian or in_stream endian,  [5:4] text_out endian or out_stream endian",
    +                    "offset": 0,
    +                    "size": 6
    +                  }
    +                }
    +              }
    +            },
    +            "TRIGGER": {
    +              "description": "AES trigger register",
    +              "offset": 72,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TRIGGER": {
    +                    "description": "Set this bit to start AES calculation.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "STATE": {
    +              "description": "AES state register",
    +              "offset": 76,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "STATE": {
    +                    "description": "Those bits shows AES status. For typical AES, 0: idle, 1: busy. For DMA-AES, 0: idle, 1: busy, 2: calculation_done.",
    +                    "offset": 0,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IV_MEM": {
    +              "description": "The memory that stores initialization vector",
    +              "offset": 80,
    +              "size": 8,
    +              "count": 16,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295
    +            },
    +            "H_MEM": {
    +              "description": "The memory that stores GCM hash subkey",
    +              "offset": 96,
    +              "size": 8,
    +              "count": 16,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295
    +            },
    +            "J0_MEM": {
    +              "description": "The memory that stores J0",
    +              "offset": 112,
    +              "size": 8,
    +              "count": 16,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295
    +            },
    +            "T0_MEM": {
    +              "description": "The memory that stores T0",
    +              "offset": 128,
    +              "size": 8,
    +              "count": 16,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295
    +            },
    +            "DMA_ENABLE": {
    +              "description": "DMA-AES working mode register",
    +              "offset": 144,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_ENABLE": {
    +                    "description": "1'b0: typical AES working mode, 1'b1: DMA-AES working mode.",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "BLOCK_MODE": {
    +              "description": "AES cipher block mode register",
    +              "offset": 148,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BLOCK_MODE": {
    +                    "description": "Those bits decides which block mode will be used. 0x0: ECB, 0x1: CBC, 0x2: OFB, 0x3: CTR, 0x4: CFB-8, 0x5: CFB-128, 0x6: GCM, 0x7: reserved.",
    +                    "offset": 0,
    +                    "size": 3
    +                  }
    +                }
    +              }
    +            },
    +            "BLOCK_NUM": {
    +              "description": "AES block number register",
    +              "offset": 152,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BLOCK_NUM": {
    +                    "description": "Those bits stores the number of Plaintext/ciphertext block.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "INC_SEL": {
    +              "description": "Standard incrementing function configure register",
    +              "offset": 156,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INC_SEL": {
    +                    "description": "This bit decides the standard incrementing function. 0: INC32. 1: INC128.",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "AAD_BLOCK_NUM": {
    +              "description": "Additional Authential Data block number register",
    +              "offset": 160,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "AAD_BLOCK_NUM": {
    +                    "description": "Those bits stores the number of AAD block.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "REMAINDER_BIT_NUM": {
    +              "description": "AES remainder bit number register",
    +              "offset": 164,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "REMAINDER_BIT_NUM": {
    +                    "description": "Those bits stores the number of remainder bit.",
    +                    "offset": 0,
    +                    "size": 7
    +                  }
    +                }
    +              }
    +            },
    +            "CONTINUE": {
    +              "description": "AES continue register",
    +              "offset": 168,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CONTINUE": {
    +                    "description": "Set this bit to continue GCM operation.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_CLEAR": {
    +              "description": "AES Interrupt clear register",
    +              "offset": 172,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INT_CLEAR": {
    +                    "description": "Set this bit to clear the AES interrupt.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ENA": {
    +              "description": "AES Interrupt enable register",
    +              "offset": 176,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INT_ENA": {
    +                    "description": "Set this bit to enable interrupt that occurs when DMA-AES calculation is done.",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DATE": {
    +              "description": "AES version control register",
    +              "offset": 180,
    +              "size": 32,
    +              "reset_value": 538513936,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATE": {
    +                    "description": "This bits stores the version information of AES.",
    +                    "offset": 0,
    +                    "size": 30
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_EXIT": {
    +              "description": "AES-DMA exit config",
    +              "offset": 184,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_EXIT": {
    +                    "description": "Set this register to leave calculation done stage. Recommend to use it after software finishes reading DMA's output buffer.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "APB_CTRL": {
    +        "description": "Advanced Peripheral Bus Controller",
    +        "children": {
    +          "registers": {
    +            "SYSCLK_CONF": {
    +              "description": "APB_CTRL_SYSCLK_CONF_REG",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 1,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PRE_DIV_CNT": {
    +                    "description": "reg_pre_div_cnt",
    +                    "offset": 0,
    +                    "size": 10
    +                  },
    +                  "CLK_320M_EN": {
    +                    "description": "reg_clk_320m_en",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "CLK_EN": {
    +                    "description": "reg_clk_en",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "RST_TICK_CNT": {
    +                    "description": "reg_rst_tick_cnt",
    +                    "offset": 12,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "TICK_CONF": {
    +              "description": "APB_CTRL_TICK_CONF_REG",
    +              "offset": 4,
    +              "size": 32,
    +              "reset_value": 67367,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "XTAL_TICK_NUM": {
    +                    "description": "reg_xtal_tick_num",
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "CK8M_TICK_NUM": {
    +                    "description": "reg_ck8m_tick_num",
    +                    "offset": 8,
    +                    "size": 8
    +                  },
    +                  "TICK_ENABLE": {
    +                    "description": "reg_tick_enable",
    +                    "offset": 16,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CLK_OUT_EN": {
    +              "description": "APB_CTRL_CLK_OUT_EN_REG",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 2047,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CLK20_OEN": {
    +                    "description": "reg_clk20_oen",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "CLK22_OEN": {
    +                    "description": "reg_clk22_oen",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "CLK44_OEN": {
    +                    "description": "reg_clk44_oen",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "CLK_BB_OEN": {
    +                    "description": "reg_clk_bb_oen",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "CLK80_OEN": {
    +                    "description": "reg_clk80_oen",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "CLK160_OEN": {
    +                    "description": "reg_clk160_oen",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "CLK_320M_OEN": {
    +                    "description": "reg_clk_320m_oen",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "CLK_ADC_INF_OEN": {
    +                    "description": "reg_clk_adc_inf_oen",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "CLK_DAC_CPU_OEN": {
    +                    "description": "reg_clk_dac_cpu_oen",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "CLK40X_BB_OEN": {
    +                    "description": "reg_clk40x_bb_oen",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "CLK_XTAL_OEN": {
    +                    "description": "reg_clk_xtal_oen",
    +                    "offset": 10,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "WIFI_BB_CFG": {
    +              "description": "APB_CTRL_WIFI_BB_CFG_REG",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WIFI_BB_CFG": {
    +                    "description": "reg_wifi_bb_cfg",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "WIFI_BB_CFG_2": {
    +              "description": "APB_CTRL_WIFI_BB_CFG_2_REG",
    +              "offset": 16,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WIFI_BB_CFG_2": {
    +                    "description": "reg_wifi_bb_cfg_2",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "WIFI_CLK_EN": {
    +              "description": "APB_CTRL_WIFI_CLK_EN_REG",
    +              "offset": 20,
    +              "size": 32,
    +              "reset_value": 4294762544,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WIFI_CLK_EN": {
    +                    "description": "reg_wifi_clk_en",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "WIFI_RST_EN": {
    +              "description": "APB_CTRL_WIFI_RST_EN_REG",
    +              "offset": 24,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WIFI_RST": {
    +                    "description": "reg_wifi_rst",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "HOST_INF_SEL": {
    +              "description": "APB_CTRL_HOST_INF_SEL_REG",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PERI_IO_SWAP": {
    +                    "description": "reg_peri_io_swap",
    +                    "offset": 0,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "EXT_MEM_PMS_LOCK": {
    +              "description": "APB_CTRL_EXT_MEM_PMS_LOCK_REG",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "EXT_MEM_PMS_LOCK": {
    +                    "description": "reg_ext_mem_pms_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "FLASH_ACE0_ATTR": {
    +              "description": "APB_CTRL_FLASH_ACE0_ATTR_REG",
    +              "offset": 40,
    +              "size": 32,
    +              "reset_value": 3,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "FLASH_ACE0_ATTR": {
    +                    "description": "reg_flash_ace0_attr",
    +                    "offset": 0,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "FLASH_ACE1_ATTR": {
    +              "description": "APB_CTRL_FLASH_ACE1_ATTR_REG",
    +              "offset": 44,
    +              "size": 32,
    +              "reset_value": 3,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "FLASH_ACE1_ATTR": {
    +                    "description": "reg_flash_ace1_attr",
    +                    "offset": 0,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "FLASH_ACE2_ATTR": {
    +              "description": "APB_CTRL_FLASH_ACE2_ATTR_REG",
    +              "offset": 48,
    +              "size": 32,
    +              "reset_value": 3,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "FLASH_ACE2_ATTR": {
    +                    "description": "reg_flash_ace2_attr",
    +                    "offset": 0,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "FLASH_ACE3_ATTR": {
    +              "description": "APB_CTRL_FLASH_ACE3_ATTR_REG",
    +              "offset": 52,
    +              "size": 32,
    +              "reset_value": 3,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "FLASH_ACE3_ATTR": {
    +                    "description": "reg_flash_ace3_attr",
    +                    "offset": 0,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "FLASH_ACE0_ADDR": {
    +              "description": "APB_CTRL_FLASH_ACE0_ADDR_REG",
    +              "offset": 56,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "S": {
    +                    "description": "reg_flash_ace0_addr_s",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "FLASH_ACE1_ADDR": {
    +              "description": "APB_CTRL_FLASH_ACE1_ADDR_REG",
    +              "offset": 60,
    +              "size": 32,
    +              "reset_value": 4194304,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "S": {
    +                    "description": "reg_flash_ace1_addr_s",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "FLASH_ACE2_ADDR": {
    +              "description": "APB_CTRL_FLASH_ACE2_ADDR_REG",
    +              "offset": 64,
    +              "size": 32,
    +              "reset_value": 8388608,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "S": {
    +                    "description": "reg_flash_ace2_addr_s",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "FLASH_ACE3_ADDR": {
    +              "description": "APB_CTRL_FLASH_ACE3_ADDR_REG",
    +              "offset": 68,
    +              "size": 32,
    +              "reset_value": 12582912,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "S": {
    +                    "description": "reg_flash_ace3_addr_s",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "FLASH_ACE0_SIZE": {
    +              "description": "APB_CTRL_FLASH_ACE0_SIZE_REG",
    +              "offset": 72,
    +              "size": 32,
    +              "reset_value": 1024,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "FLASH_ACE0_SIZE": {
    +                    "description": "reg_flash_ace0_size",
    +                    "offset": 0,
    +                    "size": 13
    +                  }
    +                }
    +              }
    +            },
    +            "FLASH_ACE1_SIZE": {
    +              "description": "APB_CTRL_FLASH_ACE1_SIZE_REG",
    +              "offset": 76,
    +              "size": 32,
    +              "reset_value": 1024,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "FLASH_ACE1_SIZE": {
    +                    "description": "reg_flash_ace1_size",
    +                    "offset": 0,
    +                    "size": 13
    +                  }
    +                }
    +              }
    +            },
    +            "FLASH_ACE2_SIZE": {
    +              "description": "APB_CTRL_FLASH_ACE2_SIZE_REG",
    +              "offset": 80,
    +              "size": 32,
    +              "reset_value": 1024,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "FLASH_ACE2_SIZE": {
    +                    "description": "reg_flash_ace2_size",
    +                    "offset": 0,
    +                    "size": 13
    +                  }
    +                }
    +              }
    +            },
    +            "FLASH_ACE3_SIZE": {
    +              "description": "APB_CTRL_FLASH_ACE3_SIZE_REG",
    +              "offset": 84,
    +              "size": 32,
    +              "reset_value": 1024,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "FLASH_ACE3_SIZE": {
    +                    "description": "reg_flash_ace3_size",
    +                    "offset": 0,
    +                    "size": 13
    +                  }
    +                }
    +              }
    +            },
    +            "SPI_MEM_PMS_CTRL": {
    +              "description": "APB_CTRL_SPI_MEM_PMS_CTRL_REG",
    +              "offset": 136,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SPI_MEM_REJECT_INT": {
    +                    "description": "reg_spi_mem_reject_int",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SPI_MEM_REJECT_CLR": {
    +                    "description": "reg_spi_mem_reject_clr",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SPI_MEM_REJECT_CDE": {
    +                    "description": "reg_spi_mem_reject_cde",
    +                    "offset": 2,
    +                    "size": 5,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "SPI_MEM_REJECT_ADDR": {
    +              "description": "APB_CTRL_SPI_MEM_REJECT_ADDR_REG",
    +              "offset": 140,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SPI_MEM_REJECT_ADDR": {
    +                    "description": "reg_spi_mem_reject_addr",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "SDIO_CTRL": {
    +              "description": "APB_CTRL_SDIO_CTRL_REG",
    +              "offset": 144,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SDIO_WIN_ACCESS_EN": {
    +                    "description": "reg_sdio_win_access_en",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "REDCY_SIG0": {
    +              "description": "APB_CTRL_REDCY_SIG0_REG",
    +              "offset": 148,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "REDCY_SIG0": {
    +                    "description": "reg_redcy_sig0",
    +                    "offset": 0,
    +                    "size": 31
    +                  },
    +                  "REDCY_ANDOR": {
    +                    "description": "reg_redcy_andor",
    +                    "offset": 31,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "REDCY_SIG1": {
    +              "description": "APB_CTRL_REDCY_SIG1_REG",
    +              "offset": 152,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "REDCY_SIG1": {
    +                    "description": "reg_redcy_sig1",
    +                    "offset": 0,
    +                    "size": 31
    +                  },
    +                  "REDCY_NANDOR": {
    +                    "description": "reg_redcy_nandor",
    +                    "offset": 31,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "FRONT_END_MEM_PD": {
    +              "description": "APB_CTRL_FRONT_END_MEM_PD_REG",
    +              "offset": 156,
    +              "size": 32,
    +              "reset_value": 21,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "AGC_MEM_FORCE_PU": {
    +                    "description": "reg_agc_mem_force_pu",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "AGC_MEM_FORCE_PD": {
    +                    "description": "reg_agc_mem_force_pd",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "PBUS_MEM_FORCE_PU": {
    +                    "description": "reg_pbus_mem_force_pu",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "PBUS_MEM_FORCE_PD": {
    +                    "description": "reg_pbus_mem_force_pd",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "DC_MEM_FORCE_PU": {
    +                    "description": "reg_dc_mem_force_pu",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "DC_MEM_FORCE_PD": {
    +                    "description": "reg_dc_mem_force_pd",
    +                    "offset": 5,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "RETENTION_CTRL": {
    +              "description": "APB_CTRL_RETENTION_CTRL_REG",
    +              "offset": 160,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RETENTION_LINK_ADDR": {
    +                    "description": "reg_retention_link_addr",
    +                    "offset": 0,
    +                    "size": 27
    +                  },
    +                  "NOBYPASS_CPU_ISO_RST": {
    +                    "description": "reg_nobypass_cpu_iso_rst",
    +                    "offset": 27,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CLKGATE_FORCE_ON": {
    +              "description": "APB_CTRL_CLKGATE_FORCE_ON_REG",
    +              "offset": 164,
    +              "size": 32,
    +              "reset_value": 63,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ROM_CLKGATE_FORCE_ON": {
    +                    "description": "reg_rom_clkgate_force_on",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "SRAM_CLKGATE_FORCE_ON": {
    +                    "description": "reg_sram_clkgate_force_on",
    +                    "offset": 2,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "MEM_POWER_DOWN": {
    +              "description": "APB_CTRL_MEM_POWER_DOWN_REG",
    +              "offset": 168,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ROM_POWER_DOWN": {
    +                    "description": "reg_rom_power_down",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "SRAM_POWER_DOWN": {
    +                    "description": "reg_sram_power_down",
    +                    "offset": 2,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "MEM_POWER_UP": {
    +              "description": "APB_CTRL_MEM_POWER_UP_REG",
    +              "offset": 172,
    +              "size": 32,
    +              "reset_value": 63,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ROM_POWER_UP": {
    +                    "description": "reg_rom_power_up",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "SRAM_POWER_UP": {
    +                    "description": "reg_sram_power_up",
    +                    "offset": 2,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "RND_DATA": {
    +              "description": "APB_CTRL_RND_DATA_REG",
    +              "offset": 176,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RND_DATA": {
    +                    "description": "reg_rnd_data",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "PERI_BACKUP_CONFIG": {
    +              "description": "APB_CTRL_PERI_BACKUP_CONFIG_REG",
    +              "offset": 180,
    +              "size": 32,
    +              "reset_value": 25728,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PERI_BACKUP_FLOW_ERR": {
    +                    "description": "reg_peri_backup_flow_err",
    +                    "offset": 1,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "PERI_BACKUP_BURST_LIMIT": {
    +                    "description": "reg_peri_backup_burst_limit",
    +                    "offset": 4,
    +                    "size": 5
    +                  },
    +                  "PERI_BACKUP_TOUT_THRES": {
    +                    "description": "reg_peri_backup_tout_thres",
    +                    "offset": 9,
    +                    "size": 10
    +                  },
    +                  "PERI_BACKUP_SIZE": {
    +                    "description": "reg_peri_backup_size",
    +                    "offset": 19,
    +                    "size": 10
    +                  },
    +                  "PERI_BACKUP_START": {
    +                    "description": "reg_peri_backup_start",
    +                    "offset": 29,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "PERI_BACKUP_TO_MEM": {
    +                    "description": "reg_peri_backup_to_mem",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "PERI_BACKUP_ENA": {
    +                    "description": "reg_peri_backup_ena",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "PERI_BACKUP_APB_ADDR": {
    +              "description": "APB_CTRL_PERI_BACKUP_APB_ADDR_REG",
    +              "offset": 184,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BACKUP_APB_START_ADDR": {
    +                    "description": "reg_backup_apb_start_addr",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "PERI_BACKUP_MEM_ADDR": {
    +              "description": "APB_CTRL_PERI_BACKUP_MEM_ADDR_REG",
    +              "offset": 188,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BACKUP_MEM_START_ADDR": {
    +                    "description": "reg_backup_mem_start_addr",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "PERI_BACKUP_INT_RAW": {
    +              "description": "APB_CTRL_PERI_BACKUP_INT_RAW_REG",
    +              "offset": 192,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PERI_BACKUP_DONE_INT_RAW": {
    +                    "description": "reg_peri_backup_done_int_raw",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "PERI_BACKUP_ERR_INT_RAW": {
    +                    "description": "reg_peri_backup_err_int_raw",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "PERI_BACKUP_INT_ST": {
    +              "description": "APB_CTRL_PERI_BACKUP_INT_ST_REG",
    +              "offset": 196,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PERI_BACKUP_DONE_INT_ST": {
    +                    "description": "reg_peri_backup_done_int_st",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "PERI_BACKUP_ERR_INT_ST": {
    +                    "description": "reg_peri_backup_err_int_st",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "PERI_BACKUP_INT_ENA": {
    +              "description": "APB_CTRL_PERI_BACKUP_INT_ENA_REG",
    +              "offset": 200,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PERI_BACKUP_DONE_INT_ENA": {
    +                    "description": "reg_peri_backup_done_int_ena",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "PERI_BACKUP_ERR_INT_ENA": {
    +                    "description": "reg_peri_backup_err_int_ena",
    +                    "offset": 1,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "PERI_BACKUP_INT_CLR": {
    +              "description": "APB_CTRL_PERI_BACKUP_INT_CLR_REG",
    +              "offset": 208,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PERI_BACKUP_DONE_INT_CLR": {
    +                    "description": "reg_peri_backup_done_int_clr",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "PERI_BACKUP_ERR_INT_CLR": {
    +                    "description": "reg_peri_backup_err_int_clr",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DATE": {
    +              "description": "APB_CTRL_DATE_REG",
    +              "offset": 1020,
    +              "size": 32,
    +              "reset_value": 33583632,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATE": {
    +                    "description": "reg_dateVersion control",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "APB_SARADC": {
    +        "description": "Successive Approximation Register Analog to Digital Converter",
    +        "children": {
    +          "registers": {
    +            "CTRL": {
    +              "description": "digital saradc configure register",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 1073971776,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SARADC_START_FORCE": {
    +                    "description": "select software enable saradc sample",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "SARADC_START": {
    +                    "description": "software enable saradc sample",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "SARADC_SAR_CLK_GATED": {
    +                    "description": "SAR clock gated",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "SARADC_SAR_CLK_DIV": {
    +                    "description": "SAR clock divider",
    +                    "offset": 7,
    +                    "size": 8
    +                  },
    +                  "SARADC_SAR_PATT_LEN": {
    +                    "description": "0 ~ 15 means length 1 ~ 16",
    +                    "offset": 15,
    +                    "size": 3
    +                  },
    +                  "SARADC_SAR_PATT_P_CLEAR": {
    +                    "description": "clear the pointer of pattern table for DIG ADC1 CTRL",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "SARADC_XPD_SAR_FORCE": {
    +                    "description": "force option to xpd sar blocks",
    +                    "offset": 27,
    +                    "size": 2
    +                  },
    +                  "SARADC_WAIT_ARB_CYCLE": {
    +                    "description": "wait arbit signal stable after sar_done",
    +                    "offset": 30,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "CTRL2": {
    +              "description": "digital saradc configure register",
    +              "offset": 4,
    +              "size": 32,
    +              "reset_value": 41470,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SARADC_MEAS_NUM_LIMIT": {
    +                    "description": "enable max meas num",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "SARADC_MAX_MEAS_NUM": {
    +                    "description": "max conversion number",
    +                    "offset": 1,
    +                    "size": 8
    +                  },
    +                  "SARADC_SAR1_INV": {
    +                    "description": "1: data to DIG ADC1 CTRL is inverted, otherwise not",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "SARADC_SAR2_INV": {
    +                    "description": "1: data to DIG ADC2 CTRL is inverted, otherwise not",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "SARADC_TIMER_TARGET": {
    +                    "description": "to set saradc timer target",
    +                    "offset": 12,
    +                    "size": 12
    +                  },
    +                  "SARADC_TIMER_EN": {
    +                    "description": "to enable saradc timer trigger",
    +                    "offset": 24,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "FILTER_CTRL1": {
    +              "description": "digital saradc configure register",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "APB_SARADC_FILTER_FACTOR1": {
    +                    "description": "Factor of saradc filter1",
    +                    "offset": 26,
    +                    "size": 3
    +                  },
    +                  "APB_SARADC_FILTER_FACTOR0": {
    +                    "description": "Factor of saradc filter0",
    +                    "offset": 29,
    +                    "size": 3
    +                  }
    +                }
    +              }
    +            },
    +            "FSM_WAIT": {
    +              "description": "digital saradc configure register",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 16713736,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SARADC_XPD_WAIT": {
    +                    "description": "saradc_xpd_wait",
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "SARADC_RSTB_WAIT": {
    +                    "description": "saradc_rstb_wait",
    +                    "offset": 8,
    +                    "size": 8
    +                  },
    +                  "SARADC_STANDBY_WAIT": {
    +                    "description": "saradc_standby_wait",
    +                    "offset": 16,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "SAR1_STATUS": {
    +              "description": "digital saradc configure register",
    +              "offset": 16,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SARADC_SAR1_STATUS": {
    +                    "description": "saradc1 status about data and channel",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "SAR2_STATUS": {
    +              "description": "digital saradc configure register",
    +              "offset": 20,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SARADC_SAR2_STATUS": {
    +                    "description": "saradc2 status about data and channel",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "SAR_PATT_TAB1": {
    +              "description": "digital saradc configure register",
    +              "offset": 24,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SARADC_SAR_PATT_TAB1": {
    +                    "description": "item 0 ~ 3 for pattern table 1 (each item one byte)",
    +                    "offset": 0,
    +                    "size": 24
    +                  }
    +                }
    +              }
    +            },
    +            "SAR_PATT_TAB2": {
    +              "description": "digital saradc configure register",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SARADC_SAR_PATT_TAB2": {
    +                    "description": "Item 4 ~ 7 for pattern table 1 (each item one byte)",
    +                    "offset": 0,
    +                    "size": 24
    +                  }
    +                }
    +              }
    +            },
    +            "ONETIME_SAMPLE": {
    +              "description": "digital saradc configure register",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 436207616,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SARADC_ONETIME_ATTEN": {
    +                    "description": "configure onetime atten",
    +                    "offset": 23,
    +                    "size": 2
    +                  },
    +                  "SARADC_ONETIME_CHANNEL": {
    +                    "description": "configure onetime channel",
    +                    "offset": 25,
    +                    "size": 4
    +                  },
    +                  "SARADC_ONETIME_START": {
    +                    "description": "trigger adc onetime sample",
    +                    "offset": 29,
    +                    "size": 1
    +                  },
    +                  "SARADC2_ONETIME_SAMPLE": {
    +                    "description": "enable adc2 onetime sample",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "SARADC1_ONETIME_SAMPLE": {
    +                    "description": "enable adc1 onetime sample",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "ARB_CTRL": {
    +              "description": "digital saradc configure register",
    +              "offset": 36,
    +              "size": 32,
    +              "reset_value": 2304,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ADC_ARB_APB_FORCE": {
    +                    "description": "adc2 arbiter force to enableapb controller",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "ADC_ARB_RTC_FORCE": {
    +                    "description": "adc2 arbiter force to enable rtc controller",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "ADC_ARB_WIFI_FORCE": {
    +                    "description": "adc2 arbiter force to enable wifi controller",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "ADC_ARB_GRANT_FORCE": {
    +                    "description": "adc2 arbiter force grant",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "ADC_ARB_APB_PRIORITY": {
    +                    "description": "Set adc2 arbiterapb priority",
    +                    "offset": 6,
    +                    "size": 2
    +                  },
    +                  "ADC_ARB_RTC_PRIORITY": {
    +                    "description": "Set adc2 arbiter rtc priority",
    +                    "offset": 8,
    +                    "size": 2
    +                  },
    +                  "ADC_ARB_WIFI_PRIORITY": {
    +                    "description": "Set adc2 arbiter wifi priority",
    +                    "offset": 10,
    +                    "size": 2
    +                  },
    +                  "ADC_ARB_FIX_PRIORITY": {
    +                    "description": "adc2 arbiter uses fixed priority",
    +                    "offset": 12,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "FILTER_CTRL0": {
    +              "description": "digital saradc configure register",
    +              "offset": 40,
    +              "size": 32,
    +              "reset_value": 57933824,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "APB_SARADC_FILTER_CHANNEL1": {
    +                    "description": "configure filter1 to adc channel",
    +                    "offset": 18,
    +                    "size": 4
    +                  },
    +                  "APB_SARADC_FILTER_CHANNEL0": {
    +                    "description": "configure filter0 to adc channel",
    +                    "offset": 22,
    +                    "size": 4
    +                  },
    +                  "APB_SARADC_FILTER_RESET": {
    +                    "description": "enable apb_adc1_filter",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "SAR1DATA_STATUS": {
    +              "description": "digital saradc configure register",
    +              "offset": 44,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "APB_SARADC1_DATA": {
    +                    "description": "saradc1 data",
    +                    "offset": 0,
    +                    "size": 17,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "SAR2DATA_STATUS": {
    +              "description": "digital saradc configure register",
    +              "offset": 48,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "APB_SARADC2_DATA": {
    +                    "description": "saradc2 data",
    +                    "offset": 0,
    +                    "size": 17,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "THRES0_CTRL": {
    +              "description": "digital saradc configure register",
    +              "offset": 52,
    +              "size": 32,
    +              "reset_value": 262125,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "APB_SARADC_THRES0_CHANNEL": {
    +                    "description": "configure thres0 to adc channel",
    +                    "offset": 0,
    +                    "size": 4
    +                  },
    +                  "APB_SARADC_THRES0_HIGH": {
    +                    "description": "saradc thres0 monitor thres",
    +                    "offset": 5,
    +                    "size": 13
    +                  },
    +                  "APB_SARADC_THRES0_LOW": {
    +                    "description": "saradc thres0 monitor thres",
    +                    "offset": 18,
    +                    "size": 13
    +                  }
    +                }
    +              }
    +            },
    +            "THRES1_CTRL": {
    +              "description": "digital saradc configure register",
    +              "offset": 56,
    +              "size": 32,
    +              "reset_value": 262125,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "APB_SARADC_THRES1_CHANNEL": {
    +                    "description": "configure thres1 to adc channel",
    +                    "offset": 0,
    +                    "size": 4
    +                  },
    +                  "APB_SARADC_THRES1_HIGH": {
    +                    "description": "saradc thres1 monitor thres",
    +                    "offset": 5,
    +                    "size": 13
    +                  },
    +                  "APB_SARADC_THRES1_LOW": {
    +                    "description": "saradc thres1 monitor thres",
    +                    "offset": 18,
    +                    "size": 13
    +                  }
    +                }
    +              }
    +            },
    +            "THRES_CTRL": {
    +              "description": "digital saradc configure register",
    +              "offset": 60,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "APB_SARADC_THRES_ALL_EN": {
    +                    "description": "enable thres to all channel",
    +                    "offset": 27,
    +                    "size": 1
    +                  },
    +                  "APB_SARADC_THRES1_EN": {
    +                    "description": "enable thres1",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "APB_SARADC_THRES0_EN": {
    +                    "description": "enable thres0",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ENA": {
    +              "description": "digital saradc int register",
    +              "offset": 64,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "APB_SARADC_THRES1_LOW_INT_ENA": {
    +                    "description": "saradc thres1 low  interrupt enable",
    +                    "offset": 26,
    +                    "size": 1
    +                  },
    +                  "APB_SARADC_THRES0_LOW_INT_ENA": {
    +                    "description": "saradc thres0 low interrupt enable",
    +                    "offset": 27,
    +                    "size": 1
    +                  },
    +                  "APB_SARADC_THRES1_HIGH_INT_ENA": {
    +                    "description": "saradc thres1 high interrupt enable",
    +                    "offset": 28,
    +                    "size": 1
    +                  },
    +                  "APB_SARADC_THRES0_HIGH_INT_ENA": {
    +                    "description": "saradc thres0 high interrupt enable",
    +                    "offset": 29,
    +                    "size": 1
    +                  },
    +                  "APB_SARADC2_DONE_INT_ENA": {
    +                    "description": "saradc2 done interrupt enable",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "APB_SARADC1_DONE_INT_ENA": {
    +                    "description": "saradc1 done interrupt enable",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INT_RAW": {
    +              "description": "digital saradc int register",
    +              "offset": 68,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "APB_SARADC_THRES1_LOW_INT_RAW": {
    +                    "description": "saradc thres1 low  interrupt raw",
    +                    "offset": 26,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "APB_SARADC_THRES0_LOW_INT_RAW": {
    +                    "description": "saradc thres0 low interrupt raw",
    +                    "offset": 27,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "APB_SARADC_THRES1_HIGH_INT_RAW": {
    +                    "description": "saradc thres1 high interrupt raw",
    +                    "offset": 28,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "APB_SARADC_THRES0_HIGH_INT_RAW": {
    +                    "description": "saradc thres0 high interrupt raw",
    +                    "offset": 29,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "APB_SARADC2_DONE_INT_RAW": {
    +                    "description": "saradc2 done interrupt raw",
    +                    "offset": 30,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "APB_SARADC1_DONE_INT_RAW": {
    +                    "description": "saradc1 done interrupt raw",
    +                    "offset": 31,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ST": {
    +              "description": "digital saradc int register",
    +              "offset": 72,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "APB_SARADC_THRES1_LOW_INT_ST": {
    +                    "description": "saradc thres1 low  interrupt state",
    +                    "offset": 26,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "APB_SARADC_THRES0_LOW_INT_ST": {
    +                    "description": "saradc thres0 low interrupt state",
    +                    "offset": 27,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "APB_SARADC_THRES1_HIGH_INT_ST": {
    +                    "description": "saradc thres1 high interrupt state",
    +                    "offset": 28,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "APB_SARADC_THRES0_HIGH_INT_ST": {
    +                    "description": "saradc thres0 high interrupt state",
    +                    "offset": 29,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "APB_SARADC2_DONE_INT_ST": {
    +                    "description": "saradc2 done interrupt state",
    +                    "offset": 30,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "APB_SARADC1_DONE_INT_ST": {
    +                    "description": "saradc1 done interrupt state",
    +                    "offset": 31,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_CLR": {
    +              "description": "digital saradc int register",
    +              "offset": 76,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "APB_SARADC_THRES1_LOW_INT_CLR": {
    +                    "description": "saradc thres1 low  interrupt clear",
    +                    "offset": 26,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "APB_SARADC_THRES0_LOW_INT_CLR": {
    +                    "description": "saradc thres0 low interrupt clear",
    +                    "offset": 27,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "APB_SARADC_THRES1_HIGH_INT_CLR": {
    +                    "description": "saradc thres1 high interrupt clear",
    +                    "offset": 28,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "APB_SARADC_THRES0_HIGH_INT_CLR": {
    +                    "description": "saradc thres0 high interrupt clear",
    +                    "offset": 29,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "APB_SARADC2_DONE_INT_CLR": {
    +                    "description": "saradc2 done interrupt clear",
    +                    "offset": 30,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "APB_SARADC1_DONE_INT_CLR": {
    +                    "description": "saradc1 done interrupt clear",
    +                    "offset": 31,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_CONF": {
    +              "description": "digital saradc configure register",
    +              "offset": 80,
    +              "size": 32,
    +              "reset_value": 255,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "APB_ADC_EOF_NUM": {
    +                    "description": "the dma_in_suc_eof gen when sample cnt = spi_eof_num",
    +                    "offset": 0,
    +                    "size": 16
    +                  },
    +                  "APB_ADC_RESET_FSM": {
    +                    "description": "reset_apb_adc_state",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "APB_ADC_TRANS": {
    +                    "description": "enable apb_adc use spi_dma",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CLKM_CONF": {
    +              "description": "digital saradc configure register",
    +              "offset": 84,
    +              "size": 32,
    +              "reset_value": 4,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CLKM_DIV_NUM": {
    +                    "description": "Integral I2S clock divider value",
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "CLKM_DIV_B": {
    +                    "description": "Fractional clock divider numerator value",
    +                    "offset": 8,
    +                    "size": 6
    +                  },
    +                  "CLKM_DIV_A": {
    +                    "description": "Fractional clock divider denominator value",
    +                    "offset": 14,
    +                    "size": 6
    +                  },
    +                  "CLK_EN": {
    +                    "description": "reg clk en",
    +                    "offset": 20,
    +                    "size": 1
    +                  },
    +                  "CLK_SEL": {
    +                    "description": "Set this bit to enable clk_apll",
    +                    "offset": 21,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "APB_TSENS_CTRL": {
    +              "description": "digital tsens configure register",
    +              "offset": 88,
    +              "size": 32,
    +              "reset_value": 98304,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TSENS_OUT": {
    +                    "description": "temperature sensor data out",
    +                    "offset": 0,
    +                    "size": 8,
    +                    "access": "read-only"
    +                  },
    +                  "TSENS_IN_INV": {
    +                    "description": "invert temperature sensor data",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "TSENS_CLK_DIV": {
    +                    "description": "temperature sensor clock divider",
    +                    "offset": 14,
    +                    "size": 8
    +                  },
    +                  "TSENS_PU": {
    +                    "description": "temperature sensor power up",
    +                    "offset": 22,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "TSENS_CTRL2": {
    +              "description": "digital tsens configure register",
    +              "offset": 92,
    +              "size": 32,
    +              "reset_value": 16386,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TSENS_XPD_WAIT": {
    +                    "description": "the time that power up tsens need wait",
    +                    "offset": 0,
    +                    "size": 12
    +                  },
    +                  "TSENS_XPD_FORCE": {
    +                    "description": "force power up tsens",
    +                    "offset": 12,
    +                    "size": 2
    +                  },
    +                  "TSENS_CLK_INV": {
    +                    "description": "inv tsens clk",
    +                    "offset": 14,
    +                    "size": 1
    +                  },
    +                  "TSENS_CLK_SEL": {
    +                    "description": "tsens clk select",
    +                    "offset": 15,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CALI": {
    +              "description": "digital saradc configure register",
    +              "offset": 96,
    +              "size": 32,
    +              "reset_value": 32768,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "APB_SARADC_CALI_CFG": {
    +                    "description": "saradc cali factor",
    +                    "offset": 0,
    +                    "size": 17
    +                  }
    +                }
    +              }
    +            },
    +            "CTRL_DATE": {
    +              "description": "version",
    +              "offset": 1020,
    +              "size": 32,
    +              "reset_value": 33583473,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATE": {
    +                    "description": "version",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "ASSIST_DEBUG": {
    +        "description": "Debug Assist",
    +        "children": {
    +          "registers": {
    +            "C0RE_0_MONTR_ENA": {
    +              "description": "ASSIST_DEBUG_C0RE_0_MONTR_ENA_REG",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_AREA_DRAM0_0_RD_ENA": {
    +                    "description": "reg_core_0_area_dram0_0_rd_ena",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "CORE_0_AREA_DRAM0_0_WR_ENA": {
    +                    "description": "reg_core_0_area_dram0_0_wr_ena",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "CORE_0_AREA_DRAM0_1_RD_ENA": {
    +                    "description": "reg_core_0_area_dram0_1_rd_ena",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "CORE_0_AREA_DRAM0_1_WR_ENA": {
    +                    "description": "reg_core_0_area_dram0_1_wr_ena",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "CORE_0_AREA_PIF_0_RD_ENA": {
    +                    "description": "reg_core_0_area_pif_0_rd_ena",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "CORE_0_AREA_PIF_0_WR_ENA": {
    +                    "description": "reg_core_0_area_pif_0_wr_ena",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "CORE_0_AREA_PIF_1_RD_ENA": {
    +                    "description": "reg_core_0_area_pif_1_rd_ena",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "CORE_0_AREA_PIF_1_WR_ENA": {
    +                    "description": "reg_core_0_area_pif_1_wr_ena",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "CORE_0_SP_SPILL_MIN_ENA": {
    +                    "description": "reg_core_0_sp_spill_min_ena",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "CORE_0_SP_SPILL_MAX_ENA": {
    +                    "description": "reg_core_0_sp_spill_max_ena",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "CORE_0_IRAM0_EXCEPTION_MONITOR_ENA": {
    +                    "description": "reg_core_0_iram0_exception_monitor_ena",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "CORE_0_DRAM0_EXCEPTION_MONITOR_ENA": {
    +                    "description": "reg_core_0_dram0_exception_monitor_ena",
    +                    "offset": 11,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_INTR_RAW": {
    +              "description": "ASSIST_DEBUG_CORE_0_INTR_RAW_REG",
    +              "offset": 4,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_AREA_DRAM0_0_RD_RAW": {
    +                    "description": "reg_core_0_area_dram0_0_rd_raw",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_AREA_DRAM0_0_WR_RAW": {
    +                    "description": "reg_core_0_area_dram0_0_wr_raw",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_AREA_DRAM0_1_RD_RAW": {
    +                    "description": "reg_core_0_area_dram0_1_rd_raw",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_AREA_DRAM0_1_WR_RAW": {
    +                    "description": "reg_core_0_area_dram0_1_wr_raw",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_AREA_PIF_0_RD_RAW": {
    +                    "description": "reg_core_0_area_pif_0_rd_raw",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_AREA_PIF_0_WR_RAW": {
    +                    "description": "reg_core_0_area_pif_0_wr_raw",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_AREA_PIF_1_RD_RAW": {
    +                    "description": "reg_core_0_area_pif_1_rd_raw",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_AREA_PIF_1_WR_RAW": {
    +                    "description": "reg_core_0_area_pif_1_wr_raw",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_SP_SPILL_MIN_RAW": {
    +                    "description": "reg_core_0_sp_spill_min_raw",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_SP_SPILL_MAX_RAW": {
    +                    "description": "reg_core_0_sp_spill_max_raw",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_IRAM0_EXCEPTION_MONITOR_RAW": {
    +                    "description": "reg_core_0_iram0_exception_monitor_raw",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_DRAM0_EXCEPTION_MONITOR_RAW": {
    +                    "description": "reg_core_0_dram0_exception_monitor_raw",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_INTR_ENA": {
    +              "description": "ASSIST_DEBUG_CORE_0_INTR_ENA_REG",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_AREA_DRAM0_0_RD_INTR_ENA": {
    +                    "description": "reg_core_0_area_dram0_0_rd_intr_ena",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "CORE_0_AREA_DRAM0_0_WR_INTR_ENA": {
    +                    "description": "reg_core_0_area_dram0_0_wr_intr_ena",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "CORE_0_AREA_DRAM0_1_RD_INTR_ENA": {
    +                    "description": "reg_core_0_area_dram0_1_rd_intr_ena",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "CORE_0_AREA_DRAM0_1_WR_INTR_ENA": {
    +                    "description": "reg_core_0_area_dram0_1_wr_intr_ena",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "CORE_0_AREA_PIF_0_RD_INTR_ENA": {
    +                    "description": "reg_core_0_area_pif_0_rd_intr_ena",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "CORE_0_AREA_PIF_0_WR_INTR_ENA": {
    +                    "description": "reg_core_0_area_pif_0_wr_intr_ena",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "CORE_0_AREA_PIF_1_RD_INTR_ENA": {
    +                    "description": "reg_core_0_area_pif_1_rd_intr_ena",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "CORE_0_AREA_PIF_1_WR_INTR_ENA": {
    +                    "description": "reg_core_0_area_pif_1_wr_intr_ena",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "CORE_0_SP_SPILL_MIN_INTR_ENA": {
    +                    "description": "reg_core_0_sp_spill_min_intr_ena",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "CORE_0_SP_SPILL_MAX_INTR_ENA": {
    +                    "description": "reg_core_0_sp_spill_max_intr_ena",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "CORE_0_IRAM0_EXCEPTION_MONITOR_RLS": {
    +                    "description": "reg_core_0_iram0_exception_monitor_ena",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "CORE_0_DRAM0_EXCEPTION_MONITOR_RLS": {
    +                    "description": "reg_core_0_dram0_exception_monitor_ena",
    +                    "offset": 11,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_INTR_CLR": {
    +              "description": "ASSIST_DEBUG_CORE_0_INTR_CLR_REG",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_AREA_DRAM0_0_RD_CLR": {
    +                    "description": "reg_core_0_area_dram0_0_rd_clr",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "CORE_0_AREA_DRAM0_0_WR_CLR": {
    +                    "description": "reg_core_0_area_dram0_0_wr_clr",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "CORE_0_AREA_DRAM0_1_RD_CLR": {
    +                    "description": "reg_core_0_area_dram0_1_rd_clr",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "CORE_0_AREA_DRAM0_1_WR_CLR": {
    +                    "description": "reg_core_0_area_dram0_1_wr_clr",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "CORE_0_AREA_PIF_0_RD_CLR": {
    +                    "description": "reg_core_0_area_pif_0_rd_clr",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "CORE_0_AREA_PIF_0_WR_CLR": {
    +                    "description": "reg_core_0_area_pif_0_wr_clr",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "CORE_0_AREA_PIF_1_RD_CLR": {
    +                    "description": "reg_core_0_area_pif_1_rd_clr",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "CORE_0_AREA_PIF_1_WR_CLR": {
    +                    "description": "reg_core_0_area_pif_1_wr_clr",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "CORE_0_SP_SPILL_MIN_CLR": {
    +                    "description": "reg_core_0_sp_spill_min_clr",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "CORE_0_SP_SPILL_MAX_CLR": {
    +                    "description": "reg_core_0_sp_spill_max_clr",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "CORE_0_IRAM0_EXCEPTION_MONITOR_CLR": {
    +                    "description": "reg_core_0_iram0_exception_monitor_clr",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "CORE_0_DRAM0_EXCEPTION_MONITOR_CLR": {
    +                    "description": "reg_core_0_dram0_exception_monitor_clr",
    +                    "offset": 11,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_AREA_DRAM0_0_MIN": {
    +              "description": "ASSIST_DEBUG_CORE_0_AREA_DRAM0_0_MIN_REG",
    +              "offset": 16,
    +              "size": 32,
    +              "reset_value": 4294967295,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_AREA_DRAM0_0_MIN": {
    +                    "description": "reg_core_0_area_dram0_0_min",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_AREA_DRAM0_0_MAX": {
    +              "description": "ASSIST_DEBUG_CORE_0_AREA_DRAM0_0_MAX_REG",
    +              "offset": 20,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_AREA_DRAM0_0_MAX": {
    +                    "description": "reg_core_0_area_dram0_0_max",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_AREA_DRAM0_1_MIN": {
    +              "description": "ASSIST_DEBUG_CORE_0_AREA_DRAM0_1_MIN_REG",
    +              "offset": 24,
    +              "size": 32,
    +              "reset_value": 4294967295,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_AREA_DRAM0_1_MIN": {
    +                    "description": "reg_core_0_area_dram0_1_min",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_AREA_DRAM0_1_MAX": {
    +              "description": "ASSIST_DEBUG_CORE_0_AREA_DRAM0_1_MAX_REG",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_AREA_DRAM0_1_MAX": {
    +                    "description": "reg_core_0_area_dram0_1_max",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_AREA_PIF_0_MIN": {
    +              "description": "ASSIST_DEBUG_CORE_0_AREA_PIF_0_MIN_REG",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 4294967295,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_AREA_PIF_0_MIN": {
    +                    "description": "reg_core_0_area_pif_0_min",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_AREA_PIF_0_MAX": {
    +              "description": "ASSIST_DEBUG_CORE_0_AREA_PIF_0_MAX_REG",
    +              "offset": 36,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_AREA_PIF_0_MAX": {
    +                    "description": "reg_core_0_area_pif_0_max",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_AREA_PIF_1_MIN": {
    +              "description": "ASSIST_DEBUG_CORE_0_AREA_PIF_1_MIN_REG",
    +              "offset": 40,
    +              "size": 32,
    +              "reset_value": 4294967295,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_AREA_PIF_1_MIN": {
    +                    "description": "reg_core_0_area_pif_1_min",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_AREA_PIF_1_MAX": {
    +              "description": "ASSIST_DEBUG_CORE_0_AREA_PIF_1_MAX_REG",
    +              "offset": 44,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_AREA_PIF_1_MAX": {
    +                    "description": "reg_core_0_area_pif_1_max",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_AREA_PC": {
    +              "description": "ASSIST_DEBUG_CORE_0_AREA_PC_REG",
    +              "offset": 48,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_AREA_PC": {
    +                    "description": "reg_core_0_area_pc",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_AREA_SP": {
    +              "description": "ASSIST_DEBUG_CORE_0_AREA_SP_REG",
    +              "offset": 52,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_AREA_SP": {
    +                    "description": "reg_core_0_area_sp",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_SP_MIN": {
    +              "description": "ASSIST_DEBUG_CORE_0_SP_MIN_REG",
    +              "offset": 56,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_SP_MIN": {
    +                    "description": "reg_core_0_sp_min",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_SP_MAX": {
    +              "description": "ASSIST_DEBUG_CORE_0_SP_MAX_REG",
    +              "offset": 60,
    +              "size": 32,
    +              "reset_value": 4294967295,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_SP_MAX": {
    +                    "description": "reg_core_0_sp_max",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_SP_PC": {
    +              "description": "ASSIST_DEBUG_CORE_0_SP_PC_REG",
    +              "offset": 64,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_SP_PC": {
    +                    "description": "reg_core_0_sp_pc",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_RCD_EN": {
    +              "description": "ASSIST_DEBUG_CORE_0_RCD_EN_REG",
    +              "offset": 68,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_RCD_RECORDEN": {
    +                    "description": "reg_core_0_rcd_recorden",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "CORE_0_RCD_PDEBUGEN": {
    +                    "description": "reg_core_0_rcd_pdebugen",
    +                    "offset": 1,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_RCD_PDEBUGPC": {
    +              "description": "ASSIST_DEBUG_CORE_0_RCD_PDEBUGPC_REG",
    +              "offset": 72,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_RCD_PDEBUGPC": {
    +                    "description": "reg_core_0_rcd_pdebugpc",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_RCD_PDEBUGSP": {
    +              "description": "ASSIST_DEBUG_CORE_0_RCD_PDEBUGSP_REG",
    +              "offset": 76,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_RCD_PDEBUGSP": {
    +                    "description": "reg_core_0_rcd_pdebugsp",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_IRAM0_EXCEPTION_MONITOR_0": {
    +              "description": "ASSIST_DEBUG_CORE_0_RCD_PDEBUGSP_REG",
    +              "offset": 80,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_IRAM0_RECORDING_ADDR_0": {
    +                    "description": "reg_core_0_iram0_recording_addr_0",
    +                    "offset": 0,
    +                    "size": 24,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_IRAM0_RECORDING_WR_0": {
    +                    "description": "reg_core_0_iram0_recording_wr_0",
    +                    "offset": 24,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_IRAM0_RECORDING_LOADSTORE_0": {
    +                    "description": "reg_core_0_iram0_recording_loadstore_0",
    +                    "offset": 25,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_IRAM0_EXCEPTION_MONITOR_1": {
    +              "description": "ASSIST_DEBUG_CORE_0_IRAM0_EXCEPTION_MONITOR_1_REG",
    +              "offset": 84,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_IRAM0_RECORDING_ADDR_1": {
    +                    "description": "reg_core_0_iram0_recording_addr_1",
    +                    "offset": 0,
    +                    "size": 24,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_IRAM0_RECORDING_WR_1": {
    +                    "description": "reg_core_0_iram0_recording_wr_1",
    +                    "offset": 24,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_IRAM0_RECORDING_LOADSTORE_1": {
    +                    "description": "reg_core_0_iram0_recording_loadstore_1",
    +                    "offset": 25,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_DRAM0_EXCEPTION_MONITOR_0": {
    +              "description": "ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_0_REG",
    +              "offset": 88,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_DRAM0_RECORDING_ADDR_0": {
    +                    "description": "reg_core_0_dram0_recording_addr_0",
    +                    "offset": 0,
    +                    "size": 24,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_DRAM0_RECORDING_WR_0": {
    +                    "description": "reg_core_0_dram0_recording_wr_0",
    +                    "offset": 24,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_DRAM0_RECORDING_BYTEEN_0": {
    +                    "description": "reg_core_0_dram0_recording_byteen_0",
    +                    "offset": 25,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_DRAM0_EXCEPTION_MONITOR_1": {
    +              "description": "ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_1_REG",
    +              "offset": 92,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_DRAM0_RECORDING_PC_0": {
    +                    "description": "reg_core_0_dram0_recording_pc_0",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_DRAM0_EXCEPTION_MONITOR_2": {
    +              "description": "ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_1_REG",
    +              "offset": 96,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_DRAM0_RECORDING_ADDR_1": {
    +                    "description": "reg_core_0_dram0_recording_addr_1",
    +                    "offset": 0,
    +                    "size": 24,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_DRAM0_RECORDING_WR_1": {
    +                    "description": "reg_core_0_dram0_recording_wr_1",
    +                    "offset": 24,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_DRAM0_RECORDING_BYTEEN_1": {
    +                    "description": "reg_core_0_dram0_recording_byteen_1",
    +                    "offset": 25,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_DRAM0_EXCEPTION_MONITOR_3": {
    +              "description": "ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_3_REG",
    +              "offset": 100,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_DRAM0_RECORDING_PC_1": {
    +                    "description": "reg_core_0_dram0_recording_pc_1",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_0": {
    +              "description": "ASSIST_DEBUG_CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_0_REG",
    +              "offset": 104,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_X_IRAM0_DRAM0_LIMIT_CYCLE_0": {
    +                    "description": "reg_core_x_iram0_dram0_limit_cycle_0",
    +                    "offset": 0,
    +                    "size": 20
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_1": {
    +              "description": "ASSIST_DEBUG_CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_1_REG",
    +              "offset": 108,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_X_IRAM0_DRAM0_LIMIT_CYCLE_1": {
    +                    "description": "reg_core_x_iram0_dram0_limit_cycle_1",
    +                    "offset": 0,
    +                    "size": 20
    +                  }
    +                }
    +              }
    +            },
    +            "LOG_SETTING": {
    +              "description": "ASSIST_DEBUG_LOG_SETTING",
    +              "offset": 112,
    +              "size": 32,
    +              "reset_value": 128,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LOG_ENA": {
    +                    "description": "reg_log_ena",
    +                    "offset": 0,
    +                    "size": 3
    +                  },
    +                  "LOG_MODE": {
    +                    "description": "reg_log_mode",
    +                    "offset": 3,
    +                    "size": 4
    +                  },
    +                  "LOG_MEM_LOOP_ENABLE": {
    +                    "description": "reg_log_mem_loop_enable",
    +                    "offset": 7,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "LOG_DATA_0": {
    +              "description": "ASSIST_DEBUG_LOG_DATA_0_REG",
    +              "offset": 116,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LOG_DATA_0": {
    +                    "description": "reg_log_data_0",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "LOG_DATA_MASK": {
    +              "description": "ASSIST_DEBUG_LOG_DATA_MASK_REG",
    +              "offset": 120,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LOG_DATA_SIZE": {
    +                    "description": "reg_log_data_size",
    +                    "offset": 0,
    +                    "size": 16
    +                  }
    +                }
    +              }
    +            },
    +            "LOG_MIN": {
    +              "description": "ASSIST_DEBUG_LOG_MIN_REG",
    +              "offset": 124,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LOG_MIN": {
    +                    "description": "reg_log_min",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "LOG_MAX": {
    +              "description": "ASSIST_DEBUG_LOG_MAX_REG",
    +              "offset": 128,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LOG_MAX": {
    +                    "description": "reg_log_max",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "LOG_MEM_START": {
    +              "description": "ASSIST_DEBUG_LOG_MEM_START_REG",
    +              "offset": 132,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LOG_MEM_START": {
    +                    "description": "reg_log_mem_start",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "LOG_MEM_END": {
    +              "description": "ASSIST_DEBUG_LOG_MEM_END_REG",
    +              "offset": 136,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LOG_MEM_END": {
    +                    "description": "reg_log_mem_end",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "LOG_MEM_WRITING_ADDR": {
    +              "description": "ASSIST_DEBUG_LOG_MEM_WRITING_ADDR_REG",
    +              "offset": 140,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LOG_MEM_WRITING_ADDR": {
    +                    "description": "reg_log_mem_writing_addr",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "LOG_MEM_FULL_FLAG": {
    +              "description": "ASSIST_DEBUG_LOG_MEM_FULL_FLAG_REG",
    +              "offset": 144,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LOG_MEM_FULL_FLAG": {
    +                    "description": "reg_log_mem_full_flag",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CLR_LOG_MEM_FULL_FLAG": {
    +                    "description": "reg_clr_log_mem_full_flag",
    +                    "offset": 1,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "C0RE_0_LASTPC_BEFORE_EXCEPTION": {
    +              "description": "ASSIST_DEBUG_C0RE_0_LASTPC_BEFORE_EXCEPTION",
    +              "offset": 148,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_LASTPC_BEFORE_EXC": {
    +                    "description": "reg_core_0_lastpc_before_exc",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "C0RE_0_DEBUG_MODE": {
    +              "description": "ASSIST_DEBUG_C0RE_0_DEBUG_MODE",
    +              "offset": 152,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_DEBUG_MODE": {
    +                    "description": "reg_core_0_debug_mode",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_DEBUG_MODULE_ACTIVE": {
    +                    "description": "reg_core_0_debug_module_active",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DATE": {
    +              "description": "ASSIST_DEBUG_DATE_REG",
    +              "offset": 508,
    +              "size": 32,
    +              "reset_value": 33587216,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ASSIST_DEBUG_DATE": {
    +                    "description": "reg_assist_debug_date",
    +                    "offset": 0,
    +                    "size": 28
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "DMA": {
    +        "description": "DMA (Direct Memory Access) Controller",
    +        "children": {
    +          "registers": {
    +            "INT_RAW_CH0": {
    +              "description": "DMA_INT_RAW_CH0_REG.",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_DONE_CH0_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 0.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_SUC_EOF_CH0_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 0. For UHCI0, the raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received and no data error is detected for Rx channel 0.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_ERR_EOF_CH0_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when data error is detected only in the case that the peripheral is UHCI0 for Rx channel 0. For other peripherals, this raw interrupt is reserved.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_DONE_CH0_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been transmitted to peripherals for Tx channel 0.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_EOF_CH0_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been read from memory for Tx channel 0.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_DSCR_ERR_CH0_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when detecting inlink descriptor error, including owner error, the second and third word error of inlink descriptor for Rx channel 0.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_DSCR_ERR_CH0_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when detecting outlink descriptor error, including owner error, the second and third word error of outlink descriptor for Tx channel 0.",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_DSCR_EMPTY_CH0_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when Rx buffer pointed by inlink is full and receiving data is not completed, but there is no more inlink for Rx channel 0.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_TOTAL_EOF_CH0_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when data corresponding a outlink (includes one link descriptor or few link descriptors) is transmitted out for Tx channel 0.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "INFIFO_OVF_CH0_INT_RAW": {
    +                    "description": "This raw interrupt bit turns to high level when level 1 fifo of Rx channel 0 is overflow.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "INFIFO_UDF_CH0_INT_RAW": {
    +                    "description": "This raw interrupt bit turns to high level when level 1 fifo of Rx channel 0 is underflow.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUTFIFO_OVF_CH0_INT_RAW": {
    +                    "description": "This raw interrupt bit turns to high level when level 1 fifo of Tx channel 0 is overflow.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUTFIFO_UDF_CH0_INT_RAW": {
    +                    "description": "This raw interrupt bit turns to high level when level 1 fifo of Tx channel 0 is underflow.",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ST_CH0": {
    +              "description": "DMA_INT_ST_CH0_REG.",
    +              "offset": 4,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_DONE_CH0_INT_ST": {
    +                    "description": "The raw interrupt status bit for the IN_DONE_CH_INT interrupt.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_SUC_EOF_CH0_INT_ST": {
    +                    "description": "The raw interrupt status bit for the IN_SUC_EOF_CH_INT interrupt.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_ERR_EOF_CH0_INT_ST": {
    +                    "description": "The raw interrupt status bit for the IN_ERR_EOF_CH_INT interrupt.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_DONE_CH0_INT_ST": {
    +                    "description": "The raw interrupt status bit for the OUT_DONE_CH_INT interrupt.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_EOF_CH0_INT_ST": {
    +                    "description": "The raw interrupt status bit for the OUT_EOF_CH_INT interrupt.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_DSCR_ERR_CH0_INT_ST": {
    +                    "description": "The raw interrupt status bit for the IN_DSCR_ERR_CH_INT interrupt.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_DSCR_ERR_CH0_INT_ST": {
    +                    "description": "The raw interrupt status bit for the OUT_DSCR_ERR_CH_INT interrupt.",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_DSCR_EMPTY_CH0_INT_ST": {
    +                    "description": "The raw interrupt status bit for the IN_DSCR_EMPTY_CH_INT interrupt.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_TOTAL_EOF_CH0_INT_ST": {
    +                    "description": "The raw interrupt status bit for the OUT_TOTAL_EOF_CH_INT interrupt.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "INFIFO_OVF_CH0_INT_ST": {
    +                    "description": "The raw interrupt status bit for the INFIFO_OVF_L1_CH_INT interrupt.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "INFIFO_UDF_CH0_INT_ST": {
    +                    "description": "The raw interrupt status bit for the INFIFO_UDF_L1_CH_INT interrupt.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUTFIFO_OVF_CH0_INT_ST": {
    +                    "description": "The raw interrupt status bit for the OUTFIFO_OVF_L1_CH_INT interrupt.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUTFIFO_UDF_CH0_INT_ST": {
    +                    "description": "The raw interrupt status bit for the OUTFIFO_UDF_L1_CH_INT interrupt.",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ENA_CH0": {
    +              "description": "DMA_INT_ENA_CH0_REG.",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_DONE_CH0_INT_ENA": {
    +                    "description": "The interrupt enable bit for the IN_DONE_CH_INT interrupt.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "IN_SUC_EOF_CH0_INT_ENA": {
    +                    "description": "The interrupt enable bit for the IN_SUC_EOF_CH_INT interrupt.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "IN_ERR_EOF_CH0_INT_ENA": {
    +                    "description": "The interrupt enable bit for the IN_ERR_EOF_CH_INT interrupt.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "OUT_DONE_CH0_INT_ENA": {
    +                    "description": "The interrupt enable bit for the OUT_DONE_CH_INT interrupt.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "OUT_EOF_CH0_INT_ENA": {
    +                    "description": "The interrupt enable bit for the OUT_EOF_CH_INT interrupt.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "IN_DSCR_ERR_CH0_INT_ENA": {
    +                    "description": "The interrupt enable bit for the IN_DSCR_ERR_CH_INT interrupt.",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "OUT_DSCR_ERR_CH0_INT_ENA": {
    +                    "description": "The interrupt enable bit for the OUT_DSCR_ERR_CH_INT interrupt.",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "IN_DSCR_EMPTY_CH0_INT_ENA": {
    +                    "description": "The interrupt enable bit for the IN_DSCR_EMPTY_CH_INT interrupt.",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "OUT_TOTAL_EOF_CH0_INT_ENA": {
    +                    "description": "The interrupt enable bit for the OUT_TOTAL_EOF_CH_INT interrupt.",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "INFIFO_OVF_CH0_INT_ENA": {
    +                    "description": "The interrupt enable bit for the INFIFO_OVF_L1_CH_INT interrupt.",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "INFIFO_UDF_CH0_INT_ENA": {
    +                    "description": "The interrupt enable bit for the INFIFO_UDF_L1_CH_INT interrupt.",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "OUTFIFO_OVF_CH0_INT_ENA": {
    +                    "description": "The interrupt enable bit for the OUTFIFO_OVF_L1_CH_INT interrupt.",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "OUTFIFO_UDF_CH0_INT_ENA": {
    +                    "description": "The interrupt enable bit for the OUTFIFO_UDF_L1_CH_INT interrupt.",
    +                    "offset": 12,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INT_CLR_CH0": {
    +              "description": "DMA_INT_CLR_CH0_REG.",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_DONE_CH0_INT_CLR": {
    +                    "description": "Set this bit to clear the IN_DONE_CH_INT interrupt.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "IN_SUC_EOF_CH0_INT_CLR": {
    +                    "description": "Set this bit to clear the IN_SUC_EOF_CH_INT interrupt.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "IN_ERR_EOF_CH0_INT_CLR": {
    +                    "description": "Set this bit to clear the IN_ERR_EOF_CH_INT interrupt.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OUT_DONE_CH0_INT_CLR": {
    +                    "description": "Set this bit to clear the OUT_DONE_CH_INT interrupt.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OUT_EOF_CH0_INT_CLR": {
    +                    "description": "Set this bit to clear the OUT_EOF_CH_INT interrupt.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "IN_DSCR_ERR_CH0_INT_CLR": {
    +                    "description": "Set this bit to clear the IN_DSCR_ERR_CH_INT interrupt.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OUT_DSCR_ERR_CH0_INT_CLR": {
    +                    "description": "Set this bit to clear the OUT_DSCR_ERR_CH_INT interrupt.",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "IN_DSCR_EMPTY_CH0_INT_CLR": {
    +                    "description": "Set this bit to clear the IN_DSCR_EMPTY_CH_INT interrupt.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OUT_TOTAL_EOF_CH0_INT_CLR": {
    +                    "description": "Set this bit to clear the OUT_TOTAL_EOF_CH_INT interrupt.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "INFIFO_OVF_CH0_INT_CLR": {
    +                    "description": "Set this bit to clear the INFIFO_OVF_L1_CH_INT interrupt.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "INFIFO_UDF_CH0_INT_CLR": {
    +                    "description": "Set this bit to clear the INFIFO_UDF_L1_CH_INT interrupt.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OUTFIFO_OVF_CH0_INT_CLR": {
    +                    "description": "Set this bit to clear the OUTFIFO_OVF_L1_CH_INT interrupt.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OUTFIFO_UDF_CH0_INT_CLR": {
    +                    "description": "Set this bit to clear the OUTFIFO_UDF_L1_CH_INT interrupt.",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_RAW_CH1": {
    +              "description": "DMA_INT_RAW_CH1_REG.",
    +              "offset": 16,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_DONE_CH1_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 1.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_SUC_EOF_CH1_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 1. For UHCI0, the raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received and no data error is detected for Rx channel 1.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_ERR_EOF_CH1_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when data error is detected only in the case that the peripheral is UHCI0 for Rx channel 1. For other peripherals, this raw interrupt is reserved.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_DONE_CH1_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been transmitted to peripherals for Tx channel 1.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_EOF_CH1_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been read from memory for Tx channel 1.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_DSCR_ERR_CH1_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when detecting inlink descriptor error, including owner error, the second and third word error of inlink descriptor for Rx channel 1.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_DSCR_ERR_CH1_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when detecting outlink descriptor error, including owner error, the second and third word error of outlink descriptor for Tx channel 1.",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_DSCR_EMPTY_CH1_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when Rx buffer pointed by inlink is full and receiving data is not completed, but there is no more inlink for Rx channel 1.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_TOTAL_EOF_CH1_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when data corresponding a outlink (includes one link descriptor or few link descriptors) is transmitted out for Tx channel 1.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "INFIFO_OVF_CH1_INT_RAW": {
    +                    "description": "This raw interrupt bit turns to high level when level 1 fifo of Rx channel 1 is overflow.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "INFIFO_UDF_CH1_INT_RAW": {
    +                    "description": "This raw interrupt bit turns to high level when level 1 fifo of Rx channel 1 is underflow.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUTFIFO_OVF_CH1_INT_RAW": {
    +                    "description": "This raw interrupt bit turns to high level when level 1 fifo of Tx channel 1 is overflow.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUTFIFO_UDF_CH1_INT_RAW": {
    +                    "description": "This raw interrupt bit turns to high level when level 1 fifo of Tx channel 1 is underflow.",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ST_CH1": {
    +              "description": "DMA_INT_ST_CH1_REG.",
    +              "offset": 20,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_DONE_CH1_INT_ST": {
    +                    "description": "The raw interrupt status bit for the IN_DONE_CH_INT interrupt.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_SUC_EOF_CH1_INT_ST": {
    +                    "description": "The raw interrupt status bit for the IN_SUC_EOF_CH_INT interrupt.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_ERR_EOF_CH1_INT_ST": {
    +                    "description": "The raw interrupt status bit for the IN_ERR_EOF_CH_INT interrupt.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_DONE_CH1_INT_ST": {
    +                    "description": "The raw interrupt status bit for the OUT_DONE_CH_INT interrupt.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_EOF_CH1_INT_ST": {
    +                    "description": "The raw interrupt status bit for the OUT_EOF_CH_INT interrupt.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_DSCR_ERR_CH1_INT_ST": {
    +                    "description": "The raw interrupt status bit for the IN_DSCR_ERR_CH_INT interrupt.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_DSCR_ERR_CH1_INT_ST": {
    +                    "description": "The raw interrupt status bit for the OUT_DSCR_ERR_CH_INT interrupt.",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_DSCR_EMPTY_CH1_INT_ST": {
    +                    "description": "The raw interrupt status bit for the IN_DSCR_EMPTY_CH_INT interrupt.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_TOTAL_EOF_CH1_INT_ST": {
    +                    "description": "The raw interrupt status bit for the OUT_TOTAL_EOF_CH_INT interrupt.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "INFIFO_OVF_CH1_INT_ST": {
    +                    "description": "The raw interrupt status bit for the INFIFO_OVF_L1_CH_INT interrupt.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "INFIFO_UDF_CH1_INT_ST": {
    +                    "description": "The raw interrupt status bit for the INFIFO_UDF_L1_CH_INT interrupt.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUTFIFO_OVF_CH1_INT_ST": {
    +                    "description": "The raw interrupt status bit for the OUTFIFO_OVF_L1_CH_INT interrupt.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUTFIFO_UDF_CH1_INT_ST": {
    +                    "description": "The raw interrupt status bit for the OUTFIFO_UDF_L1_CH_INT interrupt.",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ENA_CH1": {
    +              "description": "DMA_INT_ENA_CH1_REG.",
    +              "offset": 24,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_DONE_CH1_INT_ENA": {
    +                    "description": "The interrupt enable bit for the IN_DONE_CH_INT interrupt.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "IN_SUC_EOF_CH1_INT_ENA": {
    +                    "description": "The interrupt enable bit for the IN_SUC_EOF_CH_INT interrupt.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "IN_ERR_EOF_CH1_INT_ENA": {
    +                    "description": "The interrupt enable bit for the IN_ERR_EOF_CH_INT interrupt.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "OUT_DONE_CH1_INT_ENA": {
    +                    "description": "The interrupt enable bit for the OUT_DONE_CH_INT interrupt.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "OUT_EOF_CH1_INT_ENA": {
    +                    "description": "The interrupt enable bit for the OUT_EOF_CH_INT interrupt.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "IN_DSCR_ERR_CH1_INT_ENA": {
    +                    "description": "The interrupt enable bit for the IN_DSCR_ERR_CH_INT interrupt.",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "OUT_DSCR_ERR_CH1_INT_ENA": {
    +                    "description": "The interrupt enable bit for the OUT_DSCR_ERR_CH_INT interrupt.",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "IN_DSCR_EMPTY_CH1_INT_ENA": {
    +                    "description": "The interrupt enable bit for the IN_DSCR_EMPTY_CH_INT interrupt.",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "OUT_TOTAL_EOF_CH1_INT_ENA": {
    +                    "description": "The interrupt enable bit for the OUT_TOTAL_EOF_CH_INT interrupt.",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "INFIFO_OVF_CH1_INT_ENA": {
    +                    "description": "The interrupt enable bit for the INFIFO_OVF_L1_CH_INT interrupt.",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "INFIFO_UDF_CH1_INT_ENA": {
    +                    "description": "The interrupt enable bit for the INFIFO_UDF_L1_CH_INT interrupt.",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "OUTFIFO_OVF_CH1_INT_ENA": {
    +                    "description": "The interrupt enable bit for the OUTFIFO_OVF_L1_CH_INT interrupt.",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "OUTFIFO_UDF_CH1_INT_ENA": {
    +                    "description": "The interrupt enable bit for the OUTFIFO_UDF_L1_CH_INT interrupt.",
    +                    "offset": 12,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INT_CLR_CH1": {
    +              "description": "DMA_INT_CLR_CH1_REG.",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_DONE_CH1_INT_CLR": {
    +                    "description": "Set this bit to clear the IN_DONE_CH_INT interrupt.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "IN_SUC_EOF_CH1_INT_CLR": {
    +                    "description": "Set this bit to clear the IN_SUC_EOF_CH_INT interrupt.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "IN_ERR_EOF_CH1_INT_CLR": {
    +                    "description": "Set this bit to clear the IN_ERR_EOF_CH_INT interrupt.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OUT_DONE_CH1_INT_CLR": {
    +                    "description": "Set this bit to clear the OUT_DONE_CH_INT interrupt.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OUT_EOF_CH1_INT_CLR": {
    +                    "description": "Set this bit to clear the OUT_EOF_CH_INT interrupt.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "IN_DSCR_ERR_CH1_INT_CLR": {
    +                    "description": "Set this bit to clear the IN_DSCR_ERR_CH_INT interrupt.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OUT_DSCR_ERR_CH1_INT_CLR": {
    +                    "description": "Set this bit to clear the OUT_DSCR_ERR_CH_INT interrupt.",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "IN_DSCR_EMPTY_CH1_INT_CLR": {
    +                    "description": "Set this bit to clear the IN_DSCR_EMPTY_CH_INT interrupt.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OUT_TOTAL_EOF_CH1_INT_CLR": {
    +                    "description": "Set this bit to clear the OUT_TOTAL_EOF_CH_INT interrupt.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "INFIFO_OVF_CH1_INT_CLR": {
    +                    "description": "Set this bit to clear the INFIFO_OVF_L1_CH_INT interrupt.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "INFIFO_UDF_CH1_INT_CLR": {
    +                    "description": "Set this bit to clear the INFIFO_UDF_L1_CH_INT interrupt.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OUTFIFO_OVF_CH1_INT_CLR": {
    +                    "description": "Set this bit to clear the OUTFIFO_OVF_L1_CH_INT interrupt.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OUTFIFO_UDF_CH1_INT_CLR": {
    +                    "description": "Set this bit to clear the OUTFIFO_UDF_L1_CH_INT interrupt.",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_RAW_CH2": {
    +              "description": "DMA_INT_RAW_CH2_REG.",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_DONE_CH2_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 2.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_SUC_EOF_CH2_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 2. For UHCI0, the raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received and no data error is detected for Rx channel 2.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_ERR_EOF_CH2_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when data error is detected only in the case that the peripheral is UHCI0 for Rx channel 2. For other peripherals, this raw interrupt is reserved.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_DONE_CH2_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been transmitted to peripherals for Tx channel 2.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_EOF_CH2_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been read from memory for Tx channel 2.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_DSCR_ERR_CH2_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when detecting inlink descriptor error, including owner error, the second and third word error of inlink descriptor for Rx channel 2.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_DSCR_ERR_CH2_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when detecting outlink descriptor error, including owner error, the second and third word error of outlink descriptor for Tx channel 2.",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_DSCR_EMPTY_CH2_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when Rx buffer pointed by inlink is full and receiving data is not completed, but there is no more inlink for Rx channel 2.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_TOTAL_EOF_CH2_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when data corresponding a outlink (includes one link descriptor or few link descriptors) is transmitted out for Tx channel 2.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "INFIFO_OVF_CH2_INT_RAW": {
    +                    "description": "This raw interrupt bit turns to high level when level 1 fifo of Rx channel 2 is overflow.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "INFIFO_UDF_CH2_INT_RAW": {
    +                    "description": "This raw interrupt bit turns to high level when level 1 fifo of Rx channel 2 is underflow.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUTFIFO_OVF_CH2_INT_RAW": {
    +                    "description": "This raw interrupt bit turns to high level when level 1 fifo of Tx channel 2 is overflow.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUTFIFO_UDF_CH2_INT_RAW": {
    +                    "description": "This raw interrupt bit turns to high level when level 1 fifo of Tx channel 2 is underflow.",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ST_CH2": {
    +              "description": "DMA_INT_ST_CH2_REG.",
    +              "offset": 36,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_DONE_CH2_INT_ST": {
    +                    "description": "The raw interrupt status bit for the IN_DONE_CH_INT interrupt.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_SUC_EOF_CH2_INT_ST": {
    +                    "description": "The raw interrupt status bit for the IN_SUC_EOF_CH_INT interrupt.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_ERR_EOF_CH2_INT_ST": {
    +                    "description": "The raw interrupt status bit for the IN_ERR_EOF_CH_INT interrupt.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_DONE_CH2_INT_ST": {
    +                    "description": "The raw interrupt status bit for the OUT_DONE_CH_INT interrupt.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_EOF_CH2_INT_ST": {
    +                    "description": "The raw interrupt status bit for the OUT_EOF_CH_INT interrupt.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_DSCR_ERR_CH2_INT_ST": {
    +                    "description": "The raw interrupt status bit for the IN_DSCR_ERR_CH_INT interrupt.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_DSCR_ERR_CH2_INT_ST": {
    +                    "description": "The raw interrupt status bit for the OUT_DSCR_ERR_CH_INT interrupt.",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_DSCR_EMPTY_CH2_INT_ST": {
    +                    "description": "The raw interrupt status bit for the IN_DSCR_EMPTY_CH_INT interrupt.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_TOTAL_EOF_CH2_INT_ST": {
    +                    "description": "The raw interrupt status bit for the OUT_TOTAL_EOF_CH_INT interrupt.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "INFIFO_OVF_CH2_INT_ST": {
    +                    "description": "The raw interrupt status bit for the INFIFO_OVF_L1_CH_INT interrupt.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "INFIFO_UDF_CH2_INT_ST": {
    +                    "description": "The raw interrupt status bit for the INFIFO_UDF_L1_CH_INT interrupt.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUTFIFO_OVF_CH2_INT_ST": {
    +                    "description": "The raw interrupt status bit for the OUTFIFO_OVF_L1_CH_INT interrupt.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUTFIFO_UDF_CH2_INT_ST": {
    +                    "description": "The raw interrupt status bit for the OUTFIFO_UDF_L1_CH_INT interrupt.",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ENA_CH2": {
    +              "description": "DMA_INT_ENA_CH2_REG.",
    +              "offset": 40,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_DONE_CH2_INT_ENA": {
    +                    "description": "The interrupt enable bit for the IN_DONE_CH_INT interrupt.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "IN_SUC_EOF_CH2_INT_ENA": {
    +                    "description": "The interrupt enable bit for the IN_SUC_EOF_CH_INT interrupt.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "IN_ERR_EOF_CH2_INT_ENA": {
    +                    "description": "The interrupt enable bit for the IN_ERR_EOF_CH_INT interrupt.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "OUT_DONE_CH2_INT_ENA": {
    +                    "description": "The interrupt enable bit for the OUT_DONE_CH_INT interrupt.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "OUT_EOF_CH2_INT_ENA": {
    +                    "description": "The interrupt enable bit for the OUT_EOF_CH_INT interrupt.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "IN_DSCR_ERR_CH2_INT_ENA": {
    +                    "description": "The interrupt enable bit for the IN_DSCR_ERR_CH_INT interrupt.",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "OUT_DSCR_ERR_CH2_INT_ENA": {
    +                    "description": "The interrupt enable bit for the OUT_DSCR_ERR_CH_INT interrupt.",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "IN_DSCR_EMPTY_CH2_INT_ENA": {
    +                    "description": "The interrupt enable bit for the IN_DSCR_EMPTY_CH_INT interrupt.",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "OUT_TOTAL_EOF_CH2_INT_ENA": {
    +                    "description": "The interrupt enable bit for the OUT_TOTAL_EOF_CH_INT interrupt.",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "INFIFO_OVF_CH2_INT_ENA": {
    +                    "description": "The interrupt enable bit for the INFIFO_OVF_L1_CH_INT interrupt.",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "INFIFO_UDF_CH2_INT_ENA": {
    +                    "description": "The interrupt enable bit for the INFIFO_UDF_L1_CH_INT interrupt.",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "OUTFIFO_OVF_CH2_INT_ENA": {
    +                    "description": "The interrupt enable bit for the OUTFIFO_OVF_L1_CH_INT interrupt.",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "OUTFIFO_UDF_CH2_INT_ENA": {
    +                    "description": "The interrupt enable bit for the OUTFIFO_UDF_L1_CH_INT interrupt.",
    +                    "offset": 12,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INT_CLR_CH2": {
    +              "description": "DMA_INT_CLR_CH2_REG.",
    +              "offset": 44,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_DONE_CH2_INT_CLR": {
    +                    "description": "Set this bit to clear the IN_DONE_CH_INT interrupt.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "IN_SUC_EOF_CH2_INT_CLR": {
    +                    "description": "Set this bit to clear the IN_SUC_EOF_CH_INT interrupt.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "IN_ERR_EOF_CH2_INT_CLR": {
    +                    "description": "Set this bit to clear the IN_ERR_EOF_CH_INT interrupt.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OUT_DONE_CH2_INT_CLR": {
    +                    "description": "Set this bit to clear the OUT_DONE_CH_INT interrupt.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OUT_EOF_CH2_INT_CLR": {
    +                    "description": "Set this bit to clear the OUT_EOF_CH_INT interrupt.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "IN_DSCR_ERR_CH2_INT_CLR": {
    +                    "description": "Set this bit to clear the IN_DSCR_ERR_CH_INT interrupt.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OUT_DSCR_ERR_CH2_INT_CLR": {
    +                    "description": "Set this bit to clear the OUT_DSCR_ERR_CH_INT interrupt.",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "IN_DSCR_EMPTY_CH2_INT_CLR": {
    +                    "description": "Set this bit to clear the IN_DSCR_EMPTY_CH_INT interrupt.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OUT_TOTAL_EOF_CH2_INT_CLR": {
    +                    "description": "Set this bit to clear the OUT_TOTAL_EOF_CH_INT interrupt.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "INFIFO_OVF_CH2_INT_CLR": {
    +                    "description": "Set this bit to clear the INFIFO_OVF_L1_CH_INT interrupt.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "INFIFO_UDF_CH2_INT_CLR": {
    +                    "description": "Set this bit to clear the INFIFO_UDF_L1_CH_INT interrupt.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OUTFIFO_OVF_CH2_INT_CLR": {
    +                    "description": "Set this bit to clear the OUTFIFO_OVF_L1_CH_INT interrupt.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OUTFIFO_UDF_CH2_INT_CLR": {
    +                    "description": "Set this bit to clear the OUTFIFO_UDF_L1_CH_INT interrupt.",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "AHB_TEST": {
    +              "description": "DMA_AHB_TEST_REG.",
    +              "offset": 64,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "AHB_TESTMODE": {
    +                    "description": "reserved",
    +                    "offset": 0,
    +                    "size": 3
    +                  },
    +                  "AHB_TESTADDR": {
    +                    "description": "reserved",
    +                    "offset": 4,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "MISC_CONF": {
    +              "description": "DMA_MISC_CONF_REG.",
    +              "offset": 68,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "AHBM_RST_INTER": {
    +                    "description": "Set this bit, then clear this bit to reset the internal ahb FSM.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "ARB_PRI_DIS": {
    +                    "description": "Set this bit to disable priority arbitration function.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "CLK_EN": {
    +                    "description": "reg_clk_en",
    +                    "offset": 3,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DATE": {
    +              "description": "DMA_DATE_REG.",
    +              "offset": 72,
    +              "size": 32,
    +              "reset_value": 33587792,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATE": {
    +                    "description": "register version.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "IN_CONF0_CH0": {
    +              "description": "DMA_IN_CONF0_CH0_REG.",
    +              "offset": 112,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_RST_CH0": {
    +                    "description": "This bit is used to reset DMA channel 0 Rx FSM and Rx FIFO pointer.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "IN_LOOP_TEST_CH0": {
    +                    "description": "reserved",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "INDSCR_BURST_EN_CH0": {
    +                    "description": "Set this bit to 1 to enable INCR burst transfer for Rx channel 0 reading link descriptor when accessing internal SRAM.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "IN_DATA_BURST_EN_CH0": {
    +                    "description": "Set this bit to 1 to enable INCR burst transfer for Rx channel 0 receiving data when accessing internal SRAM.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "MEM_TRANS_EN_CH0": {
    +                    "description": "Set this bit 1 to enable automatic transmitting data from memory to memory via DMA.",
    +                    "offset": 4,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "IN_CONF1_CH0": {
    +              "description": "DMA_IN_CONF1_CH0_REG.",
    +              "offset": 116,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_CHECK_OWNER_CH0": {
    +                    "description": "Set this bit to enable checking the owner attribute of the link descriptor.",
    +                    "offset": 12,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INFIFO_STATUS_CH0": {
    +              "description": "DMA_INFIFO_STATUS_CH0_REG.",
    +              "offset": 120,
    +              "size": 32,
    +              "reset_value": 125829123,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INFIFO_FULL_CH0": {
    +                    "description": "L1 Rx FIFO full signal for Rx channel 0.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "INFIFO_EMPTY_CH0": {
    +                    "description": "L1 Rx FIFO empty signal for Rx channel 0.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "INFIFO_CNT_CH0": {
    +                    "description": "The register stores the byte number of the data in L1 Rx FIFO for Rx channel 0.",
    +                    "offset": 2,
    +                    "size": 6,
    +                    "access": "read-only"
    +                  },
    +                  "IN_REMAIN_UNDER_1B_CH0": {
    +                    "description": "reserved",
    +                    "offset": 23,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_REMAIN_UNDER_2B_CH0": {
    +                    "description": "reserved",
    +                    "offset": 24,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_REMAIN_UNDER_3B_CH0": {
    +                    "description": "reserved",
    +                    "offset": 25,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_REMAIN_UNDER_4B_CH0": {
    +                    "description": "reserved",
    +                    "offset": 26,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_BUF_HUNGRY_CH0": {
    +                    "description": "reserved",
    +                    "offset": 27,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_POP_CH0": {
    +              "description": "DMA_IN_POP_CH0_REG.",
    +              "offset": 124,
    +              "size": 32,
    +              "reset_value": 2048,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INFIFO_RDATA_CH0": {
    +                    "description": "This register stores the data popping from DMA FIFO.",
    +                    "offset": 0,
    +                    "size": 12,
    +                    "access": "read-only"
    +                  },
    +                  "INFIFO_POP_CH0": {
    +                    "description": "Set this bit to pop data from DMA FIFO.",
    +                    "offset": 12,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "IN_LINK_CH0": {
    +              "description": "DMA_IN_LINK_CH0_REG.",
    +              "offset": 128,
    +              "size": 32,
    +              "reset_value": 17825792,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INLINK_ADDR_CH0": {
    +                    "description": "This register stores the 20 least significant bits of the first inlink descriptor's address.",
    +                    "offset": 0,
    +                    "size": 20
    +                  },
    +                  "INLINK_AUTO_RET_CH0": {
    +                    "description": "Set this bit to return to current inlink descriptor's address, when there are some errors in current receiving data.",
    +                    "offset": 20,
    +                    "size": 1
    +                  },
    +                  "INLINK_STOP_CH0": {
    +                    "description": "Set this bit to stop dealing with the inlink descriptors.",
    +                    "offset": 21,
    +                    "size": 1
    +                  },
    +                  "INLINK_START_CH0": {
    +                    "description": "Set this bit to start dealing with the inlink descriptors.",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "INLINK_RESTART_CH0": {
    +                    "description": "Set this bit to mount a new inlink descriptor.",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "INLINK_PARK_CH0": {
    +                    "description": "1: the inlink descriptor's FSM is in idle state.  0: the inlink descriptor's FSM is working.",
    +                    "offset": 24,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_STATE_CH0": {
    +              "description": "DMA_IN_STATE_CH0_REG.",
    +              "offset": 132,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INLINK_DSCR_ADDR_CH0": {
    +                    "description": "This register stores the current inlink descriptor's address.",
    +                    "offset": 0,
    +                    "size": 18,
    +                    "access": "read-only"
    +                  },
    +                  "IN_DSCR_STATE_CH0": {
    +                    "description": "reserved",
    +                    "offset": 18,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "IN_STATE_CH0": {
    +                    "description": "reserved",
    +                    "offset": 20,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_SUC_EOF_DES_ADDR_CH0": {
    +              "description": "DMA_IN_SUC_EOF_DES_ADDR_CH0_REG.",
    +              "offset": 136,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_SUC_EOF_DES_ADDR_CH0": {
    +                    "description": "This register stores the address of the inlink descriptor when the EOF bit in this descriptor is 1.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_ERR_EOF_DES_ADDR_CH0": {
    +              "description": "DMA_IN_ERR_EOF_DES_ADDR_CH0_REG.",
    +              "offset": 140,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_ERR_EOF_DES_ADDR_CH0": {
    +                    "description": "This register stores the address of the inlink descriptor when there are some errors in current receiving data. Only used when peripheral is UHCI0.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_DSCR_CH0": {
    +              "description": "DMA_IN_DSCR_CH0_REG.",
    +              "offset": 144,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INLINK_DSCR_CH0": {
    +                    "description": "The address of the current inlink descriptor x.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_DSCR_BF0_CH0": {
    +              "description": "DMA_IN_DSCR_BF0_CH0_REG.",
    +              "offset": 148,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INLINK_DSCR_BF0_CH0": {
    +                    "description": "The address of the last inlink descriptor x-1.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_DSCR_BF1_CH0": {
    +              "description": "DMA_IN_DSCR_BF1_CH0_REG.",
    +              "offset": 152,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INLINK_DSCR_BF1_CH0": {
    +                    "description": "The address of the second-to-last inlink descriptor x-2.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_PRI_CH0": {
    +              "description": "DMA_IN_PRI_CH0_REG.",
    +              "offset": 156,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_PRI_CH0": {
    +                    "description": "The priority of Rx channel 0. The larger of the value, the higher of the priority.",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "IN_PERI_SEL_CH0": {
    +              "description": "DMA_IN_PERI_SEL_CH0_REG.",
    +              "offset": 160,
    +              "size": 32,
    +              "reset_value": 63,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PERI_IN_SEL_CH0": {
    +                    "description": "This register is used to select peripheral for Rx channel 0. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.",
    +                    "offset": 0,
    +                    "size": 6
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_CONF0_CH0": {
    +              "description": "DMA_OUT_CONF0_CH0_REG.",
    +              "offset": 208,
    +              "size": 32,
    +              "reset_value": 8,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUT_RST_CH0": {
    +                    "description": "This bit is used to reset DMA channel 0 Tx FSM and Tx FIFO pointer.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "OUT_LOOP_TEST_CH0": {
    +                    "description": "reserved",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "OUT_AUTO_WRBACK_CH0": {
    +                    "description": "Set this bit to enable automatic outlink-writeback when all the data in tx buffer has been transmitted.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "OUT_EOF_MODE_CH0": {
    +                    "description": "EOF flag generation mode when transmitting data. 1: EOF flag for Tx channel 0 is generated when data need to transmit has been popped from FIFO in DMA",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "OUTDSCR_BURST_EN_CH0": {
    +                    "description": "Set this bit to 1 to enable INCR burst transfer for Tx channel 0 reading link descriptor when accessing internal SRAM.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "OUT_DATA_BURST_EN_CH0": {
    +                    "description": "Set this bit to 1 to enable INCR burst transfer for Tx channel 0 transmitting data when accessing internal SRAM.",
    +                    "offset": 5,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_CONF1_CH0": {
    +              "description": "DMA_OUT_CONF1_CH0_REG.",
    +              "offset": 212,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUT_CHECK_OWNER_CH0": {
    +                    "description": "Set this bit to enable checking the owner attribute of the link descriptor.",
    +                    "offset": 12,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "OUTFIFO_STATUS_CH0": {
    +              "description": "DMA_OUTFIFO_STATUS_CH0_REG.",
    +              "offset": 216,
    +              "size": 32,
    +              "reset_value": 125829122,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUTFIFO_FULL_CH0": {
    +                    "description": "L1 Tx FIFO full signal for Tx channel 0.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUTFIFO_EMPTY_CH0": {
    +                    "description": "L1 Tx FIFO empty signal for Tx channel 0.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUTFIFO_CNT_CH0": {
    +                    "description": "The register stores the byte number of the data in L1 Tx FIFO for Tx channel 0.",
    +                    "offset": 2,
    +                    "size": 6,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_REMAIN_UNDER_1B_CH0": {
    +                    "description": "reserved",
    +                    "offset": 23,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_REMAIN_UNDER_2B_CH0": {
    +                    "description": "reserved",
    +                    "offset": 24,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_REMAIN_UNDER_3B_CH0": {
    +                    "description": "reserved",
    +                    "offset": 25,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_REMAIN_UNDER_4B_CH0": {
    +                    "description": "reserved",
    +                    "offset": 26,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_PUSH_CH0": {
    +              "description": "DMA_OUT_PUSH_CH0_REG.",
    +              "offset": 220,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUTFIFO_WDATA_CH0": {
    +                    "description": "This register stores the data that need to be pushed into DMA FIFO.",
    +                    "offset": 0,
    +                    "size": 9
    +                  },
    +                  "OUTFIFO_PUSH_CH0": {
    +                    "description": "Set this bit to push data into DMA FIFO.",
    +                    "offset": 9,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_LINK_CH0": {
    +              "description": "DMA_OUT_LINK_CH0_REG.",
    +              "offset": 224,
    +              "size": 32,
    +              "reset_value": 8388608,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUTLINK_ADDR_CH0": {
    +                    "description": "This register stores the 20 least significant bits of the first outlink descriptor's address.",
    +                    "offset": 0,
    +                    "size": 20
    +                  },
    +                  "OUTLINK_STOP_CH0": {
    +                    "description": "Set this bit to stop dealing with the outlink descriptors.",
    +                    "offset": 20,
    +                    "size": 1
    +                  },
    +                  "OUTLINK_START_CH0": {
    +                    "description": "Set this bit to start dealing with the outlink descriptors.",
    +                    "offset": 21,
    +                    "size": 1
    +                  },
    +                  "OUTLINK_RESTART_CH0": {
    +                    "description": "Set this bit to restart a new outlink from the last address.",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "OUTLINK_PARK_CH0": {
    +                    "description": "1: the outlink descriptor's FSM is in idle state.  0: the outlink descriptor's FSM is working.",
    +                    "offset": 23,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_STATE_CH0": {
    +              "description": "DMA_OUT_STATE_CH0_REG.",
    +              "offset": 228,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUTLINK_DSCR_ADDR_CH0": {
    +                    "description": "This register stores the current outlink descriptor's address.",
    +                    "offset": 0,
    +                    "size": 18,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_DSCR_STATE_CH0": {
    +                    "description": "reserved",
    +                    "offset": 18,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_STATE_CH0": {
    +                    "description": "reserved",
    +                    "offset": 20,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_EOF_DES_ADDR_CH0": {
    +              "description": "DMA_OUT_EOF_DES_ADDR_CH0_REG.",
    +              "offset": 232,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUT_EOF_DES_ADDR_CH0": {
    +                    "description": "This register stores the address of the outlink descriptor when the EOF bit in this descriptor is 1.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_EOF_BFR_DES_ADDR_CH0": {
    +              "description": "DMA_OUT_EOF_BFR_DES_ADDR_CH0_REG.",
    +              "offset": 236,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUT_EOF_BFR_DES_ADDR_CH0": {
    +                    "description": "This register stores the address of the outlink descriptor before the last outlink descriptor.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_DSCR_CH0": {
    +              "description": "DMA_OUT_DSCR_CH0_REG.",
    +              "offset": 240,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUTLINK_DSCR_CH0": {
    +                    "description": "The address of the current outlink descriptor y.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_DSCR_BF0_CH0": {
    +              "description": "DMA_OUT_DSCR_BF0_CH0_REG.",
    +              "offset": 244,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUTLINK_DSCR_BF0_CH0": {
    +                    "description": "The address of the last outlink descriptor y-1.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_DSCR_BF1_CH0": {
    +              "description": "DMA_OUT_DSCR_BF1_CH0_REG.",
    +              "offset": 248,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUTLINK_DSCR_BF1_CH0": {
    +                    "description": "The address of the second-to-last inlink descriptor x-2.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_PRI_CH0": {
    +              "description": "DMA_OUT_PRI_CH0_REG.",
    +              "offset": 252,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_PRI_CH0": {
    +                    "description": "The priority of Tx channel 0. The larger of the value, the higher of the priority.",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_PERI_SEL_CH0": {
    +              "description": "DMA_OUT_PERI_SEL_CH0_REG.",
    +              "offset": 256,
    +              "size": 32,
    +              "reset_value": 63,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PERI_OUT_SEL_CH0": {
    +                    "description": "This register is used to select peripheral for Tx channel 0. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.",
    +                    "offset": 0,
    +                    "size": 6
    +                  }
    +                }
    +              }
    +            },
    +            "IN_CONF0_CH1": {
    +              "description": "DMA_IN_CONF0_CH1_REG.",
    +              "offset": 304,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_RST_CH1": {
    +                    "description": "This bit is used to reset DMA channel 1 Rx FSM and Rx FIFO pointer.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "IN_LOOP_TEST_CH1": {
    +                    "description": "reserved",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "INDSCR_BURST_EN_CH1": {
    +                    "description": "Set this bit to 1 to enable INCR burst transfer for Rx channel 1 reading link descriptor when accessing internal SRAM.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "IN_DATA_BURST_EN_CH1": {
    +                    "description": "Set this bit to 1 to enable INCR burst transfer for Rx channel 1 receiving data when accessing internal SRAM.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "MEM_TRANS_EN_CH1": {
    +                    "description": "Set this bit 1 to enable automatic transmitting data from memory to memory via DMA.",
    +                    "offset": 4,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "IN_CONF1_CH1": {
    +              "description": "DMA_IN_CONF1_CH1_REG.",
    +              "offset": 308,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_CHECK_OWNER_CH1": {
    +                    "description": "Set this bit to enable checking the owner attribute of the link descriptor.",
    +                    "offset": 12,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INFIFO_STATUS_CH1": {
    +              "description": "DMA_INFIFO_STATUS_CH1_REG.",
    +              "offset": 312,
    +              "size": 32,
    +              "reset_value": 125829123,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INFIFO_FULL_CH1": {
    +                    "description": "L1 Rx FIFO full signal for Rx channel 1.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "INFIFO_EMPTY_CH1": {
    +                    "description": "L1 Rx FIFO empty signal for Rx channel 1.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "INFIFO_CNT_CH1": {
    +                    "description": "The register stores the byte number of the data in L1 Rx FIFO for Rx channel 1.",
    +                    "offset": 2,
    +                    "size": 6,
    +                    "access": "read-only"
    +                  },
    +                  "IN_REMAIN_UNDER_1B_CH1": {
    +                    "description": "reserved",
    +                    "offset": 23,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_REMAIN_UNDER_2B_CH1": {
    +                    "description": "reserved",
    +                    "offset": 24,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_REMAIN_UNDER_3B_CH1": {
    +                    "description": "reserved",
    +                    "offset": 25,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_REMAIN_UNDER_4B_CH1": {
    +                    "description": "reserved",
    +                    "offset": 26,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_BUF_HUNGRY_CH1": {
    +                    "description": "reserved",
    +                    "offset": 27,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_POP_CH1": {
    +              "description": "DMA_IN_POP_CH1_REG.",
    +              "offset": 316,
    +              "size": 32,
    +              "reset_value": 2048,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INFIFO_RDATA_CH1": {
    +                    "description": "This register stores the data popping from DMA FIFO.",
    +                    "offset": 0,
    +                    "size": 12,
    +                    "access": "read-only"
    +                  },
    +                  "INFIFO_POP_CH1": {
    +                    "description": "Set this bit to pop data from DMA FIFO.",
    +                    "offset": 12,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "IN_LINK_CH1": {
    +              "description": "DMA_IN_LINK_CH1_REG.",
    +              "offset": 320,
    +              "size": 32,
    +              "reset_value": 17825792,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INLINK_ADDR_CH1": {
    +                    "description": "This register stores the 20 least significant bits of the first inlink descriptor's address.",
    +                    "offset": 0,
    +                    "size": 20
    +                  },
    +                  "INLINK_AUTO_RET_CH1": {
    +                    "description": "Set this bit to return to current inlink descriptor's address, when there are some errors in current receiving data.",
    +                    "offset": 20,
    +                    "size": 1
    +                  },
    +                  "INLINK_STOP_CH1": {
    +                    "description": "Set this bit to stop dealing with the inlink descriptors.",
    +                    "offset": 21,
    +                    "size": 1
    +                  },
    +                  "INLINK_START_CH1": {
    +                    "description": "Set this bit to start dealing with the inlink descriptors.",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "INLINK_RESTART_CH1": {
    +                    "description": "Set this bit to mount a new inlink descriptor.",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "INLINK_PARK_CH1": {
    +                    "description": "1: the inlink descriptor's FSM is in idle state.  0: the inlink descriptor's FSM is working.",
    +                    "offset": 24,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_STATE_CH1": {
    +              "description": "DMA_IN_STATE_CH1_REG.",
    +              "offset": 324,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INLINK_DSCR_ADDR_CH1": {
    +                    "description": "This register stores the current inlink descriptor's address.",
    +                    "offset": 0,
    +                    "size": 18,
    +                    "access": "read-only"
    +                  },
    +                  "IN_DSCR_STATE_CH1": {
    +                    "description": "reserved",
    +                    "offset": 18,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "IN_STATE_CH1": {
    +                    "description": "reserved",
    +                    "offset": 20,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_SUC_EOF_DES_ADDR_CH1": {
    +              "description": "DMA_IN_SUC_EOF_DES_ADDR_CH1_REG.",
    +              "offset": 328,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_SUC_EOF_DES_ADDR_CH1": {
    +                    "description": "This register stores the address of the inlink descriptor when the EOF bit in this descriptor is 1.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_ERR_EOF_DES_ADDR_CH1": {
    +              "description": "DMA_IN_ERR_EOF_DES_ADDR_CH1_REG.",
    +              "offset": 332,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_ERR_EOF_DES_ADDR_CH1": {
    +                    "description": "This register stores the address of the inlink descriptor when there are some errors in current receiving data. Only used when peripheral is UHCI0.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_DSCR_CH1": {
    +              "description": "DMA_IN_DSCR_CH1_REG.",
    +              "offset": 336,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INLINK_DSCR_CH1": {
    +                    "description": "The address of the current inlink descriptor x.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_DSCR_BF0_CH1": {
    +              "description": "DMA_IN_DSCR_BF0_CH1_REG.",
    +              "offset": 340,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INLINK_DSCR_BF0_CH1": {
    +                    "description": "The address of the last inlink descriptor x-1.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_DSCR_BF1_CH1": {
    +              "description": "DMA_IN_DSCR_BF1_CH1_REG.",
    +              "offset": 344,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INLINK_DSCR_BF1_CH1": {
    +                    "description": "The address of the second-to-last inlink descriptor x-2.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_PRI_CH1": {
    +              "description": "DMA_IN_PRI_CH1_REG.",
    +              "offset": 348,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_PRI_CH1": {
    +                    "description": "The priority of Rx channel 1. The larger of the value, the higher of the priority.",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "IN_PERI_SEL_CH1": {
    +              "description": "DMA_IN_PERI_SEL_CH1_REG.",
    +              "offset": 352,
    +              "size": 32,
    +              "reset_value": 63,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PERI_IN_SEL_CH1": {
    +                    "description": "This register is used to select peripheral for Rx channel 1. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.",
    +                    "offset": 0,
    +                    "size": 6
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_CONF0_CH1": {
    +              "description": "DMA_OUT_CONF0_CH1_REG.",
    +              "offset": 400,
    +              "size": 32,
    +              "reset_value": 8,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUT_RST_CH1": {
    +                    "description": "This bit is used to reset DMA channel 1 Tx FSM and Tx FIFO pointer.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "OUT_LOOP_TEST_CH1": {
    +                    "description": "reserved",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "OUT_AUTO_WRBACK_CH1": {
    +                    "description": "Set this bit to enable automatic outlink-writeback when all the data in tx buffer has been transmitted.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "OUT_EOF_MODE_CH1": {
    +                    "description": "EOF flag generation mode when transmitting data. 1: EOF flag for Tx channel 1 is generated when data need to transmit has been popped from FIFO in DMA",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "OUTDSCR_BURST_EN_CH1": {
    +                    "description": "Set this bit to 1 to enable INCR burst transfer for Tx channel 1 reading link descriptor when accessing internal SRAM.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "OUT_DATA_BURST_EN_CH1": {
    +                    "description": "Set this bit to 1 to enable INCR burst transfer for Tx channel 1 transmitting data when accessing internal SRAM.",
    +                    "offset": 5,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_CONF1_CH1": {
    +              "description": "DMA_OUT_CONF1_CH1_REG.",
    +              "offset": 404,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUT_CHECK_OWNER_CH1": {
    +                    "description": "Set this bit to enable checking the owner attribute of the link descriptor.",
    +                    "offset": 12,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "OUTFIFO_STATUS_CH1": {
    +              "description": "DMA_OUTFIFO_STATUS_CH1_REG.",
    +              "offset": 408,
    +              "size": 32,
    +              "reset_value": 125829122,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUTFIFO_FULL_CH1": {
    +                    "description": "L1 Tx FIFO full signal for Tx channel 1.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUTFIFO_EMPTY_CH1": {
    +                    "description": "L1 Tx FIFO empty signal for Tx channel 1.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUTFIFO_CNT_CH1": {
    +                    "description": "The register stores the byte number of the data in L1 Tx FIFO for Tx channel 1.",
    +                    "offset": 2,
    +                    "size": 6,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_REMAIN_UNDER_1B_CH1": {
    +                    "description": "reserved",
    +                    "offset": 23,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_REMAIN_UNDER_2B_CH1": {
    +                    "description": "reserved",
    +                    "offset": 24,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_REMAIN_UNDER_3B_CH1": {
    +                    "description": "reserved",
    +                    "offset": 25,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_REMAIN_UNDER_4B_CH1": {
    +                    "description": "reserved",
    +                    "offset": 26,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_PUSH_CH1": {
    +              "description": "DMA_OUT_PUSH_CH1_REG.",
    +              "offset": 412,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUTFIFO_WDATA_CH1": {
    +                    "description": "This register stores the data that need to be pushed into DMA FIFO.",
    +                    "offset": 0,
    +                    "size": 9
    +                  },
    +                  "OUTFIFO_PUSH_CH1": {
    +                    "description": "Set this bit to push data into DMA FIFO.",
    +                    "offset": 9,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_LINK_CH1": {
    +              "description": "DMA_OUT_LINK_CH1_REG.",
    +              "offset": 416,
    +              "size": 32,
    +              "reset_value": 8388608,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUTLINK_ADDR_CH1": {
    +                    "description": "This register stores the 20 least significant bits of the first outlink descriptor's address.",
    +                    "offset": 0,
    +                    "size": 20
    +                  },
    +                  "OUTLINK_STOP_CH1": {
    +                    "description": "Set this bit to stop dealing with the outlink descriptors.",
    +                    "offset": 20,
    +                    "size": 1
    +                  },
    +                  "OUTLINK_START_CH1": {
    +                    "description": "Set this bit to start dealing with the outlink descriptors.",
    +                    "offset": 21,
    +                    "size": 1
    +                  },
    +                  "OUTLINK_RESTART_CH1": {
    +                    "description": "Set this bit to restart a new outlink from the last address.",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "OUTLINK_PARK_CH1": {
    +                    "description": "1: the outlink descriptor's FSM is in idle state.  0: the outlink descriptor's FSM is working.",
    +                    "offset": 23,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_STATE_CH1": {
    +              "description": "DMA_OUT_STATE_CH1_REG.",
    +              "offset": 420,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUTLINK_DSCR_ADDR_CH1": {
    +                    "description": "This register stores the current outlink descriptor's address.",
    +                    "offset": 0,
    +                    "size": 18,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_DSCR_STATE_CH1": {
    +                    "description": "reserved",
    +                    "offset": 18,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_STATE_CH1": {
    +                    "description": "reserved",
    +                    "offset": 20,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_EOF_DES_ADDR_CH1": {
    +              "description": "DMA_OUT_EOF_DES_ADDR_CH1_REG.",
    +              "offset": 424,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUT_EOF_DES_ADDR_CH1": {
    +                    "description": "This register stores the address of the outlink descriptor when the EOF bit in this descriptor is 1.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_EOF_BFR_DES_ADDR_CH1": {
    +              "description": "DMA_OUT_EOF_BFR_DES_ADDR_CH1_REG.",
    +              "offset": 428,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUT_EOF_BFR_DES_ADDR_CH1": {
    +                    "description": "This register stores the address of the outlink descriptor before the last outlink descriptor.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_DSCR_CH1": {
    +              "description": "DMA_OUT_DSCR_CH1_REG.",
    +              "offset": 432,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUTLINK_DSCR_CH1": {
    +                    "description": "The address of the current outlink descriptor y.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_DSCR_BF0_CH1": {
    +              "description": "DMA_OUT_DSCR_BF0_CH1_REG.",
    +              "offset": 436,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUTLINK_DSCR_BF0_CH1": {
    +                    "description": "The address of the last outlink descriptor y-1.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_DSCR_BF1_CH1": {
    +              "description": "DMA_OUT_DSCR_BF1_CH1_REG.",
    +              "offset": 440,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUTLINK_DSCR_BF1_CH1": {
    +                    "description": "The address of the second-to-last inlink descriptor x-2.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_PRI_CH1": {
    +              "description": "DMA_OUT_PRI_CH1_REG.",
    +              "offset": 444,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_PRI_CH1": {
    +                    "description": "The priority of Tx channel 1. The larger of the value, the higher of the priority.",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_PERI_SEL_CH1": {
    +              "description": "DMA_OUT_PERI_SEL_CH1_REG.",
    +              "offset": 448,
    +              "size": 32,
    +              "reset_value": 63,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PERI_OUT_SEL_CH1": {
    +                    "description": "This register is used to select peripheral for Tx channel 1. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.",
    +                    "offset": 0,
    +                    "size": 6
    +                  }
    +                }
    +              }
    +            },
    +            "IN_CONF0_CH2": {
    +              "description": "DMA_IN_CONF0_CH2_REG.",
    +              "offset": 496,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_RST_CH2": {
    +                    "description": "This bit is used to reset DMA channel 2 Rx FSM and Rx FIFO pointer.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "IN_LOOP_TEST_CH2": {
    +                    "description": "reserved",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "INDSCR_BURST_EN_CH2": {
    +                    "description": "Set this bit to 1 to enable INCR burst transfer for Rx channel 2 reading link descriptor when accessing internal SRAM.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "IN_DATA_BURST_EN_CH2": {
    +                    "description": "Set this bit to 1 to enable INCR burst transfer for Rx channel 2 receiving data when accessing internal SRAM.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "MEM_TRANS_EN_CH2": {
    +                    "description": "Set this bit 1 to enable automatic transmitting data from memory to memory via DMA.",
    +                    "offset": 4,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "IN_CONF1_CH2": {
    +              "description": "DMA_IN_CONF1_CH2_REG.",
    +              "offset": 500,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_CHECK_OWNER_CH2": {
    +                    "description": "Set this bit to enable checking the owner attribute of the link descriptor.",
    +                    "offset": 12,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INFIFO_STATUS_CH2": {
    +              "description": "DMA_INFIFO_STATUS_CH2_REG.",
    +              "offset": 504,
    +              "size": 32,
    +              "reset_value": 125829123,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INFIFO_FULL_CH2": {
    +                    "description": "L1 Rx FIFO full signal for Rx channel 2.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "INFIFO_EMPTY_CH2": {
    +                    "description": "L1 Rx FIFO empty signal for Rx channel 2.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "INFIFO_CNT_CH2": {
    +                    "description": "The register stores the byte number of the data in L1 Rx FIFO for Rx channel 2.",
    +                    "offset": 2,
    +                    "size": 6,
    +                    "access": "read-only"
    +                  },
    +                  "IN_REMAIN_UNDER_1B_CH2": {
    +                    "description": "reserved",
    +                    "offset": 23,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_REMAIN_UNDER_2B_CH2": {
    +                    "description": "reserved",
    +                    "offset": 24,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_REMAIN_UNDER_3B_CH2": {
    +                    "description": "reserved",
    +                    "offset": 25,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_REMAIN_UNDER_4B_CH2": {
    +                    "description": "reserved",
    +                    "offset": 26,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_BUF_HUNGRY_CH2": {
    +                    "description": "reserved",
    +                    "offset": 27,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_POP_CH2": {
    +              "description": "DMA_IN_POP_CH2_REG.",
    +              "offset": 508,
    +              "size": 32,
    +              "reset_value": 2048,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INFIFO_RDATA_CH2": {
    +                    "description": "This register stores the data popping from DMA FIFO.",
    +                    "offset": 0,
    +                    "size": 12,
    +                    "access": "read-only"
    +                  },
    +                  "INFIFO_POP_CH2": {
    +                    "description": "Set this bit to pop data from DMA FIFO.",
    +                    "offset": 12,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "IN_LINK_CH2": {
    +              "description": "DMA_IN_LINK_CH2_REG.",
    +              "offset": 512,
    +              "size": 32,
    +              "reset_value": 17825792,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INLINK_ADDR_CH2": {
    +                    "description": "This register stores the 20 least significant bits of the first inlink descriptor's address.",
    +                    "offset": 0,
    +                    "size": 20
    +                  },
    +                  "INLINK_AUTO_RET_CH2": {
    +                    "description": "Set this bit to return to current inlink descriptor's address, when there are some errors in current receiving data.",
    +                    "offset": 20,
    +                    "size": 1
    +                  },
    +                  "INLINK_STOP_CH2": {
    +                    "description": "Set this bit to stop dealing with the inlink descriptors.",
    +                    "offset": 21,
    +                    "size": 1
    +                  },
    +                  "INLINK_START_CH2": {
    +                    "description": "Set this bit to start dealing with the inlink descriptors.",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "INLINK_RESTART_CH2": {
    +                    "description": "Set this bit to mount a new inlink descriptor.",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "INLINK_PARK_CH2": {
    +                    "description": "1: the inlink descriptor's FSM is in idle state.  0: the inlink descriptor's FSM is working.",
    +                    "offset": 24,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_STATE_CH2": {
    +              "description": "DMA_IN_STATE_CH2_REG.",
    +              "offset": 516,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INLINK_DSCR_ADDR_CH2": {
    +                    "description": "This register stores the current inlink descriptor's address.",
    +                    "offset": 0,
    +                    "size": 18,
    +                    "access": "read-only"
    +                  },
    +                  "IN_DSCR_STATE_CH2": {
    +                    "description": "reserved",
    +                    "offset": 18,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "IN_STATE_CH2": {
    +                    "description": "reserved",
    +                    "offset": 20,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_SUC_EOF_DES_ADDR_CH2": {
    +              "description": "DMA_IN_SUC_EOF_DES_ADDR_CH2_REG.",
    +              "offset": 520,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_SUC_EOF_DES_ADDR_CH2": {
    +                    "description": "This register stores the address of the inlink descriptor when the EOF bit in this descriptor is 1.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_ERR_EOF_DES_ADDR_CH2": {
    +              "description": "DMA_IN_ERR_EOF_DES_ADDR_CH2_REG.",
    +              "offset": 524,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_ERR_EOF_DES_ADDR_CH2": {
    +                    "description": "This register stores the address of the inlink descriptor when there are some errors in current receiving data. Only used when peripheral is UHCI0.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_DSCR_CH2": {
    +              "description": "DMA_IN_DSCR_CH2_REG.",
    +              "offset": 528,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INLINK_DSCR_CH2": {
    +                    "description": "The address of the current inlink descriptor x.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_DSCR_BF0_CH2": {
    +              "description": "DMA_IN_DSCR_BF0_CH2_REG.",
    +              "offset": 532,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INLINK_DSCR_BF0_CH2": {
    +                    "description": "The address of the last inlink descriptor x-1.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_DSCR_BF1_CH2": {
    +              "description": "DMA_IN_DSCR_BF1_CH2_REG.",
    +              "offset": 536,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INLINK_DSCR_BF1_CH2": {
    +                    "description": "The address of the second-to-last inlink descriptor x-2.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_PRI_CH2": {
    +              "description": "DMA_IN_PRI_CH2_REG.",
    +              "offset": 540,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_PRI_CH2": {
    +                    "description": "The priority of Rx channel 2. The larger of the value, the higher of the priority.",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "IN_PERI_SEL_CH2": {
    +              "description": "DMA_IN_PERI_SEL_CH2_REG.",
    +              "offset": 544,
    +              "size": 32,
    +              "reset_value": 63,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PERI_IN_SEL_CH2": {
    +                    "description": "This register is used to select peripheral for Rx channel 2. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.",
    +                    "offset": 0,
    +                    "size": 6
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_CONF0_CH2": {
    +              "description": "DMA_OUT_CONF0_CH2_REG.",
    +              "offset": 592,
    +              "size": 32,
    +              "reset_value": 8,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUT_RST_CH2": {
    +                    "description": "This bit is used to reset DMA channel 2 Tx FSM and Tx FIFO pointer.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "OUT_LOOP_TEST_CH2": {
    +                    "description": "reserved",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "OUT_AUTO_WRBACK_CH2": {
    +                    "description": "Set this bit to enable automatic outlink-writeback when all the data in tx buffer has been transmitted.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "OUT_EOF_MODE_CH2": {
    +                    "description": "EOF flag generation mode when transmitting data. 1: EOF flag for Tx channel 2 is generated when data need to transmit has been popped from FIFO in DMA",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "OUTDSCR_BURST_EN_CH2": {
    +                    "description": "Set this bit to 1 to enable INCR burst transfer for Tx channel 2 reading link descriptor when accessing internal SRAM.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "OUT_DATA_BURST_EN_CH2": {
    +                    "description": "Set this bit to 1 to enable INCR burst transfer for Tx channel 2 transmitting data when accessing internal SRAM.",
    +                    "offset": 5,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_CONF1_CH2": {
    +              "description": "DMA_OUT_CONF1_CH2_REG.",
    +              "offset": 596,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUT_CHECK_OWNER_CH2": {
    +                    "description": "Set this bit to enable checking the owner attribute of the link descriptor.",
    +                    "offset": 12,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "OUTFIFO_STATUS_CH2": {
    +              "description": "DMA_OUTFIFO_STATUS_CH2_REG.",
    +              "offset": 600,
    +              "size": 32,
    +              "reset_value": 125829122,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUTFIFO_FULL_CH2": {
    +                    "description": "L1 Tx FIFO full signal for Tx channel 2.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUTFIFO_EMPTY_CH2": {
    +                    "description": "L1 Tx FIFO empty signal for Tx channel 2.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUTFIFO_CNT_CH2": {
    +                    "description": "The register stores the byte number of the data in L1 Tx FIFO for Tx channel 2.",
    +                    "offset": 2,
    +                    "size": 6,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_REMAIN_UNDER_1B_CH2": {
    +                    "description": "reserved",
    +                    "offset": 23,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_REMAIN_UNDER_2B_CH2": {
    +                    "description": "reserved",
    +                    "offset": 24,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_REMAIN_UNDER_3B_CH2": {
    +                    "description": "reserved",
    +                    "offset": 25,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_REMAIN_UNDER_4B_CH2": {
    +                    "description": "reserved",
    +                    "offset": 26,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_PUSH_CH2": {
    +              "description": "DMA_OUT_PUSH_CH2_REG.",
    +              "offset": 604,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUTFIFO_WDATA_CH2": {
    +                    "description": "This register stores the data that need to be pushed into DMA FIFO.",
    +                    "offset": 0,
    +                    "size": 9
    +                  },
    +                  "OUTFIFO_PUSH_CH2": {
    +                    "description": "Set this bit to push data into DMA FIFO.",
    +                    "offset": 9,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_LINK_CH2": {
    +              "description": "DMA_OUT_LINK_CH2_REG.",
    +              "offset": 608,
    +              "size": 32,
    +              "reset_value": 8388608,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUTLINK_ADDR_CH2": {
    +                    "description": "This register stores the 20 least significant bits of the first outlink descriptor's address.",
    +                    "offset": 0,
    +                    "size": 20
    +                  },
    +                  "OUTLINK_STOP_CH2": {
    +                    "description": "Set this bit to stop dealing with the outlink descriptors.",
    +                    "offset": 20,
    +                    "size": 1
    +                  },
    +                  "OUTLINK_START_CH2": {
    +                    "description": "Set this bit to start dealing with the outlink descriptors.",
    +                    "offset": 21,
    +                    "size": 1
    +                  },
    +                  "OUTLINK_RESTART_CH2": {
    +                    "description": "Set this bit to restart a new outlink from the last address.",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "OUTLINK_PARK_CH2": {
    +                    "description": "1: the outlink descriptor's FSM is in idle state.  0: the outlink descriptor's FSM is working.",
    +                    "offset": 23,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_STATE_CH2": {
    +              "description": "DMA_OUT_STATE_CH2_REG.",
    +              "offset": 612,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUTLINK_DSCR_ADDR_CH2": {
    +                    "description": "This register stores the current outlink descriptor's address.",
    +                    "offset": 0,
    +                    "size": 18,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_DSCR_STATE_CH2": {
    +                    "description": "reserved",
    +                    "offset": 18,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_STATE_CH2": {
    +                    "description": "reserved",
    +                    "offset": 20,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_EOF_DES_ADDR_CH2": {
    +              "description": "DMA_OUT_EOF_DES_ADDR_CH2_REG.",
    +              "offset": 616,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUT_EOF_DES_ADDR_CH2": {
    +                    "description": "This register stores the address of the outlink descriptor when the EOF bit in this descriptor is 1.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_EOF_BFR_DES_ADDR_CH2": {
    +              "description": "DMA_OUT_EOF_BFR_DES_ADDR_CH2_REG.",
    +              "offset": 620,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUT_EOF_BFR_DES_ADDR_CH2": {
    +                    "description": "This register stores the address of the outlink descriptor before the last outlink descriptor.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_DSCR_CH2": {
    +              "description": "DMA_OUT_DSCR_CH2_REG.",
    +              "offset": 624,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUTLINK_DSCR_CH2": {
    +                    "description": "The address of the current outlink descriptor y.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_DSCR_BF0_CH2": {
    +              "description": "DMA_OUT_DSCR_BF0_CH2_REG.",
    +              "offset": 628,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUTLINK_DSCR_BF0_CH2": {
    +                    "description": "The address of the last outlink descriptor y-1.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_DSCR_BF1_CH2": {
    +              "description": "DMA_OUT_DSCR_BF1_CH2_REG.",
    +              "offset": 632,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUTLINK_DSCR_BF1_CH2": {
    +                    "description": "The address of the second-to-last inlink descriptor x-2.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_PRI_CH2": {
    +              "description": "DMA_OUT_PRI_CH2_REG.",
    +              "offset": 636,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_PRI_CH2": {
    +                    "description": "The priority of Tx channel 2. The larger of the value, the higher of the priority.",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_PERI_SEL_CH2": {
    +              "description": "DMA_OUT_PERI_SEL_CH2_REG.",
    +              "offset": 640,
    +              "size": 32,
    +              "reset_value": 63,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PERI_OUT_SEL_CH2": {
    +                    "description": "This register is used to select peripheral for Tx channel 2. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.",
    +                    "offset": 0,
    +                    "size": 6
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "DS": {
    +        "description": "Digital Signature",
    +        "children": {
    +          "registers": {
    +            "Y_MEM": {
    +              "description": "memory that stores Y",
    +              "offset": 0,
    +              "size": 8,
    +              "count": 512,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295
    +            },
    +            "M_MEM": {
    +              "description": "memory that stores M",
    +              "offset": 512,
    +              "size": 8,
    +              "count": 512,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295
    +            },
    +            "RB_MEM": {
    +              "description": "memory that stores Rb",
    +              "offset": 1024,
    +              "size": 8,
    +              "count": 512,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295
    +            },
    +            "BOX_MEM": {
    +              "description": "memory that stores BOX",
    +              "offset": 1536,
    +              "size": 8,
    +              "count": 48,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295
    +            },
    +            "X_MEM": {
    +              "description": "memory that stores X",
    +              "offset": 2048,
    +              "size": 8,
    +              "count": 512,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295
    +            },
    +            "Z_MEM": {
    +              "description": "memory that stores Z",
    +              "offset": 2560,
    +              "size": 8,
    +              "count": 512,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295
    +            },
    +            "SET_START": {
    +              "description": "DS start control register",
    +              "offset": 3584,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SET_START": {
    +                    "description": "set this bit to start DS operation.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "SET_CONTINUE": {
    +              "description": "DS continue control register",
    +              "offset": 3588,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SET_CONTINUE": {
    +                    "description": "set this bit to continue DS operation.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "SET_FINISH": {
    +              "description": "DS finish control register",
    +              "offset": 3592,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SET_FINISH": {
    +                    "description": "Set this bit to finish DS process.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "QUERY_BUSY": {
    +              "description": "DS query busy register",
    +              "offset": 3596,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "QUERY_BUSY": {
    +                    "description": "digital signature state. 1'b0: idle, 1'b1: busy",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "QUERY_KEY_WRONG": {
    +              "description": "DS query key-wrong counter register",
    +              "offset": 3600,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "QUERY_KEY_WRONG": {
    +                    "description": "digital signature key wrong counter",
    +                    "offset": 0,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "QUERY_CHECK": {
    +              "description": "DS query check result register",
    +              "offset": 3604,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "MD_ERROR": {
    +                    "description": "MD checkout result. 1'b0: MD check pass, 1'b1: MD check fail",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "PADDING_BAD": {
    +                    "description": "padding checkout result. 1'b0: a good padding, 1'b1: a bad padding",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DATE": {
    +              "description": "DS version control register",
    +              "offset": 3616,
    +              "size": 32,
    +              "reset_value": 538969624,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATE": {
    +                    "description": "ds version information",
    +                    "offset": 0,
    +                    "size": 30
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "EFUSE": {
    +        "description": "eFuse Controller",
    +        "children": {
    +          "registers": {
    +            "PGM_DATA0": {
    +              "description": "Register 0 that stores data to be programmed.",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PGM_DATA_0": {
    +                    "description": "The content of the 0th 32-bit data to be programmed.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "PGM_DATA1": {
    +              "description": "Register 1 that stores data to be programmed.",
    +              "offset": 4,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PGM_DATA_1": {
    +                    "description": "The content of the 1st 32-bit data to be programmed.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "PGM_DATA2": {
    +              "description": "Register 2 that stores data to be programmed.",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PGM_DATA_2": {
    +                    "description": "The content of the 2nd 32-bit data to be programmed.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "PGM_DATA3": {
    +              "description": "Register 3 that stores data to be programmed.",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PGM_DATA_3": {
    +                    "description": "The content of the 3rd 32-bit data to be programmed.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "PGM_DATA4": {
    +              "description": "Register 4 that stores data to be programmed.",
    +              "offset": 16,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PGM_DATA_4": {
    +                    "description": "The content of the 4th 32-bit data to be programmed.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "PGM_DATA5": {
    +              "description": "Register 5 that stores data to be programmed.",
    +              "offset": 20,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PGM_DATA_5": {
    +                    "description": "The content of the 5th 32-bit data to be programmed.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "PGM_DATA6": {
    +              "description": "Register 6 that stores data to be programmed.",
    +              "offset": 24,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PGM_DATA_6": {
    +                    "description": "The content of the 6th 32-bit data to be programmed.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "PGM_DATA7": {
    +              "description": "Register 7 that stores data to be programmed.",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PGM_DATA_7": {
    +                    "description": "The content of the 7th 32-bit data to be programmed.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "PGM_CHECK_VALUE0": {
    +              "description": "Register 0 that stores the RS code to be programmed.",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PGM_RS_DATA_0": {
    +                    "description": "The content of the 0th 32-bit RS code to be programmed.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "PGM_CHECK_VALUE1": {
    +              "description": "Register 1 that stores the RS code to be programmed.",
    +              "offset": 36,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PGM_RS_DATA_1": {
    +                    "description": "The content of the 1st 32-bit RS code to be programmed.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "PGM_CHECK_VALUE2": {
    +              "description": "Register 2 that stores the RS code to be programmed.",
    +              "offset": 40,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PGM_RS_DATA_2": {
    +                    "description": "The content of the 2nd 32-bit RS code to be programmed.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "RD_WR_DIS": {
    +              "description": "BLOCK0 data register 0.",
    +              "offset": 44,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WR_DIS": {
    +                    "description": "Disable programming of individual eFuses.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_REPEAT_DATA0": {
    +              "description": "BLOCK0 data register 1.",
    +              "offset": 48,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RD_DIS": {
    +                    "description": "Set this bit to disable reading from BlOCK4-10.",
    +                    "offset": 0,
    +                    "size": 7,
    +                    "access": "read-only"
    +                  },
    +                  "DIS_RTC_RAM_BOOT": {
    +                    "description": "Set this bit to disable boot from RTC RAM.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DIS_ICACHE": {
    +                    "description": "Set this bit to disable Icache.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DIS_USB_JTAG": {
    +                    "description": "Set this bit to disable function of usb switch to jtag in module of usb device.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DIS_DOWNLOAD_ICACHE": {
    +                    "description": "Set this bit to disable Icache in download mode (boot_mode[3:0] is 0, 1, 2, 3, 6, 7).",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DIS_USB_DEVICE": {
    +                    "description": "Set this bit to disable usb device.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DIS_FORCE_DOWNLOAD": {
    +                    "description": "Set this bit to disable the function that forces chip into download mode.",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RPT4_RESERVED6": {
    +                    "description": "Reserved (used for four backups method).",
    +                    "offset": 13,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DIS_CAN": {
    +                    "description": "Set this bit to disable CAN function.",
    +                    "offset": 14,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "JTAG_SEL_ENABLE": {
    +                    "description": "Set this bit to enable selection between usb_to_jtag and pad_to_jtag through strapping gpio10 when both reg_dis_usb_jtag and reg_dis_pad_jtag are equal to 0.",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SOFT_DIS_JTAG": {
    +                    "description": "Set these bits to disable JTAG in the soft way (odd number 1 means disable ). JTAG can be enabled in HMAC module.",
    +                    "offset": 16,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "DIS_PAD_JTAG": {
    +                    "description": "Set this bit to disable JTAG in the hard way. JTAG is disabled permanently.",
    +                    "offset": 19,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DIS_DOWNLOAD_MANUAL_ENCRYPT": {
    +                    "description": "Set this bit to disable flash encryption when in download boot modes.",
    +                    "offset": 20,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "USB_DREFH": {
    +                    "description": "Controls single-end input threshold vrefh, 1.76 V to 2 V with step of 80 mV, stored in eFuse.",
    +                    "offset": 21,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "USB_DREFL": {
    +                    "description": "Controls single-end input threshold vrefl, 0.8 V to 1.04 V with step of 80 mV, stored in eFuse.",
    +                    "offset": 23,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "USB_EXCHG_PINS": {
    +                    "description": "Set this bit to exchange USB D+ and D- pins.",
    +                    "offset": 25,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "VDD_SPI_AS_GPIO": {
    +                    "description": "Set this bit to vdd spi pin function as gpio.",
    +                    "offset": 26,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "BTLC_GPIO_ENABLE": {
    +                    "description": "Enable btlc gpio.",
    +                    "offset": 27,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "POWERGLITCH_EN": {
    +                    "description": "Set this bit to enable power glitch function.",
    +                    "offset": 29,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "POWER_GLITCH_DSENSE": {
    +                    "description": "Sample delay configuration of power glitch.",
    +                    "offset": 30,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_REPEAT_DATA1": {
    +              "description": "BLOCK0 data register 2.",
    +              "offset": 52,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RPT4_RESERVED2": {
    +                    "description": "Reserved (used for four backups method).",
    +                    "offset": 0,
    +                    "size": 16,
    +                    "access": "read-only"
    +                  },
    +                  "WDT_DELAY_SEL": {
    +                    "description": "Selects RTC watchdog timeout threshold, in unit of slow clock cycle. 0: 40000. 1: 80000. 2: 160000. 3:320000.",
    +                    "offset": 16,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "SPI_BOOT_CRYPT_CNT": {
    +                    "description": "Set this bit to enable SPI boot encrypt/decrypt. Odd number of 1: enable. even number of 1: disable.",
    +                    "offset": 18,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "SECURE_BOOT_KEY_REVOKE0": {
    +                    "description": "Set this bit to enable revoking first secure boot key.",
    +                    "offset": 21,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SECURE_BOOT_KEY_REVOKE1": {
    +                    "description": "Set this bit to enable revoking second secure boot key.",
    +                    "offset": 22,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SECURE_BOOT_KEY_REVOKE2": {
    +                    "description": "Set this bit to enable revoking third secure boot key.",
    +                    "offset": 23,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "KEY_PURPOSE_0": {
    +                    "description": "Purpose of Key0.",
    +                    "offset": 24,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  },
    +                  "KEY_PURPOSE_1": {
    +                    "description": "Purpose of Key1.",
    +                    "offset": 28,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_REPEAT_DATA2": {
    +              "description": "BLOCK0 data register 3.",
    +              "offset": 56,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY_PURPOSE_2": {
    +                    "description": "Purpose of Key2.",
    +                    "offset": 0,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  },
    +                  "KEY_PURPOSE_3": {
    +                    "description": "Purpose of Key3.",
    +                    "offset": 4,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  },
    +                  "KEY_PURPOSE_4": {
    +                    "description": "Purpose of Key4.",
    +                    "offset": 8,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  },
    +                  "KEY_PURPOSE_5": {
    +                    "description": "Purpose of Key5.",
    +                    "offset": 12,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  },
    +                  "RPT4_RESERVED3": {
    +                    "description": "Reserved (used for four backups method).",
    +                    "offset": 16,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  },
    +                  "SECURE_BOOT_EN": {
    +                    "description": "Set this bit to enable secure boot.",
    +                    "offset": 20,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SECURE_BOOT_AGGRESSIVE_REVOKE": {
    +                    "description": "Set this bit to enable revoking aggressive secure boot.",
    +                    "offset": 21,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RPT4_RESERVED0": {
    +                    "description": "Reserved (used for four backups method).",
    +                    "offset": 22,
    +                    "size": 6,
    +                    "access": "read-only"
    +                  },
    +                  "FLASH_TPUW": {
    +                    "description": "Configures flash waiting time after power-up, in unit of ms. If the value is less than 15, the waiting time is the configurable value; Otherwise, the waiting time is twice the configurable value.",
    +                    "offset": 28,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_REPEAT_DATA3": {
    +              "description": "BLOCK0 data register 4.",
    +              "offset": 60,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DIS_DOWNLOAD_MODE": {
    +                    "description": "Set this bit to disable download mode (boot_mode[3:0] = 0, 1, 2, 3, 6, 7).",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DIS_LEGACY_SPI_BOOT": {
    +                    "description": "Set this bit to disable Legacy SPI boot mode (boot_mode[3:0] = 4).",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "UART_PRINT_CHANNEL": {
    +                    "description": "Selectes the default UART print channel. 0: UART0. 1: UART1.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "FLASH_ECC_MODE": {
    +                    "description": "Set ECC mode in ROM, 0: ROM would Enable Flash ECC 16to18 byte mode. 1:ROM would use 16to17 byte mode.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DIS_USB_DOWNLOAD_MODE": {
    +                    "description": "Set this bit to disable UART download mode through USB.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "ENABLE_SECURITY_DOWNLOAD": {
    +                    "description": "Set this bit to enable secure UART download mode.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "UART_PRINT_CONTROL": {
    +                    "description": "Set the default UARTboot message output mode. 00: Enabled. 01: Enabled when GPIO8 is low at reset. 10: Enabled when GPIO8 is high at reset. 11:disabled.",
    +                    "offset": 6,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "PIN_POWER_SELECTION": {
    +                    "description": "GPIO33-GPIO37 power supply selection in ROM code. 0: VDD3P3_CPU. 1: VDD_SPI.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "FLASH_TYPE": {
    +                    "description": "Set the maximum lines of SPI flash. 0: four lines. 1: eight lines.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "FLASH_PAGE_SIZE": {
    +                    "description": "Set Flash page size.",
    +                    "offset": 10,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "FLASH_ECC_EN": {
    +                    "description": "Set 1 to enable ECC for flash boot.",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "FORCE_SEND_RESUME": {
    +                    "description": "Set this bit to force ROM code to send a resume command during SPI boot.",
    +                    "offset": 13,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SECURE_VERSION": {
    +                    "description": "Secure version (used by ESP-IDF anti-rollback feature).",
    +                    "offset": 14,
    +                    "size": 16,
    +                    "access": "read-only"
    +                  },
    +                  "RPT4_RESERVED1": {
    +                    "description": "Reserved (used for four backups method).",
    +                    "offset": 30,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_REPEAT_DATA4": {
    +              "description": "BLOCK0 data register 5.",
    +              "offset": 64,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RPT4_RESERVED4": {
    +                    "description": "Reserved (used for four backups method).",
    +                    "offset": 0,
    +                    "size": 24,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_MAC_SPI_SYS_0": {
    +              "description": "BLOCK1 data register 0.",
    +              "offset": 68,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "MAC_0": {
    +                    "description": "Stores the low 32 bits of MAC address.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_MAC_SPI_SYS_1": {
    +              "description": "BLOCK1 data register 1.",
    +              "offset": 72,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "MAC_1": {
    +                    "description": "Stores the high 16 bits of MAC address.",
    +                    "offset": 0,
    +                    "size": 16,
    +                    "access": "read-only"
    +                  },
    +                  "SPI_PAD_CONF_0": {
    +                    "description": "Stores the zeroth part of SPI_PAD_CONF.",
    +                    "offset": 16,
    +                    "size": 16,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_MAC_SPI_SYS_2": {
    +              "description": "BLOCK1 data register 2.",
    +              "offset": 76,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SPI_PAD_CONF_1": {
    +                    "description": "Stores the first part of SPI_PAD_CONF.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_MAC_SPI_SYS_3": {
    +              "description": "BLOCK1 data register 3.",
    +              "offset": 80,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SPI_PAD_CONF_2": {
    +                    "description": "Stores the second part of SPI_PAD_CONF.",
    +                    "offset": 0,
    +                    "size": 18,
    +                    "access": "read-only"
    +                  },
    +                  "SYS_DATA_PART0_0": {
    +                    "description": "Stores the fist 14 bits of the zeroth part of system data.",
    +                    "offset": 18,
    +                    "size": 14,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_MAC_SPI_SYS_4": {
    +              "description": "BLOCK1 data register 4.",
    +              "offset": 84,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SYS_DATA_PART0_1": {
    +                    "description": "Stores the fist 32 bits of the zeroth part of system data.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_MAC_SPI_SYS_5": {
    +              "description": "BLOCK1 data register 5.",
    +              "offset": 88,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SYS_DATA_PART0_2": {
    +                    "description": "Stores the second 32 bits of the zeroth part of system data.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_SYS_PART1_DATA0": {
    +              "description": "Register 0 of BLOCK2 (system).",
    +              "offset": 92,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SYS_DATA_PART1_0": {
    +                    "description": "Stores the zeroth 32 bits of the first part of system data.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_SYS_PART1_DATA1": {
    +              "description": "Register 1 of BLOCK2 (system).",
    +              "offset": 96,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SYS_DATA_PART1_1": {
    +                    "description": "Stores the first 32 bits of the first part of system data.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_SYS_PART1_DATA2": {
    +              "description": "Register 2 of BLOCK2 (system).",
    +              "offset": 100,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SYS_DATA_PART1_2": {
    +                    "description": "Stores the second 32 bits of the first part of system data.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_SYS_PART1_DATA3": {
    +              "description": "Register 3 of BLOCK2 (system).",
    +              "offset": 104,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SYS_DATA_PART1_3": {
    +                    "description": "Stores the third 32 bits of the first part of system data.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_SYS_PART1_DATA4": {
    +              "description": "Register 4 of BLOCK2 (system).",
    +              "offset": 108,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SYS_DATA_PART1_4": {
    +                    "description": "Stores the fourth 32 bits of the first part of system data.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_SYS_PART1_DATA5": {
    +              "description": "Register 5 of BLOCK2 (system).",
    +              "offset": 112,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SYS_DATA_PART1_5": {
    +                    "description": "Stores the fifth 32 bits of the first part of system data.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_SYS_PART1_DATA6": {
    +              "description": "Register 6 of BLOCK2 (system).",
    +              "offset": 116,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SYS_DATA_PART1_6": {
    +                    "description": "Stores the sixth 32 bits of the first part of system data.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_SYS_PART1_DATA7": {
    +              "description": "Register 7 of BLOCK2 (system).",
    +              "offset": 120,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SYS_DATA_PART1_7": {
    +                    "description": "Stores the seventh 32 bits of the first part of system data.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_USR_DATA0": {
    +              "description": "Register 0 of BLOCK3 (user).",
    +              "offset": 124,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "USR_DATA0": {
    +                    "description": "Stores the zeroth 32 bits of BLOCK3 (user).",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_USR_DATA1": {
    +              "description": "Register 1 of BLOCK3 (user).",
    +              "offset": 128,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "USR_DATA1": {
    +                    "description": "Stores the first 32 bits of BLOCK3 (user).",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_USR_DATA2": {
    +              "description": "Register 2 of BLOCK3 (user).",
    +              "offset": 132,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "USR_DATA2": {
    +                    "description": "Stores the second 32 bits of BLOCK3 (user).",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_USR_DATA3": {
    +              "description": "Register 3 of BLOCK3 (user).",
    +              "offset": 136,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "USR_DATA3": {
    +                    "description": "Stores the third 32 bits of BLOCK3 (user).",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_USR_DATA4": {
    +              "description": "Register 4 of BLOCK3 (user).",
    +              "offset": 140,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "USR_DATA4": {
    +                    "description": "Stores the fourth 32 bits of BLOCK3 (user).",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_USR_DATA5": {
    +              "description": "Register 5 of BLOCK3 (user).",
    +              "offset": 144,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "USR_DATA5": {
    +                    "description": "Stores the fifth 32 bits of BLOCK3 (user).",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_USR_DATA6": {
    +              "description": "Register 6 of BLOCK3 (user).",
    +              "offset": 148,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "USR_DATA6": {
    +                    "description": "Stores the sixth 32 bits of BLOCK3 (user).",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_USR_DATA7": {
    +              "description": "Register 7 of BLOCK3 (user).",
    +              "offset": 152,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "USR_DATA7": {
    +                    "description": "Stores the seventh 32 bits of BLOCK3 (user).",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY0_DATA0": {
    +              "description": "Register 0 of BLOCK4 (KEY0).",
    +              "offset": 156,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY0_DATA0": {
    +                    "description": "Stores the zeroth 32 bits of KEY0.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY0_DATA1": {
    +              "description": "Register 1 of BLOCK4 (KEY0).",
    +              "offset": 160,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY0_DATA1": {
    +                    "description": "Stores the first 32 bits of KEY0.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY0_DATA2": {
    +              "description": "Register 2 of BLOCK4 (KEY0).",
    +              "offset": 164,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY0_DATA2": {
    +                    "description": "Stores the second 32 bits of KEY0.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY0_DATA3": {
    +              "description": "Register 3 of BLOCK4 (KEY0).",
    +              "offset": 168,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY0_DATA3": {
    +                    "description": "Stores the third 32 bits of KEY0.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY0_DATA4": {
    +              "description": "Register 4 of BLOCK4 (KEY0).",
    +              "offset": 172,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY0_DATA4": {
    +                    "description": "Stores the fourth 32 bits of KEY0.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY0_DATA5": {
    +              "description": "Register 5 of BLOCK4 (KEY0).",
    +              "offset": 176,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY0_DATA5": {
    +                    "description": "Stores the fifth 32 bits of KEY0.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY0_DATA6": {
    +              "description": "Register 6 of BLOCK4 (KEY0).",
    +              "offset": 180,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY0_DATA6": {
    +                    "description": "Stores the sixth 32 bits of KEY0.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY0_DATA7": {
    +              "description": "Register 7 of BLOCK4 (KEY0).",
    +              "offset": 184,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY0_DATA7": {
    +                    "description": "Stores the seventh 32 bits of KEY0.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY1_DATA0": {
    +              "description": "Register 0 of BLOCK5 (KEY1).",
    +              "offset": 188,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY1_DATA0": {
    +                    "description": "Stores the zeroth 32 bits of KEY1.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY1_DATA1": {
    +              "description": "Register 1 of BLOCK5 (KEY1).",
    +              "offset": 192,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY1_DATA1": {
    +                    "description": "Stores the first 32 bits of KEY1.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY1_DATA2": {
    +              "description": "Register 2 of BLOCK5 (KEY1).",
    +              "offset": 196,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY1_DATA2": {
    +                    "description": "Stores the second 32 bits of KEY1.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY1_DATA3": {
    +              "description": "Register 3 of BLOCK5 (KEY1).",
    +              "offset": 200,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY1_DATA3": {
    +                    "description": "Stores the third 32 bits of KEY1.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY1_DATA4": {
    +              "description": "Register 4 of BLOCK5 (KEY1).",
    +              "offset": 204,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY1_DATA4": {
    +                    "description": "Stores the fourth 32 bits of KEY1.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY1_DATA5": {
    +              "description": "Register 5 of BLOCK5 (KEY1).",
    +              "offset": 208,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY1_DATA5": {
    +                    "description": "Stores the fifth 32 bits of KEY1.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY1_DATA6": {
    +              "description": "Register 6 of BLOCK5 (KEY1).",
    +              "offset": 212,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY1_DATA6": {
    +                    "description": "Stores the sixth 32 bits of KEY1.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY1_DATA7": {
    +              "description": "Register 7 of BLOCK5 (KEY1).",
    +              "offset": 216,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY1_DATA7": {
    +                    "description": "Stores the seventh 32 bits of KEY1.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY2_DATA0": {
    +              "description": "Register 0 of BLOCK6 (KEY2).",
    +              "offset": 220,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY2_DATA0": {
    +                    "description": "Stores the zeroth 32 bits of KEY2.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY2_DATA1": {
    +              "description": "Register 1 of BLOCK6 (KEY2).",
    +              "offset": 224,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY2_DATA1": {
    +                    "description": "Stores the first 32 bits of KEY2.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY2_DATA2": {
    +              "description": "Register 2 of BLOCK6 (KEY2).",
    +              "offset": 228,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY2_DATA2": {
    +                    "description": "Stores the second 32 bits of KEY2.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY2_DATA3": {
    +              "description": "Register 3 of BLOCK6 (KEY2).",
    +              "offset": 232,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY2_DATA3": {
    +                    "description": "Stores the third 32 bits of KEY2.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY2_DATA4": {
    +              "description": "Register 4 of BLOCK6 (KEY2).",
    +              "offset": 236,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY2_DATA4": {
    +                    "description": "Stores the fourth 32 bits of KEY2.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY2_DATA5": {
    +              "description": "Register 5 of BLOCK6 (KEY2).",
    +              "offset": 240,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY2_DATA5": {
    +                    "description": "Stores the fifth 32 bits of KEY2.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY2_DATA6": {
    +              "description": "Register 6 of BLOCK6 (KEY2).",
    +              "offset": 244,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY2_DATA6": {
    +                    "description": "Stores the sixth 32 bits of KEY2.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY2_DATA7": {
    +              "description": "Register 7 of BLOCK6 (KEY2).",
    +              "offset": 248,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY2_DATA7": {
    +                    "description": "Stores the seventh 32 bits of KEY2.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY3_DATA0": {
    +              "description": "Register 0 of BLOCK7 (KEY3).",
    +              "offset": 252,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY3_DATA0": {
    +                    "description": "Stores the zeroth 32 bits of KEY3.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY3_DATA1": {
    +              "description": "Register 1 of BLOCK7 (KEY3).",
    +              "offset": 256,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY3_DATA1": {
    +                    "description": "Stores the first 32 bits of KEY3.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY3_DATA2": {
    +              "description": "Register 2 of BLOCK7 (KEY3).",
    +              "offset": 260,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY3_DATA2": {
    +                    "description": "Stores the second 32 bits of KEY3.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY3_DATA3": {
    +              "description": "Register 3 of BLOCK7 (KEY3).",
    +              "offset": 264,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY3_DATA3": {
    +                    "description": "Stores the third 32 bits of KEY3.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY3_DATA4": {
    +              "description": "Register 4 of BLOCK7 (KEY3).",
    +              "offset": 268,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY3_DATA4": {
    +                    "description": "Stores the fourth 32 bits of KEY3.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY3_DATA5": {
    +              "description": "Register 5 of BLOCK7 (KEY3).",
    +              "offset": 272,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY3_DATA5": {
    +                    "description": "Stores the fifth 32 bits of KEY3.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY3_DATA6": {
    +              "description": "Register 6 of BLOCK7 (KEY3).",
    +              "offset": 276,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY3_DATA6": {
    +                    "description": "Stores the sixth 32 bits of KEY3.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY3_DATA7": {
    +              "description": "Register 7 of BLOCK7 (KEY3).",
    +              "offset": 280,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY3_DATA7": {
    +                    "description": "Stores the seventh 32 bits of KEY3.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY4_DATA0": {
    +              "description": "Register 0 of BLOCK8 (KEY4).",
    +              "offset": 284,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY4_DATA0": {
    +                    "description": "Stores the zeroth 32 bits of KEY4.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY4_DATA1": {
    +              "description": "Register 1 of BLOCK8 (KEY4).",
    +              "offset": 288,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY4_DATA1": {
    +                    "description": "Stores the first 32 bits of KEY4.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY4_DATA2": {
    +              "description": "Register 2 of BLOCK8 (KEY4).",
    +              "offset": 292,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY4_DATA2": {
    +                    "description": "Stores the second 32 bits of KEY4.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY4_DATA3": {
    +              "description": "Register 3 of BLOCK8 (KEY4).",
    +              "offset": 296,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY4_DATA3": {
    +                    "description": "Stores the third 32 bits of KEY4.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY4_DATA4": {
    +              "description": "Register 4 of BLOCK8 (KEY4).",
    +              "offset": 300,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY4_DATA4": {
    +                    "description": "Stores the fourth 32 bits of KEY4.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY4_DATA5": {
    +              "description": "Register 5 of BLOCK8 (KEY4).",
    +              "offset": 304,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY4_DATA5": {
    +                    "description": "Stores the fifth 32 bits of KEY4.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY4_DATA6": {
    +              "description": "Register 6 of BLOCK8 (KEY4).",
    +              "offset": 308,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY4_DATA6": {
    +                    "description": "Stores the sixth 32 bits of KEY4.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY4_DATA7": {
    +              "description": "Register 7 of BLOCK8 (KEY4).",
    +              "offset": 312,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY4_DATA7": {
    +                    "description": "Stores the seventh 32 bits of KEY4.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY5_DATA0": {
    +              "description": "Register 0 of BLOCK9 (KEY5).",
    +              "offset": 316,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY5_DATA0": {
    +                    "description": "Stores the zeroth 32 bits of KEY5.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY5_DATA1": {
    +              "description": "Register 1 of BLOCK9 (KEY5).",
    +              "offset": 320,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY5_DATA1": {
    +                    "description": "Stores the first 32 bits of KEY5.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY5_DATA2": {
    +              "description": "Register 2 of BLOCK9 (KEY5).",
    +              "offset": 324,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY5_DATA2": {
    +                    "description": "Stores the second 32 bits of KEY5.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY5_DATA3": {
    +              "description": "Register 3 of BLOCK9 (KEY5).",
    +              "offset": 328,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY5_DATA3": {
    +                    "description": "Stores the third 32 bits of KEY5.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY5_DATA4": {
    +              "description": "Register 4 of BLOCK9 (KEY5).",
    +              "offset": 332,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY5_DATA4": {
    +                    "description": "Stores the fourth 32 bits of KEY5.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY5_DATA5": {
    +              "description": "Register 5 of BLOCK9 (KEY5).",
    +              "offset": 336,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY5_DATA5": {
    +                    "description": "Stores the fifth 32 bits of KEY5.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY5_DATA6": {
    +              "description": "Register 6 of BLOCK9 (KEY5).",
    +              "offset": 340,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY5_DATA6": {
    +                    "description": "Stores the sixth 32 bits of KEY5.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_KEY5_DATA7": {
    +              "description": "Register 7 of BLOCK9 (KEY5).",
    +              "offset": 344,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY5_DATA7": {
    +                    "description": "Stores the seventh 32 bits of KEY5.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_SYS_PART2_DATA0": {
    +              "description": "Register 0 of BLOCK10 (system).",
    +              "offset": 348,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SYS_DATA_PART2_0": {
    +                    "description": "Stores the 0th 32 bits of the 2nd part of system data.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_SYS_PART2_DATA1": {
    +              "description": "Register 1 of BLOCK9 (KEY5).",
    +              "offset": 352,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SYS_DATA_PART2_1": {
    +                    "description": "Stores the 1st 32 bits of the 2nd part of system data.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_SYS_PART2_DATA2": {
    +              "description": "Register 2 of BLOCK10 (system).",
    +              "offset": 356,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SYS_DATA_PART2_2": {
    +                    "description": "Stores the 2nd 32 bits of the 2nd part of system data.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_SYS_PART2_DATA3": {
    +              "description": "Register 3 of BLOCK10 (system).",
    +              "offset": 360,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SYS_DATA_PART2_3": {
    +                    "description": "Stores the 3rd 32 bits of the 2nd part of system data.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_SYS_PART2_DATA4": {
    +              "description": "Register 4 of BLOCK10 (system).",
    +              "offset": 364,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SYS_DATA_PART2_4": {
    +                    "description": "Stores the 4th 32 bits of the 2nd part of system data.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_SYS_PART2_DATA5": {
    +              "description": "Register 5 of BLOCK10 (system).",
    +              "offset": 368,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SYS_DATA_PART2_5": {
    +                    "description": "Stores the 5th 32 bits of the 2nd part of system data.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_SYS_PART2_DATA6": {
    +              "description": "Register 6 of BLOCK10 (system).",
    +              "offset": 372,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SYS_DATA_PART2_6": {
    +                    "description": "Stores the 6th 32 bits of the 2nd part of system data.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_SYS_PART2_DATA7": {
    +              "description": "Register 7 of BLOCK10 (system).",
    +              "offset": 376,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SYS_DATA_PART2_7": {
    +                    "description": "Stores the 7th 32 bits of the 2nd part of system data.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_REPEAT_ERR0": {
    +              "description": "Programming error record register 0 of BLOCK0.",
    +              "offset": 380,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RD_DIS_ERR": {
    +                    "description": "If any bit in RD_DIS is 1, then it indicates a programming error.",
    +                    "offset": 0,
    +                    "size": 7,
    +                    "access": "read-only"
    +                  },
    +                  "DIS_RTC_RAM_BOOT_ERR": {
    +                    "description": "If DIS_RTC_RAM_BOOT is 1, then it indicates a programming error.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DIS_ICACHE_ERR": {
    +                    "description": "If DIS_ICACHE is 1, then it indicates a programming error.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DIS_USB_JTAG_ERR": {
    +                    "description": "If DIS_USB_JTAG is 1, then it indicates a programming error.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DIS_DOWNLOAD_ICACHE_ERR": {
    +                    "description": "If DIS_DOWNLOAD_ICACHE is 1, then it indicates a programming error.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DIS_USB_DEVICE_ERR": {
    +                    "description": "If DIS_USB_DEVICE is 1, then it indicates a programming error.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DIS_FORCE_DOWNLOAD_ERR": {
    +                    "description": "If DIS_FORCE_DOWNLOAD is 1, then it indicates a programming error.",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RPT4_RESERVED6_ERR": {
    +                    "description": "Reserved.",
    +                    "offset": 13,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DIS_CAN_ERR": {
    +                    "description": "If DIS_CAN is 1, then it indicates a programming error.",
    +                    "offset": 14,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "JTAG_SEL_ENABLE_ERR": {
    +                    "description": "If JTAG_SEL_ENABLE is 1, then it indicates a programming error.",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SOFT_DIS_JTAG_ERR": {
    +                    "description": "If SOFT_DIS_JTAG is 1, then it indicates a programming error.",
    +                    "offset": 16,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "DIS_PAD_JTAG_ERR": {
    +                    "description": "If DIS_PAD_JTAG is 1, then it indicates a programming error.",
    +                    "offset": 19,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DIS_DOWNLOAD_MANUAL_ENCRYPT_ERR": {
    +                    "description": "If DIS_DOWNLOAD_MANUAL_ENCRYPT is 1, then it indicates a programming error.",
    +                    "offset": 20,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "USB_DREFH_ERR": {
    +                    "description": "If any bit in USB_DREFH is 1, then it indicates a programming error.",
    +                    "offset": 21,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "USB_DREFL_ERR": {
    +                    "description": "If any bit in USB_DREFL is 1, then it indicates a programming error.",
    +                    "offset": 23,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "USB_EXCHG_PINS_ERR": {
    +                    "description": "If USB_EXCHG_PINS is 1, then it indicates a programming error.",
    +                    "offset": 25,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "VDD_SPI_AS_GPIO_ERR": {
    +                    "description": "If VDD_SPI_AS_GPIO is 1, then it indicates a programming error.",
    +                    "offset": 26,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "BTLC_GPIO_ENABLE_ERR": {
    +                    "description": "If any bit in BTLC_GPIO_ENABLE is 1, then it indicates a programming error.",
    +                    "offset": 27,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "POWERGLITCH_EN_ERR": {
    +                    "description": "If POWERGLITCH_EN is 1, then it indicates a programming error.",
    +                    "offset": 29,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "POWER_GLITCH_DSENSE_ERR": {
    +                    "description": "If any bit in POWER_GLITCH_DSENSE is 1, then it indicates a programming error.",
    +                    "offset": 30,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_REPEAT_ERR1": {
    +              "description": "Programming error record register 1 of BLOCK0.",
    +              "offset": 384,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RPT4_RESERVED2_ERR": {
    +                    "description": "Reserved.",
    +                    "offset": 0,
    +                    "size": 16,
    +                    "access": "read-only"
    +                  },
    +                  "WDT_DELAY_SEL_ERR": {
    +                    "description": "If any bit in WDT_DELAY_SEL is 1, then it indicates a programming error.",
    +                    "offset": 16,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "SPI_BOOT_CRYPT_CNT_ERR": {
    +                    "description": "If any bit in SPI_BOOT_CRYPT_CNT is 1, then it indicates a programming error.",
    +                    "offset": 18,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "SECURE_BOOT_KEY_REVOKE0_ERR": {
    +                    "description": "If SECURE_BOOT_KEY_REVOKE0 is 1, then it indicates a programming error.",
    +                    "offset": 21,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SECURE_BOOT_KEY_REVOKE1_ERR": {
    +                    "description": "If SECURE_BOOT_KEY_REVOKE1 is 1, then it indicates a programming error.",
    +                    "offset": 22,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SECURE_BOOT_KEY_REVOKE2_ERR": {
    +                    "description": "If SECURE_BOOT_KEY_REVOKE2 is 1, then it indicates a programming error.",
    +                    "offset": 23,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "KEY_PURPOSE_0_ERR": {
    +                    "description": "If any bit in KEY_PURPOSE_0 is 1, then it indicates a programming error.",
    +                    "offset": 24,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  },
    +                  "KEY_PURPOSE_1_ERR": {
    +                    "description": "If any bit in KEY_PURPOSE_1 is 1, then it indicates a programming error.",
    +                    "offset": 28,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_REPEAT_ERR2": {
    +              "description": "Programming error record register 2 of BLOCK0.",
    +              "offset": 388,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY_PURPOSE_2_ERR": {
    +                    "description": "If any bit in KEY_PURPOSE_2 is 1, then it indicates a programming error.",
    +                    "offset": 0,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  },
    +                  "KEY_PURPOSE_3_ERR": {
    +                    "description": "If any bit in KEY_PURPOSE_3 is 1, then it indicates a programming error.",
    +                    "offset": 4,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  },
    +                  "KEY_PURPOSE_4_ERR": {
    +                    "description": "If any bit in KEY_PURPOSE_4 is 1, then it indicates a programming error.",
    +                    "offset": 8,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  },
    +                  "KEY_PURPOSE_5_ERR": {
    +                    "description": "If any bit in KEY_PURPOSE_5 is 1, then it indicates a programming error.",
    +                    "offset": 12,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  },
    +                  "RPT4_RESERVED3_ERR": {
    +                    "description": "Reserved.",
    +                    "offset": 16,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  },
    +                  "SECURE_BOOT_EN_ERR": {
    +                    "description": "If SECURE_BOOT_EN is 1, then it indicates a programming error.",
    +                    "offset": 20,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SECURE_BOOT_AGGRESSIVE_REVOKE_ERR": {
    +                    "description": "If SECURE_BOOT_AGGRESSIVE_REVOKE is 1, then it indicates a programming error.",
    +                    "offset": 21,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RPT4_RESERVED0_ERR": {
    +                    "description": "Reserved.",
    +                    "offset": 22,
    +                    "size": 6,
    +                    "access": "read-only"
    +                  },
    +                  "FLASH_TPUW_ERR": {
    +                    "description": "If any bit in FLASH_TPUM is 1, then it indicates a programming error.",
    +                    "offset": 28,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_REPEAT_ERR3": {
    +              "description": "Programming error record register 3 of BLOCK0.",
    +              "offset": 392,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DIS_DOWNLOAD_MODE_ERR": {
    +                    "description": "If DIS_DOWNLOAD_MODE is 1, then it indicates a programming error.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DIS_LEGACY_SPI_BOOT_ERR": {
    +                    "description": "If DIS_LEGACY_SPI_BOOT is 1, then it indicates a programming error.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "UART_PRINT_CHANNEL_ERR": {
    +                    "description": "If UART_PRINT_CHANNEL is 1, then it indicates a programming error.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "FLASH_ECC_MODE_ERR": {
    +                    "description": "If FLASH_ECC_MODE is 1, then it indicates a programming error.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DIS_USB_DOWNLOAD_MODE_ERR": {
    +                    "description": "If DIS_USB_DOWNLOAD_MODE is 1, then it indicates a programming error.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "ENABLE_SECURITY_DOWNLOAD_ERR": {
    +                    "description": "If ENABLE_SECURITY_DOWNLOAD is 1, then it indicates a programming error.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "UART_PRINT_CONTROL_ERR": {
    +                    "description": "If any bit in UART_PRINT_CONTROL is 1, then it indicates a programming error.",
    +                    "offset": 6,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "PIN_POWER_SELECTION_ERR": {
    +                    "description": "If PIN_POWER_SELECTION is 1, then it indicates a programming error.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "FLASH_TYPE_ERR": {
    +                    "description": "If FLASH_TYPE is 1, then it indicates a programming error.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "FLASH_PAGE_SIZE_ERR": {
    +                    "description": "If any bits in FLASH_PAGE_SIZE is 1, then it indicates a programming error.",
    +                    "offset": 10,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "FLASH_ECC_EN_ERR": {
    +                    "description": "If FLASH_ECC_EN_ERR is 1, then it indicates a programming error.",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "FORCE_SEND_RESUME_ERR": {
    +                    "description": "If FORCE_SEND_RESUME is 1, then it indicates a programming error.",
    +                    "offset": 13,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SECURE_VERSION_ERR": {
    +                    "description": "If any bit in SECURE_VERSION is 1, then it indicates a programming error.",
    +                    "offset": 14,
    +                    "size": 16,
    +                    "access": "read-only"
    +                  },
    +                  "RPT4_RESERVED1_ERR": {
    +                    "description": "Reserved.",
    +                    "offset": 30,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_REPEAT_ERR4": {
    +              "description": "Programming error record register 4 of BLOCK0.",
    +              "offset": 400,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RPT4_RESERVED4_ERR": {
    +                    "description": "Reserved.",
    +                    "offset": 0,
    +                    "size": 24,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_RS_ERR0": {
    +              "description": "Programming error record register 0 of BLOCK1-10.",
    +              "offset": 448,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "MAC_SPI_8M_ERR_NUM": {
    +                    "description": "The value of this signal means the number of error bytes.",
    +                    "offset": 0,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "MAC_SPI_8M_FAIL": {
    +                    "description": "0: Means no failure and that the data of MAC_SPI_8M is reliable 1: Means that programming user data failed and the number of error bytes is over 6.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SYS_PART1_NUM": {
    +                    "description": "The value of this signal means the number of error bytes.",
    +                    "offset": 4,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "SYS_PART1_FAIL": {
    +                    "description": "0: Means no failure and that the data of system part1 is reliable 1: Means that programming user data failed and the number of error bytes is over 6.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "USR_DATA_ERR_NUM": {
    +                    "description": "The value of this signal means the number of error bytes.",
    +                    "offset": 8,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "USR_DATA_FAIL": {
    +                    "description": "0: Means no failure and that the user data is reliable 1: Means that programming user data failed and the number of error bytes is over 6.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "KEY0_ERR_NUM": {
    +                    "description": "The value of this signal means the number of error bytes.",
    +                    "offset": 12,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "KEY0_FAIL": {
    +                    "description": "0: Means no failure and that the data of key0 is reliable 1: Means that programming key0 failed and the number of error bytes is over 6.",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "KEY1_ERR_NUM": {
    +                    "description": "The value of this signal means the number of error bytes.",
    +                    "offset": 16,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "KEY1_FAIL": {
    +                    "description": "0: Means no failure and that the data of key1 is reliable 1: Means that programming key1 failed and the number of error bytes is over 6.",
    +                    "offset": 19,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "KEY2_ERR_NUM": {
    +                    "description": "The value of this signal means the number of error bytes.",
    +                    "offset": 20,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "KEY2_FAIL": {
    +                    "description": "0: Means no failure and that the data of key2 is reliable 1: Means that programming key2 failed and the number of error bytes is over 6.",
    +                    "offset": 23,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "KEY3_ERR_NUM": {
    +                    "description": "The value of this signal means the number of error bytes.",
    +                    "offset": 24,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "KEY3_FAIL": {
    +                    "description": "0: Means no failure and that the data of key3 is reliable 1: Means that programming key3 failed and the number of error bytes is over 6.",
    +                    "offset": 27,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "KEY4_ERR_NUM": {
    +                    "description": "The value of this signal means the number of error bytes.",
    +                    "offset": 28,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "KEY4_FAIL": {
    +                    "description": "0: Means no failure and that the data of key4 is reliable 1: Means that programming key4 failed and the number of error bytes is over 6.",
    +                    "offset": 31,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RD_RS_ERR1": {
    +              "description": "Programming error record register 1 of BLOCK1-10.",
    +              "offset": 452,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY5_ERR_NUM": {
    +                    "description": "The value of this signal means the number of error bytes.",
    +                    "offset": 0,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "KEY5_FAIL": {
    +                    "description": "0: Means no failure and that the data of KEY5 is reliable 1: Means that programming user data failed and the number of error bytes is over 6.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SYS_PART2_ERR_NUM": {
    +                    "description": "The value of this signal means the number of error bytes.",
    +                    "offset": 4,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "SYS_PART2_FAIL": {
    +                    "description": "0: Means no failure and that the data of system part2 is reliable 1: Means that programming user data failed and the number of error bytes is over 6.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CLK": {
    +              "description": "eFuse clcok configuration register.",
    +              "offset": 456,
    +              "size": 32,
    +              "reset_value": 2,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "EFUSE_MEM_FORCE_PD": {
    +                    "description": "Set this bit to force eFuse SRAM into power-saving mode.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "MEM_CLK_FORCE_ON": {
    +                    "description": "Set this bit and force to activate clock signal of eFuse SRAM.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "EFUSE_MEM_FORCE_PU": {
    +                    "description": "Set this bit to force eFuse SRAM into working mode.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "EN": {
    +                    "description": "Set this bit and force to enable clock signal of eFuse memory.",
    +                    "offset": 16,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CONF": {
    +              "description": "eFuse operation mode configuraiton register;",
    +              "offset": 460,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OP_CODE": {
    +                    "description": "0x5A5A: Operate programming command 0x5AA5: Operate read command.",
    +                    "offset": 0,
    +                    "size": 16
    +                  }
    +                }
    +              }
    +            },
    +            "STATUS": {
    +              "description": "eFuse status register.",
    +              "offset": 464,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "STATE": {
    +                    "description": "Indicates the state of the eFuse state machine.",
    +                    "offset": 0,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  },
    +                  "OTP_LOAD_SW": {
    +                    "description": "The value of OTP_LOAD_SW.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OTP_VDDQ_C_SYNC2": {
    +                    "description": "The value of OTP_VDDQ_C_SYNC2.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OTP_STROBE_SW": {
    +                    "description": "The value of OTP_STROBE_SW.",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OTP_CSB_SW": {
    +                    "description": "The value of OTP_CSB_SW.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OTP_PGENB_SW": {
    +                    "description": "The value of OTP_PGENB_SW.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OTP_VDDQ_IS_SW": {
    +                    "description": "The value of OTP_VDDQ_IS_SW.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "REPEAT_ERR_CNT": {
    +                    "description": "Indicates the number of error bits during programming BLOCK0.",
    +                    "offset": 10,
    +                    "size": 8,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CMD": {
    +              "description": "eFuse command register.",
    +              "offset": 468,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "READ_CMD": {
    +                    "description": "Set this bit to send read command.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "PGM_CMD": {
    +                    "description": "Set this bit to send programming command.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "BLK_NUM": {
    +                    "description": "The serial number of the block to be programmed. Value 0-10 corresponds to block number 0-10, respectively.",
    +                    "offset": 2,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "INT_RAW": {
    +              "description": "eFuse raw interrupt register.",
    +              "offset": 472,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "READ_DONE_INT_RAW": {
    +                    "description": "The raw bit signal for read_done interrupt.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "PGM_DONE_INT_RAW": {
    +                    "description": "The raw bit signal for pgm_done interrupt.",
    +                    "offset": 1,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ST": {
    +              "description": "eFuse interrupt status register.",
    +              "offset": 476,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "READ_DONE_INT_ST": {
    +                    "description": "The status signal for read_done interrupt.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "PGM_DONE_INT_ST": {
    +                    "description": "The status signal for pgm_done interrupt.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ENA": {
    +              "description": "eFuse interrupt enable register.",
    +              "offset": 480,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "READ_DONE_INT_ENA": {
    +                    "description": "The enable signal for read_done interrupt.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "PGM_DONE_INT_ENA": {
    +                    "description": "The enable signal for pgm_done interrupt.",
    +                    "offset": 1,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INT_CLR": {
    +              "description": "eFuse interrupt clear register.",
    +              "offset": 484,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "READ_DONE_INT_CLR": {
    +                    "description": "The clear signal for read_done interrupt.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "PGM_DONE_INT_CLR": {
    +                    "description": "The clear signal for pgm_done interrupt.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DAC_CONF": {
    +              "description": "Controls the eFuse programming voltage.",
    +              "offset": 488,
    +              "size": 32,
    +              "reset_value": 130588,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DAC_CLK_DIV": {
    +                    "description": "Controls the division factor of the rising clock of the programming voltage.",
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "DAC_CLK_PAD_SEL": {
    +                    "description": "Don't care.",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "DAC_NUM": {
    +                    "description": "Controls the rising period of the programming voltage.",
    +                    "offset": 9,
    +                    "size": 8
    +                  },
    +                  "OE_CLR": {
    +                    "description": "Reduces the power supply of the programming voltage.",
    +                    "offset": 17,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "RD_TIM_CONF": {
    +              "description": "Configures read timing parameters.",
    +              "offset": 492,
    +              "size": 32,
    +              "reset_value": 301989888,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "READ_INIT_NUM": {
    +                    "description": "Configures the initial read time of eFuse.",
    +                    "offset": 24,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "WR_TIM_CONF1": {
    +              "description": "Configurarion register 1 of eFuse programming timing parameters.",
    +              "offset": 496,
    +              "size": 32,
    +              "reset_value": 2654208,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PWR_ON_NUM": {
    +                    "description": "Configures the power up time for VDDQ.",
    +                    "offset": 8,
    +                    "size": 16
    +                  }
    +                }
    +              }
    +            },
    +            "WR_TIM_CONF2": {
    +              "description": "Configurarion register 2 of eFuse programming timing parameters.",
    +              "offset": 500,
    +              "size": 32,
    +              "reset_value": 400,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PWR_OFF_NUM": {
    +                    "description": "Configures the power outage time for VDDQ.",
    +                    "offset": 0,
    +                    "size": 16
    +                  }
    +                }
    +              }
    +            },
    +            "DATE": {
    +              "description": "eFuse version register.",
    +              "offset": 508,
    +              "size": 32,
    +              "reset_value": 33583616,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATE": {
    +                    "description": "Stores eFuse version.",
    +                    "offset": 0,
    +                    "size": 28
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "EXTMEM": {
    +        "description": "External Memory",
    +        "children": {
    +          "registers": {
    +            "ICACHE_CTRL": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_ENABLE": {
    +                    "description": "The bit is used to activate the data cache. 0: disable, 1: enable",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "ICACHE_CTRL1": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 4,
    +              "size": 32,
    +              "reset_value": 3,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_SHUT_IBUS": {
    +                    "description": "The bit is used to disable core0 ibus, 0: enable, 1: disable",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "ICACHE_SHUT_DBUS": {
    +                    "description": "The bit is used to disable core1 ibus, 0: enable, 1: disable",
    +                    "offset": 1,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "ICACHE_TAG_POWER_CTRL": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 5,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_TAG_MEM_FORCE_ON": {
    +                    "description": "The bit is used to close clock gating of  icache tag memory. 1: close gating, 0: open clock gating.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "ICACHE_TAG_MEM_FORCE_PD": {
    +                    "description": "The bit is used to power  icache tag memory down, 0: follow rtc_lslp, 1: power down",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "ICACHE_TAG_MEM_FORCE_PU": {
    +                    "description": "The bit is used to power  icache tag memory up, 0: follow rtc_lslp, 1: power up",
    +                    "offset": 2,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "ICACHE_PRELOCK_CTRL": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_PRELOCK_SCT0_EN": {
    +                    "description": "The bit is used to enable the first section of prelock function.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "ICACHE_PRELOCK_SCT1_EN": {
    +                    "description": "The bit is used to enable the second section of prelock function.",
    +                    "offset": 1,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "ICACHE_PRELOCK_SCT0_ADDR": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 16,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_PRELOCK_SCT0_ADDR": {
    +                    "description": "The bits are used to configure the first start virtual address of data prelock, which is combined with ICACHE_PRELOCK_SCT0_SIZE_REG",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "ICACHE_PRELOCK_SCT1_ADDR": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 20,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_PRELOCK_SCT1_ADDR": {
    +                    "description": "The bits are used to configure the second start virtual address of data prelock, which is combined with ICACHE_PRELOCK_SCT1_SIZE_REG",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "ICACHE_PRELOCK_SCT_SIZE": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 24,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_PRELOCK_SCT1_SIZE": {
    +                    "description": "The bits are used to configure the second length of data locking, which is combined with ICACHE_PRELOCK_SCT1_ADDR_REG",
    +                    "offset": 0,
    +                    "size": 16
    +                  },
    +                  "ICACHE_PRELOCK_SCT0_SIZE": {
    +                    "description": "The bits are used to configure the first length of data locking, which is combined with ICACHE_PRELOCK_SCT0_ADDR_REG",
    +                    "offset": 16,
    +                    "size": 16
    +                  }
    +                }
    +              }
    +            },
    +            "ICACHE_LOCK_CTRL": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 4,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_LOCK_ENA": {
    +                    "description": "The bit is used to enable lock operation. It will be cleared by hardware after lock operation done.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "ICACHE_UNLOCK_ENA": {
    +                    "description": "The bit is used to enable unlock operation. It will be cleared by hardware after unlock operation done.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "ICACHE_LOCK_DONE": {
    +                    "description": "The bit is used to indicate unlock/lock operation is finished.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "ICACHE_LOCK_ADDR": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_LOCK_ADDR": {
    +                    "description": "The bits are used to configure the start virtual address for lock operations. It should be combined with ICACHE_LOCK_SIZE_REG.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "ICACHE_LOCK_SIZE": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 36,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_LOCK_SIZE": {
    +                    "description": "The bits are used to configure the length for lock operations. The bits are the counts of cache block. It should be combined with ICACHE_LOCK_ADDR_REG.",
    +                    "offset": 0,
    +                    "size": 16
    +                  }
    +                }
    +              }
    +            },
    +            "ICACHE_SYNC_CTRL": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 40,
    +              "size": 32,
    +              "reset_value": 1,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_INVALIDATE_ENA": {
    +                    "description": "The bit is used to enable invalidate operation. It will be cleared by hardware after invalidate operation done.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "ICACHE_SYNC_DONE": {
    +                    "description": "The bit is used to indicate invalidate operation is finished.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "ICACHE_SYNC_ADDR": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 44,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_SYNC_ADDR": {
    +                    "description": "The bits are used to configure the start virtual address for clean operations. It should be combined with ICACHE_SYNC_SIZE_REG.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "ICACHE_SYNC_SIZE": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 48,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_SYNC_SIZE": {
    +                    "description": "The bits are used to configure the length for sync operations. The bits are the counts of cache block. It should be combined with ICACHE_SYNC_ADDR_REG.",
    +                    "offset": 0,
    +                    "size": 23
    +                  }
    +                }
    +              }
    +            },
    +            "ICACHE_PRELOAD_CTRL": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 52,
    +              "size": 32,
    +              "reset_value": 2,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_PRELOAD_ENA": {
    +                    "description": "The bit is used to enable preload operation. It will be cleared by hardware after preload operation done.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "ICACHE_PRELOAD_DONE": {
    +                    "description": "The bit is used to indicate preload operation is finished.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "ICACHE_PRELOAD_ORDER": {
    +                    "description": "The bit is used to configure the direction of preload operation. 1: descending, 0: ascending.",
    +                    "offset": 2,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "ICACHE_PRELOAD_ADDR": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 56,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_PRELOAD_ADDR": {
    +                    "description": "The bits are used to configure the start virtual address for preload operation. It should be combined with ICACHE_PRELOAD_SIZE_REG.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "ICACHE_PRELOAD_SIZE": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 60,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_PRELOAD_SIZE": {
    +                    "description": "The bits are used to configure the length for preload operation. The bits are the counts of cache block. It should be combined with ICACHE_PRELOAD_ADDR_REG..",
    +                    "offset": 0,
    +                    "size": 16
    +                  }
    +                }
    +              }
    +            },
    +            "ICACHE_AUTOLOAD_CTRL": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 64,
    +              "size": 32,
    +              "reset_value": 8,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_AUTOLOAD_SCT0_ENA": {
    +                    "description": "The bits are used to enable the first section for autoload operation.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "ICACHE_AUTOLOAD_SCT1_ENA": {
    +                    "description": "The bits are used to enable the second section for autoload operation.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "ICACHE_AUTOLOAD_ENA": {
    +                    "description": "The bit is used to enable and disable autoload operation. It is combined with icache_autoload_done. 1: enable, 0: disable.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "ICACHE_AUTOLOAD_DONE": {
    +                    "description": "The bit is used to indicate autoload operation is finished.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "ICACHE_AUTOLOAD_ORDER": {
    +                    "description": "The bits are used to configure the direction of autoload. 1: descending, 0: ascending.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "ICACHE_AUTOLOAD_RQST": {
    +                    "description": "The bits are used to configure trigger conditions for autoload. 0/3: cache miss, 1: cache hit, 2: both cache miss and hit.",
    +                    "offset": 5,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "ICACHE_AUTOLOAD_SCT0_ADDR": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 68,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_AUTOLOAD_SCT0_ADDR": {
    +                    "description": "The bits are used to configure the start virtual address of the first section for autoload operation. It should be combined with icache_autoload_sct0_ena.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "ICACHE_AUTOLOAD_SCT0_SIZE": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 72,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_AUTOLOAD_SCT0_SIZE": {
    +                    "description": "The bits are used to configure the length of the first section for autoload operation. It should be combined with icache_autoload_sct0_ena.",
    +                    "offset": 0,
    +                    "size": 27
    +                  }
    +                }
    +              }
    +            },
    +            "ICACHE_AUTOLOAD_SCT1_ADDR": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 76,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_AUTOLOAD_SCT1_ADDR": {
    +                    "description": "The bits are used to configure the start virtual address of the second section for autoload operation. It should be combined with icache_autoload_sct1_ena.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "ICACHE_AUTOLOAD_SCT1_SIZE": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 80,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_AUTOLOAD_SCT1_SIZE": {
    +                    "description": "The bits are used to configure the length of the second section for autoload operation. It should be combined with icache_autoload_sct1_ena.",
    +                    "offset": 0,
    +                    "size": 27
    +                  }
    +                }
    +              }
    +            },
    +            "IBUS_TO_FLASH_START_VADDR": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 84,
    +              "size": 32,
    +              "reset_value": 1107296256,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IBUS_TO_FLASH_START_VADDR": {
    +                    "description": "The bits are used to configure the start virtual address of ibus to access flash. The register is used to give constraints to ibus access counter.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "IBUS_TO_FLASH_END_VADDR": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 88,
    +              "size": 32,
    +              "reset_value": 1115684863,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IBUS_TO_FLASH_END_VADDR": {
    +                    "description": "The bits are used to configure the end virtual address of ibus to access flash. The register is used to give constraints to ibus access counter.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "DBUS_TO_FLASH_START_VADDR": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 92,
    +              "size": 32,
    +              "reset_value": 1006632960,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DBUS_TO_FLASH_START_VADDR": {
    +                    "description": "The bits are used to configure the start virtual address of dbus to access flash. The register is used to give constraints to dbus access counter.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "DBUS_TO_FLASH_END_VADDR": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 96,
    +              "size": 32,
    +              "reset_value": 1015021567,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DBUS_TO_FLASH_END_VADDR": {
    +                    "description": "The bits are used to configure the end virtual address of dbus to access flash. The register is used to give constraints to dbus access counter.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_ACS_CNT_CLR": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 100,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IBUS_ACS_CNT_CLR": {
    +                    "description": "The bit is used to clear ibus counter.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "DBUS_ACS_CNT_CLR": {
    +                    "description": "The bit is used to clear dbus counter.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IBUS_ACS_MISS_CNT": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 104,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IBUS_ACS_MISS_CNT": {
    +                    "description": "The bits are used to count the number of the cache miss caused by ibus access flash.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IBUS_ACS_CNT": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 108,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IBUS_ACS_CNT": {
    +                    "description": "The bits are used to count the number of ibus access flash through icache.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DBUS_ACS_FLASH_MISS_CNT": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 112,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DBUS_ACS_FLASH_MISS_CNT": {
    +                    "description": "The bits are used to count the number of the cache miss caused by dbus access flash.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DBUS_ACS_CNT": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 116,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DBUS_ACS_CNT": {
    +                    "description": "The bits are used to count the number of dbus access flash through icache.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_ILG_INT_ENA": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 120,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_SYNC_OP_FAULT_INT_ENA": {
    +                    "description": "The bit is used to enable interrupt by sync configurations fault.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "ICACHE_PRELOAD_OP_FAULT_INT_ENA": {
    +                    "description": "The bit is used to enable interrupt by preload configurations fault.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "MMU_ENTRY_FAULT_INT_ENA": {
    +                    "description": "The bit is used to enable interrupt by mmu entry fault.",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "IBUS_CNT_OVF_INT_ENA": {
    +                    "description": "The bit is used to enable interrupt by ibus counter overflow.",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "DBUS_CNT_OVF_INT_ENA": {
    +                    "description": "The bit is used to enable interrupt by dbus counter overflow.",
    +                    "offset": 8,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_ILG_INT_CLR": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 124,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_SYNC_OP_FAULT_INT_CLR": {
    +                    "description": "The bit is used to clear interrupt by sync configurations fault.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "ICACHE_PRELOAD_OP_FAULT_INT_CLR": {
    +                    "description": "The bit is used to clear interrupt by preload configurations fault.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "MMU_ENTRY_FAULT_INT_CLR": {
    +                    "description": "The bit is used to clear interrupt by mmu entry fault.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "IBUS_CNT_OVF_INT_CLR": {
    +                    "description": "The bit is used to clear interrupt by ibus counter overflow.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "DBUS_CNT_OVF_INT_CLR": {
    +                    "description": "The bit is used to clear interrupt by dbus counter overflow.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_ILG_INT_ST": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 128,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_SYNC_OP_FAULT_ST": {
    +                    "description": "The bit is used to indicate interrupt by sync configurations fault.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "ICACHE_PRELOAD_OP_FAULT_ST": {
    +                    "description": "The bit is used to indicate interrupt by preload configurations fault.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "MMU_ENTRY_FAULT_ST": {
    +                    "description": "The bit is used to indicate interrupt by mmu entry fault.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IBUS_ACS_CNT_OVF_ST": {
    +                    "description": "The bit is used to indicate interrupt by ibus access flash/spiram counter overflow.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IBUS_ACS_MISS_CNT_OVF_ST": {
    +                    "description": "The bit is used to indicate interrupt by ibus access flash/spiram miss counter overflow.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DBUS_ACS_CNT_OVF_ST": {
    +                    "description": "The bit is used to indicate interrupt by dbus access flash/spiram counter overflow.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DBUS_ACS_FLASH_MISS_CNT_OVF_ST": {
    +                    "description": "The bit is used to indicate interrupt by dbus access flash miss counter overflow.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE0_ACS_CACHE_INT_ENA": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 132,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE0_IBUS_ACS_MSK_IC_INT_ENA": {
    +                    "description": "The bit is used to enable interrupt by cpu access icache while the corresponding ibus is disabled which include speculative access.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "CORE0_IBUS_WR_IC_INT_ENA": {
    +                    "description": "The bit is used to enable interrupt by ibus trying to write icache",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "CORE0_IBUS_REJECT_INT_ENA": {
    +                    "description": "The bit is used to enable interrupt by authentication fail.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "CORE0_DBUS_ACS_MSK_IC_INT_ENA": {
    +                    "description": "The bit is used to enable interrupt by cpu access icache while the corresponding dbus is disabled which include speculative access.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "CORE0_DBUS_REJECT_INT_ENA": {
    +                    "description": "The bit is used to enable interrupt by authentication fail.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "CORE0_DBUS_WR_IC_INT_ENA": {
    +                    "description": "The bit is used to enable interrupt by dbus trying to write icache",
    +                    "offset": 5,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CORE0_ACS_CACHE_INT_CLR": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 136,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE0_IBUS_ACS_MSK_IC_INT_CLR": {
    +                    "description": "The bit is used to clear interrupt by cpu access icache while the corresponding ibus is disabled or icache is disabled which include speculative access.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "CORE0_IBUS_WR_IC_INT_CLR": {
    +                    "description": "The bit is used to clear interrupt by ibus trying to write icache",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "CORE0_IBUS_REJECT_INT_CLR": {
    +                    "description": "The bit is used to clear interrupt by authentication fail.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "CORE0_DBUS_ACS_MSK_IC_INT_CLR": {
    +                    "description": "The bit is used to clear interrupt by cpu access icache while the corresponding dbus is disabled or icache is disabled which include speculative access.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "CORE0_DBUS_REJECT_INT_CLR": {
    +                    "description": "The bit is used to clear interrupt by authentication fail.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "CORE0_DBUS_WR_IC_INT_CLR": {
    +                    "description": "The bit is used to clear interrupt by dbus trying to write icache",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE0_ACS_CACHE_INT_ST": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 140,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE0_IBUS_ACS_MSK_ICACHE_ST": {
    +                    "description": "The bit is used to indicate interrupt by cpu access  icache while the core0_ibus is disabled or icache is disabled which include speculative access.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE0_IBUS_WR_ICACHE_ST": {
    +                    "description": "The bit is used to indicate interrupt by ibus trying to write icache",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE0_IBUS_REJECT_ST": {
    +                    "description": "The bit is used to indicate interrupt by authentication fail.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE0_DBUS_ACS_MSK_ICACHE_ST": {
    +                    "description": "The bit is used to indicate interrupt by cpu access icache while the core0_dbus is disabled or icache is disabled which include speculative access.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE0_DBUS_REJECT_ST": {
    +                    "description": "The bit is used to indicate interrupt by authentication fail.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE0_DBUS_WR_ICACHE_ST": {
    +                    "description": "The bit is used to indicate interrupt by dbus trying to write icache",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE0_DBUS_REJECT_ST": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 144,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE0_DBUS_ATTR": {
    +                    "description": "The bits are used to indicate the attribute of CPU access dbus when authentication fail. 0: invalidate, 1: execute-able, 2: read-able, 4: write-able.",
    +                    "offset": 0,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "CORE0_DBUS_WORLD": {
    +                    "description": "The bit is used to indicate the world of CPU access dbus when authentication fail. 0: WORLD0, 1: WORLD1",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE0_DBUS_REJECT_VADDR": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 148,
    +              "size": 32,
    +              "reset_value": 4294967295,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE0_DBUS_VADDR": {
    +                    "description": "The bits are used to indicate the virtual address of CPU access dbus when authentication fail.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE0_IBUS_REJECT_ST": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 152,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE0_IBUS_ATTR": {
    +                    "description": "The bits are used to indicate the attribute of CPU access ibus when authentication fail. 0: invalidate, 1: execute-able, 2: read-able",
    +                    "offset": 0,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "CORE0_IBUS_WORLD": {
    +                    "description": "The bit is used to indicate the world of CPU access ibus when authentication fail. 0: WORLD0, 1: WORLD1",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE0_IBUS_REJECT_VADDR": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 156,
    +              "size": 32,
    +              "reset_value": 4294967295,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE0_IBUS_VADDR": {
    +                    "description": "The bits are used to indicate the virtual address of CPU access  ibus when authentication fail.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_MMU_FAULT_CONTENT": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 160,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CACHE_MMU_FAULT_CONTENT": {
    +                    "description": "The bits are used to indicate the content of mmu entry which cause mmu fault..",
    +                    "offset": 0,
    +                    "size": 10,
    +                    "access": "read-only"
    +                  },
    +                  "CACHE_MMU_FAULT_CODE": {
    +                    "description": "The right-most 3 bits are used to indicate the operations which cause mmu fault occurrence. 0: default, 1: cpu miss, 2: preload miss, 3: writeback, 4: cpu miss evict recovery address, 5: load miss evict recovery address, 6: external dma tx, 7: external dma rx. The most significant bit is used to indicate this operation occurs in which one icache.",
    +                    "offset": 10,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_MMU_FAULT_VADDR": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 164,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CACHE_MMU_FAULT_VADDR": {
    +                    "description": "The bits are used to indicate the virtual address which cause mmu fault..",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_WRAP_AROUND_CTRL": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 168,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CACHE_FLASH_WRAP_AROUND": {
    +                    "description": "The bit is used to enable wrap around mode when read data from flash.",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_MMU_POWER_CTRL": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 172,
    +              "size": 32,
    +              "reset_value": 5,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CACHE_MMU_MEM_FORCE_ON": {
    +                    "description": "The bit is used to enable clock gating to save power when access mmu memory, 0: enable, 1: disable",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "CACHE_MMU_MEM_FORCE_PD": {
    +                    "description": "The bit is used to power mmu memory down, 0: follow_rtc_lslp_pd, 1: power down",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "CACHE_MMU_MEM_FORCE_PU": {
    +                    "description": "The bit is used to power mmu memory down, 0: follow_rtc_lslp_pd, 1: power up",
    +                    "offset": 2,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_STATE": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 176,
    +              "size": 32,
    +              "reset_value": 1,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_STATE": {
    +                    "description": "The bit is used to indicate whether  icache main fsm is in idle state or not. 1: in idle state,  0: not in idle state",
    +                    "offset": 0,
    +                    "size": 12,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_ENCRYPT_DECRYPT_RECORD_DISABLE": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 180,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RECORD_DISABLE_DB_ENCRYPT": {
    +                    "description": "Reserved.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "RECORD_DISABLE_G0CB_DECRYPT": {
    +                    "description": "Reserved.",
    +                    "offset": 1,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_ENCRYPT_DECRYPT_CLK_FORCE_ON": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 184,
    +              "size": 32,
    +              "reset_value": 7,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CLK_FORCE_ON_MANUAL_CRYPT": {
    +                    "description": "The bit is used to close clock gating of manual crypt clock. 1: close gating, 0: open clock gating.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "CLK_FORCE_ON_AUTO_CRYPT": {
    +                    "description": "The bit is used to close clock gating of automatic crypt clock. 1: close gating, 0: open clock gating.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "CLK_FORCE_ON_CRYPT": {
    +                    "description": "The bit is used to close clock gating of external memory encrypt and decrypt clock. 1: close gating, 0: open clock gating.",
    +                    "offset": 2,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_PRELOAD_INT_CTRL": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 188,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_PRELOAD_INT_ST": {
    +                    "description": "The bit is used to indicate the interrupt by  icache pre-load done.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "ICACHE_PRELOAD_INT_ENA": {
    +                    "description": "The bit is used to enable the interrupt by  icache pre-load done.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "ICACHE_PRELOAD_INT_CLR": {
    +                    "description": "The bit is used to clear the interrupt by  icache pre-load done.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_SYNC_INT_CTRL": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 192,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_SYNC_INT_ST": {
    +                    "description": "The bit is used to indicate the interrupt by  icache sync done.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "ICACHE_SYNC_INT_ENA": {
    +                    "description": "The bit is used to enable the interrupt by  icache sync done.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "ICACHE_SYNC_INT_CLR": {
    +                    "description": "The bit is used to clear the interrupt by  icache sync done.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_MMU_OWNER": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 196,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CACHE_MMU_OWNER": {
    +                    "description": "The bits are used to specify the owner of MMU.bit0/bit2: ibus, bit1/bit3: dbus",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_CONF_MISC": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 200,
    +              "size": 32,
    +              "reset_value": 7,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CACHE_IGNORE_PRELOAD_MMU_ENTRY_FAULT": {
    +                    "description": "The bit is used to disable checking mmu entry fault by preload operation.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "CACHE_IGNORE_SYNC_MMU_ENTRY_FAULT": {
    +                    "description": "The bit is used to disable checking mmu entry fault by sync operation.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "CACHE_TRACE_ENA": {
    +                    "description": "The bit is used to enable cache trace function.",
    +                    "offset": 2,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "ICACHE_FREEZE": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 204,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ENA": {
    +                    "description": "The bit is used to enable icache freeze mode",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "MODE": {
    +                    "description": "The bit is used to configure freeze mode, 0:  assert busy if CPU miss 1: assert hit if CPU miss",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "DONE": {
    +                    "description": "The bit is used to indicate icache freeze success",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "ICACHE_ATOMIC_OPERATE_ENA": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 208,
    +              "size": 32,
    +              "reset_value": 1,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_ATOMIC_OPERATE_ENA": {
    +                    "description": "The bit is used to activate icache atomic operation protection. In this case, sync/lock operation can not interrupt miss-work. This feature does not work during invalidateAll operation.",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_REQUEST": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 212,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BYPASS": {
    +                    "description": "The bit is used to disable request recording which could cause performance issue",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "IBUS_PMS_TBL_LOCK": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 216,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IBUS_PMS_LOCK": {
    +                    "description": "The bit is used to configure the ibus permission control section boundary0",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "IBUS_PMS_TBL_BOUNDARY0": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 220,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IBUS_PMS_BOUNDARY0": {
    +                    "description": "The bit is used to configure the ibus permission control section boundary0",
    +                    "offset": 0,
    +                    "size": 12
    +                  }
    +                }
    +              }
    +            },
    +            "IBUS_PMS_TBL_BOUNDARY1": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 224,
    +              "size": 32,
    +              "reset_value": 2048,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IBUS_PMS_BOUNDARY1": {
    +                    "description": "The bit is used to configure the ibus permission control section boundary1",
    +                    "offset": 0,
    +                    "size": 12
    +                  }
    +                }
    +              }
    +            },
    +            "IBUS_PMS_TBL_BOUNDARY2": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 228,
    +              "size": 32,
    +              "reset_value": 2048,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IBUS_PMS_BOUNDARY2": {
    +                    "description": "The bit is used to configure the ibus permission control section boundary2",
    +                    "offset": 0,
    +                    "size": 12
    +                  }
    +                }
    +              }
    +            },
    +            "IBUS_PMS_TBL_ATTR": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 232,
    +              "size": 32,
    +              "reset_value": 255,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IBUS_PMS_SCT1_ATTR": {
    +                    "description": "The bit is used to configure attribute of the ibus permission control section1, bit0: fetch in world0, bit1: load in world0, bit2: fetch in world1, bit3: load in world1",
    +                    "offset": 0,
    +                    "size": 4
    +                  },
    +                  "IBUS_PMS_SCT2_ATTR": {
    +                    "description": "The bit is used to configure attribute of the ibus permission control section2, bit0: fetch in world0, bit1: load in world0, bit2: fetch in world1, bit3: load in world1",
    +                    "offset": 4,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "DBUS_PMS_TBL_LOCK": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 236,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DBUS_PMS_LOCK": {
    +                    "description": "The bit is used to configure the ibus permission control section boundary0",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DBUS_PMS_TBL_BOUNDARY0": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 240,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DBUS_PMS_BOUNDARY0": {
    +                    "description": "The bit is used to configure the dbus permission control section boundary0",
    +                    "offset": 0,
    +                    "size": 12
    +                  }
    +                }
    +              }
    +            },
    +            "DBUS_PMS_TBL_BOUNDARY1": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 244,
    +              "size": 32,
    +              "reset_value": 2048,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DBUS_PMS_BOUNDARY1": {
    +                    "description": "The bit is used to configure the dbus permission control section boundary1",
    +                    "offset": 0,
    +                    "size": 12
    +                  }
    +                }
    +              }
    +            },
    +            "DBUS_PMS_TBL_BOUNDARY2": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 248,
    +              "size": 32,
    +              "reset_value": 2048,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DBUS_PMS_BOUNDARY2": {
    +                    "description": "The bit is used to configure the dbus permission control section boundary2",
    +                    "offset": 0,
    +                    "size": 12
    +                  }
    +                }
    +              }
    +            },
    +            "DBUS_PMS_TBL_ATTR": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 252,
    +              "size": 32,
    +              "reset_value": 15,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DBUS_PMS_SCT1_ATTR": {
    +                    "description": "The bit is used to configure attribute of the dbus permission control section1, bit0: load in world0, bit2: load in world1",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "DBUS_PMS_SCT2_ATTR": {
    +                    "description": "The bit is used to configure attribute of the dbus permission control section2, bit0: load in world0, bit2: load in world1",
    +                    "offset": 2,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "CLOCK_GATE": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 256,
    +              "size": 32,
    +              "reset_value": 1,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CLK_EN": {
    +                    "description": "clock gate enable.",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "REG_DATE": {
    +              "description": "This description will be updated in the near future.",
    +              "offset": 1020,
    +              "size": 32,
    +              "reset_value": 33583456,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATE": {
    +                    "description": "version information",
    +                    "offset": 0,
    +                    "size": 28
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "GPIO": {
    +        "description": "General Purpose Input/Output",
    +        "children": {
    +          "registers": {
    +            "BT_SELECT": {
    +              "description": "GPIO bit select register",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BT_SEL": {
    +                    "description": "GPIO bit select register",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "OUT": {
    +              "description": "GPIO output register",
    +              "offset": 4,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATA_ORIG": {
    +                    "description": "GPIO output register for GPIO0-25",
    +                    "offset": 0,
    +                    "size": 26
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_W1TS": {
    +              "description": "GPIO output set register",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUT_W1TS": {
    +                    "description": "GPIO output set register for GPIO0-25",
    +                    "offset": 0,
    +                    "size": 26,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_W1TC": {
    +              "description": "GPIO output clear register",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUT_W1TC": {
    +                    "description": "GPIO output clear register for GPIO0-25",
    +                    "offset": 0,
    +                    "size": 26,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "SDIO_SELECT": {
    +              "description": "GPIO sdio select register",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SDIO_SEL": {
    +                    "description": "GPIO sdio select register",
    +                    "offset": 0,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "ENABLE": {
    +              "description": "GPIO output enable register",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATA": {
    +                    "description": "GPIO output enable register for GPIO0-25",
    +                    "offset": 0,
    +                    "size": 26
    +                  }
    +                }
    +              }
    +            },
    +            "ENABLE_W1TS": {
    +              "description": "GPIO output enable set register",
    +              "offset": 36,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ENABLE_W1TS": {
    +                    "description": "GPIO output enable set register for GPIO0-25",
    +                    "offset": 0,
    +                    "size": 26,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "ENABLE_W1TC": {
    +              "description": "GPIO output enable clear register",
    +              "offset": 40,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ENABLE_W1TC": {
    +                    "description": "GPIO output enable clear register for GPIO0-25",
    +                    "offset": 0,
    +                    "size": 26,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "STRAP": {
    +              "description": "pad strapping register",
    +              "offset": 56,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "STRAPPING": {
    +                    "description": "pad strapping register",
    +                    "offset": 0,
    +                    "size": 16,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN": {
    +              "description": "GPIO input register",
    +              "offset": 60,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATA_NEXT": {
    +                    "description": "GPIO input register for GPIO0-25",
    +                    "offset": 0,
    +                    "size": 26,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "STATUS": {
    +              "description": "GPIO interrupt status register",
    +              "offset": 68,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INTERRUPT": {
    +                    "description": "GPIO interrupt status register for GPIO0-25",
    +                    "offset": 0,
    +                    "size": 26
    +                  }
    +                }
    +              }
    +            },
    +            "STATUS_W1TS": {
    +              "description": "GPIO interrupt status set register",
    +              "offset": 72,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "STATUS_W1TS": {
    +                    "description": "GPIO interrupt status set register for GPIO0-25",
    +                    "offset": 0,
    +                    "size": 26,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "STATUS_W1TC": {
    +              "description": "GPIO interrupt status clear register",
    +              "offset": 76,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "STATUS_W1TC": {
    +                    "description": "GPIO interrupt status clear register for GPIO0-25",
    +                    "offset": 0,
    +                    "size": 26,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "PCPU_INT": {
    +              "description": "GPIO PRO_CPU interrupt status register",
    +              "offset": 92,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PROCPU_INT": {
    +                    "description": "GPIO PRO_CPU interrupt status register for GPIO0-25",
    +                    "offset": 0,
    +                    "size": 26,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "PCPU_NMI_INT": {
    +              "description": "GPIO PRO_CPU(not shielded) interrupt status register",
    +              "offset": 96,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PROCPU_NMI_INT": {
    +                    "description": "GPIO PRO_CPU(not shielded) interrupt status register for GPIO0-25",
    +                    "offset": 0,
    +                    "size": 26,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CPUSDIO_INT": {
    +              "description": "GPIO CPUSDIO interrupt status register",
    +              "offset": 100,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SDIO_INT": {
    +                    "description": "GPIO CPUSDIO interrupt status register for GPIO0-25",
    +                    "offset": 0,
    +                    "size": 26,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "PIN": {
    +              "description": "GPIO pin configuration register",
    +              "offset": 116,
    +              "size": 32,
    +              "count": 26,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PIN_SYNC2_BYPASS": {
    +                    "description": "set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger at posedge.",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "PIN_PAD_DRIVER": {
    +                    "description": "set this bit to select pad driver. 1:open-drain. :normal.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "PIN_SYNC1_BYPASS": {
    +                    "description": "set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger at posedge.",
    +                    "offset": 3,
    +                    "size": 2
    +                  },
    +                  "PIN_INT_TYPE": {
    +                    "description": "set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level. 5:valid at high level",
    +                    "offset": 7,
    +                    "size": 3
    +                  },
    +                  "PIN_WAKEUP_ENABLE": {
    +                    "description": "set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "PIN_CONFIG": {
    +                    "description": "reserved",
    +                    "offset": 11,
    +                    "size": 2
    +                  },
    +                  "PIN_INT_ENA": {
    +                    "description": "set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded) interrupt.",
    +                    "offset": 13,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "STATUS_NEXT": {
    +              "description": "GPIO interrupt source register",
    +              "offset": 332,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "STATUS_INTERRUPT_NEXT": {
    +                    "description": "GPIO interrupt source register for GPIO0-25",
    +                    "offset": 0,
    +                    "size": 26,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "FUNC_IN_SEL_CFG": {
    +              "description": "GPIO input function configuration register",
    +              "offset": 340,
    +              "size": 32,
    +              "count": 128,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_SEL": {
    +                    "description": "set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always high level. s=x3C: set this port always low level.",
    +                    "offset": 0,
    +                    "size": 5
    +                  },
    +                  "IN_INV_SEL": {
    +                    "description": "set this bit to invert input signal. 1:invert. :not invert.",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "SEL": {
    +                    "description": "set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.",
    +                    "offset": 6,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "FUNC_OUT_SEL_CFG": {
    +              "description": "GPIO output function select register",
    +              "offset": 1364,
    +              "size": 32,
    +              "count": 26,
    +              "reset_value": 128,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUT_SEL": {
    +                    "description": "The value of the bits: <=s<=256. Set the value to select output signal. s=-255: output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals GPIO_OUT_REG[n].",
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "INV_SEL": {
    +                    "description": "set this bit to invert output signal.1:invert.:not invert.",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "OEN_SEL": {
    +                    "description": "set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output enable signal.:use peripheral output enable signal.",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "OEN_INV_SEL": {
    +                    "description": "set this bit to invert output enable signal.1:invert.:not invert.",
    +                    "offset": 10,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CLOCK_GATE": {
    +              "description": "GPIO clock gate register",
    +              "offset": 1580,
    +              "size": 32,
    +              "reset_value": 1,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CLK_EN": {
    +                    "description": "set this bit to enable GPIO clock gate",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "REG_DATE": {
    +              "description": "GPIO version register",
    +              "offset": 1788,
    +              "size": 32,
    +              "reset_value": 33579312,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "REG_DATE": {
    +                    "description": "version register",
    +                    "offset": 0,
    +                    "size": 28
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "GPIOSD": {
    +        "description": "Sigma-Delta Modulation",
    +        "children": {
    +          "registers": {
    +            "SIGMADELTA": {
    +              "description": "Duty Cycle Configure Register of SDM%s",
    +              "offset": 0,
    +              "size": 32,
    +              "count": 4,
    +              "reset_value": 65280,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SD0_IN": {
    +                    "description": "This field is used to configure the duty cycle of sigma delta modulation output.",
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "SD0_PRESCALE": {
    +                    "description": "This field is used to set a divider value to divide APB clock.",
    +                    "offset": 8,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "SIGMADELTA_CG": {
    +              "description": "Clock Gating Configure Register",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CLK_EN": {
    +                    "description": "Clock enable bit of configuration registers for sigma delta modulation.",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "SIGMADELTA_MISC": {
    +              "description": "MISC Register",
    +              "offset": 36,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "FUNCTION_CLK_EN": {
    +                    "description": "Clock enable bit of sigma delta modulation.",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "SPI_SWAP": {
    +                    "description": "Reserved.",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "SIGMADELTA_VERSION": {
    +              "description": "Version Control Register",
    +              "offset": 40,
    +              "size": 32,
    +              "reset_value": 33579568,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "GPIO_SD_DATE": {
    +                    "description": "Version control register.",
    +                    "offset": 0,
    +                    "size": 28
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "HMAC": {
    +        "description": "HMAC (Hash-based Message Authentication Code) Accelerator",
    +        "children": {
    +          "registers": {
    +            "SET_START": {
    +              "description": "Process control register 0.",
    +              "offset": 64,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SET_START": {
    +                    "description": "Start hmac operation.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "SET_PARA_PURPOSE": {
    +              "description": "Configure purpose.",
    +              "offset": 68,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PURPOSE_SET": {
    +                    "description": "Set hmac parameter purpose.",
    +                    "offset": 0,
    +                    "size": 4,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "SET_PARA_KEY": {
    +              "description": "Configure key.",
    +              "offset": 72,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "KEY_SET": {
    +                    "description": "Set hmac parameter key.",
    +                    "offset": 0,
    +                    "size": 3,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "SET_PARA_FINISH": {
    +              "description": "Finish initial configuration.",
    +              "offset": 76,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SET_PARA_END": {
    +                    "description": "Finish hmac configuration.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "SET_MESSAGE_ONE": {
    +              "description": "Process control register 1.",
    +              "offset": 80,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SET_TEXT_ONE": {
    +                    "description": "Call SHA to calculate one message block.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "SET_MESSAGE_ING": {
    +              "description": "Process control register 2.",
    +              "offset": 84,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SET_TEXT_ING": {
    +                    "description": "Continue typical hmac.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "SET_MESSAGE_END": {
    +              "description": "Process control register 3.",
    +              "offset": 88,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SET_TEXT_END": {
    +                    "description": "Start hardware padding.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "SET_RESULT_FINISH": {
    +              "description": "Process control register 4.",
    +              "offset": 92,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SET_RESULT_END": {
    +                    "description": "After read result from upstream, then let hmac back to idle.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "SET_INVALIDATE_JTAG": {
    +              "description": "Invalidate register 0.",
    +              "offset": 96,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SET_INVALIDATE_JTAG": {
    +                    "description": "Clear result from hmac downstream JTAG.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "SET_INVALIDATE_DS": {
    +              "description": "Invalidate register 1.",
    +              "offset": 100,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SET_INVALIDATE_DS": {
    +                    "description": "Clear result from hmac downstream DS.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "QUERY_ERROR": {
    +              "description": "Error register.",
    +              "offset": 104,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "QUREY_CHECK": {
    +                    "description": "Hmac configuration state. 0: key are agree with purpose. 1: error",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "QUERY_BUSY": {
    +              "description": "Busy register.",
    +              "offset": 108,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUSY_STATE": {
    +                    "description": "Hmac state. 1'b0: idle. 1'b1: busy",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "WR_MESSAGE_MEM": {
    +              "description": "Message block memory.",
    +              "offset": 128,
    +              "size": 8,
    +              "count": 64,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295
    +            },
    +            "RD_RESULT_MEM": {
    +              "description": "Result from upstream.",
    +              "offset": 192,
    +              "size": 8,
    +              "count": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295
    +            },
    +            "SET_MESSAGE_PAD": {
    +              "description": "Process control register 5.",
    +              "offset": 240,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SET_TEXT_PAD": {
    +                    "description": "Start software padding.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "ONE_BLOCK": {
    +              "description": "Process control register 6.",
    +              "offset": 244,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SET_ONE_BLOCK": {
    +                    "description": "Don't have to do padding.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "SOFT_JTAG_CTRL": {
    +              "description": "Jtag register 0.",
    +              "offset": 248,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SOFT_JTAG_CTRL": {
    +                    "description": "Turn on JTAG verification.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "WR_JTAG": {
    +              "description": "Jtag register 1.",
    +              "offset": 252,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WR_JTAG": {
    +                    "description": "32-bit of key to be compared.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "I2C0": {
    +        "description": "I2C (Inter-Integrated Circuit) Controller",
    +        "children": {
    +          "registers": {
    +            "SCL_LOW_PERIOD": {
    +              "description": "I2C_SCL_LOW_PERIOD_REG",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SCL_LOW_PERIOD": {
    +                    "description": "reg_scl_low_period",
    +                    "offset": 0,
    +                    "size": 9
    +                  }
    +                }
    +              }
    +            },
    +            "CTR": {
    +              "description": "I2C_CTR_REG",
    +              "offset": 4,
    +              "size": 32,
    +              "reset_value": 523,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SDA_FORCE_OUT": {
    +                    "description": "reg_sda_force_out",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "SCL_FORCE_OUT": {
    +                    "description": "reg_scl_force_out",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "SAMPLE_SCL_LEVEL": {
    +                    "description": "reg_sample_scl_level",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "RX_FULL_ACK_LEVEL": {
    +                    "description": "reg_rx_full_ack_level",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "MS_MODE": {
    +                    "description": "reg_ms_mode",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "TRANS_START": {
    +                    "description": "reg_trans_start",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "TX_LSB_FIRST": {
    +                    "description": "reg_tx_lsb_first",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "RX_LSB_FIRST": {
    +                    "description": "reg_rx_lsb_first",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "CLK_EN": {
    +                    "description": "reg_clk_en",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "ARBITRATION_EN": {
    +                    "description": "reg_arbitration_en",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "FSM_RST": {
    +                    "description": "reg_fsm_rst",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "CONF_UPGATE": {
    +                    "description": "reg_conf_upgate",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SLV_TX_AUTO_START_EN": {
    +                    "description": "reg_slv_tx_auto_start_en",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "ADDR_10BIT_RW_CHECK_EN": {
    +                    "description": "reg_addr_10bit_rw_check_en",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "ADDR_BROADCASTING_EN": {
    +                    "description": "reg_addr_broadcasting_en",
    +                    "offset": 14,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "SR": {
    +              "description": "I2C_SR_REG",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 49152,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RESP_REC": {
    +                    "description": "reg_resp_rec",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SLAVE_RW": {
    +                    "description": "reg_slave_rw",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "ARB_LOST": {
    +                    "description": "reg_arb_lost",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "BUS_BUSY": {
    +                    "description": "reg_bus_busy",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SLAVE_ADDRESSED": {
    +                    "description": "reg_slave_addressed",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RXFIFO_CNT": {
    +                    "description": "reg_rxfifo_cnt",
    +                    "offset": 8,
    +                    "size": 6,
    +                    "access": "read-only"
    +                  },
    +                  "STRETCH_CAUSE": {
    +                    "description": "reg_stretch_cause",
    +                    "offset": 14,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "TXFIFO_CNT": {
    +                    "description": "reg_txfifo_cnt",
    +                    "offset": 18,
    +                    "size": 6,
    +                    "access": "read-only"
    +                  },
    +                  "SCL_MAIN_STATE_LAST": {
    +                    "description": "reg_scl_main_state_last",
    +                    "offset": 24,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "SCL_STATE_LAST": {
    +                    "description": "reg_scl_state_last",
    +                    "offset": 28,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "TO": {
    +              "description": "I2C_TO_REG",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 16,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIME_OUT_VALUE": {
    +                    "description": "reg_time_out_value",
    +                    "offset": 0,
    +                    "size": 5
    +                  },
    +                  "TIME_OUT_EN": {
    +                    "description": "reg_time_out_en",
    +                    "offset": 5,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "SLAVE_ADDR": {
    +              "description": "I2C_SLAVE_ADDR_REG",
    +              "offset": 16,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SLAVE_ADDR": {
    +                    "description": "reg_slave_addr",
    +                    "offset": 0,
    +                    "size": 15
    +                  },
    +                  "ADDR_10BIT_EN": {
    +                    "description": "reg_addr_10bit_en",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "FIFO_ST": {
    +              "description": "I2C_FIFO_ST_REG",
    +              "offset": 20,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RXFIFO_RADDR": {
    +                    "description": "reg_rxfifo_raddr",
    +                    "offset": 0,
    +                    "size": 5,
    +                    "access": "read-only"
    +                  },
    +                  "RXFIFO_WADDR": {
    +                    "description": "reg_rxfifo_waddr",
    +                    "offset": 5,
    +                    "size": 5,
    +                    "access": "read-only"
    +                  },
    +                  "TXFIFO_RADDR": {
    +                    "description": "reg_txfifo_raddr",
    +                    "offset": 10,
    +                    "size": 5,
    +                    "access": "read-only"
    +                  },
    +                  "TXFIFO_WADDR": {
    +                    "description": "reg_txfifo_waddr",
    +                    "offset": 15,
    +                    "size": 5,
    +                    "access": "read-only"
    +                  },
    +                  "SLAVE_RW_POINT": {
    +                    "description": "reg_slave_rw_point",
    +                    "offset": 22,
    +                    "size": 8,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "FIFO_CONF": {
    +              "description": "I2C_FIFO_CONF_REG",
    +              "offset": 24,
    +              "size": 32,
    +              "reset_value": 16523,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RXFIFO_WM_THRHD": {
    +                    "description": "reg_rxfifo_wm_thrhd",
    +                    "offset": 0,
    +                    "size": 5
    +                  },
    +                  "TXFIFO_WM_THRHD": {
    +                    "description": "reg_txfifo_wm_thrhd",
    +                    "offset": 5,
    +                    "size": 5
    +                  },
    +                  "NONFIFO_EN": {
    +                    "description": "reg_nonfifo_en",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "FIFO_ADDR_CFG_EN": {
    +                    "description": "reg_fifo_addr_cfg_en",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "RX_FIFO_RST": {
    +                    "description": "reg_rx_fifo_rst",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "TX_FIFO_RST": {
    +                    "description": "reg_tx_fifo_rst",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "FIFO_PRT_EN": {
    +                    "description": "reg_fifo_prt_en",
    +                    "offset": 14,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DATA": {
    +              "description": "I2C_FIFO_DATA_REG",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "FIFO_RDATA": {
    +                    "description": "reg_fifo_rdata",
    +                    "offset": 0,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "INT_RAW": {
    +              "description": "I2C_INT_RAW_REG",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 2,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RXFIFO_WM_INT_RAW": {
    +                    "description": "reg_rxfifo_wm_int_raw",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TXFIFO_WM_INT_RAW": {
    +                    "description": "reg_txfifo_wm_int_raw",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RXFIFO_OVF_INT_RAW": {
    +                    "description": "reg_rxfifo_ovf_int_raw",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "END_DETECT_INT_RAW": {
    +                    "description": "reg_end_detect_int_raw",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "BYTE_TRANS_DONE_INT_RAW": {
    +                    "description": "reg_byte_trans_done_int_raw",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "ARBITRATION_LOST_INT_RAW": {
    +                    "description": "reg_arbitration_lost_int_raw",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "MST_TXFIFO_UDF_INT_RAW": {
    +                    "description": "reg_mst_txfifo_udf_int_raw",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TRANS_COMPLETE_INT_RAW": {
    +                    "description": "reg_trans_complete_int_raw",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TIME_OUT_INT_RAW": {
    +                    "description": "reg_time_out_int_raw",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TRANS_START_INT_RAW": {
    +                    "description": "reg_trans_start_int_raw",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "NACK_INT_RAW": {
    +                    "description": "reg_nack_int_raw",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TXFIFO_OVF_INT_RAW": {
    +                    "description": "reg_txfifo_ovf_int_raw",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RXFIFO_UDF_INT_RAW": {
    +                    "description": "reg_rxfifo_udf_int_raw",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SCL_ST_TO_INT_RAW": {
    +                    "description": "reg_scl_st_to_int_raw",
    +                    "offset": 13,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SCL_MAIN_ST_TO_INT_RAW": {
    +                    "description": "reg_scl_main_st_to_int_raw",
    +                    "offset": 14,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DET_START_INT_RAW": {
    +                    "description": "reg_det_start_int_raw",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SLAVE_STRETCH_INT_RAW": {
    +                    "description": "reg_slave_stretch_int_raw",
    +                    "offset": 16,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "GENERAL_CALL_INT_RAW": {
    +                    "description": "reg_general_call_int_raw",
    +                    "offset": 17,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_CLR": {
    +              "description": "I2C_INT_CLR_REG",
    +              "offset": 36,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RXFIFO_WM_INT_CLR": {
    +                    "description": "reg_rxfifo_wm_int_clr",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "TXFIFO_WM_INT_CLR": {
    +                    "description": "reg_txfifo_wm_int_clr",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RXFIFO_OVF_INT_CLR": {
    +                    "description": "reg_rxfifo_ovf_int_clr",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "END_DETECT_INT_CLR": {
    +                    "description": "reg_end_detect_int_clr",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "BYTE_TRANS_DONE_INT_CLR": {
    +                    "description": "reg_byte_trans_done_int_clr",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "ARBITRATION_LOST_INT_CLR": {
    +                    "description": "reg_arbitration_lost_int_clr",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "MST_TXFIFO_UDF_INT_CLR": {
    +                    "description": "reg_mst_txfifo_udf_int_clr",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "TRANS_COMPLETE_INT_CLR": {
    +                    "description": "reg_trans_complete_int_clr",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "TIME_OUT_INT_CLR": {
    +                    "description": "reg_time_out_int_clr",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "TRANS_START_INT_CLR": {
    +                    "description": "reg_trans_start_int_clr",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "NACK_INT_CLR": {
    +                    "description": "reg_nack_int_clr",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "TXFIFO_OVF_INT_CLR": {
    +                    "description": "reg_txfifo_ovf_int_clr",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RXFIFO_UDF_INT_CLR": {
    +                    "description": "reg_rxfifo_udf_int_clr",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SCL_ST_TO_INT_CLR": {
    +                    "description": "reg_scl_st_to_int_clr",
    +                    "offset": 13,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SCL_MAIN_ST_TO_INT_CLR": {
    +                    "description": "reg_scl_main_st_to_int_clr",
    +                    "offset": 14,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "DET_START_INT_CLR": {
    +                    "description": "reg_det_start_int_clr",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SLAVE_STRETCH_INT_CLR": {
    +                    "description": "reg_slave_stretch_int_clr",
    +                    "offset": 16,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "GENERAL_CALL_INT_CLR": {
    +                    "description": "reg_general_call_int_clr",
    +                    "offset": 17,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ENA": {
    +              "description": "I2C_INT_ENA_REG",
    +              "offset": 40,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RXFIFO_WM_INT_ENA": {
    +                    "description": "reg_rxfifo_wm_int_ena",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "TXFIFO_WM_INT_ENA": {
    +                    "description": "reg_txfifo_wm_int_ena",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "RXFIFO_OVF_INT_ENA": {
    +                    "description": "reg_rxfifo_ovf_int_ena",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "END_DETECT_INT_ENA": {
    +                    "description": "reg_end_detect_int_ena",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "BYTE_TRANS_DONE_INT_ENA": {
    +                    "description": "reg_byte_trans_done_int_ena",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "ARBITRATION_LOST_INT_ENA": {
    +                    "description": "reg_arbitration_lost_int_ena",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "MST_TXFIFO_UDF_INT_ENA": {
    +                    "description": "reg_mst_txfifo_udf_int_ena",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "TRANS_COMPLETE_INT_ENA": {
    +                    "description": "reg_trans_complete_int_ena",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "TIME_OUT_INT_ENA": {
    +                    "description": "reg_time_out_int_ena",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "TRANS_START_INT_ENA": {
    +                    "description": "reg_trans_start_int_ena",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "NACK_INT_ENA": {
    +                    "description": "reg_nack_int_ena",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "TXFIFO_OVF_INT_ENA": {
    +                    "description": "reg_txfifo_ovf_int_ena",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "RXFIFO_UDF_INT_ENA": {
    +                    "description": "reg_rxfifo_udf_int_ena",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "SCL_ST_TO_INT_ENA": {
    +                    "description": "reg_scl_st_to_int_ena",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "SCL_MAIN_ST_TO_INT_ENA": {
    +                    "description": "reg_scl_main_st_to_int_ena",
    +                    "offset": 14,
    +                    "size": 1
    +                  },
    +                  "DET_START_INT_ENA": {
    +                    "description": "reg_det_start_int_ena",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "SLAVE_STRETCH_INT_ENA": {
    +                    "description": "reg_slave_stretch_int_ena",
    +                    "offset": 16,
    +                    "size": 1
    +                  },
    +                  "GENERAL_CALL_INT_ENA": {
    +                    "description": "reg_general_call_int_ena",
    +                    "offset": 17,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INT_STATUS": {
    +              "description": "I2C_INT_STATUS_REG",
    +              "offset": 44,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RXFIFO_WM_INT_ST": {
    +                    "description": "reg_rxfifo_wm_int_st",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TXFIFO_WM_INT_ST": {
    +                    "description": "reg_txfifo_wm_int_st",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RXFIFO_OVF_INT_ST": {
    +                    "description": "reg_rxfifo_ovf_int_st",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "END_DETECT_INT_ST": {
    +                    "description": "reg_end_detect_int_st",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "BYTE_TRANS_DONE_INT_ST": {
    +                    "description": "reg_byte_trans_done_int_st",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "ARBITRATION_LOST_INT_ST": {
    +                    "description": "reg_arbitration_lost_int_st",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "MST_TXFIFO_UDF_INT_ST": {
    +                    "description": "reg_mst_txfifo_udf_int_st",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TRANS_COMPLETE_INT_ST": {
    +                    "description": "reg_trans_complete_int_st",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TIME_OUT_INT_ST": {
    +                    "description": "reg_time_out_int_st",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TRANS_START_INT_ST": {
    +                    "description": "reg_trans_start_int_st",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "NACK_INT_ST": {
    +                    "description": "reg_nack_int_st",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TXFIFO_OVF_INT_ST": {
    +                    "description": "reg_txfifo_ovf_int_st",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RXFIFO_UDF_INT_ST": {
    +                    "description": "reg_rxfifo_udf_int_st",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SCL_ST_TO_INT_ST": {
    +                    "description": "reg_scl_st_to_int_st",
    +                    "offset": 13,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SCL_MAIN_ST_TO_INT_ST": {
    +                    "description": "reg_scl_main_st_to_int_st",
    +                    "offset": 14,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DET_START_INT_ST": {
    +                    "description": "reg_det_start_int_st",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SLAVE_STRETCH_INT_ST": {
    +                    "description": "reg_slave_stretch_int_st",
    +                    "offset": 16,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "GENERAL_CALL_INT_ST": {
    +                    "description": "reg_general_call_int_st",
    +                    "offset": 17,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "SDA_HOLD": {
    +              "description": "I2C_SDA_HOLD_REG",
    +              "offset": 48,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIME": {
    +                    "description": "reg_sda_hold_time",
    +                    "offset": 0,
    +                    "size": 9
    +                  }
    +                }
    +              }
    +            },
    +            "SDA_SAMPLE": {
    +              "description": "I2C_SDA_SAMPLE_REG",
    +              "offset": 52,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIME": {
    +                    "description": "reg_sda_sample_time",
    +                    "offset": 0,
    +                    "size": 9
    +                  }
    +                }
    +              }
    +            },
    +            "SCL_HIGH_PERIOD": {
    +              "description": "I2C_SCL_HIGH_PERIOD_REG",
    +              "offset": 56,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SCL_HIGH_PERIOD": {
    +                    "description": "reg_scl_high_period",
    +                    "offset": 0,
    +                    "size": 9
    +                  },
    +                  "SCL_WAIT_HIGH_PERIOD": {
    +                    "description": "reg_scl_wait_high_period",
    +                    "offset": 9,
    +                    "size": 7
    +                  }
    +                }
    +              }
    +            },
    +            "SCL_START_HOLD": {
    +              "description": "I2C_SCL_START_HOLD_REG",
    +              "offset": 64,
    +              "size": 32,
    +              "reset_value": 8,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIME": {
    +                    "description": "reg_scl_start_hold_time",
    +                    "offset": 0,
    +                    "size": 9
    +                  }
    +                }
    +              }
    +            },
    +            "SCL_RSTART_SETUP": {
    +              "description": "I2C_SCL_RSTART_SETUP_REG",
    +              "offset": 68,
    +              "size": 32,
    +              "reset_value": 8,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIME": {
    +                    "description": "reg_scl_rstart_setup_time",
    +                    "offset": 0,
    +                    "size": 9
    +                  }
    +                }
    +              }
    +            },
    +            "SCL_STOP_HOLD": {
    +              "description": "I2C_SCL_STOP_HOLD_REG",
    +              "offset": 72,
    +              "size": 32,
    +              "reset_value": 8,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIME": {
    +                    "description": "reg_scl_stop_hold_time",
    +                    "offset": 0,
    +                    "size": 9
    +                  }
    +                }
    +              }
    +            },
    +            "SCL_STOP_SETUP": {
    +              "description": "I2C_SCL_STOP_SETUP_REG",
    +              "offset": 76,
    +              "size": 32,
    +              "reset_value": 8,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIME": {
    +                    "description": "reg_scl_stop_setup_time",
    +                    "offset": 0,
    +                    "size": 9
    +                  }
    +                }
    +              }
    +            },
    +            "FILTER_CFG": {
    +              "description": "I2C_FILTER_CFG_REG",
    +              "offset": 80,
    +              "size": 32,
    +              "reset_value": 768,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SCL_FILTER_THRES": {
    +                    "description": "reg_scl_filter_thres",
    +                    "offset": 0,
    +                    "size": 4
    +                  },
    +                  "SDA_FILTER_THRES": {
    +                    "description": "reg_sda_filter_thres",
    +                    "offset": 4,
    +                    "size": 4
    +                  },
    +                  "SCL_FILTER_EN": {
    +                    "description": "reg_scl_filter_en",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "SDA_FILTER_EN": {
    +                    "description": "reg_sda_filter_en",
    +                    "offset": 9,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CLK_CONF": {
    +              "description": "I2C_CLK_CONF_REG",
    +              "offset": 84,
    +              "size": 32,
    +              "reset_value": 2097152,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SCLK_DIV_NUM": {
    +                    "description": "reg_sclk_div_num",
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "SCLK_DIV_A": {
    +                    "description": "reg_sclk_div_a",
    +                    "offset": 8,
    +                    "size": 6
    +                  },
    +                  "SCLK_DIV_B": {
    +                    "description": "reg_sclk_div_b",
    +                    "offset": 14,
    +                    "size": 6
    +                  },
    +                  "SCLK_SEL": {
    +                    "description": "reg_sclk_sel",
    +                    "offset": 20,
    +                    "size": 1
    +                  },
    +                  "SCLK_ACTIVE": {
    +                    "description": "reg_sclk_active",
    +                    "offset": 21,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "COMD": {
    +              "description": "I2C_COMD%s_REG",
    +              "offset": 88,
    +              "size": 32,
    +              "count": 8,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "COMMAND": {
    +                    "description": "reg_command",
    +                    "offset": 0,
    +                    "size": 14
    +                  },
    +                  "COMMAND_DONE": {
    +                    "description": "reg_command_done",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "SCL_ST_TIME_OUT": {
    +              "description": "I2C_SCL_ST_TIME_OUT_REG",
    +              "offset": 120,
    +              "size": 32,
    +              "reset_value": 16,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SCL_ST_TO_I2C": {
    +                    "description": "reg_scl_st_to_regno more than 23",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "SCL_MAIN_ST_TIME_OUT": {
    +              "description": "I2C_SCL_MAIN_ST_TIME_OUT_REG",
    +              "offset": 124,
    +              "size": 32,
    +              "reset_value": 16,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SCL_MAIN_ST_TO_I2C": {
    +                    "description": "reg_scl_main_st_to_regno more than 23",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "SCL_SP_CONF": {
    +              "description": "I2C_SCL_SP_CONF_REG",
    +              "offset": 128,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SCL_RST_SLV_EN": {
    +                    "description": "reg_scl_rst_slv_en",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "SCL_RST_SLV_NUM": {
    +                    "description": "reg_scl_rst_slv_num",
    +                    "offset": 1,
    +                    "size": 5
    +                  },
    +                  "SCL_PD_EN": {
    +                    "description": "reg_scl_pd_en",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "SDA_PD_EN": {
    +                    "description": "reg_sda_pd_en",
    +                    "offset": 7,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "SCL_STRETCH_CONF": {
    +              "description": "I2C_SCL_STRETCH_CONF_REG",
    +              "offset": 132,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "STRETCH_PROTECT_NUM": {
    +                    "description": "reg_stretch_protect_num",
    +                    "offset": 0,
    +                    "size": 10
    +                  },
    +                  "SLAVE_SCL_STRETCH_EN": {
    +                    "description": "reg_slave_scl_stretch_en",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "SLAVE_SCL_STRETCH_CLR": {
    +                    "description": "reg_slave_scl_stretch_clr",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SLAVE_BYTE_ACK_CTL_EN": {
    +                    "description": "reg_slave_byte_ack_ctl_en",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "SLAVE_BYTE_ACK_LVL": {
    +                    "description": "reg_slave_byte_ack_lvl",
    +                    "offset": 13,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DATE": {
    +              "description": "I2C_DATE_REG",
    +              "offset": 248,
    +              "size": 32,
    +              "reset_value": 537330177,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATE": {
    +                    "description": "reg_date",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "TXFIFO_START_ADDR": {
    +              "description": "I2C_TXFIFO_START_ADDR_REG",
    +              "offset": 256,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TXFIFO_START_ADDR": {
    +                    "description": "reg_txfifo_start_addr.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RXFIFO_START_ADDR": {
    +              "description": "I2C_RXFIFO_START_ADDR_REG",
    +              "offset": 384,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RXFIFO_START_ADDR": {
    +                    "description": "reg_rxfifo_start_addr.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "I2S": {
    +        "description": "I2S (Inter-IC Sound) Controller",
    +        "children": {
    +          "registers": {
    +            "INT_RAW": {
    +              "description": "I2S interrupt raw register, valid in level.",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_DONE_INT_RAW": {
    +                    "description": "The raw interrupt status bit  for the i2s_rx_done_int interrupt",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TX_DONE_INT_RAW": {
    +                    "description": "The raw interrupt status bit  for the i2s_tx_done_int interrupt",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RX_HUNG_INT_RAW": {
    +                    "description": "The raw interrupt status bit  for the i2s_rx_hung_int interrupt",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TX_HUNG_INT_RAW": {
    +                    "description": "The raw interrupt status bit  for the i2s_tx_hung_int interrupt",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ST": {
    +              "description": "I2S interrupt status register.",
    +              "offset": 16,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_DONE_INT_ST": {
    +                    "description": "The masked interrupt status bit  for the i2s_rx_done_int interrupt",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TX_DONE_INT_ST": {
    +                    "description": "The masked interrupt status bit  for the i2s_tx_done_int interrupt",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RX_HUNG_INT_ST": {
    +                    "description": "The masked interrupt status bit  for the i2s_rx_hung_int interrupt",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TX_HUNG_INT_ST": {
    +                    "description": "The masked interrupt status bit  for the i2s_tx_hung_int interrupt",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ENA": {
    +              "description": "I2S interrupt enable register.",
    +              "offset": 20,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_DONE_INT_ENA": {
    +                    "description": "The interrupt enable bit  for the i2s_rx_done_int interrupt",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "TX_DONE_INT_ENA": {
    +                    "description": "The interrupt enable bit  for the i2s_tx_done_int interrupt",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "RX_HUNG_INT_ENA": {
    +                    "description": "The interrupt enable bit  for the i2s_rx_hung_int interrupt",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "TX_HUNG_INT_ENA": {
    +                    "description": "The interrupt enable bit  for the i2s_tx_hung_int interrupt",
    +                    "offset": 3,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INT_CLR": {
    +              "description": "I2S interrupt clear register.",
    +              "offset": 24,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_DONE_INT_CLR": {
    +                    "description": "Set this bit to clear the i2s_rx_done_int interrupt",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "TX_DONE_INT_CLR": {
    +                    "description": "Set this bit to clear the i2s_tx_done_int interrupt",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RX_HUNG_INT_CLR": {
    +                    "description": "Set this bit to clear the i2s_rx_hung_int interrupt",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "TX_HUNG_INT_CLR": {
    +                    "description": "Set this bit to clear the i2s_tx_hung_int interrupt",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RX_CONF": {
    +              "description": "I2S RX configure register",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 38400,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_RESET": {
    +                    "description": "Set this bit to reset receiver",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RX_FIFO_RESET": {
    +                    "description": "Set this bit to reset Rx AFIFO",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RX_START": {
    +                    "description": "Set this bit to start receiving data",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "RX_SLAVE_MOD": {
    +                    "description": "Set this bit to enable slave receiver mode",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "RX_MONO": {
    +                    "description": "Set this bit to enable receiver  in mono mode",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "RX_BIG_ENDIAN": {
    +                    "description": "I2S Rx byte endian, 1: low addr value to high addr. 0: low addr with low addr value.",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "RX_UPDATE": {
    +                    "description": "Set 1 to update I2S RX registers from APB clock domain to I2S RX clock domain. This bit will be cleared by hardware after update register done.",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "RX_MONO_FST_VLD": {
    +                    "description": "1: The first channel data value is valid in I2S RX mono mode.   0: The second channel data value is valid in I2S RX mono mode.",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "RX_PCM_CONF": {
    +                    "description": "I2S RX compress/decompress configuration bit. & 0 (atol): A-Law decompress, 1 (ltoa) : A-Law compress, 2 (utol) : u-Law decompress, 3 (ltou) : u-Law compress. &",
    +                    "offset": 10,
    +                    "size": 2
    +                  },
    +                  "RX_PCM_BYPASS": {
    +                    "description": "Set this bit to bypass Compress/Decompress module for received data.",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "RX_STOP_MODE": {
    +                    "description": "0  : I2S Rx only stop when reg_rx_start is cleared.   1: Stop when reg_rx_start is 0 or in_suc_eof is 1.   2:  Stop I2S RX when reg_rx_start is 0 or RX FIFO is full.",
    +                    "offset": 13,
    +                    "size": 2
    +                  },
    +                  "RX_LEFT_ALIGN": {
    +                    "description": "1: I2S RX left alignment mode. 0: I2S RX right alignment mode.",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "RX_24_FILL_EN": {
    +                    "description": "1: store 24 channel bits to 32 bits. 0:store 24 channel bits to 24 bits.",
    +                    "offset": 16,
    +                    "size": 1
    +                  },
    +                  "RX_WS_IDLE_POL": {
    +                    "description": "0: WS should be 0 when receiving left channel data, and WS is 1in right channel.  1: WS should be 1 when receiving left channel data, and WS is 0in right channel.",
    +                    "offset": 17,
    +                    "size": 1
    +                  },
    +                  "RX_BIT_ORDER": {
    +                    "description": "I2S Rx bit endian. 1:small endian, the LSB is received first. 0:big endian, the MSB is received first.",
    +                    "offset": 18,
    +                    "size": 1
    +                  },
    +                  "RX_TDM_EN": {
    +                    "description": "1: Enable I2S TDM Rx mode . 0: Disable.",
    +                    "offset": 19,
    +                    "size": 1
    +                  },
    +                  "RX_PDM_EN": {
    +                    "description": "1: Enable I2S PDM Rx mode . 0: Disable.",
    +                    "offset": 20,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "TX_CONF": {
    +              "description": "I2S TX configure register",
    +              "offset": 36,
    +              "size": 32,
    +              "reset_value": 45568,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_RESET": {
    +                    "description": "Set this bit to reset transmitter",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "TX_FIFO_RESET": {
    +                    "description": "Set this bit to reset Tx AFIFO",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "TX_START": {
    +                    "description": "Set this bit to start transmitting data",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "TX_SLAVE_MOD": {
    +                    "description": "Set this bit to enable slave transmitter mode",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "TX_MONO": {
    +                    "description": "Set this bit to enable transmitter in mono mode",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "TX_CHAN_EQUAL": {
    +                    "description": "1: The value of Left channel data is equal to the value of right channel data in I2S TX mono mode or TDM channel select mode. 0: The invalid channel data is reg_i2s_single_data in I2S TX mono mode or TDM channel select mode.",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "TX_BIG_ENDIAN": {
    +                    "description": "I2S Tx byte endian, 1: low addr value to high addr.  0: low addr with low addr value.",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "TX_UPDATE": {
    +                    "description": "Set 1 to update I2S TX registers from APB clock domain to I2S TX clock domain. This bit will be cleared by hardware after update register done.",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "TX_MONO_FST_VLD": {
    +                    "description": "1: The first channel data value is valid in I2S TX mono mode.   0: The second channel data value is valid in I2S TX mono mode.",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "TX_PCM_CONF": {
    +                    "description": "I2S TX compress/decompress configuration bit. & 0 (atol): A-Law decompress, 1 (ltoa) : A-Law compress, 2 (utol) : u-Law decompress, 3 (ltou) : u-Law compress. &",
    +                    "offset": 10,
    +                    "size": 2
    +                  },
    +                  "TX_PCM_BYPASS": {
    +                    "description": "Set this bit to bypass  Compress/Decompress module for transmitted data.",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "TX_STOP_EN": {
    +                    "description": "Set this bit to stop disable output BCK signal and WS signal when tx FIFO is emtpy",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "TX_LEFT_ALIGN": {
    +                    "description": "1: I2S TX left alignment mode. 0: I2S TX right alignment mode.",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "TX_24_FILL_EN": {
    +                    "description": "1: Sent 32 bits in 24 channel bits mode. 0: Sent 24 bits in 24 channel bits mode",
    +                    "offset": 16,
    +                    "size": 1
    +                  },
    +                  "TX_WS_IDLE_POL": {
    +                    "description": "0: WS should be 0 when sending left channel data, and WS is 1in right channel.  1: WS should be 1 when sending left channel data, and WS is 0in right channel.",
    +                    "offset": 17,
    +                    "size": 1
    +                  },
    +                  "TX_BIT_ORDER": {
    +                    "description": "I2S Tx bit endian. 1:small endian, the LSB is sent first. 0:big endian, the MSB is sent first.",
    +                    "offset": 18,
    +                    "size": 1
    +                  },
    +                  "TX_TDM_EN": {
    +                    "description": "1: Enable I2S TDM Tx mode . 0: Disable.",
    +                    "offset": 19,
    +                    "size": 1
    +                  },
    +                  "TX_PDM_EN": {
    +                    "description": "1: Enable I2S PDM Tx mode . 0: Disable.",
    +                    "offset": 20,
    +                    "size": 1
    +                  },
    +                  "TX_CHAN_MOD": {
    +                    "description": "I2S transmitter channel mode configuration bits.",
    +                    "offset": 24,
    +                    "size": 3
    +                  },
    +                  "SIG_LOOPBACK": {
    +                    "description": "Enable signal loop back mode with transmitter module and receiver module sharing the same WS and BCK signals.",
    +                    "offset": 27,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "RX_CONF1": {
    +              "description": "I2S RX configure register 1",
    +              "offset": 40,
    +              "size": 32,
    +              "reset_value": 792584960,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_TDM_WS_WIDTH": {
    +                    "description": "The width of rx_ws_out in TDM mode is (I2S_RX_TDM_WS_WIDTH[6:0] +1) * T_bck",
    +                    "offset": 0,
    +                    "size": 7
    +                  },
    +                  "RX_BCK_DIV_NUM": {
    +                    "description": "Bit clock configuration bits in receiver mode.",
    +                    "offset": 7,
    +                    "size": 6
    +                  },
    +                  "RX_BITS_MOD": {
    +                    "description": "Set the bits to configure the valid data bit length of I2S receiver channel. 7: all the valid channel data is in 8-bit-mode. 15: all the valid channel data is in 16-bit-mode. 23: all the valid channel data is in 24-bit-mode. 31:all the valid channel data is in 32-bit-mode.",
    +                    "offset": 13,
    +                    "size": 5
    +                  },
    +                  "RX_HALF_SAMPLE_BITS": {
    +                    "description": "I2S Rx half sample bits -1.",
    +                    "offset": 18,
    +                    "size": 6
    +                  },
    +                  "RX_TDM_CHAN_BITS": {
    +                    "description": "The Rx bit number for each channel minus 1in TDM mode.",
    +                    "offset": 24,
    +                    "size": 5
    +                  },
    +                  "RX_MSB_SHIFT": {
    +                    "description": "Set this bit to enable receiver in Phillips standard mode",
    +                    "offset": 29,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "TX_CONF1": {
    +              "description": "I2S TX configure register 1",
    +              "offset": 44,
    +              "size": 32,
    +              "reset_value": 1866326784,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_TDM_WS_WIDTH": {
    +                    "description": "The width of tx_ws_out in TDM mode is (I2S_TX_TDM_WS_WIDTH[6:0] +1) * T_bck",
    +                    "offset": 0,
    +                    "size": 7
    +                  },
    +                  "TX_BCK_DIV_NUM": {
    +                    "description": "Bit clock configuration bits in transmitter mode.",
    +                    "offset": 7,
    +                    "size": 6
    +                  },
    +                  "TX_BITS_MOD": {
    +                    "description": "Set the bits to configure the valid data bit length of I2S transmitter channel. 7: all the valid channel data is in 8-bit-mode. 15: all the valid channel data is in 16-bit-mode. 23: all the valid channel data is in 24-bit-mode. 31:all the valid channel data is in 32-bit-mode.",
    +                    "offset": 13,
    +                    "size": 5
    +                  },
    +                  "TX_HALF_SAMPLE_BITS": {
    +                    "description": "I2S Tx half sample bits -1.",
    +                    "offset": 18,
    +                    "size": 6
    +                  },
    +                  "TX_TDM_CHAN_BITS": {
    +                    "description": "The Tx bit number for each channel minus 1in TDM mode.",
    +                    "offset": 24,
    +                    "size": 5
    +                  },
    +                  "TX_MSB_SHIFT": {
    +                    "description": "Set this bit to enable transmitter in Phillips standard mode",
    +                    "offset": 29,
    +                    "size": 1
    +                  },
    +                  "TX_BCK_NO_DLY": {
    +                    "description": "1: BCK is not delayed to generate pos/neg edge in master mode. 0: BCK is delayed to generate pos/neg edge in master mode.",
    +                    "offset": 30,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "RX_CLKM_CONF": {
    +              "description": "I2S RX clock configure register",
    +              "offset": 48,
    +              "size": 32,
    +              "reset_value": 2,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_CLKM_DIV_NUM": {
    +                    "description": "Integral I2S clock divider value",
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "RX_CLK_ACTIVE": {
    +                    "description": "I2S Rx module clock enable signal.",
    +                    "offset": 26,
    +                    "size": 1
    +                  },
    +                  "RX_CLK_SEL": {
    +                    "description": "Select I2S Rx module source clock. 0: no clock. 1: APLL. 2: CLK160. 3: I2S_MCLK_in.",
    +                    "offset": 27,
    +                    "size": 2
    +                  },
    +                  "MCLK_SEL": {
    +                    "description": "0: UseI2S Tx module clock as I2S_MCLK_OUT.  1: UseI2S Rx module clock as I2S_MCLK_OUT.",
    +                    "offset": 29,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "TX_CLKM_CONF": {
    +              "description": "I2S TX clock configure register",
    +              "offset": 52,
    +              "size": 32,
    +              "reset_value": 2,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_CLKM_DIV_NUM": {
    +                    "description": "Integral I2S TX clock divider value. f_I2S_CLK = f_I2S_CLK_S/(N+b/a). There will be (a-b) * n-div and b * (n+1)-div.  So the average combination will be:  for b <= a/2, z * [x * n-div + (n+1)-div] + y * n-div. For b > a/2, z * [n-div + x * (n+1)-div] + y * (n+1)-div.",
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "TX_CLK_ACTIVE": {
    +                    "description": "I2S Tx module clock enable signal.",
    +                    "offset": 26,
    +                    "size": 1
    +                  },
    +                  "TX_CLK_SEL": {
    +                    "description": "Select I2S Tx module source clock. 0: XTAL clock. 1: APLL. 2: CLK160. 3: I2S_MCLK_in.",
    +                    "offset": 27,
    +                    "size": 2
    +                  },
    +                  "CLK_EN": {
    +                    "description": "Set this bit to enable clk gate",
    +                    "offset": 29,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "RX_CLKM_DIV_CONF": {
    +              "description": "I2S RX module clock divider configure register",
    +              "offset": 56,
    +              "size": 32,
    +              "reset_value": 512,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_CLKM_DIV_Z": {
    +                    "description": "For b <= a/2, the value of I2S_RX_CLKM_DIV_Z is b. For b > a/2, the value of I2S_RX_CLKM_DIV_Z is (a-b).",
    +                    "offset": 0,
    +                    "size": 9
    +                  },
    +                  "RX_CLKM_DIV_Y": {
    +                    "description": "For b <= a/2, the value of I2S_RX_CLKM_DIV_Y is (a%b) . For b > a/2, the value of I2S_RX_CLKM_DIV_Y is (a%(a-b)).",
    +                    "offset": 9,
    +                    "size": 9
    +                  },
    +                  "RX_CLKM_DIV_X": {
    +                    "description": "For b <= a/2, the value of I2S_RX_CLKM_DIV_X is (a/b) - 1. For b > a/2, the value of I2S_RX_CLKM_DIV_X is (a/(a-b)) - 1.",
    +                    "offset": 18,
    +                    "size": 9
    +                  },
    +                  "RX_CLKM_DIV_YN1": {
    +                    "description": "For b <= a/2, the value of I2S_RX_CLKM_DIV_YN1 is 0 . For b > a/2, the value of I2S_RX_CLKM_DIV_YN1 is 1.",
    +                    "offset": 27,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "TX_CLKM_DIV_CONF": {
    +              "description": "I2S TX module clock divider configure register",
    +              "offset": 60,
    +              "size": 32,
    +              "reset_value": 512,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_CLKM_DIV_Z": {
    +                    "description": "For b <= a/2, the value of I2S_TX_CLKM_DIV_Z is b. For b > a/2, the value of I2S_TX_CLKM_DIV_Z is (a-b).",
    +                    "offset": 0,
    +                    "size": 9
    +                  },
    +                  "TX_CLKM_DIV_Y": {
    +                    "description": "For b <= a/2, the value of I2S_TX_CLKM_DIV_Y is (a%b) . For b > a/2, the value of I2S_TX_CLKM_DIV_Y is (a%(a-b)).",
    +                    "offset": 9,
    +                    "size": 9
    +                  },
    +                  "TX_CLKM_DIV_X": {
    +                    "description": "For b <= a/2, the value of I2S_TX_CLKM_DIV_X is (a/b) - 1. For b > a/2, the value of I2S_TX_CLKM_DIV_X is (a/(a-b)) - 1.",
    +                    "offset": 18,
    +                    "size": 9
    +                  },
    +                  "TX_CLKM_DIV_YN1": {
    +                    "description": "For b <= a/2, the value of I2S_TX_CLKM_DIV_YN1 is 0 . For b > a/2, the value of I2S_TX_CLKM_DIV_YN1 is 1.",
    +                    "offset": 27,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "TX_PCM2PDM_CONF": {
    +              "description": "I2S TX PCM2PDM configuration register",
    +              "offset": 64,
    +              "size": 32,
    +              "reset_value": 4890628,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_PDM_HP_BYPASS": {
    +                    "description": "I2S TX PDM bypass hp filter or not. The option has been removed.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "TX_PDM_SINC_OSR2": {
    +                    "description": "I2S TX PDM OSR2 value",
    +                    "offset": 1,
    +                    "size": 4
    +                  },
    +                  "TX_PDM_PRESCALE": {
    +                    "description": "I2S TX PDM prescale for sigmadelta",
    +                    "offset": 5,
    +                    "size": 8
    +                  },
    +                  "TX_PDM_HP_IN_SHIFT": {
    +                    "description": "I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4",
    +                    "offset": 13,
    +                    "size": 2
    +                  },
    +                  "TX_PDM_LP_IN_SHIFT": {
    +                    "description": "I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4",
    +                    "offset": 15,
    +                    "size": 2
    +                  },
    +                  "TX_PDM_SINC_IN_SHIFT": {
    +                    "description": "I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4",
    +                    "offset": 17,
    +                    "size": 2
    +                  },
    +                  "TX_PDM_SIGMADELTA_IN_SHIFT": {
    +                    "description": "I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4",
    +                    "offset": 19,
    +                    "size": 2
    +                  },
    +                  "TX_PDM_SIGMADELTA_DITHER2": {
    +                    "description": "I2S TX PDM sigmadelta dither2 value",
    +                    "offset": 21,
    +                    "size": 1
    +                  },
    +                  "TX_PDM_SIGMADELTA_DITHER": {
    +                    "description": "I2S TX PDM sigmadelta dither value",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "TX_PDM_DAC_2OUT_EN": {
    +                    "description": "I2S TX PDM dac mode enable",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "TX_PDM_DAC_MODE_EN": {
    +                    "description": "I2S TX PDM dac 2channel enable",
    +                    "offset": 24,
    +                    "size": 1
    +                  },
    +                  "PCM2PDM_CONV_EN": {
    +                    "description": "I2S TX PDM Converter enable",
    +                    "offset": 25,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "TX_PCM2PDM_CONF1": {
    +              "description": "I2S TX PCM2PDM configuration register",
    +              "offset": 68,
    +              "size": 32,
    +              "reset_value": 66552768,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_PDM_FP": {
    +                    "description": "I2S TX PDM Fp",
    +                    "offset": 0,
    +                    "size": 10
    +                  },
    +                  "TX_PDM_FS": {
    +                    "description": "I2S TX PDM Fs",
    +                    "offset": 10,
    +                    "size": 10
    +                  },
    +                  "TX_IIR_HP_MULT12_5": {
    +                    "description": "The fourth parameter of PDM TX IIR_HP filter stage 2 is (504 + I2S_TX_IIR_HP_MULT12_5[2:0])",
    +                    "offset": 20,
    +                    "size": 3
    +                  },
    +                  "TX_IIR_HP_MULT12_0": {
    +                    "description": "The fourth parameter of PDM TX IIR_HP filter stage 1 is (504 + I2S_TX_IIR_HP_MULT12_0[2:0])",
    +                    "offset": 23,
    +                    "size": 3
    +                  }
    +                }
    +              }
    +            },
    +            "RX_TDM_CTRL": {
    +              "description": "I2S TX TDM mode control register",
    +              "offset": 80,
    +              "size": 32,
    +              "reset_value": 65535,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_TDM_PDM_CHAN0_EN": {
    +                    "description": "1: Enable the valid data input of I2S RX TDM or PDM channel 0. 0:  Disable, just input 0 in this channel.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "RX_TDM_PDM_CHAN1_EN": {
    +                    "description": "1: Enable the valid data input of I2S RX TDM or PDM channel 1. 0:  Disable, just input 0 in this channel.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "RX_TDM_PDM_CHAN2_EN": {
    +                    "description": "1: Enable the valid data input of I2S RX TDM or PDM channel 2. 0:  Disable, just input 0 in this channel.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "RX_TDM_PDM_CHAN3_EN": {
    +                    "description": "1: Enable the valid data input of I2S RX TDM or PDM channel 3. 0:  Disable, just input 0 in this channel.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "RX_TDM_PDM_CHAN4_EN": {
    +                    "description": "1: Enable the valid data input of I2S RX TDM or PDM channel 4. 0:  Disable, just input 0 in this channel.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "RX_TDM_PDM_CHAN5_EN": {
    +                    "description": "1: Enable the valid data input of I2S RX TDM or PDM channel 5. 0:  Disable, just input 0 in this channel.",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "RX_TDM_PDM_CHAN6_EN": {
    +                    "description": "1: Enable the valid data input of I2S RX TDM or PDM channel 6. 0:  Disable, just input 0 in this channel.",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "RX_TDM_PDM_CHAN7_EN": {
    +                    "description": "1: Enable the valid data input of I2S RX TDM or PDM channel 7. 0:  Disable, just input 0 in this channel.",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "RX_TDM_CHAN8_EN": {
    +                    "description": "1: Enable the valid data input of I2S RX TDM channel 8. 0:  Disable, just input 0 in this channel.",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "RX_TDM_CHAN9_EN": {
    +                    "description": "1: Enable the valid data input of I2S RX TDM channel 9. 0:  Disable, just input 0 in this channel.",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "RX_TDM_CHAN10_EN": {
    +                    "description": "1: Enable the valid data input of I2S RX TDM channel 10. 0:  Disable, just input 0 in this channel.",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "RX_TDM_CHAN11_EN": {
    +                    "description": "1: Enable the valid data input of I2S RX TDM channel 11. 0:  Disable, just input 0 in this channel.",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "RX_TDM_CHAN12_EN": {
    +                    "description": "1: Enable the valid data input of I2S RX TDM channel 12. 0:  Disable, just input 0 in this channel.",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "RX_TDM_CHAN13_EN": {
    +                    "description": "1: Enable the valid data input of I2S RX TDM channel 13. 0:  Disable, just input 0 in this channel.",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "RX_TDM_CHAN14_EN": {
    +                    "description": "1: Enable the valid data input of I2S RX TDM channel 14. 0:  Disable, just input 0 in this channel.",
    +                    "offset": 14,
    +                    "size": 1
    +                  },
    +                  "RX_TDM_CHAN15_EN": {
    +                    "description": "1: Enable the valid data input of I2S RX TDM channel 15. 0:  Disable, just input 0 in this channel.",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "RX_TDM_TOT_CHAN_NUM": {
    +                    "description": "The total channel number of I2S TX TDM mode.",
    +                    "offset": 16,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "TX_TDM_CTRL": {
    +              "description": "I2S TX TDM mode control register",
    +              "offset": 84,
    +              "size": 32,
    +              "reset_value": 65535,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_TDM_CHAN0_EN": {
    +                    "description": "1: Enable the valid data output of I2S TX TDM channel 0. 0:  Disable, just output 0 in this channel.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "TX_TDM_CHAN1_EN": {
    +                    "description": "1: Enable the valid data output of I2S TX TDM channel 1. 0:  Disable, just output 0 in this channel.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "TX_TDM_CHAN2_EN": {
    +                    "description": "1: Enable the valid data output of I2S TX TDM channel 2. 0:  Disable, just output 0 in this channel.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "TX_TDM_CHAN3_EN": {
    +                    "description": "1: Enable the valid data output of I2S TX TDM channel 3. 0:  Disable, just output 0 in this channel.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "TX_TDM_CHAN4_EN": {
    +                    "description": "1: Enable the valid data output of I2S TX TDM channel 4. 0:  Disable, just output 0 in this channel.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "TX_TDM_CHAN5_EN": {
    +                    "description": "1: Enable the valid data output of I2S TX TDM channel 5. 0:  Disable, just output 0 in this channel.",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "TX_TDM_CHAN6_EN": {
    +                    "description": "1: Enable the valid data output of I2S TX TDM channel 6. 0:  Disable, just output 0 in this channel.",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "TX_TDM_CHAN7_EN": {
    +                    "description": "1: Enable the valid data output of I2S TX TDM channel 7. 0:  Disable, just output 0 in this channel.",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "TX_TDM_CHAN8_EN": {
    +                    "description": "1: Enable the valid data output of I2S TX TDM channel 8. 0:  Disable, just output 0 in this channel.",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "TX_TDM_CHAN9_EN": {
    +                    "description": "1: Enable the valid data output of I2S TX TDM channel 9. 0:  Disable, just output 0 in this channel.",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "TX_TDM_CHAN10_EN": {
    +                    "description": "1: Enable the valid data output of I2S TX TDM channel 10. 0:  Disable, just output 0 in this channel.",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "TX_TDM_CHAN11_EN": {
    +                    "description": "1: Enable the valid data output of I2S TX TDM channel 11. 0:  Disable, just output 0 in this channel.",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "TX_TDM_CHAN12_EN": {
    +                    "description": "1: Enable the valid data output of I2S TX TDM channel 12. 0:  Disable, just output 0 in this channel.",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "TX_TDM_CHAN13_EN": {
    +                    "description": "1: Enable the valid data output of I2S TX TDM channel 13. 0:  Disable, just output 0 in this channel.",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "TX_TDM_CHAN14_EN": {
    +                    "description": "1: Enable the valid data output of I2S TX TDM channel 14. 0:  Disable, just output 0 in this channel.",
    +                    "offset": 14,
    +                    "size": 1
    +                  },
    +                  "TX_TDM_CHAN15_EN": {
    +                    "description": "1: Enable the valid data output of I2S TX TDM channel 15. 0:  Disable, just output 0 in this channel.",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "TX_TDM_TOT_CHAN_NUM": {
    +                    "description": "The total channel number of I2S TX TDM mode.",
    +                    "offset": 16,
    +                    "size": 4
    +                  },
    +                  "TX_TDM_SKIP_MSK_EN": {
    +                    "description": "When DMA TX buffer stores the data of (REG_TX_TDM_TOT_CHAN_NUM + 1)  channels, and only the data of the enabled channels is sent, then this bit should be set. Clear it when all the data stored in DMA TX buffer is for enabled channels.",
    +                    "offset": 20,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "RX_TIMING": {
    +              "description": "I2S RX timing control register",
    +              "offset": 88,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_SD_IN_DM": {
    +                    "description": "The delay mode of I2S Rx SD input signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "RX_WS_OUT_DM": {
    +                    "description": "The delay mode of I2S Rx WS output signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.",
    +                    "offset": 16,
    +                    "size": 2
    +                  },
    +                  "RX_BCK_OUT_DM": {
    +                    "description": "The delay mode of I2S Rx BCK output signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.",
    +                    "offset": 20,
    +                    "size": 2
    +                  },
    +                  "RX_WS_IN_DM": {
    +                    "description": "The delay mode of I2S Rx WS input signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.",
    +                    "offset": 24,
    +                    "size": 2
    +                  },
    +                  "RX_BCK_IN_DM": {
    +                    "description": "The delay mode of I2S Rx BCK input signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.",
    +                    "offset": 28,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "TX_TIMING": {
    +              "description": "I2S TX timing control register",
    +              "offset": 92,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_SD_OUT_DM": {
    +                    "description": "The delay mode of I2S TX SD output signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "TX_SD1_OUT_DM": {
    +                    "description": "The delay mode of I2S TX SD1 output signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "TX_WS_OUT_DM": {
    +                    "description": "The delay mode of I2S TX WS output signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.",
    +                    "offset": 16,
    +                    "size": 2
    +                  },
    +                  "TX_BCK_OUT_DM": {
    +                    "description": "The delay mode of I2S TX BCK output signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.",
    +                    "offset": 20,
    +                    "size": 2
    +                  },
    +                  "TX_WS_IN_DM": {
    +                    "description": "The delay mode of I2S TX WS input signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.",
    +                    "offset": 24,
    +                    "size": 2
    +                  },
    +                  "TX_BCK_IN_DM": {
    +                    "description": "The delay mode of I2S TX BCK input signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.",
    +                    "offset": 28,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "LC_HUNG_CONF": {
    +              "description": "I2S HUNG configure register.",
    +              "offset": 96,
    +              "size": 32,
    +              "reset_value": 2064,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LC_FIFO_TIMEOUT": {
    +                    "description": "the i2s_tx_hung_int interrupt or the i2s_rx_hung_int interrupt will be triggered when fifo hung counter is equal to this value",
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "LC_FIFO_TIMEOUT_SHIFT": {
    +                    "description": "The bits are used to scale tick counter threshold. The tick counter is reset when counter value >= 88000/2^i2s_lc_fifo_timeout_shift",
    +                    "offset": 8,
    +                    "size": 3
    +                  },
    +                  "LC_FIFO_TIMEOUT_ENA": {
    +                    "description": "The enable bit for FIFO timeout",
    +                    "offset": 11,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "RXEOF_NUM": {
    +              "description": "I2S RX data number control register.",
    +              "offset": 100,
    +              "size": 32,
    +              "reset_value": 64,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_EOF_NUM": {
    +                    "description": "The receive data bit length is (I2S_RX_BITS_MOD[4:0] + 1) * (REG_RX_EOF_NUM[11:0] + 1) . It will trigger in_suc_eof interrupt in the configured DMA RX channel.",
    +                    "offset": 0,
    +                    "size": 12
    +                  }
    +                }
    +              }
    +            },
    +            "CONF_SIGLE_DATA": {
    +              "description": "I2S signal data register",
    +              "offset": 104,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SINGLE_DATA": {
    +                    "description": "The configured constant channel data to be sent out.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "STATE": {
    +              "description": "I2S TX status register",
    +              "offset": 108,
    +              "size": 32,
    +              "reset_value": 1,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_IDLE": {
    +                    "description": "1: i2s_tx is idle state. 0: i2s_tx is working.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DATE": {
    +              "description": "Version control register",
    +              "offset": 128,
    +              "size": 32,
    +              "reset_value": 33583648,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATE": {
    +                    "description": "I2S version control register",
    +                    "offset": 0,
    +                    "size": 28
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "INTERRUPT_CORE0": {
    +        "description": "Interrupt Core",
    +        "children": {
    +          "registers": {
    +            "MAC_INTR_MAP": {
    +              "description": "mac intr map register",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "MAC_INTR_MAP": {
    +                    "description": "core0_mac_intr_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "MAC_NMI_MAP": {
    +              "description": "mac nmi_intr map register",
    +              "offset": 4,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "MAC_NMI_MAP": {
    +                    "description": "reg_core0_mac_nmi_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "PWR_INTR_MAP": {
    +              "description": "pwr intr map register",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PWR_INTR_MAP": {
    +                    "description": "reg_core0_pwr_intr_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "BB_INT_MAP": {
    +              "description": "bb intr map register",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BB_INT_MAP": {
    +                    "description": "reg_core0_bb_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "BT_MAC_INT_MAP": {
    +              "description": "bt intr map register",
    +              "offset": 16,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BT_MAC_INT_MAP": {
    +                    "description": "reg_core0_bt_mac_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "BT_BB_INT_MAP": {
    +              "description": "bb_bt intr map register",
    +              "offset": 20,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BT_BB_INT_MAP": {
    +                    "description": "reg_core0_bt_bb_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "BT_BB_NMI_MAP": {
    +              "description": "bb_bt_nmi intr map register",
    +              "offset": 24,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BT_BB_NMI_MAP": {
    +                    "description": "reg_core0_bt_bb_nmi_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "RWBT_IRQ_MAP": {
    +              "description": "rwbt intr map register",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RWBT_IRQ_MAP": {
    +                    "description": "reg_core0_rwbt_irq_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "RWBLE_IRQ_MAP": {
    +              "description": "rwble intr map register",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RWBLE_IRQ_MAP": {
    +                    "description": "reg_core0_rwble_irq_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "RWBT_NMI_MAP": {
    +              "description": "rwbt_nmi intr map register",
    +              "offset": 36,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RWBT_NMI_MAP": {
    +                    "description": "reg_core0_rwbt_nmi_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "RWBLE_NMI_MAP": {
    +              "description": "rwble_nmi intr map register",
    +              "offset": 40,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RWBLE_NMI_MAP": {
    +                    "description": "reg_core0_rwble_nmi_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "I2C_MST_INT_MAP": {
    +              "description": "i2c intr map register",
    +              "offset": 44,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "I2C_MST_INT_MAP": {
    +                    "description": "reg_core0_i2c_mst_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "SLC0_INTR_MAP": {
    +              "description": "slc0 intr map register",
    +              "offset": 48,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SLC0_INTR_MAP": {
    +                    "description": "reg_core0_slc0_intr_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "SLC1_INTR_MAP": {
    +              "description": "slc1 intr map register",
    +              "offset": 52,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SLC1_INTR_MAP": {
    +                    "description": "reg_core0_slc1_intr_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "APB_CTRL_INTR_MAP": {
    +              "description": "apb_ctrl intr map register",
    +              "offset": 56,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "APB_CTRL_INTR_MAP": {
    +                    "description": "reg_core0_apb_ctrl_intr_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "UHCI0_INTR_MAP": {
    +              "description": "uchi0 intr map register",
    +              "offset": 60,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "UHCI0_INTR_MAP": {
    +                    "description": "reg_core0_uhci0_intr_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "GPIO_INTERRUPT_PRO_MAP": {
    +              "description": "gpio intr map register",
    +              "offset": 64,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "GPIO_INTERRUPT_PRO_MAP": {
    +                    "description": "reg_core0_gpio_interrupt_pro_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "GPIO_INTERRUPT_PRO_NMI_MAP": {
    +              "description": "gpio_pro intr map register",
    +              "offset": 68,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "GPIO_INTERRUPT_PRO_NMI_MAP": {
    +                    "description": "reg_core0_gpio_interrupt_pro_nmi_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "SPI_INTR_1_MAP": {
    +              "description": "gpio_pro_nmi intr map register",
    +              "offset": 72,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SPI_INTR_1_MAP": {
    +                    "description": "reg_core0_spi_intr_1_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "SPI_INTR_2_MAP": {
    +              "description": "spi1 intr map register",
    +              "offset": 76,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SPI_INTR_2_MAP": {
    +                    "description": "reg_core0_spi_intr_2_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "I2S1_INT_MAP": {
    +              "description": "spi2 intr map register",
    +              "offset": 80,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "I2S1_INT_MAP": {
    +                    "description": "reg_core0_i2s1_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "UART_INTR_MAP": {
    +              "description": "i2s1 intr map register",
    +              "offset": 84,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "UART_INTR_MAP": {
    +                    "description": "reg_core0_uart_intr_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "UART1_INTR_MAP": {
    +              "description": "uart1 intr map register",
    +              "offset": 88,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "UART1_INTR_MAP": {
    +                    "description": "reg_core0_uart1_intr_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "LEDC_INT_MAP": {
    +              "description": "ledc intr map register",
    +              "offset": 92,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LEDC_INT_MAP": {
    +                    "description": "reg_core0_ledc_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "EFUSE_INT_MAP": {
    +              "description": "efuse intr map register",
    +              "offset": 96,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "EFUSE_INT_MAP": {
    +                    "description": "reg_core0_efuse_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "CAN_INT_MAP": {
    +              "description": "can intr map register",
    +              "offset": 100,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CAN_INT_MAP": {
    +                    "description": "reg_core0_can_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "USB_INTR_MAP": {
    +              "description": "usb intr map register",
    +              "offset": 104,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "USB_INTR_MAP": {
    +                    "description": "reg_core0_usb_intr_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "RTC_CORE_INTR_MAP": {
    +              "description": "rtc intr map register",
    +              "offset": 108,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_CORE_INTR_MAP": {
    +                    "description": "reg_core0_rtc_core_intr_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "RMT_INTR_MAP": {
    +              "description": "rmt intr map register",
    +              "offset": 112,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RMT_INTR_MAP": {
    +                    "description": "reg_core0_rmt_intr_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "I2C_EXT0_INTR_MAP": {
    +              "description": "i2c intr map register",
    +              "offset": 116,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "I2C_EXT0_INTR_MAP": {
    +                    "description": "reg_core0_i2c_ext0_intr_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "TIMER_INT1_MAP": {
    +              "description": "timer1 intr map register",
    +              "offset": 120,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_INT1_MAP": {
    +                    "description": "reg_core0_timer_int1_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "TIMER_INT2_MAP": {
    +              "description": "timer2 intr map register",
    +              "offset": 124,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_INT2_MAP": {
    +                    "description": "reg_core0_timer_int2_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "TG_T0_INT_MAP": {
    +              "description": "tg to intr map register",
    +              "offset": 128,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TG_T0_INT_MAP": {
    +                    "description": "reg_core0_tg_t0_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "TG_WDT_INT_MAP": {
    +              "description": "tg wdt intr map register",
    +              "offset": 132,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TG_WDT_INT_MAP": {
    +                    "description": "reg_core0_tg_wdt_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "TG1_T0_INT_MAP": {
    +              "description": "tg1 to intr map register",
    +              "offset": 136,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TG1_T0_INT_MAP": {
    +                    "description": "reg_core0_tg1_t0_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "TG1_WDT_INT_MAP": {
    +              "description": "tg1 wdt intr map register",
    +              "offset": 140,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TG1_WDT_INT_MAP": {
    +                    "description": "reg_core0_tg1_wdt_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_IA_INT_MAP": {
    +              "description": "cache ia intr map register",
    +              "offset": 144,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CACHE_IA_INT_MAP": {
    +                    "description": "reg_core0_cache_ia_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "SYSTIMER_TARGET0_INT_MAP": {
    +              "description": "systimer intr map register",
    +              "offset": 148,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SYSTIMER_TARGET0_INT_MAP": {
    +                    "description": "reg_core0_systimer_target0_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "SYSTIMER_TARGET1_INT_MAP": {
    +              "description": "systimer target1 intr map register",
    +              "offset": 152,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SYSTIMER_TARGET1_INT_MAP": {
    +                    "description": "reg_core0_systimer_target1_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "SYSTIMER_TARGET2_INT_MAP": {
    +              "description": "systimer target2 intr map register",
    +              "offset": 156,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SYSTIMER_TARGET2_INT_MAP": {
    +                    "description": "reg_core0_systimer_target2_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "SPI_MEM_REJECT_INTR_MAP": {
    +              "description": "spi mem reject intr map register",
    +              "offset": 160,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SPI_MEM_REJECT_INTR_MAP": {
    +                    "description": "reg_core0_spi_mem_reject_intr_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "ICACHE_PRELOAD_INT_MAP": {
    +              "description": "icache perload intr map register",
    +              "offset": 164,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_PRELOAD_INT_MAP": {
    +                    "description": "reg_core0_icache_preload_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "ICACHE_SYNC_INT_MAP": {
    +              "description": "icache sync intr map register",
    +              "offset": 168,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_SYNC_INT_MAP": {
    +                    "description": "reg_core0_icache_sync_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "APB_ADC_INT_MAP": {
    +              "description": "adc intr map register",
    +              "offset": 172,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "APB_ADC_INT_MAP": {
    +                    "description": "reg_core0_apb_adc_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_CH0_INT_MAP": {
    +              "description": "dma ch0 intr map register",
    +              "offset": 176,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_CH0_INT_MAP": {
    +                    "description": "reg_core0_dma_ch0_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_CH1_INT_MAP": {
    +              "description": "dma ch1 intr map register",
    +              "offset": 180,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_CH1_INT_MAP": {
    +                    "description": "reg_core0_dma_ch1_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_CH2_INT_MAP": {
    +              "description": "dma ch2 intr map register",
    +              "offset": 184,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_CH2_INT_MAP": {
    +                    "description": "reg_core0_dma_ch2_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "RSA_INT_MAP": {
    +              "description": "rsa intr map register",
    +              "offset": 188,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RSA_INT_MAP": {
    +                    "description": "reg_core0_rsa_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "AES_INT_MAP": {
    +              "description": "aes intr map register",
    +              "offset": 192,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "AES_INT_MAP": {
    +                    "description": "reg_core0_aes_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "SHA_INT_MAP": {
    +              "description": "sha intr map register",
    +              "offset": 196,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SHA_INT_MAP": {
    +                    "description": "reg_core0_sha_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INTR_FROM_CPU_0_MAP": {
    +              "description": "cpu from cpu 0 intr map register",
    +              "offset": 200,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_INTR_FROM_CPU_0_MAP": {
    +                    "description": "reg_core0_cpu_intr_from_cpu_0_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INTR_FROM_CPU_1_MAP": {
    +              "description": "cpu from cpu 0 intr map register",
    +              "offset": 204,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_INTR_FROM_CPU_1_MAP": {
    +                    "description": "reg_core0_cpu_intr_from_cpu_1_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INTR_FROM_CPU_2_MAP": {
    +              "description": "cpu from cpu 1 intr map register",
    +              "offset": 208,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_INTR_FROM_CPU_2_MAP": {
    +                    "description": "reg_core0_cpu_intr_from_cpu_2_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INTR_FROM_CPU_3_MAP": {
    +              "description": "cpu from cpu 3 intr map register",
    +              "offset": 212,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_INTR_FROM_CPU_3_MAP": {
    +                    "description": "reg_core0_cpu_intr_from_cpu_3_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "ASSIST_DEBUG_INTR_MAP": {
    +              "description": "assist debug intr map register",
    +              "offset": 216,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ASSIST_DEBUG_INTR_MAP": {
    +                    "description": "reg_core0_assist_debug_intr_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_APBPERI_PMS_MONITOR_VIOLATE_INTR_MAP": {
    +              "description": "dma pms violatile intr map register",
    +              "offset": 220,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_APBPERI_PMS_MONITOR_VIOLATE_INTR_MAP": {
    +                    "description": "reg_core0_dma_apbperi_pms_monitor_violate_intr_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_IRAM0_PMS_MONITOR_VIOLATE_INTR_MAP": {
    +              "description": "iram0 pms violatile intr map register",
    +              "offset": 224,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_IRAM0_PMS_MONITOR_VIOLATE_INTR_MAP": {
    +                    "description": "reg_core0_core_0_iram0_pms_monitor_violate_intr_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_DRAM0_PMS_MONITOR_VIOLATE_INTR_MAP": {
    +              "description": "mac intr map register",
    +              "offset": 228,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_DRAM0_PMS_MONITOR_VIOLATE_INTR_MAP": {
    +                    "description": "reg_core0_core_0_dram0_pms_monitor_violate_intr_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_PIF_PMS_MONITOR_VIOLATE_INTR_MAP": {
    +              "description": "mac intr map register",
    +              "offset": 232,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_PIF_PMS_MONITOR_VIOLATE_INTR_MAP": {
    +                    "description": "reg_core0_core_0_pif_pms_monitor_violate_intr_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_PIF_PMS_MONITOR_VIOLATE_SIZE_INTR_MAP": {
    +              "description": "mac intr map register",
    +              "offset": 236,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_PIF_PMS_MONITOR_VIOLATE_SIZE_INTR_MAP": {
    +                    "description": "reg_core0_core_0_pif_pms_monitor_violate_size_intr_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "BACKUP_PMS_VIOLATE_INTR_MAP": {
    +              "description": "mac intr map register",
    +              "offset": 240,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BACKUP_PMS_VIOLATE_INTR_MAP": {
    +                    "description": "reg_core0_backup_pms_violate_intr_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_CORE0_ACS_INT_MAP": {
    +              "description": "mac intr map register",
    +              "offset": 244,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CACHE_CORE0_ACS_INT_MAP": {
    +                    "description": "reg_core0_cache_core0_acs_int_map",
    +                    "offset": 0,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "INTR_STATUS_REG_0": {
    +              "description": "mac intr map register",
    +              "offset": 248,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INTR_STATUS_0": {
    +                    "description": "reg_core0_intr_status_0",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INTR_STATUS_REG_1": {
    +              "description": "mac intr map register",
    +              "offset": 252,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INTR_STATUS_1": {
    +                    "description": "reg_core0_intr_status_1",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CLOCK_GATE": {
    +              "description": "mac intr map register",
    +              "offset": 256,
    +              "size": 32,
    +              "reset_value": 1,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "REG_CLK_EN": {
    +                    "description": "reg_core0_reg_clk_en",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_ENABLE": {
    +              "description": "mac intr map register",
    +              "offset": 260,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_INT_ENABLE": {
    +                    "description": "reg_core0_cpu_int_enable",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_TYPE": {
    +              "description": "mac intr map register",
    +              "offset": 264,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_INT_TYPE": {
    +                    "description": "reg_core0_cpu_int_type",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_CLEAR": {
    +              "description": "mac intr map register",
    +              "offset": 268,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_INT_CLEAR": {
    +                    "description": "reg_core0_cpu_int_clear",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_EIP_STATUS": {
    +              "description": "mac intr map register",
    +              "offset": 272,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_INT_EIP_STATUS": {
    +                    "description": "reg_core0_cpu_int_eip_status",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_0": {
    +              "description": "mac intr map register",
    +              "offset": 276,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_0_MAP": {
    +                    "description": "reg_core0_cpu_pri_0_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_1": {
    +              "description": "mac intr map register",
    +              "offset": 280,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_1_MAP": {
    +                    "description": "reg_core0_cpu_pri_1_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_2": {
    +              "description": "mac intr map register",
    +              "offset": 284,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_2_MAP": {
    +                    "description": "reg_core0_cpu_pri_2_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_3": {
    +              "description": "mac intr map register",
    +              "offset": 288,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_3_MAP": {
    +                    "description": "reg_core0_cpu_pri_3_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_4": {
    +              "description": "mac intr map register",
    +              "offset": 292,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_4_MAP": {
    +                    "description": "reg_core0_cpu_pri_4_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_5": {
    +              "description": "mac intr map register",
    +              "offset": 296,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_5_MAP": {
    +                    "description": "reg_core0_cpu_pri_5_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_6": {
    +              "description": "mac intr map register",
    +              "offset": 300,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_6_MAP": {
    +                    "description": "reg_core0_cpu_pri_6_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_7": {
    +              "description": "mac intr map register",
    +              "offset": 304,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_7_MAP": {
    +                    "description": "reg_core0_cpu_pri_7_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_8": {
    +              "description": "mac intr map register",
    +              "offset": 308,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_8_MAP": {
    +                    "description": "reg_core0_cpu_pri_8_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_9": {
    +              "description": "mac intr map register",
    +              "offset": 312,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_9_MAP": {
    +                    "description": "reg_core0_cpu_pri_9_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_10": {
    +              "description": "mac intr map register",
    +              "offset": 316,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_10_MAP": {
    +                    "description": "reg_core0_cpu_pri_10_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_11": {
    +              "description": "mac intr map register",
    +              "offset": 320,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_11_MAP": {
    +                    "description": "reg_core0_cpu_pri_11_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_12": {
    +              "description": "mac intr map register",
    +              "offset": 324,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_12_MAP": {
    +                    "description": "reg_core0_cpu_pri_12_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_13": {
    +              "description": "mac intr map register",
    +              "offset": 328,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_13_MAP": {
    +                    "description": "reg_core0_cpu_pri_13_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_14": {
    +              "description": "mac intr map register",
    +              "offset": 332,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_14_MAP": {
    +                    "description": "reg_core0_cpu_pri_14_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_15": {
    +              "description": "mac intr map register",
    +              "offset": 336,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_15_MAP": {
    +                    "description": "reg_core0_cpu_pri_15_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_16": {
    +              "description": "mac intr map register",
    +              "offset": 340,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_16_MAP": {
    +                    "description": "reg_core0_cpu_pri_16_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_17": {
    +              "description": "mac intr map register",
    +              "offset": 344,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_17_MAP": {
    +                    "description": "reg_core0_cpu_pri_17_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_18": {
    +              "description": "mac intr map register",
    +              "offset": 348,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_18_MAP": {
    +                    "description": "reg_core0_cpu_pri_18_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_19": {
    +              "description": "mac intr map register",
    +              "offset": 352,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_19_MAP": {
    +                    "description": "reg_core0_cpu_pri_19_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_20": {
    +              "description": "mac intr map register",
    +              "offset": 356,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_20_MAP": {
    +                    "description": "reg_core0_cpu_pri_20_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_21": {
    +              "description": "mac intr map register",
    +              "offset": 360,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_21_MAP": {
    +                    "description": "reg_core0_cpu_pri_21_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_22": {
    +              "description": "mac intr map register",
    +              "offset": 364,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_22_MAP": {
    +                    "description": "reg_core0_cpu_pri_22_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_23": {
    +              "description": "mac intr map register",
    +              "offset": 368,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_23_MAP": {
    +                    "description": "reg_core0_cpu_pri_23_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_24": {
    +              "description": "mac intr map register",
    +              "offset": 372,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_24_MAP": {
    +                    "description": "reg_core0_cpu_pri_24_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_25": {
    +              "description": "mac intr map register",
    +              "offset": 376,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_25_MAP": {
    +                    "description": "reg_core0_cpu_pri_25_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_26": {
    +              "description": "mac intr map register",
    +              "offset": 380,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_26_MAP": {
    +                    "description": "reg_core0_cpu_pri_26_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_27": {
    +              "description": "mac intr map register",
    +              "offset": 384,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_27_MAP": {
    +                    "description": "reg_core0_cpu_pri_27_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_28": {
    +              "description": "mac intr map register",
    +              "offset": 388,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_28_MAP": {
    +                    "description": "reg_core0_cpu_pri_28_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_29": {
    +              "description": "mac intr map register",
    +              "offset": 392,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_29_MAP": {
    +                    "description": "reg_core0_cpu_pri_29_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_30": {
    +              "description": "mac intr map register",
    +              "offset": 396,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_30_MAP": {
    +                    "description": "reg_core0_cpu_pri_30_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_PRI_31": {
    +              "description": "mac intr map register",
    +              "offset": 400,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_PRI_31_MAP": {
    +                    "description": "reg_core0_cpu_pri_31_map",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INT_THRESH": {
    +              "description": "mac intr map register",
    +              "offset": 404,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_INT_THRESH": {
    +                    "description": "reg_core0_cpu_int_thresh",
    +                    "offset": 0,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "INTERRUPT_REG_DATE": {
    +              "description": "mac intr map register",
    +              "offset": 2044,
    +              "size": 32,
    +              "reset_value": 33583632,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INTERRUPT_REG_DATE": {
    +                    "description": "reg_core0_interrupt_reg_date",
    +                    "offset": 0,
    +                    "size": 28
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "IO_MUX": {
    +        "description": "Input/Output Multiplexer",
    +        "children": {
    +          "registers": {
    +            "PIN_CTRL": {
    +              "description": "Clock Output Configuration Register",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 2047,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CLK_OUT1": {
    +                    "description": "If you want to output clock for I2S to CLK_OUT_out1, set this register to 0x0. CLK_OUT_out1 can be found in peripheral output signals.",
    +                    "offset": 0,
    +                    "size": 4
    +                  },
    +                  "CLK_OUT2": {
    +                    "description": "If you want to output clock for I2S to CLK_OUT_out2, set this register to 0x0. CLK_OUT_out2 can be found in peripheral output signals.",
    +                    "offset": 4,
    +                    "size": 4
    +                  },
    +                  "CLK_OUT3": {
    +                    "description": "If you want to output clock for I2S to CLK_OUT_out3, set this register to 0x0. CLK_OUT_out3 can be found in peripheral output signals.",
    +                    "offset": 8,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "GPIO": {
    +              "description": "IO MUX Configure Register for pad XTAL_32K_P",
    +              "offset": 4,
    +              "size": 32,
    +              "count": 22,
    +              "reset_value": 2816,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "MCU_OE": {
    +                    "description": "Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "SLP_SEL": {
    +                    "description": "Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "MCU_WPD": {
    +                    "description": "Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0: internal pull-down disabled.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "MCU_WPU": {
    +                    "description": "Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0: internal pull-up disabled.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "MCU_IE": {
    +                    "description": "Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "FUN_WPD": {
    +                    "description": "Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal pull-down disabled.",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "FUN_WPU": {
    +                    "description": "Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up disabled.",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "FUN_IE": {
    +                    "description": "Input enable of the pad. 1: input enabled; 0: input disabled.",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "FUN_DRV": {
    +                    "description": "Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.",
    +                    "offset": 10,
    +                    "size": 2
    +                  },
    +                  "MCU_SEL": {
    +                    "description": "Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function 2; etc.",
    +                    "offset": 12,
    +                    "size": 3
    +                  },
    +                  "FILTER_EN": {
    +                    "description": "Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.",
    +                    "offset": 15,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DATE": {
    +              "description": "IO MUX Version Control Register",
    +              "offset": 252,
    +              "size": 32,
    +              "reset_value": 33579088,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "REG_DATE": {
    +                    "description": "Version control register",
    +                    "offset": 0,
    +                    "size": 28
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "LEDC": {
    +        "description": "LED Control PWM (Pulse Width Modulation)",
    +        "children": {
    +          "registers": {
    +            "LSCH0_CONF0": {
    +              "description": "LEDC_LSCH0_CONF0.",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_SEL_LSCH0": {
    +                    "description": "reg_timer_sel_lsch0.",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "SIG_OUT_EN_LSCH0": {
    +                    "description": "reg_sig_out_en_lsch0.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "IDLE_LV_LSCH0": {
    +                    "description": "reg_idle_lv_lsch0.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "PARA_UP_LSCH0": {
    +                    "description": "reg_para_up_lsch0.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OVF_NUM_LSCH0": {
    +                    "description": "reg_ovf_num_lsch0.",
    +                    "offset": 5,
    +                    "size": 10
    +                  },
    +                  "OVF_CNT_EN_LSCH0": {
    +                    "description": "reg_ovf_cnt_en_lsch0.",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "OVF_CNT_RESET_LSCH0": {
    +                    "description": "reg_ovf_cnt_reset_lsch0.",
    +                    "offset": 16,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH0_HPOINT": {
    +              "description": "LEDC_LSCH0_HPOINT.",
    +              "offset": 4,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "HPOINT_LSCH0": {
    +                    "description": "reg_hpoint_lsch0.",
    +                    "offset": 0,
    +                    "size": 14
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH0_DUTY": {
    +              "description": "LEDC_LSCH0_DUTY.",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DUTY_LSCH0": {
    +                    "description": "reg_duty_lsch0.",
    +                    "offset": 0,
    +                    "size": 19
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH0_CONF1": {
    +              "description": "LEDC_LSCH0_CONF1.",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 1073741824,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DUTY_SCALE_LSCH0": {
    +                    "description": "reg_duty_scale_lsch0.",
    +                    "offset": 0,
    +                    "size": 10
    +                  },
    +                  "DUTY_CYCLE_LSCH0": {
    +                    "description": "reg_duty_cycle_lsch0.",
    +                    "offset": 10,
    +                    "size": 10
    +                  },
    +                  "DUTY_NUM_LSCH0": {
    +                    "description": "reg_duty_num_lsch0.",
    +                    "offset": 20,
    +                    "size": 10
    +                  },
    +                  "DUTY_INC_LSCH0": {
    +                    "description": "reg_duty_inc_lsch0.",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "DUTY_START_LSCH0": {
    +                    "description": "reg_duty_start_lsch0.",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH0_DUTY_R": {
    +              "description": "LEDC_LSCH0_DUTY_R.",
    +              "offset": 16,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DUTY_LSCH0_R": {
    +                    "description": "reg_duty_lsch0_r.",
    +                    "offset": 0,
    +                    "size": 19,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH1_CONF0": {
    +              "description": "LEDC_LSCH1_CONF0.",
    +              "offset": 20,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_SEL_LSCH1": {
    +                    "description": "reg_timer_sel_lsch1.",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "SIG_OUT_EN_LSCH1": {
    +                    "description": "reg_sig_out_en_lsch1.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "IDLE_LV_LSCH1": {
    +                    "description": "reg_idle_lv_lsch1.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "PARA_UP_LSCH1": {
    +                    "description": "reg_para_up_lsch1.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OVF_NUM_LSCH1": {
    +                    "description": "reg_ovf_num_lsch1.",
    +                    "offset": 5,
    +                    "size": 10
    +                  },
    +                  "OVF_CNT_EN_LSCH1": {
    +                    "description": "reg_ovf_cnt_en_lsch1.",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "OVF_CNT_RESET_LSCH1": {
    +                    "description": "reg_ovf_cnt_reset_lsch1.",
    +                    "offset": 16,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH1_HPOINT": {
    +              "description": "LEDC_LSCH1_HPOINT.",
    +              "offset": 24,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "HPOINT_LSCH1": {
    +                    "description": "reg_hpoint_lsch1.",
    +                    "offset": 0,
    +                    "size": 14
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH1_DUTY": {
    +              "description": "LEDC_LSCH1_DUTY.",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DUTY_LSCH1": {
    +                    "description": "reg_duty_lsch1.",
    +                    "offset": 0,
    +                    "size": 19
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH1_CONF1": {
    +              "description": "LEDC_LSCH1_CONF1.",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 1073741824,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DUTY_SCALE_LSCH1": {
    +                    "description": "reg_duty_scale_lsch1.",
    +                    "offset": 0,
    +                    "size": 10
    +                  },
    +                  "DUTY_CYCLE_LSCH1": {
    +                    "description": "reg_duty_cycle_lsch1.",
    +                    "offset": 10,
    +                    "size": 10
    +                  },
    +                  "DUTY_NUM_LSCH1": {
    +                    "description": "reg_duty_num_lsch1.",
    +                    "offset": 20,
    +                    "size": 10
    +                  },
    +                  "DUTY_INC_LSCH1": {
    +                    "description": "reg_duty_inc_lsch1.",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "DUTY_START_LSCH1": {
    +                    "description": "reg_duty_start_lsch1.",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH1_DUTY_R": {
    +              "description": "LEDC_LSCH1_DUTY_R.",
    +              "offset": 36,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DUTY_LSCH1_R": {
    +                    "description": "reg_duty_lsch1_r.",
    +                    "offset": 0,
    +                    "size": 19,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH2_CONF0": {
    +              "description": "LEDC_LSCH2_CONF0.",
    +              "offset": 40,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_SEL_LSCH2": {
    +                    "description": "reg_timer_sel_lsch2.",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "SIG_OUT_EN_LSCH2": {
    +                    "description": "reg_sig_out_en_lsch2.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "IDLE_LV_LSCH2": {
    +                    "description": "reg_idle_lv_lsch2.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "PARA_UP_LSCH2": {
    +                    "description": "reg_para_up_lsch2.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OVF_NUM_LSCH2": {
    +                    "description": "reg_ovf_num_lsch2.",
    +                    "offset": 5,
    +                    "size": 10
    +                  },
    +                  "OVF_CNT_EN_LSCH2": {
    +                    "description": "reg_ovf_cnt_en_lsch2.",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "OVF_CNT_RESET_LSCH2": {
    +                    "description": "reg_ovf_cnt_reset_lsch2.",
    +                    "offset": 16,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH2_HPOINT": {
    +              "description": "LEDC_LSCH2_HPOINT.",
    +              "offset": 44,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "HPOINT_LSCH2": {
    +                    "description": "reg_hpoint_lsch2.",
    +                    "offset": 0,
    +                    "size": 14
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH2_DUTY": {
    +              "description": "LEDC_LSCH2_DUTY.",
    +              "offset": 48,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DUTY_LSCH2": {
    +                    "description": "reg_duty_lsch2.",
    +                    "offset": 0,
    +                    "size": 19
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH2_CONF1": {
    +              "description": "LEDC_LSCH2_CONF1.",
    +              "offset": 52,
    +              "size": 32,
    +              "reset_value": 1073741824,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DUTY_SCALE_LSCH2": {
    +                    "description": "reg_duty_scale_lsch2.",
    +                    "offset": 0,
    +                    "size": 10
    +                  },
    +                  "DUTY_CYCLE_LSCH2": {
    +                    "description": "reg_duty_cycle_lsch2.",
    +                    "offset": 10,
    +                    "size": 10
    +                  },
    +                  "DUTY_NUM_LSCH2": {
    +                    "description": "reg_duty_num_lsch2.",
    +                    "offset": 20,
    +                    "size": 10
    +                  },
    +                  "DUTY_INC_LSCH2": {
    +                    "description": "reg_duty_inc_lsch2.",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "DUTY_START_LSCH2": {
    +                    "description": "reg_duty_start_lsch2.",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH2_DUTY_R": {
    +              "description": "LEDC_LSCH2_DUTY_R.",
    +              "offset": 56,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DUTY_LSCH2_R": {
    +                    "description": "reg_duty_lsch2_r.",
    +                    "offset": 0,
    +                    "size": 19,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH3_CONF0": {
    +              "description": "LEDC_LSCH3_CONF0.",
    +              "offset": 60,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_SEL_LSCH3": {
    +                    "description": "reg_timer_sel_lsch3.",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "SIG_OUT_EN_LSCH3": {
    +                    "description": "reg_sig_out_en_lsch3.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "IDLE_LV_LSCH3": {
    +                    "description": "reg_idle_lv_lsch3.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "PARA_UP_LSCH3": {
    +                    "description": "reg_para_up_lsch3.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OVF_NUM_LSCH3": {
    +                    "description": "reg_ovf_num_lsch3.",
    +                    "offset": 5,
    +                    "size": 10
    +                  },
    +                  "OVF_CNT_EN_LSCH3": {
    +                    "description": "reg_ovf_cnt_en_lsch3.",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "OVF_CNT_RESET_LSCH3": {
    +                    "description": "reg_ovf_cnt_reset_lsch3.",
    +                    "offset": 16,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH3_HPOINT": {
    +              "description": "LEDC_LSCH3_HPOINT.",
    +              "offset": 64,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "HPOINT_LSCH3": {
    +                    "description": "reg_hpoint_lsch3.",
    +                    "offset": 0,
    +                    "size": 14
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH3_DUTY": {
    +              "description": "LEDC_LSCH3_DUTY.",
    +              "offset": 68,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DUTY_LSCH3": {
    +                    "description": "reg_duty_lsch3.",
    +                    "offset": 0,
    +                    "size": 19
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH3_CONF1": {
    +              "description": "LEDC_LSCH3_CONF1.",
    +              "offset": 72,
    +              "size": 32,
    +              "reset_value": 1073741824,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DUTY_SCALE_LSCH3": {
    +                    "description": "reg_duty_scale_lsch3.",
    +                    "offset": 0,
    +                    "size": 10
    +                  },
    +                  "DUTY_CYCLE_LSCH3": {
    +                    "description": "reg_duty_cycle_lsch3.",
    +                    "offset": 10,
    +                    "size": 10
    +                  },
    +                  "DUTY_NUM_LSCH3": {
    +                    "description": "reg_duty_num_lsch3.",
    +                    "offset": 20,
    +                    "size": 10
    +                  },
    +                  "DUTY_INC_LSCH3": {
    +                    "description": "reg_duty_inc_lsch3.",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "DUTY_START_LSCH3": {
    +                    "description": "reg_duty_start_lsch3.",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH3_DUTY_R": {
    +              "description": "LEDC_LSCH3_DUTY_R.",
    +              "offset": 76,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DUTY_LSCH3_R": {
    +                    "description": "reg_duty_lsch3_r.",
    +                    "offset": 0,
    +                    "size": 19,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH4_CONF0": {
    +              "description": "LEDC_LSCH4_CONF0.",
    +              "offset": 80,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_SEL_LSCH4": {
    +                    "description": "reg_timer_sel_lsch4.",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "SIG_OUT_EN_LSCH4": {
    +                    "description": "reg_sig_out_en_lsch4.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "IDLE_LV_LSCH4": {
    +                    "description": "reg_idle_lv_lsch4.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "PARA_UP_LSCH4": {
    +                    "description": "reg_para_up_lsch4.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OVF_NUM_LSCH4": {
    +                    "description": "reg_ovf_num_lsch4.",
    +                    "offset": 5,
    +                    "size": 10
    +                  },
    +                  "OVF_CNT_EN_LSCH4": {
    +                    "description": "reg_ovf_cnt_en_lsch4.",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "OVF_CNT_RESET_LSCH4": {
    +                    "description": "reg_ovf_cnt_reset_lsch4.",
    +                    "offset": 16,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH4_HPOINT": {
    +              "description": "LEDC_LSCH4_HPOINT.",
    +              "offset": 84,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "HPOINT_LSCH4": {
    +                    "description": "reg_hpoint_lsch4.",
    +                    "offset": 0,
    +                    "size": 14
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH4_DUTY": {
    +              "description": "LEDC_LSCH4_DUTY.",
    +              "offset": 88,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DUTY_LSCH4": {
    +                    "description": "reg_duty_lsch4.",
    +                    "offset": 0,
    +                    "size": 19
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH4_CONF1": {
    +              "description": "LEDC_LSCH4_CONF1.",
    +              "offset": 92,
    +              "size": 32,
    +              "reset_value": 1073741824,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DUTY_SCALE_LSCH4": {
    +                    "description": "reg_duty_scale_lsch4.",
    +                    "offset": 0,
    +                    "size": 10
    +                  },
    +                  "DUTY_CYCLE_LSCH4": {
    +                    "description": "reg_duty_cycle_lsch4.",
    +                    "offset": 10,
    +                    "size": 10
    +                  },
    +                  "DUTY_NUM_LSCH4": {
    +                    "description": "reg_duty_num_lsch4.",
    +                    "offset": 20,
    +                    "size": 10
    +                  },
    +                  "DUTY_INC_LSCH4": {
    +                    "description": "reg_duty_inc_lsch4.",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "DUTY_START_LSCH4": {
    +                    "description": "reg_duty_start_lsch4.",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH4_DUTY_R": {
    +              "description": "LEDC_LSCH4_DUTY_R.",
    +              "offset": 96,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DUTY_LSCH4_R": {
    +                    "description": "reg_duty_lsch4_r.",
    +                    "offset": 0,
    +                    "size": 19,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH5_CONF0": {
    +              "description": "LEDC_LSCH5_CONF0.",
    +              "offset": 100,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_SEL_LSCH5": {
    +                    "description": "reg_timer_sel_lsch5.",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "SIG_OUT_EN_LSCH5": {
    +                    "description": "reg_sig_out_en_lsch5.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "IDLE_LV_LSCH5": {
    +                    "description": "reg_idle_lv_lsch5.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "PARA_UP_LSCH5": {
    +                    "description": "reg_para_up_lsch5.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OVF_NUM_LSCH5": {
    +                    "description": "reg_ovf_num_lsch5.",
    +                    "offset": 5,
    +                    "size": 10
    +                  },
    +                  "OVF_CNT_EN_LSCH5": {
    +                    "description": "reg_ovf_cnt_en_lsch5.",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "OVF_CNT_RESET_LSCH5": {
    +                    "description": "reg_ovf_cnt_reset_lsch5.",
    +                    "offset": 16,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH5_HPOINT": {
    +              "description": "LEDC_LSCH5_HPOINT.",
    +              "offset": 104,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "HPOINT_LSCH5": {
    +                    "description": "reg_hpoint_lsch5.",
    +                    "offset": 0,
    +                    "size": 14
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH5_DUTY": {
    +              "description": "LEDC_LSCH5_DUTY.",
    +              "offset": 108,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DUTY_LSCH5": {
    +                    "description": "reg_duty_lsch5.",
    +                    "offset": 0,
    +                    "size": 19
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH5_CONF1": {
    +              "description": "LEDC_LSCH5_CONF1.",
    +              "offset": 112,
    +              "size": 32,
    +              "reset_value": 1073741824,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DUTY_SCALE_LSCH5": {
    +                    "description": "reg_duty_scale_lsch5.",
    +                    "offset": 0,
    +                    "size": 10
    +                  },
    +                  "DUTY_CYCLE_LSCH5": {
    +                    "description": "reg_duty_cycle_lsch5.",
    +                    "offset": 10,
    +                    "size": 10
    +                  },
    +                  "DUTY_NUM_LSCH5": {
    +                    "description": "reg_duty_num_lsch5.",
    +                    "offset": 20,
    +                    "size": 10
    +                  },
    +                  "DUTY_INC_LSCH5": {
    +                    "description": "reg_duty_inc_lsch5.",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "DUTY_START_LSCH5": {
    +                    "description": "reg_duty_start_lsch5.",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "LSCH5_DUTY_R": {
    +              "description": "LEDC_LSCH5_DUTY_R.",
    +              "offset": 116,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DUTY_LSCH5_R": {
    +                    "description": "reg_duty_lsch5_r.",
    +                    "offset": 0,
    +                    "size": 19,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "LSTIMER0_CONF": {
    +              "description": "LEDC_LSTIMER0_CONF.",
    +              "offset": 160,
    +              "size": 32,
    +              "reset_value": 8388608,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LSTIMER0_DUTY_RES": {
    +                    "description": "reg_lstimer0_duty_res.",
    +                    "offset": 0,
    +                    "size": 4
    +                  },
    +                  "CLK_DIV_LSTIMER0": {
    +                    "description": "reg_clk_div_lstimer0.",
    +                    "offset": 4,
    +                    "size": 18
    +                  },
    +                  "LSTIMER0_PAUSE": {
    +                    "description": "reg_lstimer0_pause.",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "LSTIMER0_RST": {
    +                    "description": "reg_lstimer0_rst.",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "TICK_SEL_LSTIMER0": {
    +                    "description": "reg_tick_sel_lstimer0.",
    +                    "offset": 24,
    +                    "size": 1
    +                  },
    +                  "LSTIMER0_PARA_UP": {
    +                    "description": "reg_lstimer0_para_up.",
    +                    "offset": 25,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "LSTIMER0_VALUE": {
    +              "description": "LEDC_LSTIMER0_VALUE.",
    +              "offset": 164,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LSTIMER0_CNT": {
    +                    "description": "reg_lstimer0_cnt.",
    +                    "offset": 0,
    +                    "size": 14,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "LSTIMER1_CONF": {
    +              "description": "LEDC_LSTIMER1_CONF.",
    +              "offset": 168,
    +              "size": 32,
    +              "reset_value": 8388608,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LSTIMER1_DUTY_RES": {
    +                    "description": "reg_lstimer1_duty_res.",
    +                    "offset": 0,
    +                    "size": 4
    +                  },
    +                  "CLK_DIV_LSTIMER1": {
    +                    "description": "reg_clk_div_lstimer1.",
    +                    "offset": 4,
    +                    "size": 18
    +                  },
    +                  "LSTIMER1_PAUSE": {
    +                    "description": "reg_lstimer1_pause.",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "LSTIMER1_RST": {
    +                    "description": "reg_lstimer1_rst.",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "TICK_SEL_LSTIMER1": {
    +                    "description": "reg_tick_sel_lstimer1.",
    +                    "offset": 24,
    +                    "size": 1
    +                  },
    +                  "LSTIMER1_PARA_UP": {
    +                    "description": "reg_lstimer1_para_up.",
    +                    "offset": 25,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "LSTIMER1_VALUE": {
    +              "description": "LEDC_LSTIMER1_VALUE.",
    +              "offset": 172,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LSTIMER1_CNT": {
    +                    "description": "reg_lstimer1_cnt.",
    +                    "offset": 0,
    +                    "size": 14,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "LSTIMER2_CONF": {
    +              "description": "LEDC_LSTIMER2_CONF.",
    +              "offset": 176,
    +              "size": 32,
    +              "reset_value": 8388608,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LSTIMER2_DUTY_RES": {
    +                    "description": "reg_lstimer2_duty_res.",
    +                    "offset": 0,
    +                    "size": 4
    +                  },
    +                  "CLK_DIV_LSTIMER2": {
    +                    "description": "reg_clk_div_lstimer2.",
    +                    "offset": 4,
    +                    "size": 18
    +                  },
    +                  "LSTIMER2_PAUSE": {
    +                    "description": "reg_lstimer2_pause.",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "LSTIMER2_RST": {
    +                    "description": "reg_lstimer2_rst.",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "TICK_SEL_LSTIMER2": {
    +                    "description": "reg_tick_sel_lstimer2.",
    +                    "offset": 24,
    +                    "size": 1
    +                  },
    +                  "LSTIMER2_PARA_UP": {
    +                    "description": "reg_lstimer2_para_up.",
    +                    "offset": 25,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "LSTIMER2_VALUE": {
    +              "description": "LEDC_LSTIMER2_VALUE.",
    +              "offset": 180,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LSTIMER2_CNT": {
    +                    "description": "reg_lstimer2_cnt.",
    +                    "offset": 0,
    +                    "size": 14,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "LSTIMER3_CONF": {
    +              "description": "LEDC_LSTIMER3_CONF.",
    +              "offset": 184,
    +              "size": 32,
    +              "reset_value": 8388608,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LSTIMER3_DUTY_RES": {
    +                    "description": "reg_lstimer3_duty_res.",
    +                    "offset": 0,
    +                    "size": 4
    +                  },
    +                  "CLK_DIV_LSTIMER3": {
    +                    "description": "reg_clk_div_lstimer3.",
    +                    "offset": 4,
    +                    "size": 18
    +                  },
    +                  "LSTIMER3_PAUSE": {
    +                    "description": "reg_lstimer3_pause.",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "LSTIMER3_RST": {
    +                    "description": "reg_lstimer3_rst.",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "TICK_SEL_LSTIMER3": {
    +                    "description": "reg_tick_sel_lstimer3.",
    +                    "offset": 24,
    +                    "size": 1
    +                  },
    +                  "LSTIMER3_PARA_UP": {
    +                    "description": "reg_lstimer3_para_up.",
    +                    "offset": 25,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "LSTIMER3_VALUE": {
    +              "description": "LEDC_LSTIMER3_VALUE.",
    +              "offset": 188,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LSTIMER3_CNT": {
    +                    "description": "reg_lstimer3_cnt.",
    +                    "offset": 0,
    +                    "size": 14,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_RAW": {
    +              "description": "LEDC_INT_RAW.",
    +              "offset": 192,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LSTIMER0_OVF_INT_RAW": {
    +                    "description": "reg_lstimer0_ovf_int_raw.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "LSTIMER1_OVF_INT_RAW": {
    +                    "description": "reg_lstimer1_ovf_int_raw.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "LSTIMER2_OVF_INT_RAW": {
    +                    "description": "reg_lstimer2_ovf_int_raw.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "LSTIMER3_OVF_INT_RAW": {
    +                    "description": "reg_lstimer3_ovf_int_raw.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DUTY_CHNG_END_LSCH0_INT_RAW": {
    +                    "description": "reg_duty_chng_end_lsch0_int_raw.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DUTY_CHNG_END_LSCH1_INT_RAW": {
    +                    "description": "reg_duty_chng_end_lsch1_int_raw.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DUTY_CHNG_END_LSCH2_INT_RAW": {
    +                    "description": "reg_duty_chng_end_lsch2_int_raw.",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DUTY_CHNG_END_LSCH3_INT_RAW": {
    +                    "description": "reg_duty_chng_end_lsch3_int_raw.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DUTY_CHNG_END_LSCH4_INT_RAW": {
    +                    "description": "reg_duty_chng_end_lsch4_int_raw.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DUTY_CHNG_END_LSCH5_INT_RAW": {
    +                    "description": "reg_duty_chng_end_lsch5_int_raw.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OVF_CNT_LSCH0_INT_RAW": {
    +                    "description": "reg_ovf_cnt_lsch0_int_raw.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OVF_CNT_LSCH1_INT_RAW": {
    +                    "description": "reg_ovf_cnt_lsch1_int_raw.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OVF_CNT_LSCH2_INT_RAW": {
    +                    "description": "reg_ovf_cnt_lsch2_int_raw.",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OVF_CNT_LSCH3_INT_RAW": {
    +                    "description": "reg_ovf_cnt_lsch3_int_raw.",
    +                    "offset": 13,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OVF_CNT_LSCH4_INT_RAW": {
    +                    "description": "reg_ovf_cnt_lsch4_int_raw.",
    +                    "offset": 14,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OVF_CNT_LSCH5_INT_RAW": {
    +                    "description": "reg_ovf_cnt_lsch5_int_raw.",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ST": {
    +              "description": "LEDC_INT_ST.",
    +              "offset": 196,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LSTIMER0_OVF_INT_ST": {
    +                    "description": "reg_lstimer0_ovf_int_st.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "LSTIMER1_OVF_INT_ST": {
    +                    "description": "reg_lstimer1_ovf_int_st.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "LSTIMER2_OVF_INT_ST": {
    +                    "description": "reg_lstimer2_ovf_int_st.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "LSTIMER3_OVF_INT_ST": {
    +                    "description": "reg_lstimer3_ovf_int_st.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DUTY_CHNG_END_LSCH0_INT_ST": {
    +                    "description": "reg_duty_chng_end_lsch0_int_st.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DUTY_CHNG_END_LSCH1_INT_ST": {
    +                    "description": "reg_duty_chng_end_lsch1_int_st.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DUTY_CHNG_END_LSCH2_INT_ST": {
    +                    "description": "reg_duty_chng_end_lsch2_int_st.",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DUTY_CHNG_END_LSCH3_INT_ST": {
    +                    "description": "reg_duty_chng_end_lsch3_int_st.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DUTY_CHNG_END_LSCH4_INT_ST": {
    +                    "description": "reg_duty_chng_end_lsch4_int_st.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DUTY_CHNG_END_LSCH5_INT_ST": {
    +                    "description": "reg_duty_chng_end_lsch5_int_st.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OVF_CNT_LSCH0_INT_ST": {
    +                    "description": "reg_ovf_cnt_lsch0_int_st.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OVF_CNT_LSCH1_INT_ST": {
    +                    "description": "reg_ovf_cnt_lsch1_int_st.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OVF_CNT_LSCH2_INT_ST": {
    +                    "description": "reg_ovf_cnt_lsch2_int_st.",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OVF_CNT_LSCH3_INT_ST": {
    +                    "description": "reg_ovf_cnt_lsch3_int_st.",
    +                    "offset": 13,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OVF_CNT_LSCH4_INT_ST": {
    +                    "description": "reg_ovf_cnt_lsch4_int_st.",
    +                    "offset": 14,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OVF_CNT_LSCH5_INT_ST": {
    +                    "description": "reg_ovf_cnt_lsch5_int_st.",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ENA": {
    +              "description": "LEDC_INT_ENA.",
    +              "offset": 200,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LSTIMER0_OVF_INT_ENA": {
    +                    "description": "reg_lstimer0_ovf_int_ena.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "LSTIMER1_OVF_INT_ENA": {
    +                    "description": "reg_lstimer1_ovf_int_ena.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "LSTIMER2_OVF_INT_ENA": {
    +                    "description": "reg_lstimer2_ovf_int_ena.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "LSTIMER3_OVF_INT_ENA": {
    +                    "description": "reg_lstimer3_ovf_int_ena.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "DUTY_CHNG_END_LSCH0_INT_ENA": {
    +                    "description": "reg_duty_chng_end_lsch0_int_ena.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "DUTY_CHNG_END_LSCH1_INT_ENA": {
    +                    "description": "reg_duty_chng_end_lsch1_int_ena.",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "DUTY_CHNG_END_LSCH2_INT_ENA": {
    +                    "description": "reg_duty_chng_end_lsch2_int_ena.",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "DUTY_CHNG_END_LSCH3_INT_ENA": {
    +                    "description": "reg_duty_chng_end_lsch3_int_ena.",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "DUTY_CHNG_END_LSCH4_INT_ENA": {
    +                    "description": "reg_duty_chng_end_lsch4_int_ena.",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "DUTY_CHNG_END_LSCH5_INT_ENA": {
    +                    "description": "reg_duty_chng_end_lsch5_int_ena.",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "OVF_CNT_LSCH0_INT_ENA": {
    +                    "description": "reg_ovf_cnt_lsch0_int_ena.",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "OVF_CNT_LSCH1_INT_ENA": {
    +                    "description": "reg_ovf_cnt_lsch1_int_ena.",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "OVF_CNT_LSCH2_INT_ENA": {
    +                    "description": "reg_ovf_cnt_lsch2_int_ena.",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "OVF_CNT_LSCH3_INT_ENA": {
    +                    "description": "reg_ovf_cnt_lsch3_int_ena.",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "OVF_CNT_LSCH4_INT_ENA": {
    +                    "description": "reg_ovf_cnt_lsch4_int_ena.",
    +                    "offset": 14,
    +                    "size": 1
    +                  },
    +                  "OVF_CNT_LSCH5_INT_ENA": {
    +                    "description": "reg_ovf_cnt_lsch5_int_ena.",
    +                    "offset": 15,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INT_CLR": {
    +              "description": "LEDC_INT_CLR.",
    +              "offset": 204,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LSTIMER0_OVF_INT_CLR": {
    +                    "description": "reg_lstimer0_ovf_int_clr.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "LSTIMER1_OVF_INT_CLR": {
    +                    "description": "reg_lstimer1_ovf_int_clr.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "LSTIMER2_OVF_INT_CLR": {
    +                    "description": "reg_lstimer2_ovf_int_clr.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "LSTIMER3_OVF_INT_CLR": {
    +                    "description": "reg_lstimer3_ovf_int_clr.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "DUTY_CHNG_END_LSCH0_INT_CLR": {
    +                    "description": "reg_duty_chng_end_lsch0_int_clr.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "DUTY_CHNG_END_LSCH1_INT_CLR": {
    +                    "description": "reg_duty_chng_end_lsch1_int_clr.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "DUTY_CHNG_END_LSCH2_INT_CLR": {
    +                    "description": "reg_duty_chng_end_lsch2_int_clr.",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "DUTY_CHNG_END_LSCH3_INT_CLR": {
    +                    "description": "reg_duty_chng_end_lsch3_int_clr.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "DUTY_CHNG_END_LSCH4_INT_CLR": {
    +                    "description": "reg_duty_chng_end_lsch4_int_clr.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "DUTY_CHNG_END_LSCH5_INT_CLR": {
    +                    "description": "reg_duty_chng_end_lsch5_int_clr.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OVF_CNT_LSCH0_INT_CLR": {
    +                    "description": "reg_ovf_cnt_lsch0_int_clr.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OVF_CNT_LSCH1_INT_CLR": {
    +                    "description": "reg_ovf_cnt_lsch1_int_clr.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OVF_CNT_LSCH2_INT_CLR": {
    +                    "description": "reg_ovf_cnt_lsch2_int_clr.",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OVF_CNT_LSCH3_INT_CLR": {
    +                    "description": "reg_ovf_cnt_lsch3_int_clr.",
    +                    "offset": 13,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OVF_CNT_LSCH4_INT_CLR": {
    +                    "description": "reg_ovf_cnt_lsch4_int_clr.",
    +                    "offset": 14,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OVF_CNT_LSCH5_INT_CLR": {
    +                    "description": "reg_ovf_cnt_lsch5_int_clr.",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CONF": {
    +              "description": "LEDC_CONF.",
    +              "offset": 208,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "APB_CLK_SEL": {
    +                    "description": "reg_apb_clk_sel.",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "CLK_EN": {
    +                    "description": "reg_clk_en.",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DATE": {
    +              "description": "LEDC_DATE.",
    +              "offset": 252,
    +              "size": 32,
    +              "reset_value": 419829504,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LEDC_DATE": {
    +                    "description": "reg_ledc_date.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "RMT": {
    +        "description": "Remote Control Peripheral",
    +        "children": {
    +          "registers": {
    +            "CH0DATA": {
    +              "description": "RMT_CH0DATA_REG.",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATA": {
    +                    "description": "Reserved.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "CH1DATA": {
    +              "description": "RMT_CH1DATA_REG.",
    +              "offset": 4,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATA": {
    +                    "description": "Reserved.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "CH2DATA": {
    +              "description": "RMT_CH2DATA_REG.",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATA": {
    +                    "description": "Reserved.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "CH3DATA": {
    +              "description": "RMT_CH3DATA_REG.",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATA": {
    +                    "description": "Reserved.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "CH2CONF1": {
    +              "description": "RMT_CH2CONF1_REG.",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 488,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_EN": {
    +                    "description": "reg_rx_en_ch2.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "MEM_WR_RST": {
    +                    "description": "reg_mem_wr_rst_ch2.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "APB_MEM_RST": {
    +                    "description": "reg_apb_mem_rst_ch2.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "MEM_OWNER": {
    +                    "description": "reg_mem_owner_ch2.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "RX_FILTER_EN": {
    +                    "description": "reg_rx_filter_en_ch2.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "RX_FILTER_THRES": {
    +                    "description": "reg_rx_filter_thres_ch2.",
    +                    "offset": 5,
    +                    "size": 8
    +                  },
    +                  "MEM_RX_WRAP_EN": {
    +                    "description": "reg_mem_rx_wrap_en_ch2.",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "AFIFO_RST": {
    +                    "description": "reg_afifo_rst_ch2.",
    +                    "offset": 14,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "CONF_UPDATE": {
    +                    "description": "reg_conf_update_ch2.",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CH3CONF1": {
    +              "description": "RMT_CH3CONF1_REG.",
    +              "offset": 36,
    +              "size": 32,
    +              "reset_value": 488,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_EN": {
    +                    "description": "reg_rx_en_ch3.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "MEM_WR_RST": {
    +                    "description": "reg_mem_wr_rst_ch3.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "APB_MEM_RST": {
    +                    "description": "reg_apb_mem_rst_ch3.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "MEM_OWNER": {
    +                    "description": "reg_mem_owner_ch3.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "RX_FILTER_EN": {
    +                    "description": "reg_rx_filter_en_ch3.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "RX_FILTER_THRES": {
    +                    "description": "reg_rx_filter_thres_ch3.",
    +                    "offset": 5,
    +                    "size": 8
    +                  },
    +                  "MEM_RX_WRAP_EN": {
    +                    "description": "reg_mem_rx_wrap_en_ch3.",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "AFIFO_RST": {
    +                    "description": "reg_afifo_rst_ch3.",
    +                    "offset": 14,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "CONF_UPDATE": {
    +                    "description": "reg_conf_update_ch3.",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CH0STATUS": {
    +              "description": "RMT_CH0STATUS_REG.",
    +              "offset": 40,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "MEM_RADDR_EX": {
    +                    "description": "reg_mem_raddr_ex_ch0.",
    +                    "offset": 0,
    +                    "size": 9,
    +                    "access": "read-only"
    +                  },
    +                  "STATE": {
    +                    "description": "reg_state_ch0.",
    +                    "offset": 9,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "APB_MEM_WADDR": {
    +                    "description": "reg_apb_mem_waddr_ch0.",
    +                    "offset": 12,
    +                    "size": 9,
    +                    "access": "read-only"
    +                  },
    +                  "APB_MEM_RD_ERR": {
    +                    "description": "reg_apb_mem_rd_err_ch0.",
    +                    "offset": 21,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "MEM_EMPTY": {
    +                    "description": "reg_mem_empty_ch0.",
    +                    "offset": 22,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "APB_MEM_WR_ERR": {
    +                    "description": "reg_apb_mem_wr_err_ch0.",
    +                    "offset": 23,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "APB_MEM_RADDR": {
    +                    "description": "reg_apb_mem_raddr_ch0.",
    +                    "offset": 24,
    +                    "size": 8,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CH1STATUS": {
    +              "description": "RMT_CH1STATUS_REG.",
    +              "offset": 44,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "MEM_RADDR_EX": {
    +                    "description": "reg_mem_raddr_ex_ch1.",
    +                    "offset": 0,
    +                    "size": 9,
    +                    "access": "read-only"
    +                  },
    +                  "STATE": {
    +                    "description": "reg_state_ch1.",
    +                    "offset": 9,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "APB_MEM_WADDR": {
    +                    "description": "reg_apb_mem_waddr_ch1.",
    +                    "offset": 12,
    +                    "size": 9,
    +                    "access": "read-only"
    +                  },
    +                  "APB_MEM_RD_ERR": {
    +                    "description": "reg_apb_mem_rd_err_ch1.",
    +                    "offset": 21,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "MEM_EMPTY": {
    +                    "description": "reg_mem_empty_ch1.",
    +                    "offset": 22,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "APB_MEM_WR_ERR": {
    +                    "description": "reg_apb_mem_wr_err_ch1.",
    +                    "offset": 23,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "APB_MEM_RADDR": {
    +                    "description": "reg_apb_mem_raddr_ch1.",
    +                    "offset": 24,
    +                    "size": 8,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CH2STATUS": {
    +              "description": "RMT_CH2STATUS_REG.",
    +              "offset": 48,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "MEM_WADDR_EX": {
    +                    "description": "reg_mem_waddr_ex_ch2.",
    +                    "offset": 0,
    +                    "size": 9,
    +                    "access": "read-only"
    +                  },
    +                  "APB_MEM_RADDR": {
    +                    "description": "reg_apb_mem_raddr_ch2.",
    +                    "offset": 12,
    +                    "size": 9,
    +                    "access": "read-only"
    +                  },
    +                  "STATE": {
    +                    "description": "reg_state_ch2.",
    +                    "offset": 22,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "MEM_OWNER_ERR": {
    +                    "description": "reg_mem_owner_err_ch2.",
    +                    "offset": 25,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "MEM_FULL": {
    +                    "description": "reg_mem_full_ch2.",
    +                    "offset": 26,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "APB_MEM_RD_ERR": {
    +                    "description": "reg_apb_mem_rd_err_ch2.",
    +                    "offset": 27,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CH3STATUS": {
    +              "description": "RMT_CH3STATUS_REG.",
    +              "offset": 52,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "MEM_WADDR_EX": {
    +                    "description": "reg_mem_waddr_ex_ch3.",
    +                    "offset": 0,
    +                    "size": 9,
    +                    "access": "read-only"
    +                  },
    +                  "APB_MEM_RADDR": {
    +                    "description": "reg_apb_mem_raddr_ch3.",
    +                    "offset": 12,
    +                    "size": 9,
    +                    "access": "read-only"
    +                  },
    +                  "STATE": {
    +                    "description": "reg_state_ch3.",
    +                    "offset": 22,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "MEM_OWNER_ERR": {
    +                    "description": "reg_mem_owner_err_ch3.",
    +                    "offset": 25,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "MEM_FULL": {
    +                    "description": "reg_mem_full_ch3.",
    +                    "offset": 26,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "APB_MEM_RD_ERR": {
    +                    "description": "reg_apb_mem_rd_err_ch3.",
    +                    "offset": 27,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_RAW": {
    +              "description": "RMT_INT_RAW_REG.",
    +              "offset": 56,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CH2_RX_THR_EVENT_INT_RAW": {
    +                    "description": "reg_ch2_rx_thr_event_int_raw.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CH3_RX_THR_EVENT_INT_RAW": {
    +                    "description": "reg_ch3_rx_thr_event_int_raw.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ST": {
    +              "description": "RMT_INT_ST_REG.",
    +              "offset": 60,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CH2_RX_THR_EVENT_INT_ST": {
    +                    "description": "reg_ch2_rx_thr_event_int_st.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CH3_RX_THR_EVENT_INT_ST": {
    +                    "description": "reg_ch3_rx_thr_event_int_st.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ENA": {
    +              "description": "RMT_INT_ENA_REG.",
    +              "offset": 64,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CH2_RX_THR_EVENT_INT_ENA": {
    +                    "description": "reg_ch2_rx_thr_event_int_ena.",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "CH3_RX_THR_EVENT_INT_ENA": {
    +                    "description": "reg_ch3_rx_thr_event_int_ena.",
    +                    "offset": 11,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INT_CLR": {
    +              "description": "RMT_INT_CLR_REG.",
    +              "offset": 68,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CH2_RX_THR_EVENT_INT_CLR": {
    +                    "description": "reg_ch2_rx_thr_event_int_clr.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "CH3_RX_THR_EVENT_INT_CLR": {
    +                    "description": "reg_ch3_rx_thr_event_int_clr.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CH0CARRIER_DUTY": {
    +              "description": "RMT_CH0CARRIER_DUTY_REG.",
    +              "offset": 72,
    +              "size": 32,
    +              "reset_value": 4194368,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CARRIER_LOW": {
    +                    "description": "reg_carrier_low_ch0.",
    +                    "offset": 0,
    +                    "size": 16
    +                  },
    +                  "CARRIER_HIGH": {
    +                    "description": "reg_carrier_high_ch0.",
    +                    "offset": 16,
    +                    "size": 16
    +                  }
    +                }
    +              }
    +            },
    +            "CH1CARRIER_DUTY": {
    +              "description": "RMT_CH1CARRIER_DUTY_REG.",
    +              "offset": 76,
    +              "size": 32,
    +              "reset_value": 4194368,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CARRIER_LOW": {
    +                    "description": "reg_carrier_low_ch1.",
    +                    "offset": 0,
    +                    "size": 16
    +                  },
    +                  "CARRIER_HIGH": {
    +                    "description": "reg_carrier_high_ch1.",
    +                    "offset": 16,
    +                    "size": 16
    +                  }
    +                }
    +              }
    +            },
    +            "CH2_RX_CARRIER_RM": {
    +              "description": "RMT_CH2_RX_CARRIER_RM_REG.",
    +              "offset": 80,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CARRIER_LOW_THRES": {
    +                    "description": "reg_carrier_low_thres_ch2.",
    +                    "offset": 0,
    +                    "size": 16
    +                  },
    +                  "CARRIER_HIGH_THRES": {
    +                    "description": "reg_carrier_high_thres_ch2.",
    +                    "offset": 16,
    +                    "size": 16
    +                  }
    +                }
    +              }
    +            },
    +            "CH3_RX_CARRIER_RM": {
    +              "description": "RMT_CH3_RX_CARRIER_RM_REG.",
    +              "offset": 84,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CARRIER_LOW_THRES": {
    +                    "description": "reg_carrier_low_thres_ch3.",
    +                    "offset": 0,
    +                    "size": 16
    +                  },
    +                  "CARRIER_HIGH_THRES": {
    +                    "description": "reg_carrier_high_thres_ch3.",
    +                    "offset": 16,
    +                    "size": 16
    +                  }
    +                }
    +              }
    +            },
    +            "SYS_CONF": {
    +              "description": "RMT_SYS_CONF_REG.",
    +              "offset": 104,
    +              "size": 32,
    +              "reset_value": 83886096,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "APB_FIFO_MASK": {
    +                    "description": "reg_apb_fifo_mask.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "MEM_CLK_FORCE_ON": {
    +                    "description": "reg_mem_clk_force_on.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "MEM_FORCE_PD": {
    +                    "description": "reg_rmt_mem_force_pd.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "MEM_FORCE_PU": {
    +                    "description": "reg_rmt_mem_force_pu.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "SCLK_DIV_NUM": {
    +                    "description": "reg_rmt_sclk_div_num.",
    +                    "offset": 4,
    +                    "size": 8
    +                  },
    +                  "SCLK_DIV_A": {
    +                    "description": "reg_rmt_sclk_div_a.",
    +                    "offset": 12,
    +                    "size": 6
    +                  },
    +                  "SCLK_DIV_B": {
    +                    "description": "reg_rmt_sclk_div_b.",
    +                    "offset": 18,
    +                    "size": 6
    +                  },
    +                  "SCLK_SEL": {
    +                    "description": "reg_rmt_sclk_sel.",
    +                    "offset": 24,
    +                    "size": 2
    +                  },
    +                  "SCLK_ACTIVE": {
    +                    "description": "reg_rmt_sclk_active.",
    +                    "offset": 26,
    +                    "size": 1
    +                  },
    +                  "CLK_EN": {
    +                    "description": "reg_clk_en.",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "TX_SIM": {
    +              "description": "RMT_TX_SIM_REG.",
    +              "offset": 108,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_SIM_CH0": {
    +                    "description": "reg_rmt_tx_sim_ch0.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "TX_SIM_CH1": {
    +                    "description": "reg_rmt_tx_sim_ch1.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "TX_SIM_EN": {
    +                    "description": "reg_rmt_tx_sim_en.",
    +                    "offset": 2,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "REF_CNT_RST": {
    +              "description": "RMT_REF_CNT_RST_REG.",
    +              "offset": 112,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CH0": {
    +                    "description": "reg_ref_cnt_rst_ch0.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "CH1": {
    +                    "description": "reg_ref_cnt_rst_ch1.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "CH2": {
    +                    "description": "reg_ref_cnt_rst_ch2.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "CH3": {
    +                    "description": "reg_ref_cnt_rst_ch3.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DATE": {
    +              "description": "RMT_DATE_REG.",
    +              "offset": 204,
    +              "size": 32,
    +              "reset_value": 33579569,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATE": {
    +                    "description": "reg_rmt_date.",
    +                    "offset": 0,
    +                    "size": 28
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "RNG": {
    +        "description": "Hardware random number generator",
    +        "children": {
    +          "registers": {
    +            "DATA": {
    +              "description": "Random number data",
    +              "offset": 176,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295
    +            }
    +          }
    +        }
    +      },
    +      "RSA": {
    +        "description": "RSA (Rivest Shamir Adleman) Accelerator",
    +        "children": {
    +          "registers": {
    +            "M_MEM": {
    +              "description": "The memory that stores M",
    +              "offset": 0,
    +              "size": 8,
    +              "count": 16,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295
    +            },
    +            "Z_MEM": {
    +              "description": "The memory that stores Z",
    +              "offset": 512,
    +              "size": 8,
    +              "count": 16,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295
    +            },
    +            "Y_MEM": {
    +              "description": "The memory that stores Y",
    +              "offset": 1024,
    +              "size": 8,
    +              "count": 16,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295
    +            },
    +            "X_MEM": {
    +              "description": "The memory that stores X",
    +              "offset": 1536,
    +              "size": 8,
    +              "count": 16,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295
    +            },
    +            "M_PRIME": {
    +              "description": "RSA M_prime register",
    +              "offset": 2048,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "M_PRIME": {
    +                    "description": "Those bits stores m'",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "MODE": {
    +              "description": "RSA mode register",
    +              "offset": 2052,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "MODE": {
    +                    "description": "rsa mode (rsa length).",
    +                    "offset": 0,
    +                    "size": 7
    +                  }
    +                }
    +              }
    +            },
    +            "QUERY_CLEAN": {
    +              "description": "RSA query clean register",
    +              "offset": 2056,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "QUERY_CLEAN": {
    +                    "description": "query clean",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "SET_START_MODEXP": {
    +              "description": "RSA modular exponentiation trigger register.",
    +              "offset": 2060,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SET_START_MODEXP": {
    +                    "description": "start modular exponentiation",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "SET_START_MODMULT": {
    +              "description": "RSA modular multiplication trigger register.",
    +              "offset": 2064,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SET_START_MODMULT": {
    +                    "description": "start modular multiplication",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "SET_START_MULT": {
    +              "description": "RSA normal multiplication trigger register.",
    +              "offset": 2068,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SET_START_MULT": {
    +                    "description": "start multiplicaiton",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "QUERY_IDLE": {
    +              "description": "RSA query idle register",
    +              "offset": 2072,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "QUERY_IDLE": {
    +                    "description": "query rsa idle. 1'b0: busy, 1'b1: idle",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_CLR": {
    +              "description": "RSA interrupt clear register",
    +              "offset": 2076,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CLEAR_INTERRUPT": {
    +                    "description": "set this bit to clear RSA interrupt.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CONSTANT_TIME": {
    +              "description": "RSA constant time option register",
    +              "offset": 2080,
    +              "size": 32,
    +              "reset_value": 1,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CONSTANT_TIME": {
    +                    "description": "Configure this bit to 0 for acceleration. 0: with acceleration, 1: without acceleration(defalut).",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "SEARCH_ENABLE": {
    +              "description": "RSA search option",
    +              "offset": 2084,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SEARCH_ENABLE": {
    +                    "description": "Configure this bit to 1 for acceleration. 1: with acceleration, 0: without acceleration(default). This option should be used together with RSA_SEARCH_POS.",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "SEARCH_POS": {
    +              "description": "RSA search position configure register",
    +              "offset": 2088,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SEARCH_POS": {
    +                    "description": "Configure this field to set search position. This field should be used together with RSA_SEARCH_ENABLE. The field is only meaningful when RSA_SEARCH_ENABLE is high.",
    +                    "offset": 0,
    +                    "size": 12
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ENA": {
    +              "description": "RSA interrupt enable register",
    +              "offset": 2092,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INT_ENA": {
    +                    "description": "Set this bit to enable interrupt that occurs when rsa calculation is done. 1'b0: disable, 1'b1: enable(default).",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DATE": {
    +              "description": "RSA version control register",
    +              "offset": 2096,
    +              "size": 32,
    +              "reset_value": 538969624,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATE": {
    +                    "description": "rsa version information",
    +                    "offset": 0,
    +                    "size": 30
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "RTC_CNTL": {
    +        "description": "Real-Time Clock Control",
    +        "children": {
    +          "registers": {
    +            "OPTIONS0": {
    +              "description": "rtc configure register",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 469803008,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SW_STALL_APPCPU_C0": {
    +                    "description": "{reg_sw_stall_appcpu_c1[5:0],  reg_sw_stall_appcpu_c0[1:0]} == 0x86 will stall APP CPU",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "SW_STALL_PROCPU_C0": {
    +                    "description": "{reg_sw_stall_procpu_c1[5:0],  reg_sw_stall_procpu_c0[1:0]} == 0x86 will stall PRO CPU",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "SW_APPCPU_RST": {
    +                    "description": "APP CPU SW reset",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SW_PROCPU_RST": {
    +                    "description": "PRO CPU SW reset",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "BB_I2C_FORCE_PD": {
    +                    "description": "BB_I2C force power down",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "BB_I2C_FORCE_PU": {
    +                    "description": "BB_I2C force power up",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "BBPLL_I2C_FORCE_PD": {
    +                    "description": "BB_PLL _I2C force power down",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "BBPLL_I2C_FORCE_PU": {
    +                    "description": "BB_PLL_I2C force power up",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "BBPLL_FORCE_PD": {
    +                    "description": "BB_PLL force power down",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "BBPLL_FORCE_PU": {
    +                    "description": "BB_PLL force power up",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "XTL_FORCE_PD": {
    +                    "description": "crystall force power down",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "XTL_FORCE_PU": {
    +                    "description": "crystall force power up",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "XTL_EN_WAIT": {
    +                    "description": "wait bias_sleep and current source wakeup",
    +                    "offset": 14,
    +                    "size": 4
    +                  },
    +                  "XTL_EXT_CTR_SEL": {
    +                    "description": "analog configure",
    +                    "offset": 20,
    +                    "size": 3
    +                  },
    +                  "XTL_FORCE_ISO": {
    +                    "description": "analog configure",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "PLL_FORCE_ISO": {
    +                    "description": "analog configure",
    +                    "offset": 24,
    +                    "size": 1
    +                  },
    +                  "ANALOG_FORCE_ISO": {
    +                    "description": "analog configure",
    +                    "offset": 25,
    +                    "size": 1
    +                  },
    +                  "XTL_FORCE_NOISO": {
    +                    "description": "analog configure",
    +                    "offset": 26,
    +                    "size": 1
    +                  },
    +                  "PLL_FORCE_NOISO": {
    +                    "description": "analog configure",
    +                    "offset": 27,
    +                    "size": 1
    +                  },
    +                  "ANALOG_FORCE_NOISO": {
    +                    "description": "analog configure",
    +                    "offset": 28,
    +                    "size": 1
    +                  },
    +                  "DG_WRAP_FORCE_RST": {
    +                    "description": "digital wrap force reset in deep sleep",
    +                    "offset": 29,
    +                    "size": 1
    +                  },
    +                  "DG_WRAP_FORCE_NORST": {
    +                    "description": "digital core force no reset in deep sleep",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "SW_SYS_RST": {
    +                    "description": "SW system reset",
    +                    "offset": 31,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "SLP_TIMER0": {
    +              "description": "rtc configure register",
    +              "offset": 4,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SLP_VAL_LO": {
    +                    "description": "configure the  sleep time",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "SLP_TIMER1": {
    +              "description": "rtc configure register",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SLP_VAL_HI": {
    +                    "description": "RTC sleep timer high 16 bits",
    +                    "offset": 0,
    +                    "size": 16
    +                  },
    +                  "RTC_MAIN_TIMER_ALARM_EN": {
    +                    "description": "timer alarm enable bit",
    +                    "offset": 16,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "TIME_UPDATE": {
    +              "description": "rtc configure register",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_SYS_STALL": {
    +                    "description": "Enable to record system stall time",
    +                    "offset": 27,
    +                    "size": 1
    +                  },
    +                  "TIMER_XTL_OFF": {
    +                    "description": "Enable to record 40M XTAL OFF time",
    +                    "offset": 28,
    +                    "size": 1
    +                  },
    +                  "TIMER_SYS_RST": {
    +                    "description": "enable to record system reset time",
    +                    "offset": 29,
    +                    "size": 1
    +                  },
    +                  "RTC_TIME_UPDATE": {
    +                    "description": "Set 1: to update register with RTC timer",
    +                    "offset": 31,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "TIME_LOW0": {
    +              "description": "rtc configure register",
    +              "offset": 16,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_TIMER_VALUE0_LOW": {
    +                    "description": "RTC timer low 32 bits",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "TIME_HIGH0": {
    +              "description": "rtc configure register",
    +              "offset": 20,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_TIMER_VALUE0_HIGH": {
    +                    "description": "RTC timer high 16 bits",
    +                    "offset": 0,
    +                    "size": 16,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "STATE0": {
    +              "description": "rtc configure register",
    +              "offset": 24,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_SW_CPU_INT": {
    +                    "description": "rtc software interrupt to main cpu",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RTC_SLP_REJECT_CAUSE_CLR": {
    +                    "description": "clear rtc sleep reject cause",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "APB2RTC_BRIDGE_SEL": {
    +                    "description": "1: APB to RTC using bridge",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "SDIO_ACTIVE_IND": {
    +                    "description": "SDIO active indication",
    +                    "offset": 28,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SLP_WAKEUP": {
    +                    "description": "leep wakeup bit",
    +                    "offset": 29,
    +                    "size": 1
    +                  },
    +                  "SLP_REJECT": {
    +                    "description": "leep reject bit",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "SLEEP_EN": {
    +                    "description": "sleep enable bit",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "TIMER1": {
    +              "description": "rtc configure register",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 672400387,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_STALL_EN": {
    +                    "description": "CPU stall enable bit",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "CPU_STALL_WAIT": {
    +                    "description": "CPU stall wait cycles in fast_clk_rtc",
    +                    "offset": 1,
    +                    "size": 5
    +                  },
    +                  "CK8M_WAIT": {
    +                    "description": "CK8M wait cycles in slow_clk_rtc",
    +                    "offset": 6,
    +                    "size": 8
    +                  },
    +                  "XTL_BUF_WAIT": {
    +                    "description": "XTAL wait cycles in slow_clk_rtc",
    +                    "offset": 14,
    +                    "size": 10
    +                  },
    +                  "PLL_BUF_WAIT": {
    +                    "description": "PLL wait cycles in slow_clk_rtc",
    +                    "offset": 24,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "TIMER2": {
    +              "description": "rtc configure register",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 16777216,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "MIN_TIME_CK8M_OFF": {
    +                    "description": "minimal cycles in slow_clk_rtc for CK8M in power down state",
    +                    "offset": 24,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "TIMER3": {
    +              "description": "rtc configure register",
    +              "offset": 36,
    +              "size": 32,
    +              "reset_value": 168299016,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WIFI_WAIT_TIMER": {
    +                    "description": "wifi power domain wakeup time",
    +                    "offset": 0,
    +                    "size": 9
    +                  },
    +                  "WIFI_POWERUP_TIMER": {
    +                    "description": "wifi power domain power on time",
    +                    "offset": 9,
    +                    "size": 7
    +                  },
    +                  "BT_WAIT_TIMER": {
    +                    "description": "bt power domain wakeup time",
    +                    "offset": 16,
    +                    "size": 9
    +                  },
    +                  "BT_POWERUP_TIMER": {
    +                    "description": "bt power domain power on time",
    +                    "offset": 25,
    +                    "size": 7
    +                  }
    +                }
    +              }
    +            },
    +            "TIMER4": {
    +              "description": "rtc configure register",
    +              "offset": 40,
    +              "size": 32,
    +              "reset_value": 270535176,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_TOP_WAIT_TIMER": {
    +                    "description": "cpu top power domain wakeup time",
    +                    "offset": 0,
    +                    "size": 9
    +                  },
    +                  "CPU_TOP_POWERUP_TIMER": {
    +                    "description": "cpu top power domain power on time",
    +                    "offset": 9,
    +                    "size": 7
    +                  },
    +                  "DG_WRAP_WAIT_TIMER": {
    +                    "description": "digital wrap power domain wakeup time",
    +                    "offset": 16,
    +                    "size": 9
    +                  },
    +                  "DG_WRAP_POWERUP_TIMER": {
    +                    "description": "digital wrap power domain power on time",
    +                    "offset": 25,
    +                    "size": 7
    +                  }
    +                }
    +              }
    +            },
    +            "TIMER5": {
    +              "description": "rtc configure register",
    +              "offset": 44,
    +              "size": 32,
    +              "reset_value": 32768,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "MIN_SLP_VAL": {
    +                    "description": "minimal sleep cycles in slow_clk_rtc",
    +                    "offset": 8,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "TIMER6": {
    +              "description": "rtc configure register",
    +              "offset": 48,
    +              "size": 32,
    +              "reset_value": 168296448,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DG_PERI_WAIT_TIMER": {
    +                    "description": "digital peri power domain wakeup time",
    +                    "offset": 16,
    +                    "size": 9
    +                  },
    +                  "DG_PERI_POWERUP_TIMER": {
    +                    "description": "digital peri power domain power on time",
    +                    "offset": 25,
    +                    "size": 7
    +                  }
    +                }
    +              }
    +            },
    +            "ANA_CONF": {
    +              "description": "rtc configure register",
    +              "offset": 52,
    +              "size": 32,
    +              "reset_value": 12845056,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RESET_POR_FORCE_PD": {
    +                    "description": "force no bypass i2c power on reset",
    +                    "offset": 18,
    +                    "size": 1
    +                  },
    +                  "RESET_POR_FORCE_PU": {
    +                    "description": "force bypass i2c power on reset",
    +                    "offset": 19,
    +                    "size": 1
    +                  },
    +                  "GLITCH_RST_EN": {
    +                    "description": "enable glitch reset",
    +                    "offset": 20,
    +                    "size": 1
    +                  },
    +                  "SAR_I2C_PU": {
    +                    "description": "PLLA force power up",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "PLLA_FORCE_PD": {
    +                    "description": "PLLA force power down",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "PLLA_FORCE_PU": {
    +                    "description": "PLLA force power up",
    +                    "offset": 24,
    +                    "size": 1
    +                  },
    +                  "BBPLL_CAL_SLP_START": {
    +                    "description": "start BBPLL calibration during sleep",
    +                    "offset": 25,
    +                    "size": 1
    +                  },
    +                  "PVTMON_PU": {
    +                    "description": "1: PVTMON power up",
    +                    "offset": 26,
    +                    "size": 1
    +                  },
    +                  "TXRF_I2C_PU": {
    +                    "description": "1: TXRF_I2C power up",
    +                    "offset": 27,
    +                    "size": 1
    +                  },
    +                  "RFRX_PBUS_PU": {
    +                    "description": "1: RFRX_PBUS power up",
    +                    "offset": 28,
    +                    "size": 1
    +                  },
    +                  "CKGEN_I2C_PU": {
    +                    "description": "1: CKGEN_I2C power up",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "PLL_I2C_PU": {
    +                    "description": "power up pll i2c",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "RESET_STATE": {
    +              "description": "rtc configure register",
    +              "offset": 56,
    +              "size": 32,
    +              "reset_value": 12288,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RESET_CAUSE_PROCPU": {
    +                    "description": "reset cause of PRO CPU",
    +                    "offset": 0,
    +                    "size": 6,
    +                    "access": "read-only"
    +                  },
    +                  "RESET_CAUSE_APPCPU": {
    +                    "description": "reset cause of APP CPU",
    +                    "offset": 6,
    +                    "size": 6,
    +                    "access": "read-only"
    +                  },
    +                  "STAT_VECTOR_SEL_APPCPU": {
    +                    "description": "APP CPU state vector sel",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "STAT_VECTOR_SEL_PROCPU": {
    +                    "description": "PRO CPU state vector sel",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "ALL_RESET_FLAG_PROCPU": {
    +                    "description": "PRO CPU reset_flag",
    +                    "offset": 14,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "ALL_RESET_FLAG_APPCPU": {
    +                    "description": "APP CPU reset flag",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "ALL_RESET_FLAG_CLR_PROCPU": {
    +                    "description": "clear PRO CPU reset_flag",
    +                    "offset": 16,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "ALL_RESET_FLAG_CLR_APPCPU": {
    +                    "description": "clear APP CPU reset flag",
    +                    "offset": 17,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OCD_HALT_ON_RESET_APPCPU": {
    +                    "description": "APPCPU OcdHaltOnReset",
    +                    "offset": 18,
    +                    "size": 1
    +                  },
    +                  "OCD_HALT_ON_RESET_PROCPU": {
    +                    "description": "PROCPU OcdHaltOnReset",
    +                    "offset": 19,
    +                    "size": 1
    +                  },
    +                  "JTAG_RESET_FLAG_PROCPU": {
    +                    "description": "configure jtag reset configure",
    +                    "offset": 20,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "JTAG_RESET_FLAG_APPCPU": {
    +                    "description": "configure jtag reset configure",
    +                    "offset": 21,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "JTAG_RESET_FLAG_CLR_PROCPU": {
    +                    "description": "configure jtag reset configure",
    +                    "offset": 22,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "JTAG_RESET_FLAG_CLR_APPCPU": {
    +                    "description": "configure jtag reset configure",
    +                    "offset": 23,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RTC_DRESET_MASK_APPCPU": {
    +                    "description": "configure dreset configure",
    +                    "offset": 24,
    +                    "size": 1
    +                  },
    +                  "RTC_DRESET_MASK_PROCPU": {
    +                    "description": "configure dreset configure",
    +                    "offset": 25,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "WAKEUP_STATE": {
    +              "description": "rtc configure register",
    +              "offset": 60,
    +              "size": 32,
    +              "reset_value": 393216,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_WAKEUP_ENA": {
    +                    "description": "wakeup enable bitmap",
    +                    "offset": 15,
    +                    "size": 17
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ENA_RTC": {
    +              "description": "rtc configure register",
    +              "offset": 64,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SLP_WAKEUP_INT_ENA": {
    +                    "description": "enable sleep wakeup interrupt",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "SLP_REJECT_INT_ENA": {
    +                    "description": "enable sleep reject interrupt",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "RTC_WDT_INT_ENA": {
    +                    "description": "enable RTC WDT interrupt",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "RTC_BROWN_OUT_INT_ENA": {
    +                    "description": "enable brown out interrupt",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "RTC_MAIN_TIMER_INT_ENA": {
    +                    "description": "enable RTC main timer interrupt",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "RTC_SWD_INT_ENA": {
    +                    "description": "enable super watch dog interrupt",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "RTC_XTAL32K_DEAD_INT_ENA": {
    +                    "description": "enable xtal32k_dead  interrupt",
    +                    "offset": 16,
    +                    "size": 1
    +                  },
    +                  "RTC_GLITCH_DET_INT_ENA": {
    +                    "description": "enbale gitch det interrupt",
    +                    "offset": 19,
    +                    "size": 1
    +                  },
    +                  "RTC_BBPLL_CAL_INT_ENA": {
    +                    "description": "enbale bbpll cal end interrupt",
    +                    "offset": 20,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INT_RAW_RTC": {
    +              "description": "rtc configure register",
    +              "offset": 68,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SLP_WAKEUP_INT_RAW": {
    +                    "description": "sleep wakeup interrupt raw",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SLP_REJECT_INT_RAW": {
    +                    "description": "sleep reject interrupt raw",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_WDT_INT_RAW": {
    +                    "description": "RTC WDT interrupt raw",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_BROWN_OUT_INT_RAW": {
    +                    "description": "brown out interrupt raw",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_MAIN_TIMER_INT_RAW": {
    +                    "description": "RTC main timer interrupt raw",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_SWD_INT_RAW": {
    +                    "description": "super watch dog interrupt raw",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_XTAL32K_DEAD_INT_RAW": {
    +                    "description": "xtal32k dead detection interrupt raw",
    +                    "offset": 16,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_GLITCH_DET_INT_RAW": {
    +                    "description": "glitch_det_interrupt_raw",
    +                    "offset": 19,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_BBPLL_CAL_INT_RAW": {
    +                    "description": "bbpll cal end interrupt state",
    +                    "offset": 20,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ST_RTC": {
    +              "description": "rtc configure register",
    +              "offset": 72,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SLP_WAKEUP_INT_ST": {
    +                    "description": "sleep wakeup interrupt state",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SLP_REJECT_INT_ST": {
    +                    "description": "sleep reject interrupt state",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_WDT_INT_ST": {
    +                    "description": "RTC WDT interrupt state",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_BROWN_OUT_INT_ST": {
    +                    "description": "brown out interrupt state",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_MAIN_TIMER_INT_ST": {
    +                    "description": "RTC main timer interrupt state",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_SWD_INT_ST": {
    +                    "description": "super watch dog interrupt state",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_XTAL32K_DEAD_INT_ST": {
    +                    "description": "xtal32k dead detection interrupt state",
    +                    "offset": 16,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_GLITCH_DET_INT_ST": {
    +                    "description": "glitch_det_interrupt state",
    +                    "offset": 19,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_BBPLL_CAL_INT_ST": {
    +                    "description": "bbpll cal end interrupt state",
    +                    "offset": 20,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_CLR_RTC": {
    +              "description": "rtc configure register",
    +              "offset": 76,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SLP_WAKEUP_INT_CLR": {
    +                    "description": "Clear sleep wakeup interrupt state",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SLP_REJECT_INT_CLR": {
    +                    "description": "Clear sleep reject interrupt state",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RTC_WDT_INT_CLR": {
    +                    "description": "Clear RTC WDT interrupt state",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RTC_BROWN_OUT_INT_CLR": {
    +                    "description": "Clear brown out interrupt state",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RTC_MAIN_TIMER_INT_CLR": {
    +                    "description": "Clear RTC main timer interrupt state",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RTC_SWD_INT_CLR": {
    +                    "description": "Clear super watch dog interrupt state",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RTC_XTAL32K_DEAD_INT_CLR": {
    +                    "description": "Clear RTC WDT interrupt state",
    +                    "offset": 16,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RTC_GLITCH_DET_INT_CLR": {
    +                    "description": "Clear glitch det interrupt state",
    +                    "offset": 19,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RTC_BBPLL_CAL_INT_CLR": {
    +                    "description": "clear bbpll cal end interrupt state",
    +                    "offset": 20,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "STORE0": {
    +              "description": "rtc configure register",
    +              "offset": 80,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_SCRATCH0": {
    +                    "description": "reserved register",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "STORE1": {
    +              "description": "rtc configure register",
    +              "offset": 84,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_SCRATCH1": {
    +                    "description": "reserved register",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "STORE2": {
    +              "description": "rtc configure register",
    +              "offset": 88,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_SCRATCH2": {
    +                    "description": "reserved register",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "STORE3": {
    +              "description": "rtc configure register",
    +              "offset": 92,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_SCRATCH3": {
    +                    "description": "reserved register",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "EXT_XTL_CONF": {
    +              "description": "rtc configure register",
    +              "offset": 96,
    +              "size": 32,
    +              "reset_value": 420992,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "XTAL32K_WDT_EN": {
    +                    "description": "xtal 32k watch dog enable",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "XTAL32K_WDT_CLK_FO": {
    +                    "description": "xtal 32k watch dog clock force on",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "XTAL32K_WDT_RESET": {
    +                    "description": "xtal 32k watch dog sw reset",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "XTAL32K_EXT_CLK_FO": {
    +                    "description": "xtal 32k external xtal clock force on",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "XTAL32K_AUTO_BACKUP": {
    +                    "description": "xtal 32k switch to back up clock when xtal is dead",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "XTAL32K_AUTO_RESTART": {
    +                    "description": "xtal 32k restart xtal when xtal is dead",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "XTAL32K_AUTO_RETURN": {
    +                    "description": "xtal 32k switch back xtal when xtal is restarted",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "XTAL32K_XPD_FORCE": {
    +                    "description": "Xtal 32k xpd control by sw or fsm",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "ENCKINIT_XTAL_32K": {
    +                    "description": "apply an internal clock to help xtal 32k to start",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "DBUF_XTAL_32K": {
    +                    "description": "0: single-end buffer 1: differential buffer",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "DGM_XTAL_32K": {
    +                    "description": "xtal_32k gm control",
    +                    "offset": 10,
    +                    "size": 3
    +                  },
    +                  "DRES_XTAL_32K": {
    +                    "description": "DRES_XTAL_32K",
    +                    "offset": 13,
    +                    "size": 3
    +                  },
    +                  "XPD_XTAL_32K": {
    +                    "description": "XPD_XTAL_32K",
    +                    "offset": 16,
    +                    "size": 1
    +                  },
    +                  "DAC_XTAL_32K": {
    +                    "description": "DAC_XTAL_32K",
    +                    "offset": 17,
    +                    "size": 3
    +                  },
    +                  "RTC_WDT_STATE": {
    +                    "description": "state of 32k_wdt",
    +                    "offset": 20,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_XTAL32K_GPIO_SEL": {
    +                    "description": "XTAL_32K sel. 0: external XTAL_32K",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "XTL_EXT_CTR_LV": {
    +                    "description": "0: power down XTAL at high level",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "XTL_EXT_CTR_EN": {
    +                    "description": "enable gpio configure xtal power on",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "EXT_WAKEUP_CONF": {
    +              "description": "rtc configure register",
    +              "offset": 100,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "GPIO_WAKEUP_FILTER": {
    +                    "description": "enable filter for gpio wakeup event",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "SLP_REJECT_CONF": {
    +              "description": "rtc configure register",
    +              "offset": 104,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_SLEEP_REJECT_ENA": {
    +                    "description": "sleep reject enable",
    +                    "offset": 12,
    +                    "size": 18
    +                  },
    +                  "LIGHT_SLP_REJECT_EN": {
    +                    "description": "enable reject for light sleep",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "DEEP_SLP_REJECT_EN": {
    +                    "description": "enable reject for deep sleep",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_PERIOD_CONF": {
    +              "description": "rtc configure register",
    +              "offset": 108,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_CPUSEL_CONF": {
    +                    "description": "CPU sel option",
    +                    "offset": 29,
    +                    "size": 1
    +                  },
    +                  "RTC_CPUPERIOD_SEL": {
    +                    "description": "CPU clk sel option",
    +                    "offset": 30,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "CLK_CONF": {
    +              "description": "rtc configure register",
    +              "offset": 112,
    +              "size": 32,
    +              "reset_value": 290992664,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "EFUSE_CLK_FORCE_GATING": {
    +                    "description": "efuse_clk_force_gating",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "EFUSE_CLK_FORCE_NOGATING": {
    +                    "description": "efuse_clk_force_nogating",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "CK8M_DIV_SEL_VLD": {
    +                    "description": "used to sync reg_ck8m_div_sel bus. Clear vld before set reg_ck8m_div_sel",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "CK8M_DIV": {
    +                    "description": "CK8M_D256_OUT divider. 00: div128",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "ENB_CK8M": {
    +                    "description": "disable CK8M and CK8M_D256_OUT",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "ENB_CK8M_DIV": {
    +                    "description": "1: CK8M_D256_OUT is actually CK8M",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "DIG_XTAL32K_EN": {
    +                    "description": "enable CK_XTAL_32K for digital core (no relationship with RTC core)",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "DIG_CLK8M_D256_EN": {
    +                    "description": "enable CK8M_D256_OUT for digital core (no relationship with RTC core)",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "DIG_CLK8M_EN": {
    +                    "description": "enable CK8M for digital core (no relationship with RTC core)",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "CK8M_DIV_SEL": {
    +                    "description": "divider = reg_ck8m_div_sel + 1",
    +                    "offset": 12,
    +                    "size": 3
    +                  },
    +                  "XTAL_FORCE_NOGATING": {
    +                    "description": "XTAL force no gating during sleep",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "CK8M_FORCE_NOGATING": {
    +                    "description": "CK8M force no gating during sleep",
    +                    "offset": 16,
    +                    "size": 1
    +                  },
    +                  "CK8M_DFREQ": {
    +                    "description": "CK8M_DFREQ",
    +                    "offset": 17,
    +                    "size": 8
    +                  },
    +                  "CK8M_FORCE_PD": {
    +                    "description": "CK8M force power down",
    +                    "offset": 25,
    +                    "size": 1
    +                  },
    +                  "CK8M_FORCE_PU": {
    +                    "description": "CK8M force power up",
    +                    "offset": 26,
    +                    "size": 1
    +                  },
    +                  "XTAL_GLOBAL_FORCE_GATING": {
    +                    "description": "force enable xtal clk gating",
    +                    "offset": 27,
    +                    "size": 1
    +                  },
    +                  "XTAL_GLOBAL_FORCE_NOGATING": {
    +                    "description": "force bypass xtal clk gating",
    +                    "offset": 28,
    +                    "size": 1
    +                  },
    +                  "FAST_CLK_RTC_SEL": {
    +                    "description": "fast_clk_rtc sel. 0: XTAL div 4",
    +                    "offset": 29,
    +                    "size": 1
    +                  },
    +                  "ANA_CLK_RTC_SEL": {
    +                    "description": "slelect rtc slow clk",
    +                    "offset": 30,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "SLOW_CLK_CONF": {
    +              "description": "rtc configure register",
    +              "offset": 116,
    +              "size": 32,
    +              "reset_value": 4194304,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_ANA_CLK_DIV_VLD": {
    +                    "description": "used to sync div bus. clear vld before set reg_rtc_ana_clk_div",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "RTC_ANA_CLK_DIV": {
    +                    "description": "the clk divider num of RTC_CLK",
    +                    "offset": 23,
    +                    "size": 8
    +                  },
    +                  "RTC_SLOW_CLK_NEXT_EDGE": {
    +                    "description": "flag rtc_slow_clk_next_edge",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "SDIO_CONF": {
    +              "description": "rtc configure register",
    +              "offset": 120,
    +              "size": 32,
    +              "reset_value": 179355146,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SDIO_TIMER_TARGET": {
    +                    "description": "timer count to apply reg_sdio_dcap after sdio power on",
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "SDIO_DTHDRV": {
    +                    "description": "Tieh = 1 mode drive ability. Initially set to 0 to limit charge current",
    +                    "offset": 9,
    +                    "size": 2
    +                  },
    +                  "SDIO_DCAP": {
    +                    "description": "ability to prevent LDO from overshoot",
    +                    "offset": 11,
    +                    "size": 2
    +                  },
    +                  "SDIO_INITI": {
    +                    "description": "add resistor from ldo output to ground. 0: no res",
    +                    "offset": 13,
    +                    "size": 2
    +                  },
    +                  "SDIO_EN_INITI": {
    +                    "description": "0 to set init[1:0]=0",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "SDIO_DCURLIM": {
    +                    "description": "tune current limit threshold when tieh = 0. About 800mA/(8+d)",
    +                    "offset": 16,
    +                    "size": 3
    +                  },
    +                  "SDIO_MODECURLIM": {
    +                    "description": "select current limit mode",
    +                    "offset": 19,
    +                    "size": 1
    +                  },
    +                  "SDIO_ENCURLIM": {
    +                    "description": "enable current limit",
    +                    "offset": 20,
    +                    "size": 1
    +                  },
    +                  "SDIO_REG_PD_EN": {
    +                    "description": "power down SDIO_REG in sleep. Only active when reg_sdio_force = 0",
    +                    "offset": 21,
    +                    "size": 1
    +                  },
    +                  "SDIO_FORCE": {
    +                    "description": "1: use SW option to control SDIO_REG",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "SDIO_TIEH": {
    +                    "description": "SW option for SDIO_TIEH. Only active when reg_sdio_force = 1",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "_1P8_READY": {
    +                    "description": "read only register for REG1P8_READY",
    +                    "offset": 24,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DREFL_SDIO": {
    +                    "description": "SW option for DREFL_SDIO. Only active when reg_sdio_force = 1",
    +                    "offset": 25,
    +                    "size": 2
    +                  },
    +                  "DREFM_SDIO": {
    +                    "description": "SW option for DREFM_SDIO. Only active when reg_sdio_force = 1",
    +                    "offset": 27,
    +                    "size": 2
    +                  },
    +                  "DREFH_SDIO": {
    +                    "description": "SW option for DREFH_SDIO. Only active when reg_sdio_force = 1",
    +                    "offset": 29,
    +                    "size": 2
    +                  },
    +                  "XPD_SDIO": {
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "BIAS_CONF": {
    +              "description": "rtc configure register",
    +              "offset": 124,
    +              "size": 32,
    +              "reset_value": 67584,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DG_VDD_DRV_B_SLP": {
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "DG_VDD_DRV_B_SLP_EN": {
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "BIAS_BUF_IDLE": {
    +                    "description": "bias buf when rtc in normal work state",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "BIAS_BUF_WAKE": {
    +                    "description": "bias buf when rtc in wakeup state",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "BIAS_BUF_DEEP_SLP": {
    +                    "description": "bias buf when rtc in sleep state",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "BIAS_BUF_MONITOR": {
    +                    "description": "bias buf when rtc in monitor state",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "PD_CUR_DEEP_SLP": {
    +                    "description": "xpd cur when rtc in sleep_state",
    +                    "offset": 14,
    +                    "size": 1
    +                  },
    +                  "PD_CUR_MONITOR": {
    +                    "description": "xpd cur when rtc in monitor state",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "BIAS_SLEEP_DEEP_SLP": {
    +                    "description": "bias_sleep when rtc in sleep_state",
    +                    "offset": 16,
    +                    "size": 1
    +                  },
    +                  "BIAS_SLEEP_MONITOR": {
    +                    "description": "bias_sleep when rtc in monitor state",
    +                    "offset": 17,
    +                    "size": 1
    +                  },
    +                  "DBG_ATTEN_DEEP_SLP": {
    +                    "description": "DBG_ATTEN when rtc in sleep state",
    +                    "offset": 18,
    +                    "size": 4
    +                  },
    +                  "DBG_ATTEN_MONITOR": {
    +                    "description": "DBG_ATTEN when rtc in monitor state",
    +                    "offset": 22,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "RTC_CNTL": {
    +              "description": "rtc configure register",
    +              "offset": 128,
    +              "size": 32,
    +              "reset_value": 2684354560,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DIG_REG_CAL_EN": {
    +                    "description": "software enable digital regulator cali",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "SCK_DCAP": {
    +                    "description": "SCK_DCAP",
    +                    "offset": 14,
    +                    "size": 8
    +                  },
    +                  "DBOOST_FORCE_PD": {
    +                    "description": "RTC_DBOOST force power down",
    +                    "offset": 28,
    +                    "size": 1
    +                  },
    +                  "DBOOST_FORCE_PU": {
    +                    "description": "RTC_DBOOST force power up",
    +                    "offset": 29,
    +                    "size": 1
    +                  },
    +                  "REGULATOR_FORCE_PD": {
    +                    "description": "RTC_REG force power down (for RTC_REG power down means decrease the voltage to 0.8v or lower )",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "REGULATOR_FORCE_PU": {
    +                    "description": "RTC_REG force power up",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "PWC": {
    +              "description": "rtc configure register",
    +              "offset": 132,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_PAD_FORCE_HOLD": {
    +                    "description": "rtc pad force hold",
    +                    "offset": 21,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DIG_PWC": {
    +              "description": "rtc configure register",
    +              "offset": 136,
    +              "size": 32,
    +              "reset_value": 5591056,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "VDD_SPI_PWR_DRV": {
    +                    "description": "vdd_spi drv's software value",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "VDD_SPI_PWR_FORCE": {
    +                    "description": "vdd_spi drv use software value",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "LSLP_MEM_FORCE_PD": {
    +                    "description": "memories in digital core force PD in sleep",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "LSLP_MEM_FORCE_PU": {
    +                    "description": "memories in digital core force PU in sleep",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "BT_FORCE_PD": {
    +                    "description": "bt force power down",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "BT_FORCE_PU": {
    +                    "description": "bt force power up",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "DG_PERI_FORCE_PD": {
    +                    "description": "digital peri force power down",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "DG_PERI_FORCE_PU": {
    +                    "description": "digital peri force power up",
    +                    "offset": 14,
    +                    "size": 1
    +                  },
    +                  "RTC_FASTMEM_FORCE_LPD": {
    +                    "description": "fastmemory  retention mode in sleep",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "RTC_FASTMEM_FORCE_LPU": {
    +                    "description": "fastmemory donlt entry retention mode in sleep",
    +                    "offset": 16,
    +                    "size": 1
    +                  },
    +                  "WIFI_FORCE_PD": {
    +                    "description": "wifi force power down",
    +                    "offset": 17,
    +                    "size": 1
    +                  },
    +                  "WIFI_FORCE_PU": {
    +                    "description": "wifi force power up",
    +                    "offset": 18,
    +                    "size": 1
    +                  },
    +                  "DG_WRAP_FORCE_PD": {
    +                    "description": "digital core force power down",
    +                    "offset": 19,
    +                    "size": 1
    +                  },
    +                  "DG_WRAP_FORCE_PU": {
    +                    "description": "digital core force power up",
    +                    "offset": 20,
    +                    "size": 1
    +                  },
    +                  "CPU_TOP_FORCE_PD": {
    +                    "description": "cpu core force power down",
    +                    "offset": 21,
    +                    "size": 1
    +                  },
    +                  "CPU_TOP_FORCE_PU": {
    +                    "description": "cpu force power up",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "BT_PD_EN": {
    +                    "description": "enable power down bt in sleep",
    +                    "offset": 27,
    +                    "size": 1
    +                  },
    +                  "DG_PERI_PD_EN": {
    +                    "description": "enable power down digital peri in sleep",
    +                    "offset": 28,
    +                    "size": 1
    +                  },
    +                  "CPU_TOP_PD_EN": {
    +                    "description": "enable power down cpu in sleep",
    +                    "offset": 29,
    +                    "size": 1
    +                  },
    +                  "WIFI_PD_EN": {
    +                    "description": "enable power down wifi in sleep",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "DG_WRAP_PD_EN": {
    +                    "description": "enable power down digital wrap in sleep",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DIG_ISO": {
    +              "description": "rtc configure register",
    +              "offset": 140,
    +              "size": 32,
    +              "reset_value": 2860535936,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "FORCE_OFF": {
    +                    "description": "DIG_ISO force off",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "FORCE_ON": {
    +                    "description": "DIG_ISO force on",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "DG_PAD_AUTOHOLD": {
    +                    "description": "read only register to indicate digital pad auto-hold status",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CLR_DG_PAD_AUTOHOLD": {
    +                    "description": "wtite only register to clear digital pad auto-hold",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "DG_PAD_AUTOHOLD_EN": {
    +                    "description": "digital pad enable auto-hold",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "DG_PAD_FORCE_NOISO": {
    +                    "description": "digital pad force no ISO",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "DG_PAD_FORCE_ISO": {
    +                    "description": "digital pad force ISO",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "DG_PAD_FORCE_UNHOLD": {
    +                    "description": "digital pad force un-hold",
    +                    "offset": 14,
    +                    "size": 1
    +                  },
    +                  "DG_PAD_FORCE_HOLD": {
    +                    "description": "digital pad force hold",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "BT_FORCE_ISO": {
    +                    "description": "bt force ISO",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "BT_FORCE_NOISO": {
    +                    "description": "bt force no ISO",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "DG_PERI_FORCE_ISO": {
    +                    "description": "Digital peri force ISO",
    +                    "offset": 24,
    +                    "size": 1
    +                  },
    +                  "DG_PERI_FORCE_NOISO": {
    +                    "description": "digital peri force no ISO",
    +                    "offset": 25,
    +                    "size": 1
    +                  },
    +                  "CPU_TOP_FORCE_ISO": {
    +                    "description": "cpu force ISO",
    +                    "offset": 26,
    +                    "size": 1
    +                  },
    +                  "CPU_TOP_FORCE_NOISO": {
    +                    "description": "cpu force no ISO",
    +                    "offset": 27,
    +                    "size": 1
    +                  },
    +                  "WIFI_FORCE_ISO": {
    +                    "description": "wifi force ISO",
    +                    "offset": 28,
    +                    "size": 1
    +                  },
    +                  "WIFI_FORCE_NOISO": {
    +                    "description": "wifi force no ISO",
    +                    "offset": 29,
    +                    "size": 1
    +                  },
    +                  "DG_WRAP_FORCE_ISO": {
    +                    "description": "digital core force ISO",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "DG_WRAP_FORCE_NOISO": {
    +                    "description": "digital core force no ISO",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "WDTCONFIG0": {
    +              "description": "rtc configure register",
    +              "offset": 144,
    +              "size": 32,
    +              "reset_value": 78356,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WDT_CHIP_RESET_WIDTH": {
    +                    "description": "chip reset siginal pulse width",
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "WDT_CHIP_RESET_EN": {
    +                    "description": "wdt reset whole chip enable",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "WDT_PAUSE_IN_SLP": {
    +                    "description": "pause WDT in sleep",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "WDT_APPCPU_RESET_EN": {
    +                    "description": "enable WDT reset APP CPU",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "WDT_PROCPU_RESET_EN": {
    +                    "description": "enable WDT reset PRO CPU",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "WDT_FLASHBOOT_MOD_EN": {
    +                    "description": "enable WDT in flash boot",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "WDT_SYS_RESET_LENGTH": {
    +                    "description": "system reset counter length",
    +                    "offset": 13,
    +                    "size": 3
    +                  },
    +                  "WDT_CPU_RESET_LENGTH": {
    +                    "description": "CPU reset counter length",
    +                    "offset": 16,
    +                    "size": 3
    +                  },
    +                  "WDT_STG3": {
    +                    "description": "1: interrupt stage en",
    +                    "offset": 19,
    +                    "size": 3
    +                  },
    +                  "WDT_STG2": {
    +                    "description": "1: interrupt stage en",
    +                    "offset": 22,
    +                    "size": 3
    +                  },
    +                  "WDT_STG1": {
    +                    "description": "1: interrupt stage en",
    +                    "offset": 25,
    +                    "size": 3
    +                  },
    +                  "WDT_STG0": {
    +                    "description": "1: interrupt stage en",
    +                    "offset": 28,
    +                    "size": 3
    +                  },
    +                  "WDT_EN": {
    +                    "description": "enable rtc wdt",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "WDTCONFIG1": {
    +              "description": "rtc configure register",
    +              "offset": 148,
    +              "size": 32,
    +              "reset_value": 200000,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WDT_STG0_HOLD": {
    +                    "description": "the hold time of stage0",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "WDTCONFIG2": {
    +              "description": "rtc configure register",
    +              "offset": 152,
    +              "size": 32,
    +              "reset_value": 80000,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WDT_STG1_HOLD": {
    +                    "description": "the hold time of stage1",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "WDTCONFIG3": {
    +              "description": "rtc configure register",
    +              "offset": 156,
    +              "size": 32,
    +              "reset_value": 4095,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WDT_STG2_HOLD": {
    +                    "description": "the hold time of stage2",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "WDTCONFIG4": {
    +              "description": "rtc configure register",
    +              "offset": 160,
    +              "size": 32,
    +              "reset_value": 4095,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WDT_STG3_HOLD": {
    +                    "description": "the hold time of stage3",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "WDTFEED": {
    +              "description": "rtc configure register",
    +              "offset": 164,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_WDT_FEED": {
    +                    "description": "sw feed rtc wdt",
    +                    "offset": 31,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "WDTWPROTECT": {
    +              "description": "rtc configure register",
    +              "offset": 168,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WDT_WKEY": {
    +                    "description": "the key of rtc wdt",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "SWD_CONF": {
    +              "description": "rtc configure register",
    +              "offset": 172,
    +              "size": 32,
    +              "reset_value": 78643200,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SWD_RESET_FLAG": {
    +                    "description": "swd reset flag",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SWD_FEED_INT": {
    +                    "description": "swd interrupt for feeding",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SWD_BYPASS_RST": {
    +                    "description": "Bypass swd rst",
    +                    "offset": 17,
    +                    "size": 1
    +                  },
    +                  "SWD_SIGNAL_WIDTH": {
    +                    "description": "adjust signal width send to swd",
    +                    "offset": 18,
    +                    "size": 10
    +                  },
    +                  "SWD_RST_FLAG_CLR": {
    +                    "description": "reset swd reset flag",
    +                    "offset": 28,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SWD_FEED": {
    +                    "description": "Sw feed swd",
    +                    "offset": 29,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SWD_DISABLE": {
    +                    "description": "disabel SWD",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "SWD_AUTO_FEED_EN": {
    +                    "description": "automatically feed swd when int comes",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "SWD_WPROTECT": {
    +              "description": "rtc configure register",
    +              "offset": 176,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SWD_WKEY": {
    +                    "description": "the key of super wdt",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "SW_CPU_STALL": {
    +              "description": "rtc configure register",
    +              "offset": 180,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SW_STALL_APPCPU_C1": {
    +                    "description": "{reg_sw_stall_appcpu_c1[5:0]",
    +                    "offset": 20,
    +                    "size": 6
    +                  },
    +                  "SW_STALL_PROCPU_C1": {
    +                    "description": "stall cpu by software",
    +                    "offset": 26,
    +                    "size": 6
    +                  }
    +                }
    +              }
    +            },
    +            "STORE4": {
    +              "description": "rtc configure register",
    +              "offset": 184,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_SCRATCH4": {
    +                    "description": "reserved register",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "STORE5": {
    +              "description": "rtc configure register",
    +              "offset": 188,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_SCRATCH5": {
    +                    "description": "reserved register",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "STORE6": {
    +              "description": "rtc configure register",
    +              "offset": 192,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_SCRATCH6": {
    +                    "description": "reserved register",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "STORE7": {
    +              "description": "rtc configure register",
    +              "offset": 196,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_SCRATCH7": {
    +                    "description": "reserved register",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "LOW_POWER_ST": {
    +              "description": "rtc configure register",
    +              "offset": 200,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "XPD_ROM0": {
    +                    "description": "rom0 power down",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "XPD_DIG_DCDC": {
    +                    "description": "External DCDC power down",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_PERI_ISO": {
    +                    "description": "rtc peripheral iso",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "XPD_RTC_PERI": {
    +                    "description": "rtc peripheral power down",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "WIFI_ISO": {
    +                    "description": "wifi iso",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "XPD_WIFI": {
    +                    "description": "wifi wrap power down",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DIG_ISO": {
    +                    "description": "digital wrap iso",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "XPD_DIG": {
    +                    "description": "digital wrap power down",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_TOUCH_STATE_START": {
    +                    "description": "touch should start to work",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_TOUCH_STATE_SWITCH": {
    +                    "description": "touch is about to working. Switch rtc main state",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_TOUCH_STATE_SLP": {
    +                    "description": "touch is in sleep state",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_TOUCH_STATE_DONE": {
    +                    "description": "touch is done",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_COCPU_STATE_START": {
    +                    "description": "ulp/cocpu should start to work",
    +                    "offset": 13,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_COCPU_STATE_SWITCH": {
    +                    "description": "ulp/cocpu is about to working. Switch rtc main state",
    +                    "offset": 14,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_COCPU_STATE_SLP": {
    +                    "description": "ulp/cocpu is in sleep state",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_COCPU_STATE_DONE": {
    +                    "description": "ulp/cocpu is done",
    +                    "offset": 16,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_MAIN_STATE_XTAL_ISO": {
    +                    "description": "no use any more",
    +                    "offset": 17,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_MAIN_STATE_PLL_ON": {
    +                    "description": "rtc main state machine is in states that pll should be running",
    +                    "offset": 18,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_RDY_FOR_WAKEUP": {
    +                    "description": "rtc is ready to receive wake up trigger from wake up source",
    +                    "offset": 19,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_MAIN_STATE_WAIT_END": {
    +                    "description": "rtc main state machine has been waited for some cycles",
    +                    "offset": 20,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_IN_WAKEUP_STATE": {
    +                    "description": "rtc main state machine is in the states of wakeup process",
    +                    "offset": 21,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_IN_LOW_POWER_STATE": {
    +                    "description": "rtc main state machine is in the states of low power",
    +                    "offset": 22,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_MAIN_STATE_IN_WAIT_8M": {
    +                    "description": "rtc main state machine is in wait 8m state",
    +                    "offset": 23,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_MAIN_STATE_IN_WAIT_PLL": {
    +                    "description": "rtc main state machine is in wait pll state",
    +                    "offset": 24,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_MAIN_STATE_IN_WAIT_XTL": {
    +                    "description": "rtc main state machine is in wait xtal state",
    +                    "offset": 25,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_MAIN_STATE_IN_SLP": {
    +                    "description": "rtc main state machine is in sleep state",
    +                    "offset": 26,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_MAIN_STATE_IN_IDLE": {
    +                    "description": "rtc main state machine is in idle state",
    +                    "offset": 27,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_MAIN_STATE": {
    +                    "description": "rtc main state machine status",
    +                    "offset": 28,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DIAG0": {
    +              "description": "rtc configure register",
    +              "offset": 204,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_LOW_POWER_DIAG1": {
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "PAD_HOLD": {
    +              "description": "rtc configure register",
    +              "offset": 208,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_GPIO_PIN0_HOLD": {
    +                    "description": "the hold configure of rtc gpio0",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "RTC_GPIO_PIN1_HOLD": {
    +                    "description": "the hold configure of rtc gpio1",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "RTC_GPIO_PIN2_HOLD": {
    +                    "description": "the hold configure of rtc gpio2",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "RTC_GPIO_PIN3_HOLD": {
    +                    "description": "the hold configure of rtc gpio3",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "RTC_GPIO_PIN4_HOLD": {
    +                    "description": "the hold configure of rtc gpio4",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "RTC_GPIO_PIN5_HOLD": {
    +                    "description": "the hold configure of rtc gpio5",
    +                    "offset": 5,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DIG_PAD_HOLD": {
    +              "description": "rtc configure register",
    +              "offset": 212,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DIG_PAD_HOLD": {
    +                    "description": "the configure of digital pad",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "BROWN_OUT": {
    +              "description": "rtc configure register",
    +              "offset": 216,
    +              "size": 32,
    +              "reset_value": 1140785168,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INT_WAIT": {
    +                    "description": "brown out interrupt wait cycles",
    +                    "offset": 4,
    +                    "size": 10
    +                  },
    +                  "CLOSE_FLASH_ENA": {
    +                    "description": "enable close flash when brown out happens",
    +                    "offset": 14,
    +                    "size": 1
    +                  },
    +                  "PD_RF_ENA": {
    +                    "description": "enable power down RF when brown out happens",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "RST_WAIT": {
    +                    "description": "brown out reset wait cycles",
    +                    "offset": 16,
    +                    "size": 10
    +                  },
    +                  "RST_ENA": {
    +                    "description": "enable brown out reset",
    +                    "offset": 26,
    +                    "size": 1
    +                  },
    +                  "RST_SEL": {
    +                    "description": "1:  4-pos reset",
    +                    "offset": 27,
    +                    "size": 1
    +                  },
    +                  "ANA_RST_EN": {
    +                    "description": "brown_out origin reset enable",
    +                    "offset": 28,
    +                    "size": 1
    +                  },
    +                  "CNT_CLR": {
    +                    "description": "clear brown out counter",
    +                    "offset": 29,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "ENA": {
    +                    "description": "enable brown out",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "DET": {
    +                    "description": "the flag of brown det from analog",
    +                    "offset": 31,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "TIME_LOW1": {
    +              "description": "rtc configure register",
    +              "offset": 220,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_TIMER_VALUE1_LOW": {
    +                    "description": "RTC timer low 32 bits",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "TIME_HIGH1": {
    +              "description": "rtc configure register",
    +              "offset": 224,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_TIMER_VALUE1_HIGH": {
    +                    "description": "RTC timer high 16 bits",
    +                    "offset": 0,
    +                    "size": 16,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "XTAL32K_CLK_FACTOR": {
    +              "description": "rtc configure register",
    +              "offset": 228,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "XTAL32K_CLK_FACTOR": {
    +                    "description": "xtal 32k watch dog backup clock factor",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "XTAL32K_CONF": {
    +              "description": "rtc configure register",
    +              "offset": 232,
    +              "size": 32,
    +              "reset_value": 267386880,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "XTAL32K_RETURN_WAIT": {
    +                    "description": "cycles to wait to return noral xtal 32k",
    +                    "offset": 0,
    +                    "size": 4
    +                  },
    +                  "XTAL32K_RESTART_WAIT": {
    +                    "description": "cycles to wait to repower on xtal 32k",
    +                    "offset": 4,
    +                    "size": 16
    +                  },
    +                  "XTAL32K_WDT_TIMEOUT": {
    +                    "description": "If no clock detected for this amount of time",
    +                    "offset": 20,
    +                    "size": 8
    +                  },
    +                  "XTAL32K_STABLE_THRES": {
    +                    "description": "if restarted xtal32k period is smaller than this",
    +                    "offset": 28,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "USB_CONF": {
    +              "description": "rtc configure register",
    +              "offset": 236,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IO_MUX_RESET_DISABLE": {
    +                    "description": "disable io_mux reset",
    +                    "offset": 18,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "SLP_REJECT_CAUSE": {
    +              "description": "RTC_CNTL_RTC_SLP_REJECT_CAUSE_REG",
    +              "offset": 240,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "REJECT_CAUSE": {
    +                    "description": "sleep reject cause",
    +                    "offset": 0,
    +                    "size": 18,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OPTION1": {
    +              "description": "rtc configure register",
    +              "offset": 244,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "FORCE_DOWNLOAD_BOOT": {
    +                    "description": "force chip entry download mode",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "SLP_WAKEUP_CAUSE": {
    +              "description": "RTC_CNTL_RTC_SLP_WAKEUP_CAUSE_REG",
    +              "offset": 248,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WAKEUP_CAUSE": {
    +                    "description": "sleep wakeup cause",
    +                    "offset": 0,
    +                    "size": 17,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "ULP_CP_TIMER_1": {
    +              "description": "rtc configure register",
    +              "offset": 252,
    +              "size": 32,
    +              "reset_value": 51200,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ULP_CP_TIMER_SLP_CYCLE": {
    +                    "description": "sleep cycles for ULP-coprocessor timer",
    +                    "offset": 8,
    +                    "size": 24
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ENA_RTC_W1TS": {
    +              "description": "rtc configure register",
    +              "offset": 256,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SLP_WAKEUP_INT_ENA_W1TS": {
    +                    "description": "enable sleep wakeup interrupt",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SLP_REJECT_INT_ENA_W1TS": {
    +                    "description": "enable sleep reject interrupt",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RTC_WDT_INT_ENA_W1TS": {
    +                    "description": "enable RTC WDT interrupt",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RTC_BROWN_OUT_INT_ENA_W1TS": {
    +                    "description": "enable brown out interrupt",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RTC_MAIN_TIMER_INT_ENA_W1TS": {
    +                    "description": "enable RTC main timer interrupt",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RTC_SWD_INT_ENA_W1TS": {
    +                    "description": "enable super watch dog interrupt",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RTC_XTAL32K_DEAD_INT_ENA_W1TS": {
    +                    "description": "enable xtal32k_dead  interrupt",
    +                    "offset": 16,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RTC_GLITCH_DET_INT_ENA_W1TS": {
    +                    "description": "enbale gitch det interrupt",
    +                    "offset": 19,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RTC_BBPLL_CAL_INT_ENA_W1TS": {
    +                    "description": "enbale bbpll cal interrupt",
    +                    "offset": 20,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ENA_RTC_W1TC": {
    +              "description": "rtc configure register",
    +              "offset": 260,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SLP_WAKEUP_INT_ENA_W1TC": {
    +                    "description": "clear sleep wakeup interrupt enable",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SLP_REJECT_INT_ENA_W1TC": {
    +                    "description": "clear sleep reject interrupt enable",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RTC_WDT_INT_ENA_W1TC": {
    +                    "description": "clear RTC WDT interrupt enable",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RTC_BROWN_OUT_INT_ENA_W1TC": {
    +                    "description": "clear brown out interrupt enable",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RTC_MAIN_TIMER_INT_ENA_W1TC": {
    +                    "description": "Clear RTC main timer interrupt enable",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RTC_SWD_INT_ENA_W1TC": {
    +                    "description": "clear super watch dog interrupt enable",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RTC_XTAL32K_DEAD_INT_ENA_W1TC": {
    +                    "description": "clear xtal32k_dead  interrupt enable",
    +                    "offset": 16,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RTC_GLITCH_DET_INT_ENA_W1TC": {
    +                    "description": "clear gitch det interrupt enable",
    +                    "offset": 19,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RTC_BBPLL_CAL_INT_ENA_W1TC": {
    +                    "description": "clear bbpll cal interrupt enable",
    +                    "offset": 20,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RETENTION_CTRL": {
    +              "description": "rtc configure register",
    +              "offset": 264,
    +              "size": 32,
    +              "reset_value": 2697986048,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RETENTION_CLK_SEL": {
    +                    "description": "Retention clk sel",
    +                    "offset": 18,
    +                    "size": 1
    +                  },
    +                  "RETENTION_DONE_WAIT": {
    +                    "description": "Retention done wait time",
    +                    "offset": 19,
    +                    "size": 3
    +                  },
    +                  "RETENTION_CLKOFF_WAIT": {
    +                    "description": "Retention clkoff wait time",
    +                    "offset": 22,
    +                    "size": 4
    +                  },
    +                  "RETENTION_EN": {
    +                    "description": "enable cpu retention when light sleep",
    +                    "offset": 26,
    +                    "size": 1
    +                  },
    +                  "RETENTION_WAIT": {
    +                    "description": "wait cycles for rention operation",
    +                    "offset": 27,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "FIB_SEL": {
    +              "description": "rtc configure register",
    +              "offset": 268,
    +              "size": 32,
    +              "reset_value": 7,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_FIB_SEL": {
    +                    "description": "select use analog fib signal",
    +                    "offset": 0,
    +                    "size": 3
    +                  }
    +                }
    +              }
    +            },
    +            "GPIO_WAKEUP": {
    +              "description": "rtc configure register",
    +              "offset": 272,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_GPIO_WAKEUP_STATUS": {
    +                    "description": "rtc gpio wakeup flag",
    +                    "offset": 0,
    +                    "size": 6,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_GPIO_WAKEUP_STATUS_CLR": {
    +                    "description": "clear rtc gpio wakeup flag",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "RTC_GPIO_PIN_CLK_GATE": {
    +                    "description": "enable rtc io clk gate",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "RTC_GPIO_PIN5_INT_TYPE": {
    +                    "description": "configure gpio wakeup type",
    +                    "offset": 8,
    +                    "size": 3
    +                  },
    +                  "RTC_GPIO_PIN4_INT_TYPE": {
    +                    "description": "configure gpio wakeup type",
    +                    "offset": 11,
    +                    "size": 3
    +                  },
    +                  "RTC_GPIO_PIN3_INT_TYPE": {
    +                    "description": "configure gpio wakeup type",
    +                    "offset": 14,
    +                    "size": 3
    +                  },
    +                  "RTC_GPIO_PIN2_INT_TYPE": {
    +                    "description": "configure gpio wakeup type",
    +                    "offset": 17,
    +                    "size": 3
    +                  },
    +                  "RTC_GPIO_PIN1_INT_TYPE": {
    +                    "description": "configure gpio wakeup type",
    +                    "offset": 20,
    +                    "size": 3
    +                  },
    +                  "RTC_GPIO_PIN0_INT_TYPE": {
    +                    "description": "configure gpio wakeup type",
    +                    "offset": 23,
    +                    "size": 3
    +                  },
    +                  "RTC_GPIO_PIN5_WAKEUP_ENABLE": {
    +                    "description": "enable wakeup from rtc gpio5",
    +                    "offset": 26,
    +                    "size": 1
    +                  },
    +                  "RTC_GPIO_PIN4_WAKEUP_ENABLE": {
    +                    "description": "enable wakeup from rtc gpio4",
    +                    "offset": 27,
    +                    "size": 1
    +                  },
    +                  "RTC_GPIO_PIN3_WAKEUP_ENABLE": {
    +                    "description": "enable wakeup from rtc gpio3",
    +                    "offset": 28,
    +                    "size": 1
    +                  },
    +                  "RTC_GPIO_PIN2_WAKEUP_ENABLE": {
    +                    "description": "enable wakeup from rtc gpio2",
    +                    "offset": 29,
    +                    "size": 1
    +                  },
    +                  "RTC_GPIO_PIN1_WAKEUP_ENABLE": {
    +                    "description": "enable wakeup from rtc gpio1",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "RTC_GPIO_PIN0_WAKEUP_ENABLE": {
    +                    "description": "enable wakeup from rtc gpio0",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DBG_SEL": {
    +              "description": "rtc configure register",
    +              "offset": 276,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_DEBUG_12M_NO_GATING": {
    +                    "description": "use for debug",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "RTC_DEBUG_BIT_SEL": {
    +                    "description": "use for debug",
    +                    "offset": 2,
    +                    "size": 5
    +                  },
    +                  "RTC_DEBUG_SEL0": {
    +                    "description": "use for debug",
    +                    "offset": 7,
    +                    "size": 5
    +                  },
    +                  "RTC_DEBUG_SEL1": {
    +                    "description": "use for debug",
    +                    "offset": 12,
    +                    "size": 5
    +                  },
    +                  "RTC_DEBUG_SEL2": {
    +                    "description": "use for debug",
    +                    "offset": 17,
    +                    "size": 5
    +                  },
    +                  "RTC_DEBUG_SEL3": {
    +                    "description": "use for debug",
    +                    "offset": 22,
    +                    "size": 5
    +                  },
    +                  "RTC_DEBUG_SEL4": {
    +                    "description": "use for debug",
    +                    "offset": 27,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "DBG_MAP": {
    +              "description": "rtc configure register",
    +              "offset": 280,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_GPIO_PIN5_MUX_SEL": {
    +                    "description": "use for debug",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "RTC_GPIO_PIN4_MUX_SEL": {
    +                    "description": "use for debug",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "RTC_GPIO_PIN3_MUX_SEL": {
    +                    "description": "use for debug",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "RTC_GPIO_PIN2_MUX_SEL": {
    +                    "description": "use for debug",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "RTC_GPIO_PIN1_MUX_SEL": {
    +                    "description": "use for debug",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "RTC_GPIO_PIN0_MUX_SEL": {
    +                    "description": "use for debug",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "RTC_GPIO_PIN5_FUN_SEL": {
    +                    "description": "use for debug",
    +                    "offset": 8,
    +                    "size": 4
    +                  },
    +                  "RTC_GPIO_PIN4_FUN_SEL": {
    +                    "description": "use for debug",
    +                    "offset": 12,
    +                    "size": 4
    +                  },
    +                  "RTC_GPIO_PIN3_FUN_SEL": {
    +                    "description": "use for debug",
    +                    "offset": 16,
    +                    "size": 4
    +                  },
    +                  "RTC_GPIO_PIN2_FUN_SEL": {
    +                    "description": "use for debug",
    +                    "offset": 20,
    +                    "size": 4
    +                  },
    +                  "RTC_GPIO_PIN1_FUN_SEL": {
    +                    "description": "use for debug",
    +                    "offset": 24,
    +                    "size": 4
    +                  },
    +                  "RTC_GPIO_PIN0_FUN_SEL": {
    +                    "description": "use for debug",
    +                    "offset": 28,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "SENSOR_CTRL": {
    +              "description": "rtc configure register",
    +              "offset": 284,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SAR2_PWDET_CCT": {
    +                    "description": "reg_sar2_pwdet_cct",
    +                    "offset": 27,
    +                    "size": 3
    +                  },
    +                  "FORCE_XPD_SAR": {
    +                    "description": "force power up SAR",
    +                    "offset": 30,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "DBG_SAR_SEL": {
    +              "description": "rtc configure register",
    +              "offset": 288,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SAR_DEBUG_SEL": {
    +                    "description": "use for debug",
    +                    "offset": 27,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "PG_CTRL": {
    +              "description": "rtc configure register",
    +              "offset": 292,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "POWER_GLITCH_DSENSE": {
    +                    "description": "power glitch desense",
    +                    "offset": 26,
    +                    "size": 2
    +                  },
    +                  "POWER_GLITCH_FORCE_PD": {
    +                    "description": "force disable power glitch",
    +                    "offset": 28,
    +                    "size": 1
    +                  },
    +                  "POWER_GLITCH_FORCE_PU": {
    +                    "description": "force enable power glitch",
    +                    "offset": 29,
    +                    "size": 1
    +                  },
    +                  "POWER_GLITCH_EFUSE_SEL": {
    +                    "description": "use efuse value control power glitch enable",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "POWER_GLITCH_EN": {
    +                    "description": "enable power glitch",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DATE": {
    +              "description": "rtc configure register",
    +              "offset": 508,
    +              "size": 32,
    +              "reset_value": 33583728,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_CNTL_DATE": {
    +                    "description": "verision",
    +                    "offset": 0,
    +                    "size": 28
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "SENSITIVE": {
    +        "description": "Sensitive",
    +        "children": {
    +          "registers": {
    +            "ROM_TABLE_LOCK": {
    +              "description": "SENSITIVE_ROM_TABLE_LOCK_REG",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ROM_TABLE_LOCK": {
    +                    "description": "rom_table_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "ROM_TABLE": {
    +              "description": "SENSITIVE_ROM_TABLE_REG",
    +              "offset": 4,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ROM_TABLE": {
    +                    "description": "rom_table",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "PRIVILEGE_MODE_SEL_LOCK": {
    +              "description": "SENSITIVE_PRIVILEGE_MODE_SEL_LOCK_REG",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PRIVILEGE_MODE_SEL_LOCK": {
    +                    "description": "privilege_mode_sel_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "PRIVILEGE_MODE_SEL": {
    +              "description": "SENSITIVE_PRIVILEGE_MODE_SEL_REG",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PRIVILEGE_MODE_SEL": {
    +                    "description": "privilege_mode_sel",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "APB_PERIPHERAL_ACCESS_0": {
    +              "description": "SENSITIVE_APB_PERIPHERAL_ACCESS_0_REG",
    +              "offset": 16,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "APB_PERIPHERAL_ACCESS_LOCK": {
    +                    "description": "apb_peripheral_access_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "APB_PERIPHERAL_ACCESS_1": {
    +              "description": "SENSITIVE_APB_PERIPHERAL_ACCESS_1_REG",
    +              "offset": 20,
    +              "size": 32,
    +              "reset_value": 1,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "APB_PERIPHERAL_ACCESS_SPLIT_BURST": {
    +                    "description": "apb_peripheral_access_split_burst",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INTERNAL_SRAM_USAGE_0": {
    +              "description": "SENSITIVE_INTERNAL_SRAM_USAGE_0_REG",
    +              "offset": 24,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INTERNAL_SRAM_USAGE_LOCK": {
    +                    "description": "internal_sram_usage_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INTERNAL_SRAM_USAGE_1": {
    +              "description": "SENSITIVE_INTERNAL_SRAM_USAGE_1_REG",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 15,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INTERNAL_SRAM_USAGE_CPU_CACHE": {
    +                    "description": "internal_sram_usage_cpu_cache",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "INTERNAL_SRAM_USAGE_CPU_SRAM": {
    +                    "description": "internal_sram_usage_cpu_sram",
    +                    "offset": 1,
    +                    "size": 3
    +                  }
    +                }
    +              }
    +            },
    +            "INTERNAL_SRAM_USAGE_3": {
    +              "description": "SENSITIVE_INTERNAL_SRAM_USAGE_3_REG",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INTERNAL_SRAM_USAGE_MAC_DUMP_SRAM": {
    +                    "description": "internal_sram_usage_mac_dump_sram",
    +                    "offset": 0,
    +                    "size": 3
    +                  },
    +                  "INTERNAL_SRAM_ALLOC_MAC_DUMP": {
    +                    "description": "internal_sram_alloc_mac_dump",
    +                    "offset": 3,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INTERNAL_SRAM_USAGE_4": {
    +              "description": "SENSITIVE_INTERNAL_SRAM_USAGE_4_REG",
    +              "offset": 36,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INTERNAL_SRAM_USAGE_LOG_SRAM": {
    +                    "description": "internal_sram_usage_log_sram",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_TAG_ACCESS_0": {
    +              "description": "SENSITIVE_CACHE_TAG_ACCESS_0_REG",
    +              "offset": 40,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CACHE_TAG_ACCESS_LOCK": {
    +                    "description": "cache_tag_access_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_TAG_ACCESS_1": {
    +              "description": "SENSITIVE_CACHE_TAG_ACCESS_1_REG",
    +              "offset": 44,
    +              "size": 32,
    +              "reset_value": 15,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PRO_I_TAG_RD_ACS": {
    +                    "description": "pro_i_tag_rd_acs",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "PRO_I_TAG_WR_ACS": {
    +                    "description": "pro_i_tag_wr_acs",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "PRO_D_TAG_RD_ACS": {
    +                    "description": "pro_d_tag_rd_acs",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "PRO_D_TAG_WR_ACS": {
    +                    "description": "pro_d_tag_wr_acs",
    +                    "offset": 3,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_MMU_ACCESS_0": {
    +              "description": "SENSITIVE_CACHE_MMU_ACCESS_0_REG",
    +              "offset": 48,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CACHE_MMU_ACCESS_LOCK": {
    +                    "description": "cache_mmu_access_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_MMU_ACCESS_1": {
    +              "description": "SENSITIVE_CACHE_MMU_ACCESS_1_REG",
    +              "offset": 52,
    +              "size": 32,
    +              "reset_value": 3,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PRO_MMU_RD_ACS": {
    +                    "description": "pro_mmu_rd_acs",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "PRO_MMU_WR_ACS": {
    +                    "description": "pro_mmu_wr_acs",
    +                    "offset": 1,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_APBPERI_SPI2_PMS_CONSTRAIN_0": {
    +              "description": "SENSITIVE_DMA_APBPERI_SPI2_PMS_CONSTRAIN_0_REG",
    +              "offset": 56,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_APBPERI_SPI2_PMS_CONSTRAIN_LOCK": {
    +                    "description": "dma_apbperi_spi2_pms_constrain_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_APBPERI_SPI2_PMS_CONSTRAIN_1": {
    +              "description": "SENSITIVE_DMA_APBPERI_SPI2_PMS_CONSTRAIN_1_REG",
    +              "offset": 60,
    +              "size": 32,
    +              "reset_value": 1044735,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0": {
    +                    "description": "dma_apbperi_spi2_pms_constrain_sram_world_0_pms_0",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1": {
    +                    "description": "dma_apbperi_spi2_pms_constrain_sram_world_0_pms_1",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2": {
    +                    "description": "dma_apbperi_spi2_pms_constrain_sram_world_0_pms_2",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3": {
    +                    "description": "dma_apbperi_spi2_pms_constrain_sram_world_0_pms_3",
    +                    "offset": 6,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0": {
    +                    "description": "dma_apbperi_spi2_pms_constrain_sram_world_1_pms_0",
    +                    "offset": 12,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1": {
    +                    "description": "dma_apbperi_spi2_pms_constrain_sram_world_1_pms_1",
    +                    "offset": 14,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2": {
    +                    "description": "dma_apbperi_spi2_pms_constrain_sram_world_1_pms_2",
    +                    "offset": 16,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3": {
    +                    "description": "dma_apbperi_spi2_pms_constrain_sram_world_1_pms_3",
    +                    "offset": 18,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_APBPERI_UCHI0_PMS_CONSTRAIN_0": {
    +              "description": "SENSITIVE_DMA_APBPERI_UCHI0_PMS_CONSTRAIN_0_REG",
    +              "offset": 64,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_APBPERI_UCHI0_PMS_CONSTRAIN_LOCK": {
    +                    "description": "dma_apbperi_uchi0_pms_constrain_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_APBPERI_UCHI0_PMS_CONSTRAIN_1": {
    +              "description": "SENSITIVE_DMA_APBPERI_UCHI0_PMS_CONSTRAIN_1_REG",
    +              "offset": 68,
    +              "size": 32,
    +              "reset_value": 1044735,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0": {
    +                    "description": "dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_0",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1": {
    +                    "description": "dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_1",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2": {
    +                    "description": "dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_2",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3": {
    +                    "description": "dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_3",
    +                    "offset": 6,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0": {
    +                    "description": "dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_0",
    +                    "offset": 12,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1": {
    +                    "description": "dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_1",
    +                    "offset": 14,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2": {
    +                    "description": "dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_2",
    +                    "offset": 16,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3": {
    +                    "description": "dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_3",
    +                    "offset": 18,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_APBPERI_I2S0_PMS_CONSTRAIN_0": {
    +              "description": "SENSITIVE_DMA_APBPERI_I2S0_PMS_CONSTRAIN_0_REG",
    +              "offset": 72,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_APBPERI_I2S0_PMS_CONSTRAIN_LOCK": {
    +                    "description": "dma_apbperi_i2s0_pms_constrain_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_APBPERI_I2S0_PMS_CONSTRAIN_1": {
    +              "description": "SENSITIVE_DMA_APBPERI_I2S0_PMS_CONSTRAIN_1_REG",
    +              "offset": 76,
    +              "size": 32,
    +              "reset_value": 1044735,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0": {
    +                    "description": "dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_0",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1": {
    +                    "description": "dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_1",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2": {
    +                    "description": "dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_2",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3": {
    +                    "description": "dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_3",
    +                    "offset": 6,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0": {
    +                    "description": "dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_0",
    +                    "offset": 12,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1": {
    +                    "description": "dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_1",
    +                    "offset": 14,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2": {
    +                    "description": "dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_2",
    +                    "offset": 16,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3": {
    +                    "description": "dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_3",
    +                    "offset": 18,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_APBPERI_MAC_PMS_CONSTRAIN_0": {
    +              "description": "SENSITIVE_DMA_APBPERI_MAC_PMS_CONSTRAIN_0_REG",
    +              "offset": 80,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_APBPERI_MAC_PMS_CONSTRAIN_LOCK": {
    +                    "description": "dma_apbperi_mac_pms_constrain_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_APBPERI_MAC_PMS_CONSTRAIN_1": {
    +              "description": "SENSITIVE_DMA_APBPERI_MAC_PMS_CONSTRAIN_1_REG",
    +              "offset": 84,
    +              "size": 32,
    +              "reset_value": 1044735,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0": {
    +                    "description": "dma_apbperi_mac_pms_constrain_sram_world_0_pms_0",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1": {
    +                    "description": "dma_apbperi_mac_pms_constrain_sram_world_0_pms_1",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2": {
    +                    "description": "dma_apbperi_mac_pms_constrain_sram_world_0_pms_2",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3": {
    +                    "description": "dma_apbperi_mac_pms_constrain_sram_world_0_pms_3",
    +                    "offset": 6,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0": {
    +                    "description": "dma_apbperi_mac_pms_constrain_sram_world_1_pms_0",
    +                    "offset": 12,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1": {
    +                    "description": "dma_apbperi_mac_pms_constrain_sram_world_1_pms_1",
    +                    "offset": 14,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2": {
    +                    "description": "dma_apbperi_mac_pms_constrain_sram_world_1_pms_2",
    +                    "offset": 16,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3": {
    +                    "description": "dma_apbperi_mac_pms_constrain_sram_world_1_pms_3",
    +                    "offset": 18,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_APBPERI_BACKUP_PMS_CONSTRAIN_0": {
    +              "description": "SENSITIVE_DMA_APBPERI_BACKUP_PMS_CONSTRAIN_0_REG",
    +              "offset": 88,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_APBPERI_BACKUP_PMS_CONSTRAIN_LOCK": {
    +                    "description": "dma_apbperi_backup_pms_constrain_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_APBPERI_BACKUP_PMS_CONSTRAIN_1": {
    +              "description": "SENSITIVE_DMA_APBPERI_BACKUP_PMS_CONSTRAIN_1_REG",
    +              "offset": 92,
    +              "size": 32,
    +              "reset_value": 1044735,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0": {
    +                    "description": "dma_apbperi_backup_pms_constrain_sram_world_0_pms_0",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1": {
    +                    "description": "dma_apbperi_backup_pms_constrain_sram_world_0_pms_1",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2": {
    +                    "description": "dma_apbperi_backup_pms_constrain_sram_world_0_pms_2",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3": {
    +                    "description": "dma_apbperi_backup_pms_constrain_sram_world_0_pms_3",
    +                    "offset": 6,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0": {
    +                    "description": "dma_apbperi_backup_pms_constrain_sram_world_1_pms_0",
    +                    "offset": 12,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1": {
    +                    "description": "dma_apbperi_backup_pms_constrain_sram_world_1_pms_1",
    +                    "offset": 14,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2": {
    +                    "description": "dma_apbperi_backup_pms_constrain_sram_world_1_pms_2",
    +                    "offset": 16,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3": {
    +                    "description": "dma_apbperi_backup_pms_constrain_sram_world_1_pms_3",
    +                    "offset": 18,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_APBPERI_LC_PMS_CONSTRAIN_0": {
    +              "description": "SENSITIVE_DMA_APBPERI_LC_PMS_CONSTRAIN_0_REG",
    +              "offset": 96,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_APBPERI_LC_PMS_CONSTRAIN_LOCK": {
    +                    "description": "dma_apbperi_lc_pms_constrain_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_APBPERI_LC_PMS_CONSTRAIN_1": {
    +              "description": "SENSITIVE_DMA_APBPERI_LC_PMS_CONSTRAIN_1_REG",
    +              "offset": 100,
    +              "size": 32,
    +              "reset_value": 1044735,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0": {
    +                    "description": "dma_apbperi_lc_pms_constrain_sram_world_0_pms_0",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1": {
    +                    "description": "dma_apbperi_lc_pms_constrain_sram_world_0_pms_1",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2": {
    +                    "description": "dma_apbperi_lc_pms_constrain_sram_world_0_pms_2",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3": {
    +                    "description": "dma_apbperi_lc_pms_constrain_sram_world_0_pms_3",
    +                    "offset": 6,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0": {
    +                    "description": "dma_apbperi_lc_pms_constrain_sram_world_1_pms_0",
    +                    "offset": 12,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1": {
    +                    "description": "dma_apbperi_lc_pms_constrain_sram_world_1_pms_1",
    +                    "offset": 14,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2": {
    +                    "description": "dma_apbperi_lc_pms_constrain_sram_world_1_pms_2",
    +                    "offset": 16,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3": {
    +                    "description": "dma_apbperi_lc_pms_constrain_sram_world_1_pms_3",
    +                    "offset": 18,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_APBPERI_AES_PMS_CONSTRAIN_0": {
    +              "description": "SENSITIVE_DMA_APBPERI_AES_PMS_CONSTRAIN_0_REG",
    +              "offset": 104,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_APBPERI_AES_PMS_CONSTRAIN_LOCK": {
    +                    "description": "dma_apbperi_aes_pms_constrain_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_APBPERI_AES_PMS_CONSTRAIN_1": {
    +              "description": "SENSITIVE_DMA_APBPERI_AES_PMS_CONSTRAIN_1_REG",
    +              "offset": 108,
    +              "size": 32,
    +              "reset_value": 1044735,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0": {
    +                    "description": "dma_apbperi_aes_pms_constrain_sram_world_0_pms_0",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1": {
    +                    "description": "dma_apbperi_aes_pms_constrain_sram_world_0_pms_1",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2": {
    +                    "description": "dma_apbperi_aes_pms_constrain_sram_world_0_pms_2",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3": {
    +                    "description": "dma_apbperi_aes_pms_constrain_sram_world_0_pms_3",
    +                    "offset": 6,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0": {
    +                    "description": "dma_apbperi_aes_pms_constrain_sram_world_1_pms_0",
    +                    "offset": 12,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1": {
    +                    "description": "dma_apbperi_aes_pms_constrain_sram_world_1_pms_1",
    +                    "offset": 14,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2": {
    +                    "description": "dma_apbperi_aes_pms_constrain_sram_world_1_pms_2",
    +                    "offset": 16,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3": {
    +                    "description": "dma_apbperi_aes_pms_constrain_sram_world_1_pms_3",
    +                    "offset": 18,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_APBPERI_SHA_PMS_CONSTRAIN_0": {
    +              "description": "SENSITIVE_DMA_APBPERI_SHA_PMS_CONSTRAIN_0_REG",
    +              "offset": 112,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_APBPERI_SHA_PMS_CONSTRAIN_LOCK": {
    +                    "description": "dma_apbperi_sha_pms_constrain_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_APBPERI_SHA_PMS_CONSTRAIN_1": {
    +              "description": "SENSITIVE_DMA_APBPERI_SHA_PMS_CONSTRAIN_1_REG",
    +              "offset": 116,
    +              "size": 32,
    +              "reset_value": 1044735,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0": {
    +                    "description": "dma_apbperi_sha_pms_constrain_sram_world_0_pms_0",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1": {
    +                    "description": "dma_apbperi_sha_pms_constrain_sram_world_0_pms_1",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2": {
    +                    "description": "dma_apbperi_sha_pms_constrain_sram_world_0_pms_2",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3": {
    +                    "description": "dma_apbperi_sha_pms_constrain_sram_world_0_pms_3",
    +                    "offset": 6,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0": {
    +                    "description": "dma_apbperi_sha_pms_constrain_sram_world_1_pms_0",
    +                    "offset": 12,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1": {
    +                    "description": "dma_apbperi_sha_pms_constrain_sram_world_1_pms_1",
    +                    "offset": 14,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2": {
    +                    "description": "dma_apbperi_sha_pms_constrain_sram_world_1_pms_2",
    +                    "offset": 16,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3": {
    +                    "description": "dma_apbperi_sha_pms_constrain_sram_world_1_pms_3",
    +                    "offset": 18,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_0": {
    +              "description": "SENSITIVE_DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_0_REG",
    +              "offset": 120,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_LOCK": {
    +                    "description": "dma_apbperi_adc_dac_pms_constrain_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_1": {
    +              "description": "SENSITIVE_DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_1_REG",
    +              "offset": 124,
    +              "size": 32,
    +              "reset_value": 1044735,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0": {
    +                    "description": "dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_0",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1": {
    +                    "description": "dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_1",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2": {
    +                    "description": "dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_2",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3": {
    +                    "description": "dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_3",
    +                    "offset": 6,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0": {
    +                    "description": "dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_0",
    +                    "offset": 12,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1": {
    +                    "description": "dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_1",
    +                    "offset": 14,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2": {
    +                    "description": "dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_2",
    +                    "offset": 16,
    +                    "size": 2
    +                  },
    +                  "DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3": {
    +                    "description": "dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_3",
    +                    "offset": 18,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_APBPERI_PMS_MONITOR_0": {
    +              "description": "SENSITIVE_DMA_APBPERI_PMS_MONITOR_0_REG",
    +              "offset": 128,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_APBPERI_PMS_MONITOR_LOCK": {
    +                    "description": "dma_apbperi_pms_monitor_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_APBPERI_PMS_MONITOR_1": {
    +              "description": "SENSITIVE_DMA_APBPERI_PMS_MONITOR_1_REG",
    +              "offset": 132,
    +              "size": 32,
    +              "reset_value": 3,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_APBPERI_PMS_MONITOR_VIOLATE_CLR": {
    +                    "description": "dma_apbperi_pms_monitor_violate_clr",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "DMA_APBPERI_PMS_MONITOR_VIOLATE_EN": {
    +                    "description": "dma_apbperi_pms_monitor_violate_en",
    +                    "offset": 1,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_APBPERI_PMS_MONITOR_2": {
    +              "description": "SENSITIVE_DMA_APBPERI_PMS_MONITOR_2_REG",
    +              "offset": 136,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_APBPERI_PMS_MONITOR_VIOLATE_INTR": {
    +                    "description": "dma_apbperi_pms_monitor_violate_intr",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_WORLD": {
    +                    "description": "dma_apbperi_pms_monitor_violate_status_world",
    +                    "offset": 1,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_ADDR": {
    +                    "description": "dma_apbperi_pms_monitor_violate_status_addr",
    +                    "offset": 3,
    +                    "size": 24,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_APBPERI_PMS_MONITOR_3": {
    +              "description": "SENSITIVE_DMA_APBPERI_PMS_MONITOR_3_REG",
    +              "offset": 140,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_WR": {
    +                    "description": "dma_apbperi_pms_monitor_violate_status_wr",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_BYTEEN": {
    +                    "description": "dma_apbperi_pms_monitor_violate_status_byteen",
    +                    "offset": 1,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_0": {
    +              "description": "SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_0_REG",
    +              "offset": 144,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_LOCK": {
    +                    "description": "core_x_iram0_dram0_dma_split_line_constrain_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_1": {
    +              "description": "SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_1_REG",
    +              "offset": 148,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_X_IRAM0_DRAM0_DMA_SRAM_CATEGORY_0": {
    +                    "description": "core_x_iram0_dram0_dma_sram_category_0",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "CORE_X_IRAM0_DRAM0_DMA_SRAM_CATEGORY_1": {
    +                    "description": "core_x_iram0_dram0_dma_sram_category_1",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "CORE_X_IRAM0_DRAM0_DMA_SRAM_CATEGORY_2": {
    +                    "description": "core_x_iram0_dram0_dma_sram_category_2",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "CORE_X_IRAM0_DRAM0_DMA_SRAM_SPLITADDR": {
    +                    "description": "core_x_iram0_dram0_dma_sram_splitaddr",
    +                    "offset": 14,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_2": {
    +              "description": "SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_2_REG",
    +              "offset": 152,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_X_IRAM0_SRAM_LINE_0_CATEGORY_0": {
    +                    "description": "core_x_iram0_sram_line_0_category_0",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "CORE_X_IRAM0_SRAM_LINE_0_CATEGORY_1": {
    +                    "description": "core_x_iram0_sram_line_0_category_1",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "CORE_X_IRAM0_SRAM_LINE_0_CATEGORY_2": {
    +                    "description": "core_x_iram0_sram_line_0_category_2",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "CORE_X_IRAM0_SRAM_LINE_0_SPLITADDR": {
    +                    "description": "core_x_iram0_sram_line_0_splitaddr",
    +                    "offset": 14,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_3": {
    +              "description": "SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_3_REG",
    +              "offset": 156,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_X_IRAM0_SRAM_LINE_1_CATEGORY_0": {
    +                    "description": "core_x_iram0_sram_line_1_category_0",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "CORE_X_IRAM0_SRAM_LINE_1_CATEGORY_1": {
    +                    "description": "core_x_iram0_sram_line_1_category_1",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "CORE_X_IRAM0_SRAM_LINE_1_CATEGORY_2": {
    +                    "description": "core_x_iram0_sram_line_1_category_2",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "CORE_X_IRAM0_SRAM_LINE_1_SPLITADDR": {
    +                    "description": "core_x_iram0_sram_line_1_splitaddr",
    +                    "offset": 14,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_4": {
    +              "description": "SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_4_REG",
    +              "offset": 160,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_X_DRAM0_DMA_SRAM_LINE_0_CATEGORY_0": {
    +                    "description": "core_x_dram0_dma_sram_line_0_category_0",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "CORE_X_DRAM0_DMA_SRAM_LINE_0_CATEGORY_1": {
    +                    "description": "core_x_dram0_dma_sram_line_0_category_1",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "CORE_X_DRAM0_DMA_SRAM_LINE_0_CATEGORY_2": {
    +                    "description": "core_x_dram0_dma_sram_line_0_category_2",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "CORE_X_DRAM0_DMA_SRAM_LINE_0_SPLITADDR": {
    +                    "description": "core_x_dram0_dma_sram_line_0_splitaddr",
    +                    "offset": 14,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_5": {
    +              "description": "SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_5_REG",
    +              "offset": 164,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_X_DRAM0_DMA_SRAM_LINE_1_CATEGORY_0": {
    +                    "description": "core_x_dram0_dma_sram_line_1_category_0",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "CORE_X_DRAM0_DMA_SRAM_LINE_1_CATEGORY_1": {
    +                    "description": "core_x_dram0_dma_sram_line_1_category_1",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "CORE_X_DRAM0_DMA_SRAM_LINE_1_CATEGORY_2": {
    +                    "description": "core_x_dram0_dma_sram_line_1_category_2",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "CORE_X_DRAM0_DMA_SRAM_LINE_1_SPLITADDR": {
    +                    "description": "core_x_dram0_dma_sram_line_1_splitaddr",
    +                    "offset": 14,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_X_IRAM0_PMS_CONSTRAIN_0": {
    +              "description": "SENSITIVE_CORE_X_IRAM0_PMS_CONSTRAIN_0_REG",
    +              "offset": 168,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_X_IRAM0_PMS_CONSTRAIN_LOCK": {
    +                    "description": "core_x_iram0_pms_constrain_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_X_IRAM0_PMS_CONSTRAIN_1": {
    +              "description": "SENSITIVE_CORE_X_IRAM0_PMS_CONSTRAIN_1_REG",
    +              "offset": 172,
    +              "size": 32,
    +              "reset_value": 1867775,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0": {
    +                    "description": "core_x_iram0_pms_constrain_sram_world_1_pms_0",
    +                    "offset": 0,
    +                    "size": 3
    +                  },
    +                  "CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1": {
    +                    "description": "core_x_iram0_pms_constrain_sram_world_1_pms_1",
    +                    "offset": 3,
    +                    "size": 3
    +                  },
    +                  "CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2": {
    +                    "description": "core_x_iram0_pms_constrain_sram_world_1_pms_2",
    +                    "offset": 6,
    +                    "size": 3
    +                  },
    +                  "CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3": {
    +                    "description": "core_x_iram0_pms_constrain_sram_world_1_pms_3",
    +                    "offset": 9,
    +                    "size": 3
    +                  },
    +                  "CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_CACHEDATAARRAY_PMS_0": {
    +                    "description": "core_x_iram0_pms_constrain_sram_world_1_cachedataarray_pms_0",
    +                    "offset": 12,
    +                    "size": 3
    +                  },
    +                  "CORE_X_IRAM0_PMS_CONSTRAIN_ROM_WORLD_1_PMS": {
    +                    "description": "core_x_iram0_pms_constrain_rom_world_1_pms",
    +                    "offset": 18,
    +                    "size": 3
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_X_IRAM0_PMS_CONSTRAIN_2": {
    +              "description": "SENSITIVE_CORE_X_IRAM0_PMS_CONSTRAIN_2_REG",
    +              "offset": 176,
    +              "size": 32,
    +              "reset_value": 1867775,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0": {
    +                    "description": "core_x_iram0_pms_constrain_sram_world_0_pms_0",
    +                    "offset": 0,
    +                    "size": 3
    +                  },
    +                  "CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1": {
    +                    "description": "core_x_iram0_pms_constrain_sram_world_0_pms_1",
    +                    "offset": 3,
    +                    "size": 3
    +                  },
    +                  "CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2": {
    +                    "description": "core_x_iram0_pms_constrain_sram_world_0_pms_2",
    +                    "offset": 6,
    +                    "size": 3
    +                  },
    +                  "CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3": {
    +                    "description": "core_x_iram0_pms_constrain_sram_world_0_pms_3",
    +                    "offset": 9,
    +                    "size": 3
    +                  },
    +                  "CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_CACHEDATAARRAY_PMS_0": {
    +                    "description": "core_x_iram0_pms_constrain_sram_world_0_cachedataarray_pms_0",
    +                    "offset": 12,
    +                    "size": 3
    +                  },
    +                  "CORE_X_IRAM0_PMS_CONSTRAIN_ROM_WORLD_0_PMS": {
    +                    "description": "core_x_iram0_pms_constrain_rom_world_0_pms",
    +                    "offset": 18,
    +                    "size": 3
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_IRAM0_PMS_MONITOR_0": {
    +              "description": "SENSITIVE_CORE_0_IRAM0_PMS_MONITOR_0_REG",
    +              "offset": 180,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_IRAM0_PMS_MONITOR_LOCK": {
    +                    "description": "core_0_iram0_pms_monitor_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_IRAM0_PMS_MONITOR_1": {
    +              "description": "SENSITIVE_CORE_0_IRAM0_PMS_MONITOR_1_REG",
    +              "offset": 184,
    +              "size": 32,
    +              "reset_value": 3,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_IRAM0_PMS_MONITOR_VIOLATE_CLR": {
    +                    "description": "core_0_iram0_pms_monitor_violate_clr",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "CORE_0_IRAM0_PMS_MONITOR_VIOLATE_EN": {
    +                    "description": "core_0_iram0_pms_monitor_violate_en",
    +                    "offset": 1,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_IRAM0_PMS_MONITOR_2": {
    +              "description": "SENSITIVE_CORE_0_IRAM0_PMS_MONITOR_2_REG",
    +              "offset": 188,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_IRAM0_PMS_MONITOR_VIOLATE_INTR": {
    +                    "description": "core_0_iram0_pms_monitor_violate_intr",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_WR": {
    +                    "description": "core_0_iram0_pms_monitor_violate_status_wr",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_LOADSTORE": {
    +                    "description": "core_0_iram0_pms_monitor_violate_status_loadstore",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_WORLD": {
    +                    "description": "core_0_iram0_pms_monitor_violate_status_world",
    +                    "offset": 3,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_ADDR": {
    +                    "description": "core_0_iram0_pms_monitor_violate_status_addr",
    +                    "offset": 5,
    +                    "size": 24,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_X_DRAM0_PMS_CONSTRAIN_0": {
    +              "description": "SENSITIVE_CORE_X_DRAM0_PMS_CONSTRAIN_0_REG",
    +              "offset": 192,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_X_DRAM0_PMS_CONSTRAIN_LOCK": {
    +                    "description": "core_x_dram0_pms_constrain_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_X_DRAM0_PMS_CONSTRAIN_1": {
    +              "description": "SENSITIVE_CORE_X_DRAM0_PMS_CONSTRAIN_1_REG",
    +              "offset": 196,
    +              "size": 32,
    +              "reset_value": 252702975,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0": {
    +                    "description": "core_x_dram0_pms_constrain_sram_world_0_pms_0",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1": {
    +                    "description": "core_x_dram0_pms_constrain_sram_world_0_pms_1",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2": {
    +                    "description": "core_x_dram0_pms_constrain_sram_world_0_pms_2",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3": {
    +                    "description": "core_x_dram0_pms_constrain_sram_world_0_pms_3",
    +                    "offset": 6,
    +                    "size": 2
    +                  },
    +                  "CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0": {
    +                    "description": "core_x_dram0_pms_constrain_sram_world_1_pms_0",
    +                    "offset": 12,
    +                    "size": 2
    +                  },
    +                  "CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1": {
    +                    "description": "core_x_dram0_pms_constrain_sram_world_1_pms_1",
    +                    "offset": 14,
    +                    "size": 2
    +                  },
    +                  "CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2": {
    +                    "description": "core_x_dram0_pms_constrain_sram_world_1_pms_2",
    +                    "offset": 16,
    +                    "size": 2
    +                  },
    +                  "CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3": {
    +                    "description": "core_x_dram0_pms_constrain_sram_world_1_pms_3",
    +                    "offset": 18,
    +                    "size": 2
    +                  },
    +                  "CORE_X_DRAM0_PMS_CONSTRAIN_ROM_WORLD_0_PMS": {
    +                    "description": "core_x_dram0_pms_constrain_rom_world_0_pms",
    +                    "offset": 24,
    +                    "size": 2
    +                  },
    +                  "CORE_X_DRAM0_PMS_CONSTRAIN_ROM_WORLD_1_PMS": {
    +                    "description": "core_x_dram0_pms_constrain_rom_world_1_pms",
    +                    "offset": 26,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_DRAM0_PMS_MONITOR_0": {
    +              "description": "SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_0_REG",
    +              "offset": 200,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_DRAM0_PMS_MONITOR_LOCK": {
    +                    "description": "core_0_dram0_pms_monitor_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_DRAM0_PMS_MONITOR_1": {
    +              "description": "SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_1_REG",
    +              "offset": 204,
    +              "size": 32,
    +              "reset_value": 3,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_DRAM0_PMS_MONITOR_VIOLATE_CLR": {
    +                    "description": "core_0_dram0_pms_monitor_violate_clr",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "CORE_0_DRAM0_PMS_MONITOR_VIOLATE_EN": {
    +                    "description": "core_0_dram0_pms_monitor_violate_en",
    +                    "offset": 1,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_DRAM0_PMS_MONITOR_2": {
    +              "description": "SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_2_REG",
    +              "offset": 208,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_DRAM0_PMS_MONITOR_VIOLATE_INTR": {
    +                    "description": "core_0_dram0_pms_monitor_violate_intr",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_LOCK": {
    +                    "description": "core_0_dram0_pms_monitor_violate_status_lock",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_WORLD": {
    +                    "description": "core_0_dram0_pms_monitor_violate_status_world",
    +                    "offset": 2,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_ADDR": {
    +                    "description": "core_0_dram0_pms_monitor_violate_status_addr",
    +                    "offset": 4,
    +                    "size": 24,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_DRAM0_PMS_MONITOR_3": {
    +              "description": "SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_3_REG",
    +              "offset": 212,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_WR": {
    +                    "description": "core_0_dram0_pms_monitor_violate_status_wr",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_BYTEEN": {
    +                    "description": "core_0_dram0_pms_monitor_violate_status_byteen",
    +                    "offset": 1,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_PIF_PMS_CONSTRAIN_0": {
    +              "description": "SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_0_REG",
    +              "offset": 216,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_PIF_PMS_CONSTRAIN_LOCK": {
    +                    "description": "core_0_pif_pms_constrain_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_PIF_PMS_CONSTRAIN_1": {
    +              "description": "SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_1_REG",
    +              "offset": 220,
    +              "size": 32,
    +              "reset_value": 3473932287,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_UART": {
    +                    "description": "core_0_pif_pms_constrain_world_0_uart",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_G0SPI_1": {
    +                    "description": "core_0_pif_pms_constrain_world_0_g0spi_1",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_G0SPI_0": {
    +                    "description": "core_0_pif_pms_constrain_world_0_g0spi_0",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_GPIO": {
    +                    "description": "core_0_pif_pms_constrain_world_0_gpio",
    +                    "offset": 6,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_FE2": {
    +                    "description": "core_0_pif_pms_constrain_world_0_fe2",
    +                    "offset": 8,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_FE": {
    +                    "description": "core_0_pif_pms_constrain_world_0_fe",
    +                    "offset": 10,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_TIMER": {
    +                    "description": "core_0_pif_pms_constrain_world_0_timer",
    +                    "offset": 12,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_RTC": {
    +                    "description": "core_0_pif_pms_constrain_world_0_rtc",
    +                    "offset": 14,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_IO_MUX": {
    +                    "description": "core_0_pif_pms_constrain_world_0_io_mux",
    +                    "offset": 16,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_WDG": {
    +                    "description": "core_0_pif_pms_constrain_world_0_wdg",
    +                    "offset": 18,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_MISC": {
    +                    "description": "core_0_pif_pms_constrain_world_0_misc",
    +                    "offset": 24,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_I2C": {
    +                    "description": "core_0_pif_pms_constrain_world_0_i2c",
    +                    "offset": 26,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_UART1": {
    +                    "description": "core_0_pif_pms_constrain_world_0_uart1",
    +                    "offset": 30,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_PIF_PMS_CONSTRAIN_2": {
    +              "description": "SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_2_REG",
    +              "offset": 224,
    +              "size": 32,
    +              "reset_value": 4240641267,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_BT": {
    +                    "description": "core_0_pif_pms_constrain_world_0_bt",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_I2C_EXT0": {
    +                    "description": "core_0_pif_pms_constrain_world_0_i2c_ext0",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_UHCI0": {
    +                    "description": "core_0_pif_pms_constrain_world_0_uhci0",
    +                    "offset": 6,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_RMT": {
    +                    "description": "core_0_pif_pms_constrain_world_0_rmt",
    +                    "offset": 10,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_LEDC": {
    +                    "description": "core_0_pif_pms_constrain_world_0_ledc",
    +                    "offset": 16,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_BB": {
    +                    "description": "core_0_pif_pms_constrain_world_0_bb",
    +                    "offset": 22,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_TIMERGROUP": {
    +                    "description": "core_0_pif_pms_constrain_world_0_timergroup",
    +                    "offset": 26,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_TIMERGROUP1": {
    +                    "description": "core_0_pif_pms_constrain_world_0_timergroup1",
    +                    "offset": 28,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SYSTIMER": {
    +                    "description": "core_0_pif_pms_constrain_world_0_systimer",
    +                    "offset": 30,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_PIF_PMS_CONSTRAIN_3": {
    +              "description": "SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_3_REG",
    +              "offset": 228,
    +              "size": 32,
    +              "reset_value": 1019268147,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SPI_2": {
    +                    "description": "core_0_pif_pms_constrain_world_0_spi_2",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_APB_CTRL": {
    +                    "description": "core_0_pif_pms_constrain_world_0_apb_ctrl",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CAN": {
    +                    "description": "core_0_pif_pms_constrain_world_0_can",
    +                    "offset": 10,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_I2S1": {
    +                    "description": "core_0_pif_pms_constrain_world_0_i2s1",
    +                    "offset": 14,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_RWBT": {
    +                    "description": "core_0_pif_pms_constrain_world_0_rwbt",
    +                    "offset": 22,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_WIFIMAC": {
    +                    "description": "core_0_pif_pms_constrain_world_0_wifimac",
    +                    "offset": 26,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_PWR": {
    +                    "description": "core_0_pif_pms_constrain_world_0_pwr",
    +                    "offset": 28,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_PIF_PMS_CONSTRAIN_4": {
    +              "description": "SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_4_REG",
    +              "offset": 232,
    +              "size": 32,
    +              "reset_value": 4294964220,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_USB_WRAP": {
    +                    "description": "core_0_pif_pms_constrain_world_0_usb_wrap",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CRYPTO_PERI": {
    +                    "description": "core_0_pif_pms_constrain_world_0_crypto_peri",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CRYPTO_DMA": {
    +                    "description": "core_0_pif_pms_constrain_world_0_crypto_dma",
    +                    "offset": 6,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_APB_ADC": {
    +                    "description": "core_0_pif_pms_constrain_world_0_apb_adc",
    +                    "offset": 8,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_BT_PWR": {
    +                    "description": "core_0_pif_pms_constrain_world_0_bt_pwr",
    +                    "offset": 12,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_USB_DEVICE": {
    +                    "description": "core_0_pif_pms_constrain_world_0_usb_device",
    +                    "offset": 14,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SYSTEM": {
    +                    "description": "core_0_pif_pms_constrain_world_0_system",
    +                    "offset": 16,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SENSITIVE": {
    +                    "description": "core_0_pif_pms_constrain_world_0_sensitive",
    +                    "offset": 18,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_INTERRUPT": {
    +                    "description": "core_0_pif_pms_constrain_world_0_interrupt",
    +                    "offset": 20,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_DMA_COPY": {
    +                    "description": "core_0_pif_pms_constrain_world_0_dma_copy",
    +                    "offset": 22,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CACHE_CONFIG": {
    +                    "description": "core_0_pif_pms_constrain_world_0_cache_config",
    +                    "offset": 24,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_AD": {
    +                    "description": "core_0_pif_pms_constrain_world_0_ad",
    +                    "offset": 26,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_DIO": {
    +                    "description": "core_0_pif_pms_constrain_world_0_dio",
    +                    "offset": 28,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_WORLD_CONTROLLER": {
    +                    "description": "core_0_pif_pms_constrain_world_0_world_controller",
    +                    "offset": 30,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_PIF_PMS_CONSTRAIN_5": {
    +              "description": "SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_5_REG",
    +              "offset": 236,
    +              "size": 32,
    +              "reset_value": 3473932287,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_UART": {
    +                    "description": "core_0_pif_pms_constrain_world_1_uart",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_G0SPI_1": {
    +                    "description": "core_0_pif_pms_constrain_world_1_g0spi_1",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_G0SPI_0": {
    +                    "description": "core_0_pif_pms_constrain_world_1_g0spi_0",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_GPIO": {
    +                    "description": "core_0_pif_pms_constrain_world_1_gpio",
    +                    "offset": 6,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_FE2": {
    +                    "description": "core_0_pif_pms_constrain_world_1_fe2",
    +                    "offset": 8,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_FE": {
    +                    "description": "core_0_pif_pms_constrain_world_1_fe",
    +                    "offset": 10,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_TIMER": {
    +                    "description": "core_0_pif_pms_constrain_world_1_timer",
    +                    "offset": 12,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_RTC": {
    +                    "description": "core_0_pif_pms_constrain_world_1_rtc",
    +                    "offset": 14,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_IO_MUX": {
    +                    "description": "core_0_pif_pms_constrain_world_1_io_mux",
    +                    "offset": 16,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_WDG": {
    +                    "description": "core_0_pif_pms_constrain_world_1_wdg",
    +                    "offset": 18,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_MISC": {
    +                    "description": "core_0_pif_pms_constrain_world_1_misc",
    +                    "offset": 24,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_I2C": {
    +                    "description": "core_0_pif_pms_constrain_world_1_i2c",
    +                    "offset": 26,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_UART1": {
    +                    "description": "core_0_pif_pms_constrain_world_1_uart1",
    +                    "offset": 30,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_PIF_PMS_CONSTRAIN_6": {
    +              "description": "SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_6_REG",
    +              "offset": 240,
    +              "size": 32,
    +              "reset_value": 4240641267,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_BT": {
    +                    "description": "core_0_pif_pms_constrain_world_1_bt",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_I2C_EXT0": {
    +                    "description": "core_0_pif_pms_constrain_world_1_i2c_ext0",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_UHCI0": {
    +                    "description": "core_0_pif_pms_constrain_world_1_uhci0",
    +                    "offset": 6,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_RMT": {
    +                    "description": "core_0_pif_pms_constrain_world_1_rmt",
    +                    "offset": 10,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_LEDC": {
    +                    "description": "core_0_pif_pms_constrain_world_1_ledc",
    +                    "offset": 16,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_BB": {
    +                    "description": "core_0_pif_pms_constrain_world_1_bb",
    +                    "offset": 22,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_TIMERGROUP": {
    +                    "description": "core_0_pif_pms_constrain_world_1_timergroup",
    +                    "offset": 26,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_TIMERGROUP1": {
    +                    "description": "core_0_pif_pms_constrain_world_1_timergroup1",
    +                    "offset": 28,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SYSTIMER": {
    +                    "description": "core_0_pif_pms_constrain_world_1_systimer",
    +                    "offset": 30,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_PIF_PMS_CONSTRAIN_7": {
    +              "description": "SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_7_REG",
    +              "offset": 244,
    +              "size": 32,
    +              "reset_value": 1019268147,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SPI_2": {
    +                    "description": "core_0_pif_pms_constrain_world_1_spi_2",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_APB_CTRL": {
    +                    "description": "core_0_pif_pms_constrain_world_1_apb_ctrl",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CAN": {
    +                    "description": "core_0_pif_pms_constrain_world_1_can",
    +                    "offset": 10,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_I2S1": {
    +                    "description": "core_0_pif_pms_constrain_world_1_i2s1",
    +                    "offset": 14,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_RWBT": {
    +                    "description": "core_0_pif_pms_constrain_world_1_rwbt",
    +                    "offset": 22,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_WIFIMAC": {
    +                    "description": "core_0_pif_pms_constrain_world_1_wifimac",
    +                    "offset": 26,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_PWR": {
    +                    "description": "core_0_pif_pms_constrain_world_1_pwr",
    +                    "offset": 28,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_PIF_PMS_CONSTRAIN_8": {
    +              "description": "SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_8_REG",
    +              "offset": 248,
    +              "size": 32,
    +              "reset_value": 4294964220,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_USB_WRAP": {
    +                    "description": "core_0_pif_pms_constrain_world_1_usb_wrap",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CRYPTO_PERI": {
    +                    "description": "core_0_pif_pms_constrain_world_1_crypto_peri",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CRYPTO_DMA": {
    +                    "description": "core_0_pif_pms_constrain_world_1_crypto_dma",
    +                    "offset": 6,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_APB_ADC": {
    +                    "description": "core_0_pif_pms_constrain_world_1_apb_adc",
    +                    "offset": 8,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_BT_PWR": {
    +                    "description": "core_0_pif_pms_constrain_world_1_bt_pwr",
    +                    "offset": 12,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_USB_DEVICE": {
    +                    "description": "core_0_pif_pms_constrain_world_1_usb_device",
    +                    "offset": 14,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SYSTEM": {
    +                    "description": "core_0_pif_pms_constrain_world_1_system",
    +                    "offset": 16,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SENSITIVE": {
    +                    "description": "core_0_pif_pms_constrain_world_1_sensitive",
    +                    "offset": 18,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_INTERRUPT": {
    +                    "description": "core_0_pif_pms_constrain_world_1_interrupt",
    +                    "offset": 20,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_DMA_COPY": {
    +                    "description": "core_0_pif_pms_constrain_world_1_dma_copy",
    +                    "offset": 22,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CACHE_CONFIG": {
    +                    "description": "core_0_pif_pms_constrain_world_1_cache_config",
    +                    "offset": 24,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_AD": {
    +                    "description": "core_0_pif_pms_constrain_world_1_ad",
    +                    "offset": 26,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_DIO": {
    +                    "description": "core_0_pif_pms_constrain_world_1_dio",
    +                    "offset": 28,
    +                    "size": 2
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_WORLD_CONTROLLER": {
    +                    "description": "core_0_pif_pms_constrain_world_1_world_controller",
    +                    "offset": 30,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_PIF_PMS_CONSTRAIN_9": {
    +              "description": "SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_9_REG",
    +              "offset": 252,
    +              "size": 32,
    +              "reset_value": 4194303,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_SPLTADDR_WORLD_0": {
    +                    "description": "core_0_pif_pms_constrain_rtcfast_spltaddr_world_0",
    +                    "offset": 0,
    +                    "size": 11
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_SPLTADDR_WORLD_1": {
    +                    "description": "core_0_pif_pms_constrain_rtcfast_spltaddr_world_1",
    +                    "offset": 11,
    +                    "size": 11
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_PIF_PMS_CONSTRAIN_10": {
    +              "description": "SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_10_REG",
    +              "offset": 256,
    +              "size": 32,
    +              "reset_value": 4095,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_0_L": {
    +                    "description": "core_0_pif_pms_constrain_rtcfast_world_0_l",
    +                    "offset": 0,
    +                    "size": 3
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_0_H": {
    +                    "description": "core_0_pif_pms_constrain_rtcfast_world_0_h",
    +                    "offset": 3,
    +                    "size": 3
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_1_L": {
    +                    "description": "core_0_pif_pms_constrain_rtcfast_world_1_l",
    +                    "offset": 6,
    +                    "size": 3
    +                  },
    +                  "CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_1_H": {
    +                    "description": "core_0_pif_pms_constrain_rtcfast_world_1_h",
    +                    "offset": 9,
    +                    "size": 3
    +                  }
    +                }
    +              }
    +            },
    +            "REGION_PMS_CONSTRAIN_0": {
    +              "description": "SENSITIVE_REGION_PMS_CONSTRAIN_0_REG",
    +              "offset": 260,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "REGION_PMS_CONSTRAIN_LOCK": {
    +                    "description": "region_pms_constrain_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "REGION_PMS_CONSTRAIN_1": {
    +              "description": "SENSITIVE_REGION_PMS_CONSTRAIN_1_REG",
    +              "offset": 264,
    +              "size": 32,
    +              "reset_value": 16383,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "REGION_PMS_CONSTRAIN_WORLD_0_AREA_0": {
    +                    "description": "region_pms_constrain_world_0_area_0",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "REGION_PMS_CONSTRAIN_WORLD_0_AREA_1": {
    +                    "description": "region_pms_constrain_world_0_area_1",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "REGION_PMS_CONSTRAIN_WORLD_0_AREA_2": {
    +                    "description": "region_pms_constrain_world_0_area_2",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "REGION_PMS_CONSTRAIN_WORLD_0_AREA_3": {
    +                    "description": "region_pms_constrain_world_0_area_3",
    +                    "offset": 6,
    +                    "size": 2
    +                  },
    +                  "REGION_PMS_CONSTRAIN_WORLD_0_AREA_4": {
    +                    "description": "region_pms_constrain_world_0_area_4",
    +                    "offset": 8,
    +                    "size": 2
    +                  },
    +                  "REGION_PMS_CONSTRAIN_WORLD_0_AREA_5": {
    +                    "description": "region_pms_constrain_world_0_area_5",
    +                    "offset": 10,
    +                    "size": 2
    +                  },
    +                  "REGION_PMS_CONSTRAIN_WORLD_0_AREA_6": {
    +                    "description": "region_pms_constrain_world_0_area_6",
    +                    "offset": 12,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "REGION_PMS_CONSTRAIN_2": {
    +              "description": "SENSITIVE_REGION_PMS_CONSTRAIN_2_REG",
    +              "offset": 268,
    +              "size": 32,
    +              "reset_value": 16383,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "REGION_PMS_CONSTRAIN_WORLD_1_AREA_0": {
    +                    "description": "region_pms_constrain_world_1_area_0",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "REGION_PMS_CONSTRAIN_WORLD_1_AREA_1": {
    +                    "description": "region_pms_constrain_world_1_area_1",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "REGION_PMS_CONSTRAIN_WORLD_1_AREA_2": {
    +                    "description": "region_pms_constrain_world_1_area_2",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "REGION_PMS_CONSTRAIN_WORLD_1_AREA_3": {
    +                    "description": "region_pms_constrain_world_1_area_3",
    +                    "offset": 6,
    +                    "size": 2
    +                  },
    +                  "REGION_PMS_CONSTRAIN_WORLD_1_AREA_4": {
    +                    "description": "region_pms_constrain_world_1_area_4",
    +                    "offset": 8,
    +                    "size": 2
    +                  },
    +                  "REGION_PMS_CONSTRAIN_WORLD_1_AREA_5": {
    +                    "description": "region_pms_constrain_world_1_area_5",
    +                    "offset": 10,
    +                    "size": 2
    +                  },
    +                  "REGION_PMS_CONSTRAIN_WORLD_1_AREA_6": {
    +                    "description": "region_pms_constrain_world_1_area_6",
    +                    "offset": 12,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "REGION_PMS_CONSTRAIN_3": {
    +              "description": "SENSITIVE_REGION_PMS_CONSTRAIN_3_REG",
    +              "offset": 272,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "REGION_PMS_CONSTRAIN_ADDR_0": {
    +                    "description": "region_pms_constrain_addr_0",
    +                    "offset": 0,
    +                    "size": 30
    +                  }
    +                }
    +              }
    +            },
    +            "REGION_PMS_CONSTRAIN_4": {
    +              "description": "SENSITIVE_REGION_PMS_CONSTRAIN_4_REG",
    +              "offset": 276,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "REGION_PMS_CONSTRAIN_ADDR_1": {
    +                    "description": "region_pms_constrain_addr_1",
    +                    "offset": 0,
    +                    "size": 30
    +                  }
    +                }
    +              }
    +            },
    +            "REGION_PMS_CONSTRAIN_5": {
    +              "description": "SENSITIVE_REGION_PMS_CONSTRAIN_5_REG",
    +              "offset": 280,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "REGION_PMS_CONSTRAIN_ADDR_2": {
    +                    "description": "region_pms_constrain_addr_2",
    +                    "offset": 0,
    +                    "size": 30
    +                  }
    +                }
    +              }
    +            },
    +            "REGION_PMS_CONSTRAIN_6": {
    +              "description": "SENSITIVE_REGION_PMS_CONSTRAIN_6_REG",
    +              "offset": 284,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "REGION_PMS_CONSTRAIN_ADDR_3": {
    +                    "description": "region_pms_constrain_addr_3",
    +                    "offset": 0,
    +                    "size": 30
    +                  }
    +                }
    +              }
    +            },
    +            "REGION_PMS_CONSTRAIN_7": {
    +              "description": "SENSITIVE_REGION_PMS_CONSTRAIN_7_REG",
    +              "offset": 288,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "REGION_PMS_CONSTRAIN_ADDR_4": {
    +                    "description": "region_pms_constrain_addr_4",
    +                    "offset": 0,
    +                    "size": 30
    +                  }
    +                }
    +              }
    +            },
    +            "REGION_PMS_CONSTRAIN_8": {
    +              "description": "SENSITIVE_REGION_PMS_CONSTRAIN_8_REG",
    +              "offset": 292,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "REGION_PMS_CONSTRAIN_ADDR_5": {
    +                    "description": "region_pms_constrain_addr_5",
    +                    "offset": 0,
    +                    "size": 30
    +                  }
    +                }
    +              }
    +            },
    +            "REGION_PMS_CONSTRAIN_9": {
    +              "description": "SENSITIVE_REGION_PMS_CONSTRAIN_9_REG",
    +              "offset": 296,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "REGION_PMS_CONSTRAIN_ADDR_6": {
    +                    "description": "region_pms_constrain_addr_6",
    +                    "offset": 0,
    +                    "size": 30
    +                  }
    +                }
    +              }
    +            },
    +            "REGION_PMS_CONSTRAIN_10": {
    +              "description": "SENSITIVE_REGION_PMS_CONSTRAIN_10_REG",
    +              "offset": 300,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "REGION_PMS_CONSTRAIN_ADDR_7": {
    +                    "description": "region_pms_constrain_addr_7",
    +                    "offset": 0,
    +                    "size": 30
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_PIF_PMS_MONITOR_0": {
    +              "description": "SENSITIVE_CORE_0_PIF_PMS_MONITOR_0_REG",
    +              "offset": 304,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_PIF_PMS_MONITOR_LOCK": {
    +                    "description": "core_0_pif_pms_monitor_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_PIF_PMS_MONITOR_1": {
    +              "description": "SENSITIVE_CORE_0_PIF_PMS_MONITOR_1_REG",
    +              "offset": 308,
    +              "size": 32,
    +              "reset_value": 3,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_PIF_PMS_MONITOR_VIOLATE_CLR": {
    +                    "description": "core_0_pif_pms_monitor_violate_clr",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "CORE_0_PIF_PMS_MONITOR_VIOLATE_EN": {
    +                    "description": "core_0_pif_pms_monitor_violate_en",
    +                    "offset": 1,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_PIF_PMS_MONITOR_2": {
    +              "description": "SENSITIVE_CORE_0_PIF_PMS_MONITOR_2_REG",
    +              "offset": 312,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_PIF_PMS_MONITOR_VIOLATE_INTR": {
    +                    "description": "core_0_pif_pms_monitor_violate_intr",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HPORT_0": {
    +                    "description": "core_0_pif_pms_monitor_violate_status_hport_0",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HSIZE": {
    +                    "description": "core_0_pif_pms_monitor_violate_status_hsize",
    +                    "offset": 2,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HWRITE": {
    +                    "description": "core_0_pif_pms_monitor_violate_status_hwrite",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HWORLD": {
    +                    "description": "core_0_pif_pms_monitor_violate_status_hworld",
    +                    "offset": 6,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_PIF_PMS_MONITOR_3": {
    +              "description": "SENSITIVE_CORE_0_PIF_PMS_MONITOR_3_REG",
    +              "offset": 316,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HADDR": {
    +                    "description": "core_0_pif_pms_monitor_violate_status_haddr",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_PIF_PMS_MONITOR_4": {
    +              "description": "SENSITIVE_CORE_0_PIF_PMS_MONITOR_4_REG",
    +              "offset": 320,
    +              "size": 32,
    +              "reset_value": 3,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_CLR": {
    +                    "description": "core_0_pif_pms_monitor_nonword_violate_clr",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_EN": {
    +                    "description": "core_0_pif_pms_monitor_nonword_violate_en",
    +                    "offset": 1,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_PIF_PMS_MONITOR_5": {
    +              "description": "SENSITIVE_CORE_0_PIF_PMS_MONITOR_5_REG",
    +              "offset": 324,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_INTR": {
    +                    "description": "core_0_pif_pms_monitor_nonword_violate_intr",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_STATUS_HSIZE": {
    +                    "description": "core_0_pif_pms_monitor_nonword_violate_status_hsize",
    +                    "offset": 1,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_STATUS_HWORLD": {
    +                    "description": "core_0_pif_pms_monitor_nonword_violate_status_hworld",
    +                    "offset": 3,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_0_PIF_PMS_MONITOR_6": {
    +              "description": "SENSITIVE_CORE_0_PIF_PMS_MONITOR_6_REG",
    +              "offset": 328,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_STATUS_HADDR": {
    +                    "description": "core_0_pif_pms_monitor_nonword_violate_status_haddr",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "BACKUP_BUS_PMS_CONSTRAIN_0": {
    +              "description": "SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_0_REG",
    +              "offset": 332,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BACKUP_BUS_PMS_CONSTRAIN_LOCK": {
    +                    "description": "backup_bus_pms_constrain_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "BACKUP_BUS_PMS_CONSTRAIN_1": {
    +              "description": "SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_1_REG",
    +              "offset": 336,
    +              "size": 32,
    +              "reset_value": 3473932287,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BACKUP_BUS_PMS_CONSTRAIN_UART": {
    +                    "description": "backup_bus_pms_constrain_uart",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_G0SPI_1": {
    +                    "description": "backup_bus_pms_constrain_g0spi_1",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_G0SPI_0": {
    +                    "description": "backup_bus_pms_constrain_g0spi_0",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_GPIO": {
    +                    "description": "backup_bus_pms_constrain_gpio",
    +                    "offset": 6,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_FE2": {
    +                    "description": "backup_bus_pms_constrain_fe2",
    +                    "offset": 8,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_FE": {
    +                    "description": "backup_bus_pms_constrain_fe",
    +                    "offset": 10,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_TIMER": {
    +                    "description": "backup_bus_pms_constrain_timer",
    +                    "offset": 12,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_RTC": {
    +                    "description": "backup_bus_pms_constrain_rtc",
    +                    "offset": 14,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_IO_MUX": {
    +                    "description": "backup_bus_pms_constrain_io_mux",
    +                    "offset": 16,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_WDG": {
    +                    "description": "backup_bus_pms_constrain_wdg",
    +                    "offset": 18,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_MISC": {
    +                    "description": "backup_bus_pms_constrain_misc",
    +                    "offset": 24,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_I2C": {
    +                    "description": "backup_bus_pms_constrain_i2c",
    +                    "offset": 26,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_UART1": {
    +                    "description": "backup_bus_pms_constrain_uart1",
    +                    "offset": 30,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "BACKUP_BUS_PMS_CONSTRAIN_2": {
    +              "description": "SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_2_REG",
    +              "offset": 340,
    +              "size": 32,
    +              "reset_value": 4240641267,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BACKUP_BUS_PMS_CONSTRAIN_BT": {
    +                    "description": "backup_bus_pms_constrain_bt",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_I2C_EXT0": {
    +                    "description": "backup_bus_pms_constrain_i2c_ext0",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_UHCI0": {
    +                    "description": "backup_bus_pms_constrain_uhci0",
    +                    "offset": 6,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_RMT": {
    +                    "description": "backup_bus_pms_constrain_rmt",
    +                    "offset": 10,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_LEDC": {
    +                    "description": "backup_bus_pms_constrain_ledc",
    +                    "offset": 16,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_BB": {
    +                    "description": "backup_bus_pms_constrain_bb",
    +                    "offset": 22,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_TIMERGROUP": {
    +                    "description": "backup_bus_pms_constrain_timergroup",
    +                    "offset": 26,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_TIMERGROUP1": {
    +                    "description": "backup_bus_pms_constrain_timergroup1",
    +                    "offset": 28,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_SYSTIMER": {
    +                    "description": "backup_bus_pms_constrain_systimer",
    +                    "offset": 30,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "BACKUP_BUS_PMS_CONSTRAIN_3": {
    +              "description": "SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_3_REG",
    +              "offset": 344,
    +              "size": 32,
    +              "reset_value": 1019268147,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BACKUP_BUS_PMS_CONSTRAIN_SPI_2": {
    +                    "description": "backup_bus_pms_constrain_spi_2",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_APB_CTRL": {
    +                    "description": "backup_bus_pms_constrain_apb_ctrl",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_CAN": {
    +                    "description": "backup_bus_pms_constrain_can",
    +                    "offset": 10,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_I2S1": {
    +                    "description": "backup_bus_pms_constrain_i2s1",
    +                    "offset": 14,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_RWBT": {
    +                    "description": "backup_bus_pms_constrain_rwbt",
    +                    "offset": 22,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_WIFIMAC": {
    +                    "description": "backup_bus_pms_constrain_wifimac",
    +                    "offset": 26,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_PWR": {
    +                    "description": "backup_bus_pms_constrain_pwr",
    +                    "offset": 28,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "BACKUP_BUS_PMS_CONSTRAIN_4": {
    +              "description": "SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_4_REG",
    +              "offset": 348,
    +              "size": 32,
    +              "reset_value": 62460,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BACKUP_BUS_PMS_CONSTRAIN_USB_WRAP": {
    +                    "description": "backup_bus_pms_constrain_usb_wrap",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_CRYPTO_PERI": {
    +                    "description": "backup_bus_pms_constrain_crypto_peri",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_CRYPTO_DMA": {
    +                    "description": "backup_bus_pms_constrain_crypto_dma",
    +                    "offset": 6,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_APB_ADC": {
    +                    "description": "backup_bus_pms_constrain_apb_adc",
    +                    "offset": 8,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_BT_PWR": {
    +                    "description": "backup_bus_pms_constrain_bt_pwr",
    +                    "offset": 12,
    +                    "size": 2
    +                  },
    +                  "BACKUP_BUS_PMS_CONSTRAIN_USB_DEVICE": {
    +                    "description": "backup_bus_pms_constrain_usb_device",
    +                    "offset": 14,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "BACKUP_BUS_PMS_MONITOR_0": {
    +              "description": "SENSITIVE_BACKUP_BUS_PMS_MONITOR_0_REG",
    +              "offset": 352,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BACKUP_BUS_PMS_MONITOR_LOCK": {
    +                    "description": "backup_bus_pms_monitor_lock",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "BACKUP_BUS_PMS_MONITOR_1": {
    +              "description": "SENSITIVE_BACKUP_BUS_PMS_MONITOR_1_REG",
    +              "offset": 356,
    +              "size": 32,
    +              "reset_value": 3,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BACKUP_BUS_PMS_MONITOR_VIOLATE_CLR": {
    +                    "description": "backup_bus_pms_monitor_violate_clr",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "BACKUP_BUS_PMS_MONITOR_VIOLATE_EN": {
    +                    "description": "backup_bus_pms_monitor_violate_en",
    +                    "offset": 1,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "BACKUP_BUS_PMS_MONITOR_2": {
    +              "description": "SENSITIVE_BACKUP_BUS_PMS_MONITOR_2_REG",
    +              "offset": 360,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BACKUP_BUS_PMS_MONITOR_VIOLATE_INTR": {
    +                    "description": "backup_bus_pms_monitor_violate_intr",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "BACKUP_BUS_PMS_MONITOR_VIOLATE_STATUS_HTRANS": {
    +                    "description": "backup_bus_pms_monitor_violate_status_htrans",
    +                    "offset": 1,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "BACKUP_BUS_PMS_MONITOR_VIOLATE_STATUS_HSIZE": {
    +                    "description": "backup_bus_pms_monitor_violate_status_hsize",
    +                    "offset": 3,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "BACKUP_BUS_PMS_MONITOR_VIOLATE_STATUS_HWRITE": {
    +                    "description": "backup_bus_pms_monitor_violate_status_hwrite",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "BACKUP_BUS_PMS_MONITOR_3": {
    +              "description": "SENSITIVE_BACKUP_BUS_PMS_MONITOR_3_REG",
    +              "offset": 364,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BACKUP_BUS_PMS_MONITOR_VIOLATE_HADDR": {
    +                    "description": "backup_bus_pms_monitor_violate_haddr",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CLOCK_GATE": {
    +              "description": "SENSITIVE_CLOCK_GATE_REG",
    +              "offset": 368,
    +              "size": 32,
    +              "reset_value": 1,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CLK_EN": {
    +                    "description": "clk_en",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DATE": {
    +              "description": "SENSITIVE_DATE_REG",
    +              "offset": 4092,
    +              "size": 32,
    +              "reset_value": 33620480,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATE": {
    +                    "description": "reg_date",
    +                    "offset": 0,
    +                    "size": 28
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "SHA": {
    +        "description": "SHA (Secure Hash Algorithm) Accelerator",
    +        "children": {
    +          "registers": {
    +            "MODE": {
    +              "description": "Initial configuration register.",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "MODE": {
    +                    "description": "Sha mode.",
    +                    "offset": 0,
    +                    "size": 3
    +                  }
    +                }
    +              }
    +            },
    +            "T_STRING": {
    +              "description": "SHA 512/t configuration register 0.",
    +              "offset": 4,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "T_STRING": {
    +                    "description": "Sha t_string (used if and only if mode == SHA_512/t).",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "T_LENGTH": {
    +              "description": "SHA 512/t configuration register 1.",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "T_LENGTH": {
    +                    "description": "Sha t_length (used if and only if mode == SHA_512/t).",
    +                    "offset": 0,
    +                    "size": 6
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_BLOCK_NUM": {
    +              "description": "DMA configuration register 0.",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_BLOCK_NUM": {
    +                    "description": "Dma-sha block number.",
    +                    "offset": 0,
    +                    "size": 6
    +                  }
    +                }
    +              }
    +            },
    +            "START": {
    +              "description": "Typical SHA configuration register 0.",
    +              "offset": 16,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "START": {
    +                    "description": "Reserved.",
    +                    "offset": 1,
    +                    "size": 31,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CONTINUE": {
    +              "description": "Typical SHA configuration register 1.",
    +              "offset": 20,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CONTINUE": {
    +                    "description": "Reserved.",
    +                    "offset": 1,
    +                    "size": 31,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "BUSY": {
    +              "description": "Busy register.",
    +              "offset": 24,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "STATE": {
    +                    "description": "Sha busy state. 1'b0: idle. 1'b1: busy.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_START": {
    +              "description": "DMA configuration register 1.",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_START": {
    +                    "description": "Start dma-sha.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_CONTINUE": {
    +              "description": "DMA configuration register 2.",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_CONTINUE": {
    +                    "description": "Continue dma-sha.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CLEAR_IRQ": {
    +              "description": "Interrupt clear register.",
    +              "offset": 36,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CLEAR_INTERRUPT": {
    +                    "description": "Clear sha interrupt.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IRQ_ENA": {
    +              "description": "Interrupt enable register.",
    +              "offset": 40,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "INTERRUPT_ENA": {
    +                    "description": "Sha interrupt enable register. 1'b0: disable(default). 1'b1: enable.",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DATE": {
    +              "description": "Date register.",
    +              "offset": 44,
    +              "size": 32,
    +              "reset_value": 538969622,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATE": {
    +                    "description": "Sha date information/ sha version information.",
    +                    "offset": 0,
    +                    "size": 30
    +                  }
    +                }
    +              }
    +            },
    +            "H_MEM": {
    +              "description": "Sha H memory which contains intermediate hash or finial hash.",
    +              "offset": 64,
    +              "size": 8,
    +              "count": 64,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295
    +            },
    +            "M_MEM": {
    +              "description": "Sha M memory which contains message.",
    +              "offset": 128,
    +              "size": 8,
    +              "count": 64,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295
    +            }
    +          }
    +        }
    +      },
    +      "SPI0": {
    +        "description": "SPI (Serial Peripheral Interface) Controller",
    +        "children": {
    +          "registers": {
    +            "CTRL": {
    +              "description": "SPI0 control register.",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 2891776,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "FDUMMY_OUT": {
    +                    "description": "In the dummy phase the signal level of spi is output by the spi controller.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "FCMD_DUAL": {
    +                    "description": "Apply 2 signals during command phase 1:enable 0: disable",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "FCMD_QUAD": {
    +                    "description": "Apply 4 signals during command phase 1:enable 0: disable",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "FASTRD_MODE": {
    +                    "description": "This bit enable the bits: spi_mem_fread_qio, spi_mem_fread_dio, spi_mem_fread_qout and spi_mem_fread_dout. 1: enable 0: disable.",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "FREAD_DUAL": {
    +                    "description": "In the read operations, read-data phase apply 2 signals. 1: enable 0: disable.",
    +                    "offset": 14,
    +                    "size": 1
    +                  },
    +                  "Q_POL": {
    +                    "description": "The bit is used to set MISO line polarity, 1: high 0, low",
    +                    "offset": 18,
    +                    "size": 1
    +                  },
    +                  "D_POL": {
    +                    "description": "The bit is used to set MOSI line polarity, 1: high 0, low",
    +                    "offset": 19,
    +                    "size": 1
    +                  },
    +                  "FREAD_QUAD": {
    +                    "description": "In the read operations read-data phase apply 4 signals. 1: enable 0: disable.",
    +                    "offset": 20,
    +                    "size": 1
    +                  },
    +                  "WP": {
    +                    "description": "Write protect signal output when SPI is idle.  1: output high, 0: output low.",
    +                    "offset": 21,
    +                    "size": 1
    +                  },
    +                  "FREAD_DIO": {
    +                    "description": "In the read operations address phase and read-data phase apply 2 signals. 1: enable 0: disable.",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "FREAD_QIO": {
    +                    "description": "In the read operations address phase and read-data phase apply 4 signals. 1: enable 0: disable.",
    +                    "offset": 24,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CTRL1": {
    +              "description": "SPI0 control1 register.",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CLK_MODE": {
    +                    "description": "SPI clock mode bits. 0: SPI clock is off when CS inactive 1: SPI clock is delayed one cycle after CS inactive 2: SPI clock is delayed two cycles after CS inactive 3: SPI clock is alwasy on.",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "RXFIFO_RST": {
    +                    "description": "SPI0 RX FIFO reset signal.",
    +                    "offset": 30,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CTRL2": {
    +              "description": "SPI0 control2 register.",
    +              "offset": 16,
    +              "size": 32,
    +              "reset_value": 33,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CS_SETUP_TIME": {
    +                    "description": "(cycles-1) of prepare phase by spi clock this bits are combined with spi_mem_cs_setup bit.",
    +                    "offset": 0,
    +                    "size": 5
    +                  },
    +                  "CS_HOLD_TIME": {
    +                    "description": "Spi cs signal is delayed to inactive by spi clock this bits are combined with spi_mem_cs_hold bit.",
    +                    "offset": 5,
    +                    "size": 5
    +                  },
    +                  "CS_HOLD_DELAY": {
    +                    "description": "These bits are used to set the minimum CS high time tSHSL between SPI burst transfer when accesses to flash. tSHSL is (SPI_MEM_CS_HOLD_DELAY[5:0] + 1) MSPI core clock cycles.",
    +                    "offset": 25,
    +                    "size": 6
    +                  },
    +                  "SYNC_RESET": {
    +                    "description": "The FSM will be reset.",
    +                    "offset": 31,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CLOCK": {
    +              "description": "SPI clock division control register.",
    +              "offset": 20,
    +              "size": 32,
    +              "reset_value": 196867,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CLKCNT_L": {
    +                    "description": "In the master mode it must be equal to spi_mem_clkcnt_N.",
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "CLKCNT_H": {
    +                    "description": "In the master mode it must be floor((spi_mem_clkcnt_N+1)/2-1).",
    +                    "offset": 8,
    +                    "size": 8
    +                  },
    +                  "CLKCNT_N": {
    +                    "description": "In the master mode it is the divider of spi_mem_clk. So spi_mem_clk frequency is system/(spi_mem_clkcnt_N+1)",
    +                    "offset": 16,
    +                    "size": 8
    +                  },
    +                  "CLK_EQU_SYSCLK": {
    +                    "description": "Set this bit in 1-division mode.",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "USER": {
    +              "description": "SPI0 user register.",
    +              "offset": 24,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CS_HOLD": {
    +                    "description": "spi cs keep low when spi is in  done  phase. 1: enable 0: disable.",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "CS_SETUP": {
    +                    "description": "spi cs is enable when spi is in  prepare  phase. 1: enable 0: disable.",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "CK_OUT_EDGE": {
    +                    "description": "the bit combined with spi_mem_mosi_delay_mode bits to set mosi signal delay mode.",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "USR_DUMMY_IDLE": {
    +                    "description": "spi clock is disable in dummy phase when the bit is enable.",
    +                    "offset": 26,
    +                    "size": 1
    +                  },
    +                  "USR_DUMMY": {
    +                    "description": "This bit enable the dummy phase of an operation.",
    +                    "offset": 29,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "USER1": {
    +              "description": "SPI0 user1 register.",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 1543503879,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "USR_DUMMY_CYCLELEN": {
    +                    "description": "The length in spi_mem_clk cycles of dummy phase. The register value shall be (cycle_num-1).",
    +                    "offset": 0,
    +                    "size": 6
    +                  },
    +                  "USR_ADDR_BITLEN": {
    +                    "description": "The length in bits of address phase. The register value shall be (bit_num-1).",
    +                    "offset": 26,
    +                    "size": 6
    +                  }
    +                }
    +              }
    +            },
    +            "USER2": {
    +              "description": "SPI0 user2 register.",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 1879048192,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "USR_COMMAND_VALUE": {
    +                    "description": "The value of  command.",
    +                    "offset": 0,
    +                    "size": 16
    +                  },
    +                  "USR_COMMAND_BITLEN": {
    +                    "description": "The length in bits of command phase. The register value shall be (bit_num-1)",
    +                    "offset": 28,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "RD_STATUS": {
    +              "description": "SPI0 read control register.",
    +              "offset": 44,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WB_MODE": {
    +                    "description": "Mode bits in the flash fast read mode  it is combined with spi_mem_fastrd_mode bit.",
    +                    "offset": 16,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "MISC": {
    +              "description": "SPI0 misc register",
    +              "offset": 52,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TRANS_END": {
    +                    "description": "The bit is used to indicate the  spi0_mst_st controlled transmitting is done.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "TRANS_END_INT_ENA": {
    +                    "description": "The bit is used to enable the interrupt of  spi0_mst_st controlled transmitting is done.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "CSPI_ST_TRANS_END": {
    +                    "description": "The bit is used to indicate the  spi0_slv_st controlled transmitting is done.",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "CSPI_ST_TRANS_END_INT_ENA": {
    +                    "description": "The bit is used to enable the interrupt of spi0_slv_st controlled transmitting is done.",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "CK_IDLE_EDGE": {
    +                    "description": "1: spi clk line is high when idle     0: spi clk line is low when idle",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "CS_KEEP_ACTIVE": {
    +                    "description": "spi cs line keep low when the bit is set.",
    +                    "offset": 10,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_FCTRL": {
    +              "description": "SPI0 bit mode control register.",
    +              "offset": 60,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CACHE_REQ_EN": {
    +                    "description": "For SPI0, Cache access enable, 1: enable, 0:disable.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "CACHE_USR_ADDR_4BYTE": {
    +                    "description": "For SPI0,  cache  read flash with 4 bytes address, 1: enable, 0:disable.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "CACHE_FLASH_USR_CMD": {
    +                    "description": "For SPI0,  cache  read flash for user define command, 1: enable, 0:disable.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "FDIN_DUAL": {
    +                    "description": "For SPI0 flash, din phase apply 2 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_dio.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "FDOUT_DUAL": {
    +                    "description": "For SPI0 flash, dout phase apply 2 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_dio.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "FADDR_DUAL": {
    +                    "description": "For SPI0 flash, address phase apply 2 signals. 1: enable 0: disable.  The bit is the same with spi_mem_fread_dio.",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "FDIN_QUAD": {
    +                    "description": "For SPI0 flash, din phase apply 4 signals. 1: enable 0: disable.  The bit is the same with spi_mem_fread_qio.",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "FDOUT_QUAD": {
    +                    "description": "For SPI0 flash, dout phase apply 4 signals. 1: enable 0: disable.  The bit is the same with spi_mem_fread_qio.",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "FADDR_QUAD": {
    +                    "description": "For SPI0 flash, address phase apply 4 signals. 1: enable 0: disable.  The bit is the same with spi_mem_fread_qio.",
    +                    "offset": 8,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "FSM": {
    +              "description": "SPI0 FSM status register",
    +              "offset": 84,
    +              "size": 32,
    +              "reset_value": 512,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CSPI_ST": {
    +                    "description": "The current status of SPI0 slave FSM: spi0_slv_st. 0: idle state, 1: preparation state, 2: send command state, 3: send address state, 4: wait state, 5: read data state, 6:write data state, 7: done state, 8: read data end state.",
    +                    "offset": 0,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  },
    +                  "EM_ST": {
    +                    "description": "The current status of SPI0 master FSM: spi0_mst_st. 0: idle state, 1:EM_CACHE_GRANT , 2: program/erase suspend state, 3: SPI0 read data state, 4: wait cache/EDMA sent data is stored in SPI0 TX FIFO, 5: SPI0 write data state.",
    +                    "offset": 4,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "CSPI_LOCK_DELAY_TIME": {
    +                    "description": "The lock delay time of SPI0/1 arbiter by spi0_slv_st, after PER is sent by SPI1.",
    +                    "offset": 7,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "TIMING_CALI": {
    +              "description": "SPI0 timing calibration register",
    +              "offset": 168,
    +              "size": 32,
    +              "reset_value": 1,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMING_CLK_ENA": {
    +                    "description": "The bit is used to enable timing adjust clock for all reading operations.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "TIMING_CALI": {
    +                    "description": "The bit is used to enable timing auto-calibration for all reading operations.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "EXTRA_DUMMY_CYCLELEN": {
    +                    "description": "add extra dummy spi clock cycle length for spi clock calibration.",
    +                    "offset": 2,
    +                    "size": 3
    +                  }
    +                }
    +              }
    +            },
    +            "DIN_MODE": {
    +              "description": "SPI0 input delay mode control register",
    +              "offset": 172,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DIN0_MODE": {
    +                    "description": "the input signals are delayed by system clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb,  3: input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input with the spi_clk high edge,  6: input with the spi_clk low edge",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "DIN1_MODE": {
    +                    "description": "the input signals are delayed by system clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb,  3: input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input with the spi_clk high edge,  6: input with the spi_clk low edge",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "DIN2_MODE": {
    +                    "description": "the input signals are delayed by system clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb,  3: input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input with the spi_clk high edge,  6: input with the spi_clk low edge",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "DIN3_MODE": {
    +                    "description": "the input signals are delayed by system clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb,  3: input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input with the spi_clk high edge,  6: input with the spi_clk low edge",
    +                    "offset": 6,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "DIN_NUM": {
    +              "description": "SPI0 input delay number control register",
    +              "offset": 176,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DIN0_NUM": {
    +                    "description": "the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "DIN1_NUM": {
    +                    "description": "the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "DIN2_NUM": {
    +                    "description": "the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "DIN3_NUM": {
    +                    "description": "the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...",
    +                    "offset": 6,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "DOUT_MODE": {
    +              "description": "SPI0 output delay mode control register",
    +              "offset": 180,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DOUT0_MODE": {
    +                    "description": "the output signals are delayed by system clock cycles, 0: output without delayed, 1: output with the posedge of clk_apb,2 output with the negedge of clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low edge",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "DOUT1_MODE": {
    +                    "description": "the output signals are delayed by system clock cycles, 0: output without delayed, 1: output with the posedge of clk_apb,2 output with the negedge of clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low edge",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "DOUT2_MODE": {
    +                    "description": "the output signals are delayed by system clock cycles, 0: output without delayed, 1: output with the posedge of clk_apb,2 output with the negedge of clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low edge",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "DOUT3_MODE": {
    +                    "description": "the output signals are delayed by system clock cycles, 0: output without delayed, 1: output with the posedge of clk_apb,2 output with the negedge of clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low edge",
    +                    "offset": 3,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CLOCK_GATE": {
    +              "description": "SPI0 clk_gate register",
    +              "offset": 220,
    +              "size": 32,
    +              "reset_value": 1,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CLK_EN": {
    +                    "description": "Register clock gate enable signal. 1: Enable. 0: Disable.",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CORE_CLK_SEL": {
    +              "description": "SPI0 module clock select register",
    +              "offset": 224,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SPI01_CLK_SEL": {
    +                    "description": "When the digital system clock selects PLL clock and the frequency of PLL clock is 480MHz, the value of reg_spi01_clk_sel:  0: SPI0/1 module clock (clk) is 80MHz. 1: SPI0/1 module clock (clk) is 120MHz.  2: SPI0/1 module clock (clk) 160MHz. 3: Not used. When the digital system clock selects PLL clock and the frequency of PLL clock is 320MHz, the value of reg_spi01_clk_sel:  0: SPI0/1 module clock (clk) is 80MHz. 1: SPI0/1 module clock (clk) is 80MHz.  2: SPI0/1 module clock (clk) 160MHz. 3: Not used.",
    +                    "offset": 0,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "DATE": {
    +              "description": "Version control register",
    +              "offset": 1020,
    +              "size": 32,
    +              "reset_value": 33583408,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATE": {
    +                    "description": "SPI register version.",
    +                    "offset": 0,
    +                    "size": 28
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "SPI1": {
    +        "description": "SPI (Serial Peripheral Interface) Controller",
    +        "children": {
    +          "registers": {
    +            "CMD": {
    +              "description": "SPI1 memory command register",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SPI1_MST_ST": {
    +                    "description": "The current status of SPI1 master FSM.",
    +                    "offset": 0,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  },
    +                  "MSPI_ST": {
    +                    "description": "The current status of SPI1 slave FSM: mspi_st. 0: idle state, 1: preparation state, 2: send command state, 3: send address state, 4: wait state, 5: read data state, 6:write data state, 7: done state, 8: read data end state.",
    +                    "offset": 4,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  },
    +                  "FLASH_PE": {
    +                    "description": "In user mode, it is set to indicate that program/erase operation will be triggered. The bit is combined with spi_mem_usr bit. The bit will be cleared once the operation done.1: enable 0: disable.",
    +                    "offset": 17,
    +                    "size": 1
    +                  },
    +                  "USR": {
    +                    "description": "User define command enable.  An operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.",
    +                    "offset": 18,
    +                    "size": 1
    +                  },
    +                  "FLASH_HPM": {
    +                    "description": "Drive Flash into high performance mode.  The bit will be cleared once the operation done.1: enable 0: disable.",
    +                    "offset": 19,
    +                    "size": 1
    +                  },
    +                  "FLASH_RES": {
    +                    "description": "This bit combined with reg_resandres bit releases Flash from the power-down state or high performance mode and obtains the devices ID. The bit will be cleared once the operation done.1: enable 0: disable.",
    +                    "offset": 20,
    +                    "size": 1
    +                  },
    +                  "FLASH_DP": {
    +                    "description": "Drive Flash into power down.  An operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.",
    +                    "offset": 21,
    +                    "size": 1
    +                  },
    +                  "FLASH_CE": {
    +                    "description": "Chip erase enable. Chip erase operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "FLASH_BE": {
    +                    "description": "Block erase enable(32KB) .  Block erase operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "FLASH_SE": {
    +                    "description": "Sector erase enable(4KB). Sector erase operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.",
    +                    "offset": 24,
    +                    "size": 1
    +                  },
    +                  "FLASH_PP": {
    +                    "description": "Page program enable(1 byte ~256 bytes data to be programmed). Page program operation  will be triggered when the bit is set. The bit will be cleared once the operation done .1: enable 0: disable.",
    +                    "offset": 25,
    +                    "size": 1
    +                  },
    +                  "FLASH_WRSR": {
    +                    "description": "Write status register enable.   Write status operation  will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.",
    +                    "offset": 26,
    +                    "size": 1
    +                  },
    +                  "FLASH_RDSR": {
    +                    "description": "Read status register-1.  Read status operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.",
    +                    "offset": 27,
    +                    "size": 1
    +                  },
    +                  "FLASH_RDID": {
    +                    "description": "Read JEDEC ID . Read ID command will be sent when the bit is set. The bit will be cleared once the operation done. 1: enable 0: disable.",
    +                    "offset": 28,
    +                    "size": 1
    +                  },
    +                  "FLASH_WRDI": {
    +                    "description": "Write flash disable. Write disable command will be sent when the bit is set. The bit will be cleared once the operation done. 1: enable 0: disable.",
    +                    "offset": 29,
    +                    "size": 1
    +                  },
    +                  "FLASH_WREN": {
    +                    "description": "Write flash enable.  Write enable command will be sent when the bit is set. The bit will be cleared once the operation done. 1: enable 0: disable.",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "FLASH_READ": {
    +                    "description": "Read flash enable. Read flash operation will be triggered when the bit is set. The bit will be cleared once the operation done. 1: enable 0: disable.",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "ADDR": {
    +              "description": "SPI1 address register",
    +              "offset": 4,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "USR_ADDR_VALUE": {
    +                    "description": "In user mode, it is the memory address. other then the bit0-bit23 is the memory address, the bit24-bit31 are the byte length of a transfer.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "CTRL": {
    +              "description": "SPI1 control register.",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 2924544,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "FDUMMY_OUT": {
    +                    "description": "In the dummy phase the signal level of spi is output by the spi controller.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "FCMD_DUAL": {
    +                    "description": "Apply 2 signals during command phase 1:enable 0: disable",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "FCMD_QUAD": {
    +                    "description": "Apply 4 signals during command phase 1:enable 0: disable",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "FCS_CRC_EN": {
    +                    "description": "For SPI1,  initialize crc32 module before writing encrypted data to flash. Active low.",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "TX_CRC_EN": {
    +                    "description": "For SPI1,  enable crc32 when writing encrypted data to flash. 1: enable 0:disable",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "FASTRD_MODE": {
    +                    "description": "This bit enable the bits: spi_mem_fread_qio, spi_mem_fread_dio, spi_mem_fread_qout and spi_mem_fread_dout. 1: enable 0: disable.",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "FREAD_DUAL": {
    +                    "description": "In the read operations, read-data phase apply 2 signals. 1: enable 0: disable.",
    +                    "offset": 14,
    +                    "size": 1
    +                  },
    +                  "RESANDRES": {
    +                    "description": "The Device ID is read out to SPI_MEM_RD_STATUS register,  this bit combine with spi_mem_flash_res bit. 1: enable 0: disable.",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "Q_POL": {
    +                    "description": "The bit is used to set MISO line polarity, 1: high 0, low",
    +                    "offset": 18,
    +                    "size": 1
    +                  },
    +                  "D_POL": {
    +                    "description": "The bit is used to set MOSI line polarity, 1: high 0, low",
    +                    "offset": 19,
    +                    "size": 1
    +                  },
    +                  "FREAD_QUAD": {
    +                    "description": "In the read operations read-data phase apply 4 signals. 1: enable 0: disable.",
    +                    "offset": 20,
    +                    "size": 1
    +                  },
    +                  "WP": {
    +                    "description": "Write protect signal output when SPI is idle.  1: output high, 0: output low.",
    +                    "offset": 21,
    +                    "size": 1
    +                  },
    +                  "WRSR_2B": {
    +                    "description": "two bytes data will be written to status register when it is set. 1: enable 0: disable.",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "FREAD_DIO": {
    +                    "description": "In the read operations address phase and read-data phase apply 2 signals. 1: enable 0: disable.",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "FREAD_QIO": {
    +                    "description": "In the read operations address phase and read-data phase apply 4 signals. 1: enable 0: disable.",
    +                    "offset": 24,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CTRL1": {
    +              "description": "SPI1 control1 register.",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 4092,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CLK_MODE": {
    +                    "description": "SPI clock mode bits. 0: SPI clock is off when CS inactive 1: SPI clock is delayed one cycle after CS inactive 2: SPI clock is delayed two cycles after CS inactive 3: SPI clock is alwasy on.",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "CS_HOLD_DLY_RES": {
    +                    "description": "After RES/DP/HPM command is sent, SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 512) SPI_CLK cycles.",
    +                    "offset": 2,
    +                    "size": 10
    +                  }
    +                }
    +              }
    +            },
    +            "CTRL2": {
    +              "description": "SPI1 control2 register.",
    +              "offset": 16,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SYNC_RESET": {
    +                    "description": "The FSM will be reset.",
    +                    "offset": 31,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CLOCK": {
    +              "description": "SPI1 clock division control register.",
    +              "offset": 20,
    +              "size": 32,
    +              "reset_value": 196867,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CLKCNT_L": {
    +                    "description": "In the master mode it must be equal to spi_mem_clkcnt_N.",
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "CLKCNT_H": {
    +                    "description": "In the master mode it must be floor((spi_mem_clkcnt_N+1)/2-1).",
    +                    "offset": 8,
    +                    "size": 8
    +                  },
    +                  "CLKCNT_N": {
    +                    "description": "In the master mode it is the divider of spi_mem_clk. So spi_mem_clk frequency is system/(spi_mem_clkcnt_N+1)",
    +                    "offset": 16,
    +                    "size": 8
    +                  },
    +                  "CLK_EQU_SYSCLK": {
    +                    "description": "reserved",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "USER": {
    +              "description": "SPI1 user register.",
    +              "offset": 24,
    +              "size": 32,
    +              "reset_value": 2147483648,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CK_OUT_EDGE": {
    +                    "description": "the bit combined with spi_mem_mosi_delay_mode bits to set mosi signal delay mode.",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "FWRITE_DUAL": {
    +                    "description": "In the write operations read-data phase apply 2 signals",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "FWRITE_QUAD": {
    +                    "description": "In the write operations read-data phase apply 4 signals",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "FWRITE_DIO": {
    +                    "description": "In the write operations address phase and read-data phase apply 2 signals.",
    +                    "offset": 14,
    +                    "size": 1
    +                  },
    +                  "FWRITE_QIO": {
    +                    "description": "In the write operations address phase and read-data phase apply 4 signals.",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "USR_MISO_HIGHPART": {
    +                    "description": "read-data phase only access to high-part of the buffer spi_mem_w8~spi_mem_w15. 1: enable 0: disable.",
    +                    "offset": 24,
    +                    "size": 1
    +                  },
    +                  "USR_MOSI_HIGHPART": {
    +                    "description": "write-data phase only access to high-part of the buffer spi_mem_w8~spi_mem_w15. 1: enable 0: disable.",
    +                    "offset": 25,
    +                    "size": 1
    +                  },
    +                  "USR_DUMMY_IDLE": {
    +                    "description": "SPI clock is disable in dummy phase when the bit is enable.",
    +                    "offset": 26,
    +                    "size": 1
    +                  },
    +                  "USR_MOSI": {
    +                    "description": "This bit enable the write-data phase of an operation.",
    +                    "offset": 27,
    +                    "size": 1
    +                  },
    +                  "USR_MISO": {
    +                    "description": "This bit enable the read-data phase of an operation.",
    +                    "offset": 28,
    +                    "size": 1
    +                  },
    +                  "USR_DUMMY": {
    +                    "description": "This bit enable the dummy phase of an operation.",
    +                    "offset": 29,
    +                    "size": 1
    +                  },
    +                  "USR_ADDR": {
    +                    "description": "This bit enable the address phase of an operation.",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "USR_COMMAND": {
    +                    "description": "This bit enable the command phase of an operation.",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "USER1": {
    +              "description": "SPI1 user1 register.",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 1543503879,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "USR_DUMMY_CYCLELEN": {
    +                    "description": "The length in spi_mem_clk cycles of dummy phase. The register value shall be (cycle_num-1).",
    +                    "offset": 0,
    +                    "size": 6
    +                  },
    +                  "USR_ADDR_BITLEN": {
    +                    "description": "The length in bits of address phase. The register value shall be (bit_num-1).",
    +                    "offset": 26,
    +                    "size": 6
    +                  }
    +                }
    +              }
    +            },
    +            "USER2": {
    +              "description": "SPI1 user2 register.",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 1879048192,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "USR_COMMAND_VALUE": {
    +                    "description": "The value of  command.",
    +                    "offset": 0,
    +                    "size": 16
    +                  },
    +                  "USR_COMMAND_BITLEN": {
    +                    "description": "The length in bits of command phase. The register value shall be (bit_num-1)",
    +                    "offset": 28,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "MOSI_DLEN": {
    +              "description": "SPI1 send data bit length control register.",
    +              "offset": 36,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "USR_MOSI_DBITLEN": {
    +                    "description": "The length in bits of write-data. The register value shall be (bit_num-1).",
    +                    "offset": 0,
    +                    "size": 10
    +                  }
    +                }
    +              }
    +            },
    +            "MISO_DLEN": {
    +              "description": "SPI1 receive data bit length control register.",
    +              "offset": 40,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "USR_MISO_DBITLEN": {
    +                    "description": "The length in bits of  read-data. The register value shall be (bit_num-1).",
    +                    "offset": 0,
    +                    "size": 10
    +                  }
    +                }
    +              }
    +            },
    +            "RD_STATUS": {
    +              "description": "SPI1 status register.",
    +              "offset": 44,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "STATUS": {
    +                    "description": "The value is stored when set spi_mem_flash_rdsr bit and spi_mem_flash_res bit.",
    +                    "offset": 0,
    +                    "size": 16
    +                  },
    +                  "WB_MODE": {
    +                    "description": "Mode bits in the flash fast read mode  it is combined with spi_mem_fastrd_mode bit.",
    +                    "offset": 16,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "MISC": {
    +              "description": "SPI1 misc register",
    +              "offset": 52,
    +              "size": 32,
    +              "reset_value": 2,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CS0_DIS": {
    +                    "description": "SPI_CS0 pin enable, 1: disable SPI_CS0, 0: SPI_CS0 pin is active to select SPI device, such as flash, external RAM and so on.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "CS1_DIS": {
    +                    "description": "SPI_CS1 pin enable, 1: disable SPI_CS1, 0: SPI_CS1 pin is active to select SPI device, such as flash, external RAM and so on.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "CK_IDLE_EDGE": {
    +                    "description": "1: spi clk line is high when idle     0: spi clk line is low when idle",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "CS_KEEP_ACTIVE": {
    +                    "description": "spi cs line keep low when the bit is set.",
    +                    "offset": 10,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "TX_CRC": {
    +              "description": "SPI1 TX CRC data register.",
    +              "offset": 56,
    +              "size": 32,
    +              "reset_value": 4294967295,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATA": {
    +                    "description": "For SPI1, the value of crc32.",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_FCTRL": {
    +              "description": "SPI1 bit mode control register.",
    +              "offset": 60,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CACHE_USR_ADDR_4BYTE": {
    +                    "description": "For SPI1,  cache  read flash with 4 bytes address, 1: enable, 0:disable.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "FDIN_DUAL": {
    +                    "description": "For SPI1, din phase apply 2 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_dio.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "FDOUT_DUAL": {
    +                    "description": "For SPI1, dout phase apply 2 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_dio.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "FADDR_DUAL": {
    +                    "description": "For SPI1, address phase apply 2 signals. 1: enable 0: disable.  The bit is the same with spi_mem_fread_dio.",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "FDIN_QUAD": {
    +                    "description": "For SPI1, din phase apply 4 signals. 1: enable 0: disable.  The bit is the same with spi_mem_fread_qio.",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "FDOUT_QUAD": {
    +                    "description": "For SPI1, dout phase apply 4 signals. 1: enable 0: disable.  The bit is the same with spi_mem_fread_qio.",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "FADDR_QUAD": {
    +                    "description": "For SPI1, address phase apply 4 signals. 1: enable 0: disable.  The bit is the same with spi_mem_fread_qio.",
    +                    "offset": 8,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "W0": {
    +              "description": "SPI1 memory data buffer0",
    +              "offset": 88,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF0": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W1": {
    +              "description": "SPI1 memory data buffer1",
    +              "offset": 92,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF1": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W2": {
    +              "description": "SPI1 memory data buffer2",
    +              "offset": 96,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF2": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W3": {
    +              "description": "SPI1 memory data buffer3",
    +              "offset": 100,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF3": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W4": {
    +              "description": "SPI1 memory data buffer4",
    +              "offset": 104,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF4": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W5": {
    +              "description": "SPI1 memory data buffer5",
    +              "offset": 108,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF5": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W6": {
    +              "description": "SPI1 memory data buffer6",
    +              "offset": 112,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF6": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W7": {
    +              "description": "SPI1 memory data buffer7",
    +              "offset": 116,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF7": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W8": {
    +              "description": "SPI1 memory data buffer8",
    +              "offset": 120,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF8": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W9": {
    +              "description": "SPI1 memory data buffer9",
    +              "offset": 124,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF9": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W10": {
    +              "description": "SPI1 memory data buffer10",
    +              "offset": 128,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF10": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W11": {
    +              "description": "SPI1 memory data buffer11",
    +              "offset": 132,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF11": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W12": {
    +              "description": "SPI1 memory data buffer12",
    +              "offset": 136,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF12": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W13": {
    +              "description": "SPI1 memory data buffer13",
    +              "offset": 140,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF13": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W14": {
    +              "description": "SPI1 memory data buffer14",
    +              "offset": 144,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF14": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W15": {
    +              "description": "SPI1 memory data buffer15",
    +              "offset": 148,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF15": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "FLASH_WAITI_CTRL": {
    +              "description": "SPI1 wait idle control register",
    +              "offset": 152,
    +              "size": 32,
    +              "reset_value": 20,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WAITI_DUMMY": {
    +                    "description": "The dummy phase enable when wait flash idle (RDSR)",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "WAITI_CMD": {
    +                    "description": "The command to wait flash idle(RDSR).",
    +                    "offset": 2,
    +                    "size": 8
    +                  },
    +                  "WAITI_DUMMY_CYCLELEN": {
    +                    "description": "The dummy cycle length when wait flash idle(RDSR).",
    +                    "offset": 10,
    +                    "size": 6
    +                  }
    +                }
    +              }
    +            },
    +            "FLASH_SUS_CTRL": {
    +              "description": "SPI1 flash suspend control register",
    +              "offset": 156,
    +              "size": 32,
    +              "reset_value": 134225920,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "FLASH_PER": {
    +                    "description": "program erase resume bit, program erase suspend operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "FLASH_PES": {
    +                    "description": "program erase suspend bit, program erase suspend operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "FLASH_PER_WAIT_EN": {
    +                    "description": "1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4 or *128) SPI_CLK cycles after program erase resume command is sent. 0: SPI1 does not wait after program erase resume command is sent.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "FLASH_PES_WAIT_EN": {
    +                    "description": "1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4 or *128) SPI_CLK cycles after program erase suspend command is sent. 0: SPI1 does not wait after program erase suspend command is sent.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "PES_PER_EN": {
    +                    "description": "Set this bit to enable PES end triggers PER transfer option. If this bit is 0, application should send PER after PES is done.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "FLASH_PES_EN": {
    +                    "description": "Set this bit to enable Auto-suspending function.",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "PESR_END_MSK": {
    +                    "description": "The mask value when check SUS/SUS1/SUS2 status bit. If the read status value is status_in[15:0](only status_in[7:0] is valid when only one byte of data is read out, status_in[15:0] is valid when two bytes of data are read out), SUS/SUS1/SUS2 = status_in[15:0]^ SPI_MEM_PESR_END_MSK[15:0].",
    +                    "offset": 6,
    +                    "size": 16
    +                  },
    +                  "RD_SUS_2B": {
    +                    "description": "1: Read two bytes when check flash SUS/SUS1/SUS2 status bit. 0:  Read one byte when check flash SUS/SUS1/SUS2 status bit",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "PER_END_EN": {
    +                    "description": "1: Both WIP and SUS/SUS1/SUS2 bits should be checked to insure the resume status of flash. 0: Only need to check WIP is 0.",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "PES_END_EN": {
    +                    "description": "1: Both WIP and SUS/SUS1/SUS2 bits should be checked to insure the suspend status of flash. 0: Only need to check WIP is 0.",
    +                    "offset": 24,
    +                    "size": 1
    +                  },
    +                  "SUS_TIMEOUT_CNT": {
    +                    "description": "When SPI1 checks SUS/SUS1/SUS2 bits fail for SPI_MEM_SUS_TIMEOUT_CNT[6:0] times, it will be treated as check pass.",
    +                    "offset": 25,
    +                    "size": 7
    +                  }
    +                }
    +              }
    +            },
    +            "FLASH_SUS_CMD": {
    +              "description": "SPI1 flash suspend command register",
    +              "offset": 160,
    +              "size": 32,
    +              "reset_value": 357754,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "FLASH_PER_COMMAND": {
    +                    "description": "Program/Erase resume command.",
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "FLASH_PES_COMMAND": {
    +                    "description": "Program/Erase suspend command.",
    +                    "offset": 8,
    +                    "size": 8
    +                  },
    +                  "WAIT_PESR_COMMAND": {
    +                    "description": "Flash SUS/SUS1/SUS2 status bit read command. The command should be sent when SUS/SUS1/SUS2 bit should be checked to insure the suspend or resume status of flash.",
    +                    "offset": 16,
    +                    "size": 16
    +                  }
    +                }
    +              }
    +            },
    +            "SUS_STATUS": {
    +              "description": "SPI1 flash suspend status register",
    +              "offset": 164,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "FLASH_SUS": {
    +                    "description": "The status of flash suspend, only used in SPI1.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "WAIT_PESR_CMD_2B": {
    +                    "description": "1: SPI1 sends out SPI_MEM_WAIT_PESR_COMMAND[15:0] to check SUS/SUS1/SUS2 bit. 0: SPI1 sends out SPI_MEM_WAIT_PESR_COMMAND[7:0] to check SUS/SUS1/SUS2 bit.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "FLASH_HPM_DLY_128": {
    +                    "description": "1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after HPM command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after HPM command is sent.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "FLASH_RES_DLY_128": {
    +                    "description": "1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after RES command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after RES command is sent.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "FLASH_DP_DLY_128": {
    +                    "description": "1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after DP command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after DP command is sent.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "FLASH_PER_DLY_128": {
    +                    "description": "Valid when SPI_MEM_FLASH_PER_WAIT_EN is 1. 1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after PER command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after PER command is sent.",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "FLASH_PES_DLY_128": {
    +                    "description": "Valid when SPI_MEM_FLASH_PES_WAIT_EN is 1. 1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after PES command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after PES command is sent.",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "SPI0_LOCK_EN": {
    +                    "description": "1: Enable SPI0 lock SPI0/1 arbiter option. 0: Disable it.",
    +                    "offset": 7,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "TIMING_CALI": {
    +              "description": "SPI1 timing control register",
    +              "offset": 168,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMING_CALI": {
    +                    "description": "The bit is used to enable timing auto-calibration for all reading operations.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "EXTRA_DUMMY_CYCLELEN": {
    +                    "description": "add extra dummy spi clock cycle length for spi clock calibration.",
    +                    "offset": 2,
    +                    "size": 3
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ENA": {
    +              "description": "SPI1 interrupt enable register",
    +              "offset": 192,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PER_END_INT_ENA": {
    +                    "description": "The enable bit for SPI_MEM_PER_END_INT interrupt.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "PES_END_INT_ENA": {
    +                    "description": "The enable bit for SPI_MEM_PES_END_INT interrupt.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "WPE_END_INT_ENA": {
    +                    "description": "The enable bit for SPI_MEM_WPE_END_INT interrupt.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "SLV_ST_END_INT_ENA": {
    +                    "description": "The enable bit for SPI_MEM_SLV_ST_END_INT interrupt.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "MST_ST_END_INT_ENA": {
    +                    "description": "The enable bit for SPI_MEM_MST_ST_END_INT interrupt.",
    +                    "offset": 4,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INT_CLR": {
    +              "description": "SPI1 interrupt clear register",
    +              "offset": 196,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PER_END_INT_CLR": {
    +                    "description": "The clear bit for SPI_MEM_PER_END_INT interrupt.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "PES_END_INT_CLR": {
    +                    "description": "The clear bit for SPI_MEM_PES_END_INT interrupt.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "WPE_END_INT_CLR": {
    +                    "description": "The clear bit for SPI_MEM_WPE_END_INT interrupt.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SLV_ST_END_INT_CLR": {
    +                    "description": "The clear bit for SPI_MEM_SLV_ST_END_INT interrupt.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "MST_ST_END_INT_CLR": {
    +                    "description": "The clear bit for SPI_MEM_MST_ST_END_INT interrupt.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_RAW": {
    +              "description": "SPI1 interrupt raw register",
    +              "offset": 200,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PER_END_INT_RAW": {
    +                    "description": "The raw bit for SPI_MEM_PER_END_INT interrupt. 1: Triggered when Auto Resume command (0x7A) is sent and flash is resumed. 0: Others.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "PES_END_INT_RAW": {
    +                    "description": "The raw bit for SPI_MEM_PES_END_INT interrupt.1: Triggered when Auto Suspend command (0x75) is sent and flash is suspended. 0: Others.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "WPE_END_INT_RAW": {
    +                    "description": "The raw bit for SPI_MEM_WPE_END_INT interrupt. 1: Triggered when WRSR/PP/SE/BE/CE is sent and flash is already idle. 0: Others.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SLV_ST_END_INT_RAW": {
    +                    "description": "The raw bit for SPI_MEM_SLV_ST_END_INT interrupt. 1: Triggered when spi1_slv_st is changed from non idle state to idle state. It means that SPI_CS raises high. 0: Others",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "MST_ST_END_INT_RAW": {
    +                    "description": "The raw bit for SPI_MEM_MST_ST_END_INT interrupt. 1: Triggered when spi1_mst_st is changed from non idle state to idle state. 0: Others.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ST": {
    +              "description": "SPI1 interrupt status register",
    +              "offset": 204,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PER_END_INT_ST": {
    +                    "description": "The status bit for SPI_MEM_PER_END_INT interrupt.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "PES_END_INT_ST": {
    +                    "description": "The status bit for SPI_MEM_PES_END_INT interrupt.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "WPE_END_INT_ST": {
    +                    "description": "The status bit for SPI_MEM_WPE_END_INT interrupt.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SLV_ST_END_INT_ST": {
    +                    "description": "The status bit for SPI_MEM_SLV_ST_END_INT interrupt.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "MST_ST_END_INT_ST": {
    +                    "description": "The status bit for SPI_MEM_MST_ST_END_INT interrupt.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CLOCK_GATE": {
    +              "description": "SPI1 clk_gate register",
    +              "offset": 220,
    +              "size": 32,
    +              "reset_value": 1,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CLK_EN": {
    +                    "description": "Register clock gate enable signal. 1: Enable. 0: Disable.",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DATE": {
    +              "description": "Version control register",
    +              "offset": 1020,
    +              "size": 32,
    +              "reset_value": 33583472,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATE": {
    +                    "description": "Version control register",
    +                    "offset": 0,
    +                    "size": 28
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "SPI2": {
    +        "description": "SPI (Serial Peripheral Interface) Controller",
    +        "children": {
    +          "registers": {
    +            "CMD": {
    +              "description": "Command control register",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CONF_BITLEN": {
    +                    "description": "Define the APB cycles of  SPI_CONF state. Can be configured in CONF state.",
    +                    "offset": 0,
    +                    "size": 18
    +                  },
    +                  "UPDATE": {
    +                    "description": "Set this bit to synchronize SPI registers from APB clock domain into SPI module clock domain, which is only used in SPI master mode.",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "USR": {
    +                    "description": "User define command enable.  An operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable. Can not be changed by CONF_buf.",
    +                    "offset": 24,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "ADDR": {
    +              "description": "Address value register",
    +              "offset": 4,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "USR_ADDR_VALUE": {
    +                    "description": "Address to slave. Can be configured in CONF state.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "CTRL": {
    +              "description": "SPI control register",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 3932160,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DUMMY_OUT": {
    +                    "description": "In the dummy phase the signal level of spi is output by the spi controller. Can be configured in CONF state.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "FADDR_DUAL": {
    +                    "description": "Apply 2 signals during addr phase 1:enable 0: disable. Can be configured in CONF state.",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "FADDR_QUAD": {
    +                    "description": "Apply 4 signals during addr phase 1:enable 0: disable. Can be configured in CONF state.",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "FCMD_DUAL": {
    +                    "description": "Apply 2 signals during command phase 1:enable 0: disable. Can be configured in CONF state.",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "FCMD_QUAD": {
    +                    "description": "Apply 4 signals during command phase 1:enable 0: disable. Can be configured in CONF state.",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "FREAD_DUAL": {
    +                    "description": "In the read operations, read-data phase apply 2 signals. 1: enable 0: disable. Can be configured in CONF state.",
    +                    "offset": 14,
    +                    "size": 1
    +                  },
    +                  "FREAD_QUAD": {
    +                    "description": "In the read operations read-data phase apply 4 signals. 1: enable 0: disable.  Can be configured in CONF state.",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "Q_POL": {
    +                    "description": "The bit is used to set MISO line polarity, 1: high 0, low. Can be configured in CONF state.",
    +                    "offset": 18,
    +                    "size": 1
    +                  },
    +                  "D_POL": {
    +                    "description": "The bit is used to set MOSI line polarity, 1: high 0, low. Can be configured in CONF state.",
    +                    "offset": 19,
    +                    "size": 1
    +                  },
    +                  "HOLD_POL": {
    +                    "description": "SPI_HOLD output value when SPI is idle. 1: output high, 0: output low. Can be configured in CONF state.",
    +                    "offset": 20,
    +                    "size": 1
    +                  },
    +                  "WP_POL": {
    +                    "description": "Write protect signal output when SPI is idle.  1: output high, 0: output low.  Can be configured in CONF state.",
    +                    "offset": 21,
    +                    "size": 1
    +                  },
    +                  "RD_BIT_ORDER": {
    +                    "description": "In read-data (MISO) phase 1: LSB first 0: MSB first. Can be configured in CONF state.",
    +                    "offset": 25,
    +                    "size": 1
    +                  },
    +                  "WR_BIT_ORDER": {
    +                    "description": "In command address write-data (MOSI) phases 1: LSB firs 0: MSB first. Can be configured in CONF state.",
    +                    "offset": 26,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CLOCK": {
    +              "description": "SPI clock control register",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 2147496003,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CLKCNT_L": {
    +                    "description": "In the master mode it must be equal to spi_clkcnt_N. In the slave mode it must be 0. Can be configured in CONF state.",
    +                    "offset": 0,
    +                    "size": 6
    +                  },
    +                  "CLKCNT_H": {
    +                    "description": "In the master mode it must be floor((spi_clkcnt_N+1)/2-1). In the slave mode it must be 0. Can be configured in CONF state.",
    +                    "offset": 6,
    +                    "size": 6
    +                  },
    +                  "CLKCNT_N": {
    +                    "description": "In the master mode it is the divider of spi_clk. So spi_clk frequency is system/(spi_clkdiv_pre+1)/(spi_clkcnt_N+1). Can be configured in CONF state.",
    +                    "offset": 12,
    +                    "size": 6
    +                  },
    +                  "CLKDIV_PRE": {
    +                    "description": "In the master mode it is pre-divider of spi_clk.  Can be configured in CONF state.",
    +                    "offset": 18,
    +                    "size": 4
    +                  },
    +                  "CLK_EQU_SYSCLK": {
    +                    "description": "In the master mode 1: spi_clk is eqaul to system 0: spi_clk is divided from system clock. Can be configured in CONF state.",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "USER": {
    +              "description": "SPI USER control register",
    +              "offset": 16,
    +              "size": 32,
    +              "reset_value": 2147483840,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DOUTDIN": {
    +                    "description": "Set the bit to enable full duplex communication. 1: enable 0: disable. Can be configured in CONF state.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "QPI_MODE": {
    +                    "description": "Both for master mode and slave mode. 1: spi controller is in QPI mode. 0: others. Can be configured in CONF state.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "TSCK_I_EDGE": {
    +                    "description": "In the slave mode, this bit can be used to change the polarity of tsck. 0: tsck = spi_ck_i. 1:tsck = !spi_ck_i.",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "CS_HOLD": {
    +                    "description": "spi cs keep low when spi is in  done  phase. 1: enable 0: disable. Can be configured in CONF state.",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "CS_SETUP": {
    +                    "description": "spi cs is enable when spi is in  prepare  phase. 1: enable 0: disable. Can be configured in CONF state.",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "RSCK_I_EDGE": {
    +                    "description": "In the slave mode, this bit can be used to change the polarity of rsck. 0: rsck = !spi_ck_i. 1:rsck = spi_ck_i.",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "CK_OUT_EDGE": {
    +                    "description": "the bit combined with spi_mosi_delay_mode bits to set mosi signal delay mode. Can be configured in CONF state.",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "FWRITE_DUAL": {
    +                    "description": "In the write operations read-data phase apply 2 signals. Can be configured in CONF state.",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "FWRITE_QUAD": {
    +                    "description": "In the write operations read-data phase apply 4 signals. Can be configured in CONF state.",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "USR_CONF_NXT": {
    +                    "description": "1: Enable the DMA CONF phase of next seg-trans operation, which means seg-trans will continue. 0: The seg-trans will end after the current SPI seg-trans or this is not seg-trans mode. Can be configured in CONF state.",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "SIO": {
    +                    "description": "Set the bit to enable 3-line half duplex communication mosi and miso signals share the same pin. 1: enable 0: disable. Can be configured in CONF state.",
    +                    "offset": 17,
    +                    "size": 1
    +                  },
    +                  "USR_MISO_HIGHPART": {
    +                    "description": "read-data phase only access to high-part of the buffer spi_w8~spi_w15. 1: enable 0: disable. Can be configured in CONF state.",
    +                    "offset": 24,
    +                    "size": 1
    +                  },
    +                  "USR_MOSI_HIGHPART": {
    +                    "description": "write-data phase only access to high-part of the buffer spi_w8~spi_w15. 1: enable 0: disable.  Can be configured in CONF state.",
    +                    "offset": 25,
    +                    "size": 1
    +                  },
    +                  "USR_DUMMY_IDLE": {
    +                    "description": "spi clock is disable in dummy phase when the bit is enable. Can be configured in CONF state.",
    +                    "offset": 26,
    +                    "size": 1
    +                  },
    +                  "USR_MOSI": {
    +                    "description": "This bit enable the write-data phase of an operation. Can be configured in CONF state.",
    +                    "offset": 27,
    +                    "size": 1
    +                  },
    +                  "USR_MISO": {
    +                    "description": "This bit enable the read-data phase of an operation. Can be configured in CONF state.",
    +                    "offset": 28,
    +                    "size": 1
    +                  },
    +                  "USR_DUMMY": {
    +                    "description": "This bit enable the dummy phase of an operation. Can be configured in CONF state.",
    +                    "offset": 29,
    +                    "size": 1
    +                  },
    +                  "USR_ADDR": {
    +                    "description": "This bit enable the address phase of an operation. Can be configured in CONF state.",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "USR_COMMAND": {
    +                    "description": "This bit enable the command phase of an operation. Can be configured in CONF state.",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "USER1": {
    +              "description": "SPI USER control register 1",
    +              "offset": 20,
    +              "size": 32,
    +              "reset_value": 3091267591,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "USR_DUMMY_CYCLELEN": {
    +                    "description": "The length in spi_clk cycles of dummy phase. The register value shall be (cycle_num-1). Can be configured in CONF state.",
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "MST_WFULL_ERR_END_EN": {
    +                    "description": "1: SPI transfer is ended when SPI RX AFIFO wfull error is valid in GP-SPI master FD/HD-mode. 0: SPI transfer is not ended when SPI RX AFIFO wfull error is valid in GP-SPI master FD/HD-mode.",
    +                    "offset": 16,
    +                    "size": 1
    +                  },
    +                  "CS_SETUP_TIME": {
    +                    "description": "(cycles+1) of prepare phase by spi clock this bits are combined with spi_cs_setup bit. Can be configured in CONF state.",
    +                    "offset": 17,
    +                    "size": 5
    +                  },
    +                  "CS_HOLD_TIME": {
    +                    "description": "delay cycles of cs pin by spi clock this bits are combined with spi_cs_hold bit. Can be configured in CONF state.",
    +                    "offset": 22,
    +                    "size": 5
    +                  },
    +                  "USR_ADDR_BITLEN": {
    +                    "description": "The length in bits of address phase. The register value shall be (bit_num-1). Can be configured in CONF state.",
    +                    "offset": 27,
    +                    "size": 5
    +                  }
    +                }
    +              }
    +            },
    +            "USER2": {
    +              "description": "SPI USER control register 2",
    +              "offset": 24,
    +              "size": 32,
    +              "reset_value": 2013265920,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "USR_COMMAND_VALUE": {
    +                    "description": "The value of  command. Can be configured in CONF state.",
    +                    "offset": 0,
    +                    "size": 16
    +                  },
    +                  "MST_REMPTY_ERR_END_EN": {
    +                    "description": "1: SPI transfer is ended when SPI TX AFIFO read empty error is valid in GP-SPI master FD/HD-mode. 0: SPI transfer is not ended when SPI TX AFIFO read empty error is valid in GP-SPI master FD/HD-mode.",
    +                    "offset": 27,
    +                    "size": 1
    +                  },
    +                  "USR_COMMAND_BITLEN": {
    +                    "description": "The length in bits of command phase. The register value shall be (bit_num-1). Can be configured in CONF state.",
    +                    "offset": 28,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "MS_DLEN": {
    +              "description": "SPI data bit length control register",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "MS_DATA_BITLEN": {
    +                    "description": "The value of these bits is the configured SPI transmission data bit length in master mode DMA controlled transfer or CPU controlled transfer. The value is also the configured bit length in slave mode DMA RX controlled transfer. The register value shall be (bit_num-1). Can be configured in CONF state.",
    +                    "offset": 0,
    +                    "size": 18
    +                  }
    +                }
    +              }
    +            },
    +            "MISC": {
    +              "description": "SPI misc register",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 62,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CS0_DIS": {
    +                    "description": "SPI CS0 pin enable, 1: disable CS0, 0: spi_cs0 signal is from/to CS0 pin. Can be configured in CONF state.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "CS1_DIS": {
    +                    "description": "SPI CS1 pin enable, 1: disable CS1, 0: spi_cs1 signal is from/to CS1 pin. Can be configured in CONF state.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "CS2_DIS": {
    +                    "description": "SPI CS2 pin enable, 1: disable CS2, 0: spi_cs2 signal is from/to CS2 pin. Can be configured in CONF state.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "CS3_DIS": {
    +                    "description": "SPI CS3 pin enable, 1: disable CS3, 0: spi_cs3 signal is from/to CS3 pin. Can be configured in CONF state.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "CS4_DIS": {
    +                    "description": "SPI CS4 pin enable, 1: disable CS4, 0: spi_cs4 signal is from/to CS4 pin. Can be configured in CONF state.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "CS5_DIS": {
    +                    "description": "SPI CS5 pin enable, 1: disable CS5, 0: spi_cs5 signal is from/to CS5 pin. Can be configured in CONF state.",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "CK_DIS": {
    +                    "description": "1: spi clk out disable,  0: spi clk out enable. Can be configured in CONF state.",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "MASTER_CS_POL": {
    +                    "description": "In the master mode the bits are the polarity of spi cs line, the value is equivalent to spi_cs ^ spi_master_cs_pol. Can be configured in CONF state.",
    +                    "offset": 7,
    +                    "size": 6
    +                  },
    +                  "SLAVE_CS_POL": {
    +                    "description": "spi slave input cs polarity select. 1: inv  0: not change. Can be configured in CONF state.",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "CK_IDLE_EDGE": {
    +                    "description": "1: spi clk line is high when idle     0: spi clk line is low when idle. Can be configured in CONF state.",
    +                    "offset": 29,
    +                    "size": 1
    +                  },
    +                  "CS_KEEP_ACTIVE": {
    +                    "description": "spi cs line keep low when the bit is set. Can be configured in CONF state.",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "QUAD_DIN_PIN_SWAP": {
    +                    "description": "1:  spi quad input swap enable  0:  spi quad input swap disable. Can be configured in CONF state.",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DIN_MODE": {
    +              "description": "SPI input delay mode configuration",
    +              "offset": 36,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DIN0_MODE": {
    +                    "description": "the input signals are delayed by SPI module clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the spi_clk. Can be configured in CONF state.",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "DIN1_MODE": {
    +                    "description": "the input signals are delayed by SPI module clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the spi_clk. Can be configured in CONF state.",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "DIN2_MODE": {
    +                    "description": "the input signals are delayed by SPI module clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the spi_clk. Can be configured in CONF state.",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "DIN3_MODE": {
    +                    "description": "the input signals are delayed by SPI module clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the spi_clk. Can be configured in CONF state.",
    +                    "offset": 6,
    +                    "size": 2
    +                  },
    +                  "TIMING_HCLK_ACTIVE": {
    +                    "description": "1:enable hclk in SPI input timing module.  0: disable it. Can be configured in CONF state.",
    +                    "offset": 16,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DIN_NUM": {
    +              "description": "SPI input delay number configuration",
    +              "offset": 40,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DIN0_NUM": {
    +                    "description": "the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...  Can be configured in CONF state.",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "DIN1_NUM": {
    +                    "description": "the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...  Can be configured in CONF state.",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "DIN2_NUM": {
    +                    "description": "the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...  Can be configured in CONF state.",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "DIN3_NUM": {
    +                    "description": "the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...  Can be configured in CONF state.",
    +                    "offset": 6,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "DOUT_MODE": {
    +              "description": "SPI output delay mode configuration",
    +              "offset": 44,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DOUT0_MODE": {
    +                    "description": "The output signal 0 is delayed by the SPI module clock, 0: output without delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can be configured in CONF state.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "DOUT1_MODE": {
    +                    "description": "The output signal 1 is delayed by the SPI module clock, 0: output without delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can be configured in CONF state.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "DOUT2_MODE": {
    +                    "description": "The output signal 2 is delayed by the SPI module clock, 0: output without delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can be configured in CONF state.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "DOUT3_MODE": {
    +                    "description": "The output signal 3 is delayed by the SPI module clock, 0: output without delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can be configured in CONF state.",
    +                    "offset": 3,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_CONF": {
    +              "description": "SPI DMA control register",
    +              "offset": 48,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_SLV_SEG_TRANS_EN": {
    +                    "description": "Enable dma segment transfer in spi dma half slave mode. 1: enable. 0: disable.",
    +                    "offset": 18,
    +                    "size": 1
    +                  },
    +                  "SLV_RX_SEG_TRANS_CLR_EN": {
    +                    "description": "1: spi_dma_infifo_full_vld is cleared by spi slave cmd 5. 0: spi_dma_infifo_full_vld is cleared by spi_trans_done.",
    +                    "offset": 19,
    +                    "size": 1
    +                  },
    +                  "SLV_TX_SEG_TRANS_CLR_EN": {
    +                    "description": "1: spi_dma_outfifo_empty_vld is cleared by spi slave cmd 6. 0: spi_dma_outfifo_empty_vld is cleared by spi_trans_done.",
    +                    "offset": 20,
    +                    "size": 1
    +                  },
    +                  "RX_EOF_EN": {
    +                    "description": "1: spi_dma_inlink_eof is set when the number of dma pushed data bytes is equal to the value of spi_slv/mst_dma_rd_bytelen[19:0] in spi dma transition.  0: spi_dma_inlink_eof is set by spi_trans_done in non-seg-trans or spi_dma_seg_trans_done in seg-trans.",
    +                    "offset": 21,
    +                    "size": 1
    +                  },
    +                  "DMA_RX_ENA": {
    +                    "description": "Set this bit to enable SPI DMA controlled receive data mode.",
    +                    "offset": 27,
    +                    "size": 1
    +                  },
    +                  "DMA_TX_ENA": {
    +                    "description": "Set this bit to enable SPI DMA controlled send data mode.",
    +                    "offset": 28,
    +                    "size": 1
    +                  },
    +                  "RX_AFIFO_RST": {
    +                    "description": "Set this bit to reset RX AFIFO, which is used to receive data in SPI master and slave mode transfer.",
    +                    "offset": 29,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "BUF_AFIFO_RST": {
    +                    "description": "Set this bit to reset BUF TX AFIFO, which is used send data out in SPI slave CPU controlled mode transfer and master mode transfer.",
    +                    "offset": 30,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "DMA_AFIFO_RST": {
    +                    "description": "Set this bit to reset DMA TX AFIFO, which is used to send data out in SPI slave DMA controlled mode transfer.",
    +                    "offset": 31,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_INT_ENA": {
    +              "description": "SPI DMA interrupt enable register",
    +              "offset": 52,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_INFIFO_FULL_ERR_INT_ENA": {
    +                    "description": "The enable bit for SPI_DMA_INFIFO_FULL_ERR_INT interrupt.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "DMA_OUTFIFO_EMPTY_ERR_INT_ENA": {
    +                    "description": "The enable bit for SPI_DMA_OUTFIFO_EMPTY_ERR_INT interrupt.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "SLV_EX_QPI_INT_ENA": {
    +                    "description": "The enable bit for SPI slave Ex_QPI interrupt.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "SLV_EN_QPI_INT_ENA": {
    +                    "description": "The enable bit for SPI slave En_QPI interrupt.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "SLV_CMD7_INT_ENA": {
    +                    "description": "The enable bit for SPI slave CMD7 interrupt.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "SLV_CMD8_INT_ENA": {
    +                    "description": "The enable bit for SPI slave CMD8 interrupt.",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "SLV_CMD9_INT_ENA": {
    +                    "description": "The enable bit for SPI slave CMD9 interrupt.",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "SLV_CMDA_INT_ENA": {
    +                    "description": "The enable bit for SPI slave CMDA interrupt.",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "SLV_RD_DMA_DONE_INT_ENA": {
    +                    "description": "The enable bit for SPI_SLV_RD_DMA_DONE_INT interrupt.",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "SLV_WR_DMA_DONE_INT_ENA": {
    +                    "description": "The enable bit for SPI_SLV_WR_DMA_DONE_INT interrupt.",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "SLV_RD_BUF_DONE_INT_ENA": {
    +                    "description": "The enable bit for SPI_SLV_RD_BUF_DONE_INT interrupt.",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "SLV_WR_BUF_DONE_INT_ENA": {
    +                    "description": "The enable bit for SPI_SLV_WR_BUF_DONE_INT interrupt.",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "TRANS_DONE_INT_ENA": {
    +                    "description": "The enable bit for SPI_TRANS_DONE_INT interrupt.",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "DMA_SEG_TRANS_DONE_INT_ENA": {
    +                    "description": "The enable bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt.",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "SEG_MAGIC_ERR_INT_ENA": {
    +                    "description": "The enable bit for SPI_SEG_MAGIC_ERR_INT interrupt.",
    +                    "offset": 14,
    +                    "size": 1
    +                  },
    +                  "SLV_BUF_ADDR_ERR_INT_ENA": {
    +                    "description": "The enable bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt.",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "SLV_CMD_ERR_INT_ENA": {
    +                    "description": "The enable bit for SPI_SLV_CMD_ERR_INT interrupt.",
    +                    "offset": 16,
    +                    "size": 1
    +                  },
    +                  "MST_RX_AFIFO_WFULL_ERR_INT_ENA": {
    +                    "description": "The enable bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt.",
    +                    "offset": 17,
    +                    "size": 1
    +                  },
    +                  "MST_TX_AFIFO_REMPTY_ERR_INT_ENA": {
    +                    "description": "The enable bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt.",
    +                    "offset": 18,
    +                    "size": 1
    +                  },
    +                  "APP2_INT_ENA": {
    +                    "description": "The enable bit for SPI_APP2_INT interrupt.",
    +                    "offset": 19,
    +                    "size": 1
    +                  },
    +                  "APP1_INT_ENA": {
    +                    "description": "The enable bit for SPI_APP1_INT interrupt.",
    +                    "offset": 20,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_INT_CLR": {
    +              "description": "SPI DMA interrupt clear register",
    +              "offset": 56,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_INFIFO_FULL_ERR_INT_CLR": {
    +                    "description": "The clear bit for SPI_DMA_INFIFO_FULL_ERR_INT interrupt.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "DMA_OUTFIFO_EMPTY_ERR_INT_CLR": {
    +                    "description": "The clear bit for SPI_DMA_OUTFIFO_EMPTY_ERR_INT interrupt.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SLV_EX_QPI_INT_CLR": {
    +                    "description": "The clear bit for SPI slave Ex_QPI interrupt.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SLV_EN_QPI_INT_CLR": {
    +                    "description": "The clear bit for SPI slave En_QPI interrupt.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SLV_CMD7_INT_CLR": {
    +                    "description": "The clear bit for SPI slave CMD7 interrupt.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SLV_CMD8_INT_CLR": {
    +                    "description": "The clear bit for SPI slave CMD8 interrupt.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SLV_CMD9_INT_CLR": {
    +                    "description": "The clear bit for SPI slave CMD9 interrupt.",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SLV_CMDA_INT_CLR": {
    +                    "description": "The clear bit for SPI slave CMDA interrupt.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SLV_RD_DMA_DONE_INT_CLR": {
    +                    "description": "The clear bit for SPI_SLV_RD_DMA_DONE_INT interrupt.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SLV_WR_DMA_DONE_INT_CLR": {
    +                    "description": "The clear bit for SPI_SLV_WR_DMA_DONE_INT interrupt.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SLV_RD_BUF_DONE_INT_CLR": {
    +                    "description": "The clear bit for SPI_SLV_RD_BUF_DONE_INT interrupt.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SLV_WR_BUF_DONE_INT_CLR": {
    +                    "description": "The clear bit for SPI_SLV_WR_BUF_DONE_INT interrupt.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "TRANS_DONE_INT_CLR": {
    +                    "description": "The clear bit for SPI_TRANS_DONE_INT interrupt.",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "DMA_SEG_TRANS_DONE_INT_CLR": {
    +                    "description": "The clear bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt.",
    +                    "offset": 13,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SEG_MAGIC_ERR_INT_CLR": {
    +                    "description": "The clear bit for SPI_SEG_MAGIC_ERR_INT interrupt.",
    +                    "offset": 14,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SLV_BUF_ADDR_ERR_INT_CLR": {
    +                    "description": "The clear bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt.",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SLV_CMD_ERR_INT_CLR": {
    +                    "description": "The clear bit for SPI_SLV_CMD_ERR_INT interrupt.",
    +                    "offset": 16,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "MST_RX_AFIFO_WFULL_ERR_INT_CLR": {
    +                    "description": "The clear bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt.",
    +                    "offset": 17,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "MST_TX_AFIFO_REMPTY_ERR_INT_CLR": {
    +                    "description": "The clear bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt.",
    +                    "offset": 18,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "APP2_INT_CLR": {
    +                    "description": "The clear bit for SPI_APP2_INT interrupt.",
    +                    "offset": 19,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "APP1_INT_CLR": {
    +                    "description": "The clear bit for SPI_APP1_INT interrupt.",
    +                    "offset": 20,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_INT_RAW": {
    +              "description": "SPI DMA interrupt raw register",
    +              "offset": 60,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_INFIFO_FULL_ERR_INT_RAW": {
    +                    "description": "1: The current data rate of DMA Rx is smaller than that of SPI, which will lose the receive data.  0: Others.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "DMA_OUTFIFO_EMPTY_ERR_INT_RAW": {
    +                    "description": "1: The current data rate of DMA TX is smaller than that of SPI. SPI will stop in master mode and send out all 0 in slave mode.  0: Others.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "SLV_EX_QPI_INT_RAW": {
    +                    "description": "The raw bit for SPI slave Ex_QPI interrupt. 1: SPI slave mode Ex_QPI transmission is ended. 0: Others.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "SLV_EN_QPI_INT_RAW": {
    +                    "description": "The raw bit for SPI slave En_QPI interrupt. 1: SPI slave mode En_QPI transmission is ended. 0: Others.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "SLV_CMD7_INT_RAW": {
    +                    "description": "The raw bit for SPI slave CMD7 interrupt. 1: SPI slave mode CMD7 transmission is ended. 0: Others.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "SLV_CMD8_INT_RAW": {
    +                    "description": "The raw bit for SPI slave CMD8 interrupt. 1: SPI slave mode CMD8 transmission is ended. 0: Others.",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "SLV_CMD9_INT_RAW": {
    +                    "description": "The raw bit for SPI slave CMD9 interrupt. 1: SPI slave mode CMD9 transmission is ended. 0: Others.",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "SLV_CMDA_INT_RAW": {
    +                    "description": "The raw bit for SPI slave CMDA interrupt. 1: SPI slave mode CMDA transmission is ended. 0: Others.",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "SLV_RD_DMA_DONE_INT_RAW": {
    +                    "description": "The raw bit for SPI_SLV_RD_DMA_DONE_INT interrupt. 1: SPI slave mode Rd_DMA transmission is ended. 0: Others.",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "SLV_WR_DMA_DONE_INT_RAW": {
    +                    "description": "The raw bit for SPI_SLV_WR_DMA_DONE_INT interrupt. 1: SPI slave mode Wr_DMA transmission is ended. 0: Others.",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "SLV_RD_BUF_DONE_INT_RAW": {
    +                    "description": "The raw bit for SPI_SLV_RD_BUF_DONE_INT interrupt. 1: SPI slave mode Rd_BUF transmission is ended. 0: Others.",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "SLV_WR_BUF_DONE_INT_RAW": {
    +                    "description": "The raw bit for SPI_SLV_WR_BUF_DONE_INT interrupt. 1: SPI slave mode Wr_BUF transmission is ended. 0: Others.",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "TRANS_DONE_INT_RAW": {
    +                    "description": "The raw bit for SPI_TRANS_DONE_INT interrupt. 1: SPI master mode transmission is ended. 0: others.",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "DMA_SEG_TRANS_DONE_INT_RAW": {
    +                    "description": "The raw bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt. 1:  spi master DMA full-duplex/half-duplex seg-conf-trans ends or slave half-duplex seg-trans ends. And data has been pushed to corresponding memory.  0:  seg-conf-trans or seg-trans is not ended or not occurred.",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "SEG_MAGIC_ERR_INT_RAW": {
    +                    "description": "The raw bit for SPI_SEG_MAGIC_ERR_INT interrupt. 1: The magic value in CONF buffer is error in the DMA seg-conf-trans. 0: others.",
    +                    "offset": 14,
    +                    "size": 1
    +                  },
    +                  "SLV_BUF_ADDR_ERR_INT_RAW": {
    +                    "description": "The raw bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt. 1: The accessing data address of the current SPI slave mode CPU controlled FD, Wr_BUF or Rd_BUF transmission is bigger than 63. 0: Others.",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "SLV_CMD_ERR_INT_RAW": {
    +                    "description": "The raw bit for SPI_SLV_CMD_ERR_INT interrupt. 1: The slave command value in the current SPI slave HD mode transmission is not supported. 0: Others.",
    +                    "offset": 16,
    +                    "size": 1
    +                  },
    +                  "MST_RX_AFIFO_WFULL_ERR_INT_RAW": {
    +                    "description": "The raw bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt. 1: There is a RX AFIFO write-full error when SPI inputs data in master mode. 0: Others.",
    +                    "offset": 17,
    +                    "size": 1
    +                  },
    +                  "MST_TX_AFIFO_REMPTY_ERR_INT_RAW": {
    +                    "description": "The raw bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt. 1: There is a TX BUF AFIFO read-empty error when SPI outputs data in master mode. 0: Others.",
    +                    "offset": 18,
    +                    "size": 1
    +                  },
    +                  "APP2_INT_RAW": {
    +                    "description": "The raw bit for SPI_APP2_INT interrupt. The value is only controlled by application.",
    +                    "offset": 19,
    +                    "size": 1
    +                  },
    +                  "APP1_INT_RAW": {
    +                    "description": "The raw bit for SPI_APP1_INT interrupt. The value is only controlled by application.",
    +                    "offset": 20,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DMA_INT_ST": {
    +              "description": "SPI DMA interrupt status register",
    +              "offset": 64,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DMA_INFIFO_FULL_ERR_INT_ST": {
    +                    "description": "The status bit for SPI_DMA_INFIFO_FULL_ERR_INT interrupt.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DMA_OUTFIFO_EMPTY_ERR_INT_ST": {
    +                    "description": "The status bit for SPI_DMA_OUTFIFO_EMPTY_ERR_INT interrupt.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SLV_EX_QPI_INT_ST": {
    +                    "description": "The status bit for SPI slave Ex_QPI interrupt.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SLV_EN_QPI_INT_ST": {
    +                    "description": "The status bit for SPI slave En_QPI interrupt.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SLV_CMD7_INT_ST": {
    +                    "description": "The status bit for SPI slave CMD7 interrupt.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SLV_CMD8_INT_ST": {
    +                    "description": "The status bit for SPI slave CMD8 interrupt.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SLV_CMD9_INT_ST": {
    +                    "description": "The status bit for SPI slave CMD9 interrupt.",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SLV_CMDA_INT_ST": {
    +                    "description": "The status bit for SPI slave CMDA interrupt.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SLV_RD_DMA_DONE_INT_ST": {
    +                    "description": "The status bit for SPI_SLV_RD_DMA_DONE_INT interrupt.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SLV_WR_DMA_DONE_INT_ST": {
    +                    "description": "The status bit for SPI_SLV_WR_DMA_DONE_INT interrupt.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SLV_RD_BUF_DONE_INT_ST": {
    +                    "description": "The status bit for SPI_SLV_RD_BUF_DONE_INT interrupt.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SLV_WR_BUF_DONE_INT_ST": {
    +                    "description": "The status bit for SPI_SLV_WR_BUF_DONE_INT interrupt.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TRANS_DONE_INT_ST": {
    +                    "description": "The status bit for SPI_TRANS_DONE_INT interrupt.",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DMA_SEG_TRANS_DONE_INT_ST": {
    +                    "description": "The status bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt.",
    +                    "offset": 13,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SEG_MAGIC_ERR_INT_ST": {
    +                    "description": "The status bit for SPI_SEG_MAGIC_ERR_INT interrupt.",
    +                    "offset": 14,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SLV_BUF_ADDR_ERR_INT_ST": {
    +                    "description": "The status bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt.",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SLV_CMD_ERR_INT_ST": {
    +                    "description": "The status bit for SPI_SLV_CMD_ERR_INT interrupt.",
    +                    "offset": 16,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "MST_RX_AFIFO_WFULL_ERR_INT_ST": {
    +                    "description": "The status bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt.",
    +                    "offset": 17,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "MST_TX_AFIFO_REMPTY_ERR_INT_ST": {
    +                    "description": "The status bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt.",
    +                    "offset": 18,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "APP2_INT_ST": {
    +                    "description": "The status bit for SPI_APP2_INT interrupt.",
    +                    "offset": 19,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "APP1_INT_ST": {
    +                    "description": "The status bit for SPI_APP1_INT interrupt.",
    +                    "offset": 20,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "W0": {
    +              "description": "SPI CPU-controlled buffer0",
    +              "offset": 152,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF0": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W1": {
    +              "description": "SPI CPU-controlled buffer1",
    +              "offset": 156,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF1": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W2": {
    +              "description": "SPI CPU-controlled buffer2",
    +              "offset": 160,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF2": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W3": {
    +              "description": "SPI CPU-controlled buffer3",
    +              "offset": 164,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF3": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W4": {
    +              "description": "SPI CPU-controlled buffer4",
    +              "offset": 168,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF4": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W5": {
    +              "description": "SPI CPU-controlled buffer5",
    +              "offset": 172,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF5": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W6": {
    +              "description": "SPI CPU-controlled buffer6",
    +              "offset": 176,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF6": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W7": {
    +              "description": "SPI CPU-controlled buffer7",
    +              "offset": 180,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF7": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W8": {
    +              "description": "SPI CPU-controlled buffer8",
    +              "offset": 184,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF8": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W9": {
    +              "description": "SPI CPU-controlled buffer9",
    +              "offset": 188,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF9": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W10": {
    +              "description": "SPI CPU-controlled buffer10",
    +              "offset": 192,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF10": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W11": {
    +              "description": "SPI CPU-controlled buffer11",
    +              "offset": 196,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF11": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W12": {
    +              "description": "SPI CPU-controlled buffer12",
    +              "offset": 200,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF12": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W13": {
    +              "description": "SPI CPU-controlled buffer13",
    +              "offset": 204,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF13": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W14": {
    +              "description": "SPI CPU-controlled buffer14",
    +              "offset": 208,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF14": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "W15": {
    +              "description": "SPI CPU-controlled buffer15",
    +              "offset": 212,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BUF15": {
    +                    "description": "data buffer",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "SLAVE": {
    +              "description": "SPI slave control register",
    +              "offset": 224,
    +              "size": 32,
    +              "reset_value": 41943040,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CLK_MODE": {
    +                    "description": "SPI clock mode bits. 0: SPI clock is off when CS inactive 1: SPI clock is delayed one cycle after CS inactive 2: SPI clock is delayed two cycles after CS inactive 3: SPI clock is alwasy on. Can be configured in CONF state.",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "CLK_MODE_13": {
    +                    "description": "{CPOL, CPHA},1: support spi clk mode 1 and 3, first edge output data B[0]/B[7].  0: support spi clk mode 0 and 2, first edge output data B[1]/B[6].",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "RSCK_DATA_OUT": {
    +                    "description": "It saves half a cycle when tsck is the same as rsck. 1: output data at rsck posedge   0: output data at tsck posedge",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "SLV_RDDMA_BITLEN_EN": {
    +                    "description": "1: SPI_SLV_DATA_BITLEN stores data bit length of master-read-slave data length in DMA controlled mode(Rd_DMA). 0: others",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "SLV_WRDMA_BITLEN_EN": {
    +                    "description": "1: SPI_SLV_DATA_BITLEN stores data bit length of master-write-to-slave data length in DMA controlled mode(Wr_DMA). 0: others",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "SLV_RDBUF_BITLEN_EN": {
    +                    "description": "1: SPI_SLV_DATA_BITLEN stores data bit length of master-read-slave data length in CPU controlled mode(Rd_BUF). 0: others",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "SLV_WRBUF_BITLEN_EN": {
    +                    "description": "1: SPI_SLV_DATA_BITLEN stores data bit length of master-write-to-slave data length in CPU controlled mode(Wr_BUF). 0: others",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "DMA_SEG_MAGIC_VALUE": {
    +                    "description": "The magic value of BM table in master DMA seg-trans.",
    +                    "offset": 22,
    +                    "size": 4
    +                  },
    +                  "MODE": {
    +                    "description": "Set SPI work mode. 1: slave mode 0: master mode.",
    +                    "offset": 26,
    +                    "size": 1
    +                  },
    +                  "SOFT_RESET": {
    +                    "description": "Software reset enable, reset the spi clock line cs line and data lines. Can be configured in CONF state.",
    +                    "offset": 27,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "USR_CONF": {
    +                    "description": "1: Enable the DMA CONF phase of current seg-trans operation, which means seg-trans will start. 0: This is not seg-trans mode.",
    +                    "offset": 28,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "SLAVE1": {
    +              "description": "SPI slave control register 1",
    +              "offset": 228,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SLV_DATA_BITLEN": {
    +                    "description": "The transferred data bit length in SPI slave FD and HD mode.",
    +                    "offset": 0,
    +                    "size": 18
    +                  },
    +                  "SLV_LAST_COMMAND": {
    +                    "description": "In the slave mode it is the value of command.",
    +                    "offset": 18,
    +                    "size": 8
    +                  },
    +                  "SLV_LAST_ADDR": {
    +                    "description": "In the slave mode it is the value of address.",
    +                    "offset": 26,
    +                    "size": 6
    +                  }
    +                }
    +              }
    +            },
    +            "CLK_GATE": {
    +              "description": "SPI module clock and register clock control",
    +              "offset": 232,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CLK_EN": {
    +                    "description": "Set this bit to enable clk gate",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "MST_CLK_ACTIVE": {
    +                    "description": "Set this bit to power on the SPI module clock.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "MST_CLK_SEL": {
    +                    "description": "This bit is used to select SPI module clock source in master mode. 1: PLL_CLK_80M. 0: XTAL CLK.",
    +                    "offset": 2,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DATE": {
    +              "description": "Version control",
    +              "offset": 240,
    +              "size": 32,
    +              "reset_value": 33583648,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATE": {
    +                    "description": "SPI register version.",
    +                    "offset": 0,
    +                    "size": 28
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "SYSTEM": {
    +        "description": "System",
    +        "children": {
    +          "registers": {
    +            "CPU_PERI_CLK_EN": {
    +              "description": "cpu_peripheral clock gating register",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CLK_EN_ASSIST_DEBUG": {
    +                    "description": "reg_clk_en_assist_debug",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "CLK_EN_DEDICATED_GPIO": {
    +                    "description": "reg_clk_en_dedicated_gpio",
    +                    "offset": 7,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_PERI_RST_EN": {
    +              "description": "cpu_peripheral reset register",
    +              "offset": 4,
    +              "size": 32,
    +              "reset_value": 192,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RST_EN_ASSIST_DEBUG": {
    +                    "description": "reg_rst_en_assist_debug",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "RST_EN_DEDICATED_GPIO": {
    +                    "description": "reg_rst_en_dedicated_gpio",
    +                    "offset": 7,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_PER_CONF": {
    +              "description": "cpu clock config register",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 12,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPUPERIOD_SEL": {
    +                    "description": "reg_cpuperiod_sel",
    +                    "offset": 0,
    +                    "size": 2
    +                  },
    +                  "PLL_FREQ_SEL": {
    +                    "description": "reg_pll_freq_sel",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "CPU_WAIT_MODE_FORCE_ON": {
    +                    "description": "reg_cpu_wait_mode_force_on",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "CPU_WAITI_DELAY_NUM": {
    +                    "description": "reg_cpu_waiti_delay_num",
    +                    "offset": 4,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "MEM_PD_MASK": {
    +              "description": "memory power down mask register",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 1,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LSLP_MEM_PD_MASK": {
    +                    "description": "reg_lslp_mem_pd_mask",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "PERIP_CLK_EN0": {
    +              "description": "peripheral clock gating register",
    +              "offset": 16,
    +              "size": 32,
    +              "reset_value": 4190232687,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMERS_CLK_EN": {
    +                    "description": "reg_timers_clk_en",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "SPI01_CLK_EN": {
    +                    "description": "reg_spi01_clk_en",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "UART_CLK_EN": {
    +                    "description": "reg_uart_clk_en",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "WDG_CLK_EN": {
    +                    "description": "reg_wdg_clk_en",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "I2S0_CLK_EN": {
    +                    "description": "reg_i2s0_clk_en",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "UART1_CLK_EN": {
    +                    "description": "reg_uart1_clk_en",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "SPI2_CLK_EN": {
    +                    "description": "reg_spi2_clk_en",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "I2C_EXT0_CLK_EN": {
    +                    "description": "reg_ext0_clk_en",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "UHCI0_CLK_EN": {
    +                    "description": "reg_uhci0_clk_en",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "RMT_CLK_EN": {
    +                    "description": "reg_rmt_clk_en",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "PCNT_CLK_EN": {
    +                    "description": "reg_pcnt_clk_en",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "LEDC_CLK_EN": {
    +                    "description": "reg_ledc_clk_en",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "UHCI1_CLK_EN": {
    +                    "description": "reg_uhci1_clk_en",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "TIMERGROUP_CLK_EN": {
    +                    "description": "reg_timergroup_clk_en",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "EFUSE_CLK_EN": {
    +                    "description": "reg_efuse_clk_en",
    +                    "offset": 14,
    +                    "size": 1
    +                  },
    +                  "TIMERGROUP1_CLK_EN": {
    +                    "description": "reg_timergroup1_clk_en",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "SPI3_CLK_EN": {
    +                    "description": "reg_spi3_clk_en",
    +                    "offset": 16,
    +                    "size": 1
    +                  },
    +                  "PWM0_CLK_EN": {
    +                    "description": "reg_pwm0_clk_en",
    +                    "offset": 17,
    +                    "size": 1
    +                  },
    +                  "EXT1_CLK_EN": {
    +                    "description": "reg_ext1_clk_en",
    +                    "offset": 18,
    +                    "size": 1
    +                  },
    +                  "CAN_CLK_EN": {
    +                    "description": "reg_can_clk_en",
    +                    "offset": 19,
    +                    "size": 1
    +                  },
    +                  "PWM1_CLK_EN": {
    +                    "description": "reg_pwm1_clk_en",
    +                    "offset": 20,
    +                    "size": 1
    +                  },
    +                  "I2S1_CLK_EN": {
    +                    "description": "reg_i2s1_clk_en",
    +                    "offset": 21,
    +                    "size": 1
    +                  },
    +                  "SPI2_DMA_CLK_EN": {
    +                    "description": "reg_spi2_dma_clk_en",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "USB_DEVICE_CLK_EN": {
    +                    "description": "reg_usb_device_clk_en",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "UART_MEM_CLK_EN": {
    +                    "description": "reg_uart_mem_clk_en",
    +                    "offset": 24,
    +                    "size": 1
    +                  },
    +                  "PWM2_CLK_EN": {
    +                    "description": "reg_pwm2_clk_en",
    +                    "offset": 25,
    +                    "size": 1
    +                  },
    +                  "PWM3_CLK_EN": {
    +                    "description": "reg_pwm3_clk_en",
    +                    "offset": 26,
    +                    "size": 1
    +                  },
    +                  "SPI3_DMA_CLK_EN": {
    +                    "description": "reg_spi3_dma_clk_en",
    +                    "offset": 27,
    +                    "size": 1
    +                  },
    +                  "APB_SARADC_CLK_EN": {
    +                    "description": "reg_apb_saradc_clk_en",
    +                    "offset": 28,
    +                    "size": 1
    +                  },
    +                  "SYSTIMER_CLK_EN": {
    +                    "description": "reg_systimer_clk_en",
    +                    "offset": 29,
    +                    "size": 1
    +                  },
    +                  "ADC2_ARB_CLK_EN": {
    +                    "description": "reg_adc2_arb_clk_en",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "SPI4_CLK_EN": {
    +                    "description": "reg_spi4_clk_en",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "PERIP_CLK_EN1": {
    +              "description": "peripheral clock gating register",
    +              "offset": 20,
    +              "size": 32,
    +              "reset_value": 512,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CRYPTO_AES_CLK_EN": {
    +                    "description": "reg_crypto_aes_clk_en",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "CRYPTO_SHA_CLK_EN": {
    +                    "description": "reg_crypto_sha_clk_en",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "CRYPTO_RSA_CLK_EN": {
    +                    "description": "reg_crypto_rsa_clk_en",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "CRYPTO_DS_CLK_EN": {
    +                    "description": "reg_crypto_ds_clk_en",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "CRYPTO_HMAC_CLK_EN": {
    +                    "description": "reg_crypto_hmac_clk_en",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "DMA_CLK_EN": {
    +                    "description": "reg_dma_clk_en",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "SDIO_HOST_CLK_EN": {
    +                    "description": "reg_sdio_host_clk_en",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "LCD_CAM_CLK_EN": {
    +                    "description": "reg_lcd_cam_clk_en",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "UART2_CLK_EN": {
    +                    "description": "reg_uart2_clk_en",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "TSENS_CLK_EN": {
    +                    "description": "reg_tsens_clk_en",
    +                    "offset": 10,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "PERIP_RST_EN0": {
    +              "description": "reserved",
    +              "offset": 24,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMERS_RST": {
    +                    "description": "reg_timers_rst",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "SPI01_RST": {
    +                    "description": "reg_spi01_rst",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "UART_RST": {
    +                    "description": "reg_uart_rst",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "WDG_RST": {
    +                    "description": "reg_wdg_rst",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "I2S0_RST": {
    +                    "description": "reg_i2s0_rst",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "UART1_RST": {
    +                    "description": "reg_uart1_rst",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "SPI2_RST": {
    +                    "description": "reg_spi2_rst",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "I2C_EXT0_RST": {
    +                    "description": "reg_ext0_rst",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "UHCI0_RST": {
    +                    "description": "reg_uhci0_rst",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "RMT_RST": {
    +                    "description": "reg_rmt_rst",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "PCNT_RST": {
    +                    "description": "reg_pcnt_rst",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "LEDC_RST": {
    +                    "description": "reg_ledc_rst",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "UHCI1_RST": {
    +                    "description": "reg_uhci1_rst",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "TIMERGROUP_RST": {
    +                    "description": "reg_timergroup_rst",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "EFUSE_RST": {
    +                    "description": "reg_efuse_rst",
    +                    "offset": 14,
    +                    "size": 1
    +                  },
    +                  "TIMERGROUP1_RST": {
    +                    "description": "reg_timergroup1_rst",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "SPI3_RST": {
    +                    "description": "reg_spi3_rst",
    +                    "offset": 16,
    +                    "size": 1
    +                  },
    +                  "PWM0_RST": {
    +                    "description": "reg_pwm0_rst",
    +                    "offset": 17,
    +                    "size": 1
    +                  },
    +                  "EXT1_RST": {
    +                    "description": "reg_ext1_rst",
    +                    "offset": 18,
    +                    "size": 1
    +                  },
    +                  "CAN_RST": {
    +                    "description": "reg_can_rst",
    +                    "offset": 19,
    +                    "size": 1
    +                  },
    +                  "PWM1_RST": {
    +                    "description": "reg_pwm1_rst",
    +                    "offset": 20,
    +                    "size": 1
    +                  },
    +                  "I2S1_RST": {
    +                    "description": "reg_i2s1_rst",
    +                    "offset": 21,
    +                    "size": 1
    +                  },
    +                  "SPI2_DMA_RST": {
    +                    "description": "reg_spi2_dma_rst",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "USB_DEVICE_RST": {
    +                    "description": "reg_usb_device_rst",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "UART_MEM_RST": {
    +                    "description": "reg_uart_mem_rst",
    +                    "offset": 24,
    +                    "size": 1
    +                  },
    +                  "PWM2_RST": {
    +                    "description": "reg_pwm2_rst",
    +                    "offset": 25,
    +                    "size": 1
    +                  },
    +                  "PWM3_RST": {
    +                    "description": "reg_pwm3_rst",
    +                    "offset": 26,
    +                    "size": 1
    +                  },
    +                  "SPI3_DMA_RST": {
    +                    "description": "reg_spi3_dma_rst",
    +                    "offset": 27,
    +                    "size": 1
    +                  },
    +                  "APB_SARADC_RST": {
    +                    "description": "reg_apb_saradc_rst",
    +                    "offset": 28,
    +                    "size": 1
    +                  },
    +                  "SYSTIMER_RST": {
    +                    "description": "reg_systimer_rst",
    +                    "offset": 29,
    +                    "size": 1
    +                  },
    +                  "ADC2_ARB_RST": {
    +                    "description": "reg_adc2_arb_rst",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "SPI4_RST": {
    +                    "description": "reg_spi4_rst",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "PERIP_RST_EN1": {
    +              "description": "peripheral reset register",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 510,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CRYPTO_AES_RST": {
    +                    "description": "reg_crypto_aes_rst",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "CRYPTO_SHA_RST": {
    +                    "description": "reg_crypto_sha_rst",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "CRYPTO_RSA_RST": {
    +                    "description": "reg_crypto_rsa_rst",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "CRYPTO_DS_RST": {
    +                    "description": "reg_crypto_ds_rst",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "CRYPTO_HMAC_RST": {
    +                    "description": "reg_crypto_hmac_rst",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "DMA_RST": {
    +                    "description": "reg_dma_rst",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "SDIO_HOST_RST": {
    +                    "description": "reg_sdio_host_rst",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "LCD_CAM_RST": {
    +                    "description": "reg_lcd_cam_rst",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "UART2_RST": {
    +                    "description": "reg_uart2_rst",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "TSENS_RST": {
    +                    "description": "reg_tsens_rst",
    +                    "offset": 10,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "BT_LPCK_DIV_INT": {
    +              "description": "clock config register",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 255,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BT_LPCK_DIV_NUM": {
    +                    "description": "reg_bt_lpck_div_num",
    +                    "offset": 0,
    +                    "size": 12
    +                  }
    +                }
    +              }
    +            },
    +            "BT_LPCK_DIV_FRAC": {
    +              "description": "clock config register",
    +              "offset": 36,
    +              "size": 32,
    +              "reset_value": 33558529,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BT_LPCK_DIV_B": {
    +                    "description": "reg_bt_lpck_div_b",
    +                    "offset": 0,
    +                    "size": 12
    +                  },
    +                  "BT_LPCK_DIV_A": {
    +                    "description": "reg_bt_lpck_div_a",
    +                    "offset": 12,
    +                    "size": 12
    +                  },
    +                  "LPCLK_SEL_RTC_SLOW": {
    +                    "description": "reg_lpclk_sel_rtc_slow",
    +                    "offset": 24,
    +                    "size": 1
    +                  },
    +                  "LPCLK_SEL_8M": {
    +                    "description": "reg_lpclk_sel_8m",
    +                    "offset": 25,
    +                    "size": 1
    +                  },
    +                  "LPCLK_SEL_XTAL": {
    +                    "description": "reg_lpclk_sel_xtal",
    +                    "offset": 26,
    +                    "size": 1
    +                  },
    +                  "LPCLK_SEL_XTAL32K": {
    +                    "description": "reg_lpclk_sel_xtal32k",
    +                    "offset": 27,
    +                    "size": 1
    +                  },
    +                  "LPCLK_RTC_EN": {
    +                    "description": "reg_lpclk_rtc_en",
    +                    "offset": 28,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INTR_FROM_CPU_0": {
    +              "description": "interrupt generate register",
    +              "offset": 40,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_INTR_FROM_CPU_0": {
    +                    "description": "reg_cpu_intr_from_cpu_0",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INTR_FROM_CPU_1": {
    +              "description": "interrupt generate register",
    +              "offset": 44,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_INTR_FROM_CPU_1": {
    +                    "description": "reg_cpu_intr_from_cpu_1",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INTR_FROM_CPU_2": {
    +              "description": "interrupt generate register",
    +              "offset": 48,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_INTR_FROM_CPU_2": {
    +                    "description": "reg_cpu_intr_from_cpu_2",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CPU_INTR_FROM_CPU_3": {
    +              "description": "interrupt generate register",
    +              "offset": 52,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CPU_INTR_FROM_CPU_3": {
    +                    "description": "reg_cpu_intr_from_cpu_3",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "RSA_PD_CTRL": {
    +              "description": "rsa memory power control register",
    +              "offset": 56,
    +              "size": 32,
    +              "reset_value": 1,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RSA_MEM_PD": {
    +                    "description": "reg_rsa_mem_pd",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "RSA_MEM_FORCE_PU": {
    +                    "description": "reg_rsa_mem_force_pu",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "RSA_MEM_FORCE_PD": {
    +                    "description": "reg_rsa_mem_force_pd",
    +                    "offset": 2,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "EDMA_CTRL": {
    +              "description": "edma clcok and reset register",
    +              "offset": 60,
    +              "size": 32,
    +              "reset_value": 1,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "EDMA_CLK_ON": {
    +                    "description": "reg_edma_clk_on",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "EDMA_RESET": {
    +                    "description": "reg_edma_reset",
    +                    "offset": 1,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CACHE_CONTROL": {
    +              "description": "cache control register",
    +              "offset": 64,
    +              "size": 32,
    +              "reset_value": 5,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ICACHE_CLK_ON": {
    +                    "description": "reg_icache_clk_on",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "ICACHE_RESET": {
    +                    "description": "reg_icache_reset",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "DCACHE_CLK_ON": {
    +                    "description": "reg_dcache_clk_on",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "DCACHE_RESET": {
    +                    "description": "reg_dcache_reset",
    +                    "offset": 3,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "EXTERNAL_DEVICE_ENCRYPT_DECRYPT_CONTROL": {
    +              "description": "SYSTEM_EXTERNAL_DEVICE_ENCRYPT_DECRYPT_CONTROL_REG",
    +              "offset": 68,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ENABLE_SPI_MANUAL_ENCRYPT": {
    +                    "description": "reg_enable_spi_manual_encrypt",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "ENABLE_DOWNLOAD_DB_ENCRYPT": {
    +                    "description": "reg_enable_download_db_encrypt",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "ENABLE_DOWNLOAD_G0CB_DECRYPT": {
    +                    "description": "reg_enable_download_g0cb_decrypt",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "ENABLE_DOWNLOAD_MANUAL_ENCRYPT": {
    +                    "description": "reg_enable_download_manual_encrypt",
    +                    "offset": 3,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "RTC_FASTMEM_CONFIG": {
    +              "description": "fast memory config register",
    +              "offset": 72,
    +              "size": 32,
    +              "reset_value": 2146435072,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_MEM_CRC_START": {
    +                    "description": "reg_rtc_mem_crc_start",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "RTC_MEM_CRC_ADDR": {
    +                    "description": "reg_rtc_mem_crc_addr",
    +                    "offset": 9,
    +                    "size": 11
    +                  },
    +                  "RTC_MEM_CRC_LEN": {
    +                    "description": "reg_rtc_mem_crc_len",
    +                    "offset": 20,
    +                    "size": 11
    +                  },
    +                  "RTC_MEM_CRC_FINISH": {
    +                    "description": "reg_rtc_mem_crc_finish",
    +                    "offset": 31,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RTC_FASTMEM_CRC": {
    +              "description": "reserved",
    +              "offset": 76,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_MEM_CRC_RES": {
    +                    "description": "reg_rtc_mem_crc_res",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "REDUNDANT_ECO_CTRL": {
    +              "description": "eco register",
    +              "offset": 80,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "REDUNDANT_ECO_DRIVE": {
    +                    "description": "reg_redundant_eco_drive",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "REDUNDANT_ECO_RESULT": {
    +                    "description": "reg_redundant_eco_result",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CLOCK_GATE": {
    +              "description": "clock gating register",
    +              "offset": 84,
    +              "size": 32,
    +              "reset_value": 1,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CLK_EN": {
    +                    "description": "reg_clk_en",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "SYSCLK_CONF": {
    +              "description": "system clock config register",
    +              "offset": 88,
    +              "size": 32,
    +              "reset_value": 1,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PRE_DIV_CNT": {
    +                    "description": "reg_pre_div_cnt",
    +                    "offset": 0,
    +                    "size": 10
    +                  },
    +                  "SOC_CLK_SEL": {
    +                    "description": "reg_soc_clk_sel",
    +                    "offset": 10,
    +                    "size": 2
    +                  },
    +                  "CLK_XTAL_FREQ": {
    +                    "description": "reg_clk_xtal_freq",
    +                    "offset": 12,
    +                    "size": 7,
    +                    "access": "read-only"
    +                  },
    +                  "CLK_DIV_EN": {
    +                    "description": "reg_clk_div_en",
    +                    "offset": 19,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "MEM_PVT": {
    +              "description": "mem pvt register",
    +              "offset": 92,
    +              "size": 32,
    +              "reset_value": 3,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "MEM_PATH_LEN": {
    +                    "description": "reg_mem_path_len",
    +                    "offset": 0,
    +                    "size": 4
    +                  },
    +                  "MEM_ERR_CNT_CLR": {
    +                    "description": "reg_mem_err_cnt_clr",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "MONITOR_EN": {
    +                    "description": "reg_mem_pvt_monitor_en",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "MEM_TIMING_ERR_CNT": {
    +                    "description": "reg_mem_timing_err_cnt",
    +                    "offset": 6,
    +                    "size": 16,
    +                    "access": "read-only"
    +                  },
    +                  "MEM_VT_SEL": {
    +                    "description": "reg_mem_vt_sel",
    +                    "offset": 22,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "COMB_PVT_LVT_CONF": {
    +              "description": "mem pvt register",
    +              "offset": 96,
    +              "size": 32,
    +              "reset_value": 3,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "COMB_PATH_LEN_LVT": {
    +                    "description": "reg_comb_path_len_lvt",
    +                    "offset": 0,
    +                    "size": 5
    +                  },
    +                  "COMB_ERR_CNT_CLR_LVT": {
    +                    "description": "reg_comb_err_cnt_clr_lvt",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "COMB_PVT_MONITOR_EN_LVT": {
    +                    "description": "reg_comb_pvt_monitor_en_lvt",
    +                    "offset": 6,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "COMB_PVT_NVT_CONF": {
    +              "description": "mem pvt register",
    +              "offset": 100,
    +              "size": 32,
    +              "reset_value": 3,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "COMB_PATH_LEN_NVT": {
    +                    "description": "reg_comb_path_len_nvt",
    +                    "offset": 0,
    +                    "size": 5
    +                  },
    +                  "COMB_ERR_CNT_CLR_NVT": {
    +                    "description": "reg_comb_err_cnt_clr_nvt",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "COMB_PVT_MONITOR_EN_NVT": {
    +                    "description": "reg_comb_pvt_monitor_en_nvt",
    +                    "offset": 6,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "COMB_PVT_HVT_CONF": {
    +              "description": "mem pvt register",
    +              "offset": 104,
    +              "size": 32,
    +              "reset_value": 3,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "COMB_PATH_LEN_HVT": {
    +                    "description": "reg_comb_path_len_hvt",
    +                    "offset": 0,
    +                    "size": 5
    +                  },
    +                  "COMB_ERR_CNT_CLR_HVT": {
    +                    "description": "reg_comb_err_cnt_clr_hvt",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "COMB_PVT_MONITOR_EN_HVT": {
    +                    "description": "reg_comb_pvt_monitor_en_hvt",
    +                    "offset": 6,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "COMB_PVT_ERR_LVT_SITE0": {
    +              "description": "mem pvt register",
    +              "offset": 108,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "COMB_TIMING_ERR_CNT_LVT_SITE0": {
    +                    "description": "reg_comb_timing_err_cnt_lvt_site0",
    +                    "offset": 0,
    +                    "size": 16,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "COMB_PVT_ERR_NVT_SITE0": {
    +              "description": "mem pvt register",
    +              "offset": 112,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "COMB_TIMING_ERR_CNT_NVT_SITE0": {
    +                    "description": "reg_comb_timing_err_cnt_nvt_site0",
    +                    "offset": 0,
    +                    "size": 16,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "COMB_PVT_ERR_HVT_SITE0": {
    +              "description": "mem pvt register",
    +              "offset": 116,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "COMB_TIMING_ERR_CNT_HVT_SITE0": {
    +                    "description": "reg_comb_timing_err_cnt_hvt_site0",
    +                    "offset": 0,
    +                    "size": 16,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "COMB_PVT_ERR_LVT_SITE1": {
    +              "description": "mem pvt register",
    +              "offset": 120,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "COMB_TIMING_ERR_CNT_LVT_SITE1": {
    +                    "description": "reg_comb_timing_err_cnt_lvt_site1",
    +                    "offset": 0,
    +                    "size": 16,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "COMB_PVT_ERR_NVT_SITE1": {
    +              "description": "mem pvt register",
    +              "offset": 124,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "COMB_TIMING_ERR_CNT_NVT_SITE1": {
    +                    "description": "reg_comb_timing_err_cnt_nvt_site1",
    +                    "offset": 0,
    +                    "size": 16,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "COMB_PVT_ERR_HVT_SITE1": {
    +              "description": "mem pvt register",
    +              "offset": 128,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "COMB_TIMING_ERR_CNT_HVT_SITE1": {
    +                    "description": "reg_comb_timing_err_cnt_hvt_site1",
    +                    "offset": 0,
    +                    "size": 16,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "COMB_PVT_ERR_LVT_SITE2": {
    +              "description": "mem pvt register",
    +              "offset": 132,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "COMB_TIMING_ERR_CNT_LVT_SITE2": {
    +                    "description": "reg_comb_timing_err_cnt_lvt_site2",
    +                    "offset": 0,
    +                    "size": 16,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "COMB_PVT_ERR_NVT_SITE2": {
    +              "description": "mem pvt register",
    +              "offset": 136,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "COMB_TIMING_ERR_CNT_NVT_SITE2": {
    +                    "description": "reg_comb_timing_err_cnt_nvt_site2",
    +                    "offset": 0,
    +                    "size": 16,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "COMB_PVT_ERR_HVT_SITE2": {
    +              "description": "mem pvt register",
    +              "offset": 140,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "COMB_TIMING_ERR_CNT_HVT_SITE2": {
    +                    "description": "reg_comb_timing_err_cnt_hvt_site2",
    +                    "offset": 0,
    +                    "size": 16,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "COMB_PVT_ERR_LVT_SITE3": {
    +              "description": "mem pvt register",
    +              "offset": 144,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "COMB_TIMING_ERR_CNT_LVT_SITE3": {
    +                    "description": "reg_comb_timing_err_cnt_lvt_site3",
    +                    "offset": 0,
    +                    "size": 16,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "COMB_PVT_ERR_NVT_SITE3": {
    +              "description": "mem pvt register",
    +              "offset": 148,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "COMB_TIMING_ERR_CNT_NVT_SITE3": {
    +                    "description": "reg_comb_timing_err_cnt_nvt_site3",
    +                    "offset": 0,
    +                    "size": 16,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "COMB_PVT_ERR_HVT_SITE3": {
    +              "description": "mem pvt register",
    +              "offset": 152,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "COMB_TIMING_ERR_CNT_HVT_SITE3": {
    +                    "description": "reg_comb_timing_err_cnt_hvt_site3",
    +                    "offset": 0,
    +                    "size": 16,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "SYSTEM_REG_DATE": {
    +              "description": "Version register",
    +              "offset": 4092,
    +              "size": 32,
    +              "reset_value": 33583440,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SYSTEM_REG_DATE": {
    +                    "description": "reg_system_reg_date",
    +                    "offset": 0,
    +                    "size": 28
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "SYSTIMER": {
    +        "description": "System Timer",
    +        "children": {
    +          "registers": {
    +            "CONF": {
    +              "description": "SYSTIMER_CONF.",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 1174405120,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SYSTIMER_CLK_FO": {
    +                    "description": "systimer clock force on",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "TARGET2_WORK_EN": {
    +                    "description": "target2 work enable",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "TARGET1_WORK_EN": {
    +                    "description": "target1 work enable",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "TARGET0_WORK_EN": {
    +                    "description": "target0 work enable",
    +                    "offset": 24,
    +                    "size": 1
    +                  },
    +                  "TIMER_UNIT1_CORE1_STALL_EN": {
    +                    "description": "If timer unit1 is stalled when core1 stalled",
    +                    "offset": 25,
    +                    "size": 1
    +                  },
    +                  "TIMER_UNIT1_CORE0_STALL_EN": {
    +                    "description": "If timer unit1 is stalled when core0 stalled",
    +                    "offset": 26,
    +                    "size": 1
    +                  },
    +                  "TIMER_UNIT0_CORE1_STALL_EN": {
    +                    "description": "If timer unit0 is stalled when core1 stalled",
    +                    "offset": 27,
    +                    "size": 1
    +                  },
    +                  "TIMER_UNIT0_CORE0_STALL_EN": {
    +                    "description": "If timer unit0 is stalled when core0 stalled",
    +                    "offset": 28,
    +                    "size": 1
    +                  },
    +                  "TIMER_UNIT1_WORK_EN": {
    +                    "description": "timer unit1 work enable",
    +                    "offset": 29,
    +                    "size": 1
    +                  },
    +                  "TIMER_UNIT0_WORK_EN": {
    +                    "description": "timer unit0 work enable",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "CLK_EN": {
    +                    "description": "register file clk gating",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "UNIT0_OP": {
    +              "description": "SYSTIMER_UNIT0_OP.",
    +              "offset": 4,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_UNIT0_VALUE_VALID": {
    +                    "description": "reg_timer_unit0_value_valid",
    +                    "offset": 29,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TIMER_UNIT0_UPDATE": {
    +                    "description": "update timer_unit0",
    +                    "offset": 30,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "UNIT1_OP": {
    +              "description": "SYSTIMER_UNIT1_OP.",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_UNIT1_VALUE_VALID": {
    +                    "description": "timer value is sync and valid",
    +                    "offset": 29,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TIMER_UNIT1_UPDATE": {
    +                    "description": "update timer unit1",
    +                    "offset": 30,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "UNIT0_LOAD_HI": {
    +              "description": "SYSTIMER_UNIT0_LOAD_HI.",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_UNIT0_LOAD_HI": {
    +                    "description": "timer unit0 load high 32 bit",
    +                    "offset": 0,
    +                    "size": 20
    +                  }
    +                }
    +              }
    +            },
    +            "UNIT0_LOAD_LO": {
    +              "description": "SYSTIMER_UNIT0_LOAD_LO.",
    +              "offset": 16,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_UNIT0_LOAD_LO": {
    +                    "description": "timer unit0 load low 32 bit",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "UNIT1_LOAD_HI": {
    +              "description": "SYSTIMER_UNIT1_LOAD_HI.",
    +              "offset": 20,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_UNIT1_LOAD_HI": {
    +                    "description": "timer unit1 load high 32 bit",
    +                    "offset": 0,
    +                    "size": 20
    +                  }
    +                }
    +              }
    +            },
    +            "UNIT1_LOAD_LO": {
    +              "description": "SYSTIMER_UNIT1_LOAD_LO.",
    +              "offset": 24,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_UNIT1_LOAD_LO": {
    +                    "description": "timer unit1 load low 32 bit",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "TARGET0_HI": {
    +              "description": "SYSTIMER_TARGET0_HI.",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_TARGET0_HI": {
    +                    "description": "timer taget0 high 32 bit",
    +                    "offset": 0,
    +                    "size": 20
    +                  }
    +                }
    +              }
    +            },
    +            "TARGET0_LO": {
    +              "description": "SYSTIMER_TARGET0_LO.",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_TARGET0_LO": {
    +                    "description": "timer taget0 low 32 bit",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "TARGET1_HI": {
    +              "description": "SYSTIMER_TARGET1_HI.",
    +              "offset": 36,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_TARGET1_HI": {
    +                    "description": "timer taget1 high 32 bit",
    +                    "offset": 0,
    +                    "size": 20
    +                  }
    +                }
    +              }
    +            },
    +            "TARGET1_LO": {
    +              "description": "SYSTIMER_TARGET1_LO.",
    +              "offset": 40,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_TARGET1_LO": {
    +                    "description": "timer taget1 low 32 bit",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "TARGET2_HI": {
    +              "description": "SYSTIMER_TARGET2_HI.",
    +              "offset": 44,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_TARGET2_HI": {
    +                    "description": "timer taget2 high 32 bit",
    +                    "offset": 0,
    +                    "size": 20
    +                  }
    +                }
    +              }
    +            },
    +            "TARGET2_LO": {
    +              "description": "SYSTIMER_TARGET2_LO.",
    +              "offset": 48,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_TARGET2_LO": {
    +                    "description": "timer taget2 low 32 bit",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "TARGET0_CONF": {
    +              "description": "SYSTIMER_TARGET0_CONF.",
    +              "offset": 52,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TARGET0_PERIOD": {
    +                    "description": "target0 period",
    +                    "offset": 0,
    +                    "size": 26
    +                  },
    +                  "TARGET0_PERIOD_MODE": {
    +                    "description": "Set target0 to period mode",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "TARGET0_TIMER_UNIT_SEL": {
    +                    "description": "select which unit to compare",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "TARGET1_CONF": {
    +              "description": "SYSTIMER_TARGET1_CONF.",
    +              "offset": 56,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TARGET1_PERIOD": {
    +                    "description": "target1 period",
    +                    "offset": 0,
    +                    "size": 26
    +                  },
    +                  "TARGET1_PERIOD_MODE": {
    +                    "description": "Set target1 to period mode",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "TARGET1_TIMER_UNIT_SEL": {
    +                    "description": "select which unit to compare",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "TARGET2_CONF": {
    +              "description": "SYSTIMER_TARGET2_CONF.",
    +              "offset": 60,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TARGET2_PERIOD": {
    +                    "description": "target2 period",
    +                    "offset": 0,
    +                    "size": 26
    +                  },
    +                  "TARGET2_PERIOD_MODE": {
    +                    "description": "Set target2 to period mode",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "TARGET2_TIMER_UNIT_SEL": {
    +                    "description": "select which unit to compare",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "UNIT0_VALUE_HI": {
    +              "description": "SYSTIMER_UNIT0_VALUE_HI.",
    +              "offset": 64,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_UNIT0_VALUE_HI": {
    +                    "description": "timer read value high 32bit",
    +                    "offset": 0,
    +                    "size": 20,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "UNIT0_VALUE_LO": {
    +              "description": "SYSTIMER_UNIT0_VALUE_LO.",
    +              "offset": 68,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_UNIT0_VALUE_LO": {
    +                    "description": "timer read value low 32bit",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "UNIT1_VALUE_HI": {
    +              "description": "SYSTIMER_UNIT1_VALUE_HI.",
    +              "offset": 72,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_UNIT1_VALUE_HI": {
    +                    "description": "timer read value high 32bit",
    +                    "offset": 0,
    +                    "size": 20,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "UNIT1_VALUE_LO": {
    +              "description": "SYSTIMER_UNIT1_VALUE_LO.",
    +              "offset": 76,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_UNIT1_VALUE_LO": {
    +                    "description": "timer read value low 32bit",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "COMP0_LOAD": {
    +              "description": "SYSTIMER_COMP0_LOAD.",
    +              "offset": 80,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_COMP0_LOAD": {
    +                    "description": "timer comp0 load value",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "COMP1_LOAD": {
    +              "description": "SYSTIMER_COMP1_LOAD.",
    +              "offset": 84,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_COMP1_LOAD": {
    +                    "description": "timer comp1 load value",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "COMP2_LOAD": {
    +              "description": "SYSTIMER_COMP2_LOAD.",
    +              "offset": 88,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_COMP2_LOAD": {
    +                    "description": "timer comp2 load value",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "UNIT0_LOAD": {
    +              "description": "SYSTIMER_UNIT0_LOAD.",
    +              "offset": 92,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_UNIT0_LOAD": {
    +                    "description": "timer unit0 load value",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "UNIT1_LOAD": {
    +              "description": "SYSTIMER_UNIT1_LOAD.",
    +              "offset": 96,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIMER_UNIT1_LOAD": {
    +                    "description": "timer unit1 load value",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ENA": {
    +              "description": "SYSTIMER_INT_ENA.",
    +              "offset": 100,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TARGET0_INT_ENA": {
    +                    "description": "interupt0 enable",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "TARGET1_INT_ENA": {
    +                    "description": "interupt1 enable",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "TARGET2_INT_ENA": {
    +                    "description": "interupt2 enable",
    +                    "offset": 2,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INT_RAW": {
    +              "description": "SYSTIMER_INT_RAW.",
    +              "offset": 104,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TARGET0_INT_RAW": {
    +                    "description": "interupt0 raw",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TARGET1_INT_RAW": {
    +                    "description": "interupt1 raw",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TARGET2_INT_RAW": {
    +                    "description": "interupt2 raw",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_CLR": {
    +              "description": "SYSTIMER_INT_CLR.",
    +              "offset": 108,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TARGET0_INT_CLR": {
    +                    "description": "interupt0 clear",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "TARGET1_INT_CLR": {
    +                    "description": "interupt1 clear",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "TARGET2_INT_CLR": {
    +                    "description": "interupt2 clear",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ST": {
    +              "description": "SYSTIMER_INT_ST.",
    +              "offset": 112,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TARGET0_INT_ST": {
    +                    "description": "reg_target0_int_st",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TARGET1_INT_ST": {
    +                    "description": "reg_target1_int_st",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TARGET2_INT_ST": {
    +                    "description": "reg_target2_int_st",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DATE": {
    +              "description": "SYSTIMER_DATE.",
    +              "offset": 252,
    +              "size": 32,
    +              "reset_value": 33579377,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATE": {
    +                    "description": "reg_date",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "TIMG0": {
    +        "description": "Timer Group",
    +        "children": {
    +          "registers": {
    +            "T0CONFIG": {
    +              "description": "TIMG_T0CONFIG_REG.",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 1610620928,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "T0_USE_XTAL": {
    +                    "description": "reg_t0_use_xtal.",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "T0_ALARM_EN": {
    +                    "description": "reg_t0_alarm_en.",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "T0_DIVCNT_RST": {
    +                    "description": "reg_t0_divcnt_rst.",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "T0_DIVIDER": {
    +                    "description": "reg_t0_divider.",
    +                    "offset": 13,
    +                    "size": 16
    +                  },
    +                  "T0_AUTORELOAD": {
    +                    "description": "reg_t0_autoreload.",
    +                    "offset": 29,
    +                    "size": 1
    +                  },
    +                  "T0_INCREASE": {
    +                    "description": "reg_t0_increase.",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "T0_EN": {
    +                    "description": "reg_t0_en.",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "T0LO": {
    +              "description": "TIMG_T0LO_REG.",
    +              "offset": 4,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "T0_LO": {
    +                    "description": "t0_lo",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "T0HI": {
    +              "description": "TIMG_T0HI_REG.",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "T0_HI": {
    +                    "description": "t0_hi",
    +                    "offset": 0,
    +                    "size": 22,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "T0UPDATE": {
    +              "description": "TIMG_T0UPDATE_REG.",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "T0_UPDATE": {
    +                    "description": "t0_update",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "T0ALARMLO": {
    +              "description": "TIMG_T0ALARMLO_REG.",
    +              "offset": 16,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "T0_ALARM_LO": {
    +                    "description": "reg_t0_alarm_lo.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "T0ALARMHI": {
    +              "description": "TIMG_T0ALARMHI_REG.",
    +              "offset": 20,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "T0_ALARM_HI": {
    +                    "description": "reg_t0_alarm_hi.",
    +                    "offset": 0,
    +                    "size": 22
    +                  }
    +                }
    +              }
    +            },
    +            "T0LOADLO": {
    +              "description": "TIMG_T0LOADLO_REG.",
    +              "offset": 24,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "T0_LOAD_LO": {
    +                    "description": "reg_t0_load_lo.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "T0LOADHI": {
    +              "description": "TIMG_T0LOADHI_REG.",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "T0_LOAD_HI": {
    +                    "description": "reg_t0_load_hi.",
    +                    "offset": 0,
    +                    "size": 22
    +                  }
    +                }
    +              }
    +            },
    +            "T0LOAD": {
    +              "description": "TIMG_T0LOAD_REG.",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "T0_LOAD": {
    +                    "description": "t0_load",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "WDTCONFIG0": {
    +              "description": "TIMG_WDTCONFIG0_REG.",
    +              "offset": 72,
    +              "size": 32,
    +              "reset_value": 311296,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WDT_APPCPU_RESET_EN": {
    +                    "description": "reg_wdt_appcpu_reset_en.",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "WDT_PROCPU_RESET_EN": {
    +                    "description": "reg_wdt_procpu_reset_en.",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "WDT_FLASHBOOT_MOD_EN": {
    +                    "description": "reg_wdt_flashboot_mod_en.",
    +                    "offset": 14,
    +                    "size": 1
    +                  },
    +                  "WDT_SYS_RESET_LENGTH": {
    +                    "description": "reg_wdt_sys_reset_length.",
    +                    "offset": 15,
    +                    "size": 3
    +                  },
    +                  "WDT_CPU_RESET_LENGTH": {
    +                    "description": "reg_wdt_cpu_reset_length.",
    +                    "offset": 18,
    +                    "size": 3
    +                  },
    +                  "WDT_USE_XTAL": {
    +                    "description": "reg_wdt_use_xtal.",
    +                    "offset": 21,
    +                    "size": 1
    +                  },
    +                  "WDT_CONF_UPDATE_EN": {
    +                    "description": "reg_wdt_conf_update_en.",
    +                    "offset": 22,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "WDT_STG3": {
    +                    "description": "reg_wdt_stg3.",
    +                    "offset": 23,
    +                    "size": 2
    +                  },
    +                  "WDT_STG2": {
    +                    "description": "reg_wdt_stg2.",
    +                    "offset": 25,
    +                    "size": 2
    +                  },
    +                  "WDT_STG1": {
    +                    "description": "reg_wdt_stg1.",
    +                    "offset": 27,
    +                    "size": 2
    +                  },
    +                  "WDT_STG0": {
    +                    "description": "reg_wdt_stg0.",
    +                    "offset": 29,
    +                    "size": 2
    +                  },
    +                  "WDT_EN": {
    +                    "description": "reg_wdt_en.",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "WDTCONFIG1": {
    +              "description": "TIMG_WDTCONFIG1_REG.",
    +              "offset": 76,
    +              "size": 32,
    +              "reset_value": 65536,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WDT_DIVCNT_RST": {
    +                    "description": "reg_wdt_divcnt_rst.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "WDT_CLK_PRESCALE": {
    +                    "description": "reg_wdt_clk_prescale.",
    +                    "offset": 16,
    +                    "size": 16
    +                  }
    +                }
    +              }
    +            },
    +            "WDTCONFIG2": {
    +              "description": "TIMG_WDTCONFIG2_REG.",
    +              "offset": 80,
    +              "size": 32,
    +              "reset_value": 26000000,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WDT_STG0_HOLD": {
    +                    "description": "reg_wdt_stg0_hold.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "WDTCONFIG3": {
    +              "description": "TIMG_WDTCONFIG3_REG.",
    +              "offset": 84,
    +              "size": 32,
    +              "reset_value": 134217727,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WDT_STG1_HOLD": {
    +                    "description": "reg_wdt_stg1_hold.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "WDTCONFIG4": {
    +              "description": "TIMG_WDTCONFIG4_REG.",
    +              "offset": 88,
    +              "size": 32,
    +              "reset_value": 1048575,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WDT_STG2_HOLD": {
    +                    "description": "reg_wdt_stg2_hold.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "WDTCONFIG5": {
    +              "description": "TIMG_WDTCONFIG5_REG.",
    +              "offset": 92,
    +              "size": 32,
    +              "reset_value": 1048575,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WDT_STG3_HOLD": {
    +                    "description": "reg_wdt_stg3_hold.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "WDTFEED": {
    +              "description": "TIMG_WDTFEED_REG.",
    +              "offset": 96,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WDT_FEED": {
    +                    "description": "wdt_feed",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "WDTWPROTECT": {
    +              "description": "TIMG_WDTWPROTECT_REG.",
    +              "offset": 100,
    +              "size": 32,
    +              "reset_value": 1356348065,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WDT_WKEY": {
    +                    "description": "reg_wdt_wkey.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "RTCCALICFG": {
    +              "description": "TIMG_RTCCALICFG_REG.",
    +              "offset": 104,
    +              "size": 32,
    +              "reset_value": 77824,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_CALI_START_CYCLING": {
    +                    "description": "reg_rtc_cali_start_cycling.",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "RTC_CALI_CLK_SEL": {
    +                    "description": "reg_rtc_cali_clk_sel.0:rtcslowclock.1:clk_80m.2:xtal_32k",
    +                    "offset": 13,
    +                    "size": 2
    +                  },
    +                  "RTC_CALI_RDY": {
    +                    "description": "rtc_cali_rdy",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_CALI_MAX": {
    +                    "description": "reg_rtc_cali_max.",
    +                    "offset": 16,
    +                    "size": 15
    +                  },
    +                  "RTC_CALI_START": {
    +                    "description": "reg_rtc_cali_start.",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "RTCCALICFG1": {
    +              "description": "TIMG_RTCCALICFG1_REG.",
    +              "offset": 108,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_CALI_CYCLING_DATA_VLD": {
    +                    "description": "rtc_cali_cycling_data_vld",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_CALI_VALUE": {
    +                    "description": "rtc_cali_value",
    +                    "offset": 7,
    +                    "size": 25,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ENA_TIMERS": {
    +              "description": "INT_ENA_TIMG_REG",
    +              "offset": 112,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "T0_INT_ENA": {
    +                    "description": "t0_int_ena",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "WDT_INT_ENA": {
    +                    "description": "wdt_int_ena",
    +                    "offset": 1,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INT_RAW_TIMERS": {
    +              "description": "INT_RAW_TIMG_REG",
    +              "offset": 116,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "T0_INT_RAW": {
    +                    "description": "t0_int_raw",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "WDT_INT_RAW": {
    +                    "description": "wdt_int_raw",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ST_TIMERS": {
    +              "description": "INT_ST_TIMG_REG",
    +              "offset": 120,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "T0_INT_ST": {
    +                    "description": "t0_int_st",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "WDT_INT_ST": {
    +                    "description": "wdt_int_st",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_CLR_TIMERS": {
    +              "description": "INT_CLR_TIMG_REG",
    +              "offset": 124,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "T0_INT_CLR": {
    +                    "description": "t0_int_clr",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "WDT_INT_CLR": {
    +                    "description": "wdt_int_clr",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RTCCALICFG2": {
    +              "description": "TIMG_RTCCALICFG2_REG.",
    +              "offset": 128,
    +              "size": 32,
    +              "reset_value": 4294967192,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RTC_CALI_TIMEOUT": {
    +                    "description": "timeoutindicator",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTC_CALI_TIMEOUT_RST_CNT": {
    +                    "description": "reg_rtc_cali_timeout_rst_cnt.Cyclesthatreleasecalibrationtimeoutreset",
    +                    "offset": 3,
    +                    "size": 4
    +                  },
    +                  "RTC_CALI_TIMEOUT_THRES": {
    +                    "description": "reg_rtc_cali_timeout_thres.timeoutifcalivaluecountsoverthreshold",
    +                    "offset": 7,
    +                    "size": 25
    +                  }
    +                }
    +              }
    +            },
    +            "NTIMG_DATE": {
    +              "description": "TIMG_NTIMG_DATE_REG.",
    +              "offset": 248,
    +              "size": 32,
    +              "reset_value": 33579409,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "NTIMGS_DATE": {
    +                    "description": "reg_ntimers_date.",
    +                    "offset": 0,
    +                    "size": 28
    +                  }
    +                }
    +              }
    +            },
    +            "REGCLK": {
    +              "description": "TIMG_REGCLK_REG.",
    +              "offset": 252,
    +              "size": 32,
    +              "reset_value": 1610612736,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WDT_CLK_IS_ACTIVE": {
    +                    "description": "reg_wdt_clk_is_active.",
    +                    "offset": 29,
    +                    "size": 1
    +                  },
    +                  "TIMER_CLK_IS_ACTIVE": {
    +                    "description": "reg_timer_clk_is_active.",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "CLK_EN": {
    +                    "description": "reg_clk_en.",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "XTS_AES": {
    +        "description": "XTS-AES-128 Flash Encryption",
    +        "children": {
    +          "registers": {
    +            "PLAIN_MEM": {
    +              "description": "The memory that stores plaintext",
    +              "offset": 0,
    +              "size": 8,
    +              "count": 16,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295
    +            },
    +            "LINESIZE": {
    +              "description": "XTS-AES line-size register",
    +              "offset": 64,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "LINESIZE": {
    +                    "description": "This bit stores the line size parameter. 0: 16Byte, 1: 32Byte.",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DESTINATION": {
    +              "description": "XTS-AES destination register",
    +              "offset": 68,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DESTINATION": {
    +                    "description": "This bit stores the destination. 0: flash(default). 1: reserved.",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "PHYSICAL_ADDRESS": {
    +              "description": "XTS-AES physical address register",
    +              "offset": 72,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PHYSICAL_ADDRESS": {
    +                    "description": "Those bits stores the physical address. If linesize is 16-byte, the physical address should be aligned of 16 bytes. If linesize is 32-byte, the physical address should be aligned of 32 bytes.",
    +                    "offset": 0,
    +                    "size": 30
    +                  }
    +                }
    +              }
    +            },
    +            "TRIGGER": {
    +              "description": "XTS-AES trigger register",
    +              "offset": 76,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TRIGGER": {
    +                    "description": "Set this bit to start manual encryption calculation",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RELEASE": {
    +              "description": "XTS-AES release register",
    +              "offset": 80,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RELEASE": {
    +                    "description": "Set this bit to release the manual encrypted result, after that the result will be visible to spi",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DESTROY": {
    +              "description": "XTS-AES destroy register",
    +              "offset": 84,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DESTROY": {
    +                    "description": "Set this bit to destroy XTS-AES result.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "STATE": {
    +              "description": "XTS-AES status register",
    +              "offset": 88,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "STATE": {
    +                    "description": "Those bits shows XTS-AES status. 0=IDLE, 1=WORK, 2=RELEASE, 3=USE. IDLE means that XTS-AES is idle. WORK means that XTS-AES is busy with calculation. RELEASE means the encrypted result is generated but not visible to mspi. USE means that the encrypted result is visible to mspi.",
    +                    "offset": 0,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DATE": {
    +              "description": "XTS-AES version control register",
    +              "offset": 92,
    +              "size": 32,
    +              "reset_value": 538969635,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATE": {
    +                    "description": "Those bits stores the version information of XTS-AES.",
    +                    "offset": 0,
    +                    "size": 30
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "TWAI": {
    +        "description": "Two-Wire Automotive Interface",
    +        "children": {
    +          "registers": {
    +            "MODE": {
    +              "description": "Mode Register",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 1,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RESET_MODE": {
    +                    "description": "This bit is used to configure the operating mode of the TWAI Controller. 1: Reset mode; 0: Operating mode.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "LISTEN_ONLY_MODE": {
    +                    "description": "1: Listen only mode. In this mode the nodes will only receive messages from the bus, without generating the acknowledge signal nor updating the RX error counter.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "SELF_TEST_MODE": {
    +                    "description": "1: Self test mode. In this mode the TX nodes can perform a successful transmission without receiving the acknowledge signal. This mode is often used to test a single node with the self reception request command.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "RX_FILTER_MODE": {
    +                    "description": "This bit is used to configure the filter mode. 0: Dual filter mode; 1: Single filter mode.",
    +                    "offset": 3,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CMD": {
    +              "description": "Command Register",
    +              "offset": 4,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_REQ": {
    +                    "description": "Set the bit to 1 to allow the driving nodes start transmission.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "ABORT_TX": {
    +                    "description": "Set the bit to 1 to cancel a pending transmission request.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RELEASE_BUF": {
    +                    "description": "Set the bit to 1 to release the RX buffer.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "CLR_OVERRUN": {
    +                    "description": "Set the bit to 1 to clear the data overrun status bit.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SELF_RX_REQ": {
    +                    "description": "Self reception request command. Set the bit to 1 to allow a message be transmitted and received simultaneously.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "STATUS": {
    +              "description": "Status register",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_BUF_ST": {
    +                    "description": "1: The data in the RX buffer is not empty, with at least one received data packet.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OVERRUN_ST": {
    +                    "description": "1: The RX FIFO is full and data overrun has occurred.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TX_BUF_ST": {
    +                    "description": "1: The TX buffer is empty, the CPU may write a message into it.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TX_COMPLETE": {
    +                    "description": "1: The TWAI controller has successfully received a packet from the bus.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RX_ST": {
    +                    "description": "1: The TWAI Controller is receiving a message from the bus.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TX_ST": {
    +                    "description": "1: The TWAI Controller is transmitting a message to the bus.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "ERR_ST": {
    +                    "description": "1: At least one of the RX/TX error counter has reached or exceeded the value set in register TWAI_ERR_WARNING_LIMIT_REG.",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "BUS_OFF_ST": {
    +                    "description": "1: In bus-off status, the TWAI Controller is no longer involved in bus activities.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "MISS_ST": {
    +                    "description": "This bit reflects whether the data packet in the RX FIFO is complete. 1: The current packet is missing; 0: The current packet is complete",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_RAW": {
    +              "description": "Interrupt Register",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_INT_ST": {
    +                    "description": "Receive interrupt. If this bit is set to 1, it indicates there are messages to be handled in the RX FIFO.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TX_INT_ST": {
    +                    "description": "Transmit interrupt. If this bit is set to 1, it indicates the message transmitting mis- sion is finished and a new transmission is able to execute.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "ERR_WARN_INT_ST": {
    +                    "description": "Error warning interrupt. If this bit is set to 1, it indicates the error status signal and the bus-off status signal of Status register have changed (e.g., switched from 0 to 1 or from 1 to 0).",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OVERRUN_INT_ST": {
    +                    "description": "Data overrun interrupt. If this bit is set to 1, it indicates a data overrun interrupt is generated in the RX FIFO.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "ERR_PASSIVE_INT_ST": {
    +                    "description": "Error passive interrupt. If this bit is set to 1, it indicates the TWAI Controller is switched between error active status and error passive status due to the change of error counters.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "ARB_LOST_INT_ST": {
    +                    "description": "Arbitration lost interrupt. If this bit is set to 1, it indicates an arbitration lost interrupt is generated.",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "BUS_ERR_INT_ST": {
    +                    "description": "Error interrupt. If this bit is set to 1, it indicates an error is detected on the bus.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ENA": {
    +              "description": "Interrupt Enable Register",
    +              "offset": 16,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_INT_ENA": {
    +                    "description": "Set this bit to 1 to enable receive interrupt.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "TX_INT_ENA": {
    +                    "description": "Set this bit to 1 to enable transmit interrupt.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "ERR_WARN_INT_ENA": {
    +                    "description": "Set this bit to 1 to enable error warning interrupt.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "OVERRUN_INT_ENA": {
    +                    "description": "Set this bit to 1 to enable data overrun interrupt.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "ERR_PASSIVE_INT_ENA": {
    +                    "description": "Set this bit to 1 to enable error passive interrupt.",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "ARB_LOST_INT_ENA": {
    +                    "description": "Set this bit to 1 to enable arbitration lost interrupt.",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "BUS_ERR_INT_ENA": {
    +                    "description": "Set this bit to 1 to enable error interrupt.",
    +                    "offset": 7,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "BUS_TIMING_0": {
    +              "description": "Bus Timing Register 0",
    +              "offset": 24,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "BAUD_PRESC": {
    +                    "description": "Baud Rate Prescaler, determines the frequency dividing ratio.",
    +                    "offset": 0,
    +                    "size": 13
    +                  },
    +                  "SYNC_JUMP_WIDTH": {
    +                    "description": "Synchronization Jump Width (SJW), 1 \\verb+~+ 14 Tq wide.",
    +                    "offset": 14,
    +                    "size": 2
    +                  }
    +                }
    +              }
    +            },
    +            "BUS_TIMING_1": {
    +              "description": "Bus Timing Register 1",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TIME_SEG1": {
    +                    "description": "The width of PBS1.",
    +                    "offset": 0,
    +                    "size": 4
    +                  },
    +                  "TIME_SEG2": {
    +                    "description": "The width of PBS2.",
    +                    "offset": 4,
    +                    "size": 3
    +                  },
    +                  "TIME_SAMP": {
    +                    "description": "The number of sample points. 0: the bus is sampled once; 1: the bus is sampled three times",
    +                    "offset": 7,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "ARB_LOST_CAP": {
    +              "description": "Arbitration Lost Capture Register",
    +              "offset": 44,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ARB_LOST_CAP": {
    +                    "description": "This register contains information about the bit position of lost arbitration.",
    +                    "offset": 0,
    +                    "size": 5,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "ERR_CODE_CAP": {
    +              "description": "Error Code Capture Register",
    +              "offset": 48,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ECC_SEGMENT": {
    +                    "description": "This register contains information about the location of errors, see Table 181 for details.",
    +                    "offset": 0,
    +                    "size": 5,
    +                    "access": "read-only"
    +                  },
    +                  "ECC_DIRECTION": {
    +                    "description": "This register contains information about transmission direction of the node when error occurs. 1: Error occurs when receiving a message; 0: Error occurs when transmitting a message",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "ECC_TYPE": {
    +                    "description": "This register contains information about error types: 00: bit error; 01: form error; 10: stuff error; 11: other type of error",
    +                    "offset": 6,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "ERR_WARNING_LIMIT": {
    +              "description": "Error Warning Limit Register",
    +              "offset": 52,
    +              "size": 32,
    +              "reset_value": 96,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ERR_WARNING_LIMIT": {
    +                    "description": "Error warning threshold. In the case when any of a error counter value exceeds the threshold, or all the error counter values are below the threshold, an error warning interrupt will be triggered (given the enable signal is valid).",
    +                    "offset": 0,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "RX_ERR_CNT": {
    +              "description": "Receive Error Counter Register",
    +              "offset": 56,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_ERR_CNT": {
    +                    "description": "The RX error counter register, reflects value changes under reception status.",
    +                    "offset": 0,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "TX_ERR_CNT": {
    +              "description": "Transmit Error Counter Register",
    +              "offset": 60,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_ERR_CNT": {
    +                    "description": "The TX error counter register, reflects value changes under transmission status.",
    +                    "offset": 0,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "DATA_0": {
    +              "description": "Data register 0",
    +              "offset": 64,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_BYTE_0": {
    +                    "description": "In reset mode, it is acceptance code register 0 with R/W Permission. In operation mode, it stores the 0th byte information of the data to be transmitted under operating mode.",
    +                    "offset": 0,
    +                    "size": 8,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DATA_1": {
    +              "description": "Data register 1",
    +              "offset": 68,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_BYTE_1": {
    +                    "description": "In reset mode, it is acceptance code register 1 with R/W Permission. In operation mode, it stores the 1st byte information of the data to be transmitted under operating mode.",
    +                    "offset": 0,
    +                    "size": 8,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DATA_2": {
    +              "description": "Data register 2",
    +              "offset": 72,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_BYTE_2": {
    +                    "description": "In reset mode, it is acceptance code register 2 with R/W Permission. In operation mode, it stores the 2nd byte information of the data to be transmitted under operating mode.",
    +                    "offset": 0,
    +                    "size": 8,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DATA_3": {
    +              "description": "Data register 3",
    +              "offset": 76,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_BYTE_3": {
    +                    "description": "In reset mode, it is acceptance code register 3 with R/W Permission. In operation mode, it stores the 3rd byte information of the data to be transmitted under operating mode.",
    +                    "offset": 0,
    +                    "size": 8,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DATA_4": {
    +              "description": "Data register 4",
    +              "offset": 80,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_BYTE_4": {
    +                    "description": "In reset mode, it is acceptance mask register 0 with R/W Permission. In operation mode, it stores the 4th byte information of the data to be transmitted under operating mode.",
    +                    "offset": 0,
    +                    "size": 8,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DATA_5": {
    +              "description": "Data register 5",
    +              "offset": 84,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_BYTE_5": {
    +                    "description": "In reset mode, it is acceptance mask register 1 with R/W Permission. In operation mode, it stores the 5th byte information of the data to be transmitted under operating mode.",
    +                    "offset": 0,
    +                    "size": 8,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DATA_6": {
    +              "description": "Data register 6",
    +              "offset": 88,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_BYTE_6": {
    +                    "description": "In reset mode, it is acceptance mask register 2 with R/W Permission. In operation mode, it stores the 6th byte information of the data to be transmitted under operating mode.",
    +                    "offset": 0,
    +                    "size": 8,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DATA_7": {
    +              "description": "Data register 7",
    +              "offset": 92,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_BYTE_7": {
    +                    "description": "In reset mode, it is acceptance mask register 3 with R/W Permission. In operation mode, it stores the 7th byte information of the data to be transmitted under operating mode.",
    +                    "offset": 0,
    +                    "size": 8,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DATA_8": {
    +              "description": "Data register 8",
    +              "offset": 96,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_BYTE_8": {
    +                    "description": "Stored the 8th byte information of the data to be transmitted under operating mode.",
    +                    "offset": 0,
    +                    "size": 8,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DATA_9": {
    +              "description": "Data register 9",
    +              "offset": 100,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_BYTE_9": {
    +                    "description": "Stored the 9th byte information of the data to be transmitted under operating mode.",
    +                    "offset": 0,
    +                    "size": 8,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DATA_10": {
    +              "description": "Data register 10",
    +              "offset": 104,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_BYTE_10": {
    +                    "description": "Stored the 10th byte information of the data to be transmitted under operating mode.",
    +                    "offset": 0,
    +                    "size": 8,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DATA_11": {
    +              "description": "Data register 11",
    +              "offset": 108,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_BYTE_11": {
    +                    "description": "Stored the 11th byte information of the data to be transmitted under operating mode.",
    +                    "offset": 0,
    +                    "size": 8,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "DATA_12": {
    +              "description": "Data register 12",
    +              "offset": 112,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_BYTE_12": {
    +                    "description": "Stored the 12th byte information of the data to be transmitted under operating mode.",
    +                    "offset": 0,
    +                    "size": 8,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RX_MESSAGE_CNT": {
    +              "description": "Receive Message Counter Register",
    +              "offset": 116,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_MESSAGE_COUNTER": {
    +                    "description": "This register reflects the number of messages available within the RX FIFO.",
    +                    "offset": 0,
    +                    "size": 7,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CLOCK_DIVIDER": {
    +              "description": "Clock Divider register",
    +              "offset": 124,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CD": {
    +                    "description": "These bits are used to configure frequency dividing coefficients of the external CLKOUT pin.",
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "CLOCK_OFF": {
    +                    "description": "This bit can be configured under reset mode. 1: Disable the external CLKOUT pin; 0: Enable the external CLKOUT pin",
    +                    "offset": 8,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "UART0": {
    +        "description": "UART (Universal Asynchronous Receiver-Transmitter) Controller",
    +        "children": {
    +          "registers": {
    +            "FIFO": {
    +              "description": "FIFO data register",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RXFIFO_RD_BYTE": {
    +                    "description": "UART 0 accesses FIFO via this register.",
    +                    "offset": 0,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "INT_RAW": {
    +              "description": "Raw interrupt status",
    +              "offset": 4,
    +              "size": 32,
    +              "reset_value": 2,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RXFIFO_FULL_INT_RAW": {
    +                    "description": "This interrupt raw bit turns to high level when receiver receives more data than what rxfifo_full_thrhd specifies.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TXFIFO_EMPTY_INT_RAW": {
    +                    "description": "This interrupt raw bit turns to high level when the amount of data in Tx-FIFO is less than what txfifo_empty_thrhd specifies .",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "PARITY_ERR_INT_RAW": {
    +                    "description": "This interrupt raw bit turns to high level when receiver detects a parity error in the data.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "FRM_ERR_INT_RAW": {
    +                    "description": "This interrupt raw bit turns to high level when receiver detects a data frame error .",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RXFIFO_OVF_INT_RAW": {
    +                    "description": "This interrupt raw bit turns to high level when receiver receives more data than the FIFO can store.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DSR_CHG_INT_RAW": {
    +                    "description": "This interrupt raw bit turns to high level when receiver detects the edge change of DSRn signal.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CTS_CHG_INT_RAW": {
    +                    "description": "This interrupt raw bit turns to high level when receiver detects the edge change of CTSn signal.",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "BRK_DET_INT_RAW": {
    +                    "description": "This interrupt raw bit turns to high level when receiver detects a 0 after the stop bit.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RXFIFO_TOUT_INT_RAW": {
    +                    "description": "This interrupt raw bit turns to high level when receiver takes more time than rx_tout_thrhd to receive a byte.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SW_XON_INT_RAW": {
    +                    "description": "This interrupt raw bit turns to high level when receiver recevies Xon char when uart_sw_flow_con_en is set to 1.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SW_XOFF_INT_RAW": {
    +                    "description": "This interrupt raw bit turns to high level when receiver receives Xoff char when uart_sw_flow_con_en is set to 1.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "GLITCH_DET_INT_RAW": {
    +                    "description": "This interrupt raw bit turns to high level when receiver detects a glitch in the middle of a start bit.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TX_BRK_DONE_INT_RAW": {
    +                    "description": "This interrupt raw bit turns to high level when transmitter completes  sending  NULL characters, after all data in Tx-FIFO are sent.",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TX_BRK_IDLE_DONE_INT_RAW": {
    +                    "description": "This interrupt raw bit turns to high level when transmitter has kept the shortest duration after sending the  last data.",
    +                    "offset": 13,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TX_DONE_INT_RAW": {
    +                    "description": "This interrupt raw bit turns to high level when transmitter has send out all data in FIFO.",
    +                    "offset": 14,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RS485_PARITY_ERR_INT_RAW": {
    +                    "description": "This interrupt raw bit turns to high level when receiver detects a parity error from the echo of transmitter in rs485 mode.",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RS485_FRM_ERR_INT_RAW": {
    +                    "description": "This interrupt raw bit turns to high level when receiver detects a data frame error from the echo of transmitter in rs485 mode.",
    +                    "offset": 16,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RS485_CLASH_INT_RAW": {
    +                    "description": "This interrupt raw bit turns to high level when detects a clash between transmitter and receiver in rs485 mode.",
    +                    "offset": 17,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "AT_CMD_CHAR_DET_INT_RAW": {
    +                    "description": "This interrupt raw bit turns to high level when receiver detects the configured at_cmd char.",
    +                    "offset": 18,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "WAKEUP_INT_RAW": {
    +                    "description": "This interrupt raw bit turns to high level when input rxd edge changes more times than what reg_active_threshold specifies in light sleeping mode.",
    +                    "offset": 19,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ST": {
    +              "description": "Masked interrupt status",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RXFIFO_FULL_INT_ST": {
    +                    "description": "This is the status bit for rxfifo_full_int_raw when rxfifo_full_int_ena is set to 1.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TXFIFO_EMPTY_INT_ST": {
    +                    "description": "This is the status bit for  txfifo_empty_int_raw  when txfifo_empty_int_ena is set to 1.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "PARITY_ERR_INT_ST": {
    +                    "description": "This is the status bit for parity_err_int_raw when parity_err_int_ena is set to 1.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "FRM_ERR_INT_ST": {
    +                    "description": "This is the status bit for frm_err_int_raw when frm_err_int_ena is set to 1.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RXFIFO_OVF_INT_ST": {
    +                    "description": "This is the status bit for rxfifo_ovf_int_raw when rxfifo_ovf_int_ena is set to 1.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "DSR_CHG_INT_ST": {
    +                    "description": "This is the status bit for dsr_chg_int_raw when dsr_chg_int_ena is set to 1.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CTS_CHG_INT_ST": {
    +                    "description": "This is the status bit for cts_chg_int_raw when cts_chg_int_ena is set to 1.",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "BRK_DET_INT_ST": {
    +                    "description": "This is the status bit for brk_det_int_raw when brk_det_int_ena is set to 1.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RXFIFO_TOUT_INT_ST": {
    +                    "description": "This is the status bit for rxfifo_tout_int_raw when rxfifo_tout_int_ena is set to 1.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SW_XON_INT_ST": {
    +                    "description": "This is the status bit for sw_xon_int_raw when sw_xon_int_ena is set to 1.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SW_XOFF_INT_ST": {
    +                    "description": "This is the status bit for sw_xoff_int_raw when sw_xoff_int_ena is set to 1.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "GLITCH_DET_INT_ST": {
    +                    "description": "This is the status bit for glitch_det_int_raw when glitch_det_int_ena is set to 1.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TX_BRK_DONE_INT_ST": {
    +                    "description": "This is the status bit for tx_brk_done_int_raw when tx_brk_done_int_ena is set to 1.",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TX_BRK_IDLE_DONE_INT_ST": {
    +                    "description": "This is the stauts bit for tx_brk_idle_done_int_raw when tx_brk_idle_done_int_ena is set to 1.",
    +                    "offset": 13,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TX_DONE_INT_ST": {
    +                    "description": "This is the status bit for tx_done_int_raw when tx_done_int_ena is set to 1.",
    +                    "offset": 14,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RS485_PARITY_ERR_INT_ST": {
    +                    "description": "This is the status bit for rs485_parity_err_int_raw when rs485_parity_int_ena is set to 1.",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RS485_FRM_ERR_INT_ST": {
    +                    "description": "This is the status bit for rs485_frm_err_int_raw when rs485_fm_err_int_ena is set to 1.",
    +                    "offset": 16,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RS485_CLASH_INT_ST": {
    +                    "description": "This is the status bit for rs485_clash_int_raw when rs485_clash_int_ena is set to 1.",
    +                    "offset": 17,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "AT_CMD_CHAR_DET_INT_ST": {
    +                    "description": "This is the status bit for at_cmd_det_int_raw when at_cmd_char_det_int_ena is set to 1.",
    +                    "offset": 18,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "WAKEUP_INT_ST": {
    +                    "description": "This is the status bit for uart_wakeup_int_raw when uart_wakeup_int_ena is set to 1.",
    +                    "offset": 19,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ENA": {
    +              "description": "Interrupt enable bits",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RXFIFO_FULL_INT_ENA": {
    +                    "description": "This is the enable bit for rxfifo_full_int_st register.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "TXFIFO_EMPTY_INT_ENA": {
    +                    "description": "This is the enable bit for txfifo_empty_int_st register.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "PARITY_ERR_INT_ENA": {
    +                    "description": "This is the enable bit for parity_err_int_st register.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "FRM_ERR_INT_ENA": {
    +                    "description": "This is the enable bit for frm_err_int_st register.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "RXFIFO_OVF_INT_ENA": {
    +                    "description": "This is the enable bit for rxfifo_ovf_int_st register.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "DSR_CHG_INT_ENA": {
    +                    "description": "This is the enable bit for dsr_chg_int_st register.",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "CTS_CHG_INT_ENA": {
    +                    "description": "This is the enable bit for cts_chg_int_st register.",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "BRK_DET_INT_ENA": {
    +                    "description": "This is the enable bit for brk_det_int_st register.",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "RXFIFO_TOUT_INT_ENA": {
    +                    "description": "This is the enable bit for rxfifo_tout_int_st register.",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "SW_XON_INT_ENA": {
    +                    "description": "This is the enable bit for sw_xon_int_st register.",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "SW_XOFF_INT_ENA": {
    +                    "description": "This is the enable bit for sw_xoff_int_st register.",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "GLITCH_DET_INT_ENA": {
    +                    "description": "This is the enable bit for glitch_det_int_st register.",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "TX_BRK_DONE_INT_ENA": {
    +                    "description": "This is the enable bit for tx_brk_done_int_st register.",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "TX_BRK_IDLE_DONE_INT_ENA": {
    +                    "description": "This is the enable bit for tx_brk_idle_done_int_st register.",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "TX_DONE_INT_ENA": {
    +                    "description": "This is the enable bit for tx_done_int_st register.",
    +                    "offset": 14,
    +                    "size": 1
    +                  },
    +                  "RS485_PARITY_ERR_INT_ENA": {
    +                    "description": "This is the enable bit for rs485_parity_err_int_st register.",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "RS485_FRM_ERR_INT_ENA": {
    +                    "description": "This is the enable bit for rs485_parity_err_int_st register.",
    +                    "offset": 16,
    +                    "size": 1
    +                  },
    +                  "RS485_CLASH_INT_ENA": {
    +                    "description": "This is the enable bit for rs485_clash_int_st register.",
    +                    "offset": 17,
    +                    "size": 1
    +                  },
    +                  "AT_CMD_CHAR_DET_INT_ENA": {
    +                    "description": "This is the enable bit for at_cmd_char_det_int_st register.",
    +                    "offset": 18,
    +                    "size": 1
    +                  },
    +                  "WAKEUP_INT_ENA": {
    +                    "description": "This is the enable bit for uart_wakeup_int_st register.",
    +                    "offset": 19,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INT_CLR": {
    +              "description": "Interrupt clear bits",
    +              "offset": 16,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RXFIFO_FULL_INT_CLR": {
    +                    "description": "Set this bit to clear the rxfifo_full_int_raw interrupt.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "TXFIFO_EMPTY_INT_CLR": {
    +                    "description": "Set this bit to clear txfifo_empty_int_raw interrupt.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "PARITY_ERR_INT_CLR": {
    +                    "description": "Set this bit to clear parity_err_int_raw interrupt.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "FRM_ERR_INT_CLR": {
    +                    "description": "Set this bit to clear frm_err_int_raw interrupt.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RXFIFO_OVF_INT_CLR": {
    +                    "description": "Set this bit to clear rxfifo_ovf_int_raw interrupt.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "DSR_CHG_INT_CLR": {
    +                    "description": "Set this bit to clear the dsr_chg_int_raw interrupt.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "CTS_CHG_INT_CLR": {
    +                    "description": "Set this bit to clear the cts_chg_int_raw interrupt.",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "BRK_DET_INT_CLR": {
    +                    "description": "Set this bit to clear the brk_det_int_raw interrupt.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RXFIFO_TOUT_INT_CLR": {
    +                    "description": "Set this bit to clear the rxfifo_tout_int_raw interrupt.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SW_XON_INT_CLR": {
    +                    "description": "Set this bit to clear the sw_xon_int_raw interrupt.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SW_XOFF_INT_CLR": {
    +                    "description": "Set this bit to clear the sw_xoff_int_raw interrupt.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "GLITCH_DET_INT_CLR": {
    +                    "description": "Set this bit to clear the glitch_det_int_raw interrupt.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "TX_BRK_DONE_INT_CLR": {
    +                    "description": "Set this bit to clear the tx_brk_done_int_raw interrupt..",
    +                    "offset": 12,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "TX_BRK_IDLE_DONE_INT_CLR": {
    +                    "description": "Set this bit to clear the tx_brk_idle_done_int_raw interrupt.",
    +                    "offset": 13,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "TX_DONE_INT_CLR": {
    +                    "description": "Set this bit to clear the tx_done_int_raw interrupt.",
    +                    "offset": 14,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RS485_PARITY_ERR_INT_CLR": {
    +                    "description": "Set this bit to clear the rs485_parity_err_int_raw interrupt.",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RS485_FRM_ERR_INT_CLR": {
    +                    "description": "Set this bit to clear the rs485_frm_err_int_raw interrupt.",
    +                    "offset": 16,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RS485_CLASH_INT_CLR": {
    +                    "description": "Set this bit to clear the rs485_clash_int_raw interrupt.",
    +                    "offset": 17,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "AT_CMD_CHAR_DET_INT_CLR": {
    +                    "description": "Set this bit to clear the at_cmd_char_det_int_raw interrupt.",
    +                    "offset": 18,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "WAKEUP_INT_CLR": {
    +                    "description": "Set this bit to clear the uart_wakeup_int_raw interrupt.",
    +                    "offset": 19,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CLKDIV": {
    +              "description": "Clock divider configuration",
    +              "offset": 20,
    +              "size": 32,
    +              "reset_value": 694,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CLKDIV": {
    +                    "description": "The integral part of the frequency divider factor.",
    +                    "offset": 0,
    +                    "size": 12
    +                  },
    +                  "FRAG": {
    +                    "description": "The decimal part of the frequency divider factor.",
    +                    "offset": 20,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "RX_FILT": {
    +              "description": "Rx Filter configuration",
    +              "offset": 24,
    +              "size": 32,
    +              "reset_value": 8,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "GLITCH_FILT": {
    +                    "description": "when input pulse width is lower than this value, the pulse is ignored.",
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "GLITCH_FILT_EN": {
    +                    "description": "Set this bit to enable Rx signal filter.",
    +                    "offset": 8,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "STATUS": {
    +              "description": "UART status register",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 3758145536,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RXFIFO_CNT": {
    +                    "description": "Stores the byte number of valid data in Rx-FIFO.",
    +                    "offset": 0,
    +                    "size": 10,
    +                    "access": "read-only"
    +                  },
    +                  "DSRN": {
    +                    "description": "The register represent the level value of the internal uart dsr signal.",
    +                    "offset": 13,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CTSN": {
    +                    "description": "This register represent the level value of the internal uart cts signal.",
    +                    "offset": 14,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RXD": {
    +                    "description": "This register represent the  level value of the internal uart rxd signal.",
    +                    "offset": 15,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TXFIFO_CNT": {
    +                    "description": "Stores the byte number of data in Tx-FIFO.",
    +                    "offset": 16,
    +                    "size": 10,
    +                    "access": "read-only"
    +                  },
    +                  "DTRN": {
    +                    "description": "This bit represents the level of the internal uart dtr signal.",
    +                    "offset": 29,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RTSN": {
    +                    "description": "This bit represents the level of the internal uart rts signal.",
    +                    "offset": 30,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TXD": {
    +                    "description": "This bit represents the  level of the internal uart txd signal.",
    +                    "offset": 31,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CONF0": {
    +              "description": "a",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 268435484,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PARITY": {
    +                    "description": "This register is used to configure the parity check mode.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "PARITY_EN": {
    +                    "description": "Set this bit to enable uart parity check.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "BIT_NUM": {
    +                    "description": "This register is used to set the length of data.",
    +                    "offset": 2,
    +                    "size": 2
    +                  },
    +                  "STOP_BIT_NUM": {
    +                    "description": "This register is used to set the length of  stop bit.",
    +                    "offset": 4,
    +                    "size": 2
    +                  },
    +                  "SW_RTS": {
    +                    "description": "This register is used to configure the software rts signal which is used in software flow control.",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "SW_DTR": {
    +                    "description": "This register is used to configure the software dtr signal which is used in software flow control.",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "TXD_BRK": {
    +                    "description": "Set this bit to enbale transmitter to  send NULL when the process of sending data is done.",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "IRDA_DPLX": {
    +                    "description": "Set this bit to enable IrDA loopback mode.",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "IRDA_TX_EN": {
    +                    "description": "This is the start enable bit for IrDA transmitter.",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "IRDA_WCTL": {
    +                    "description": "1'h1: The IrDA transmitter's 11th bit is the same as 10th bit. 1'h0: Set IrDA transmitter's 11th bit to 0.",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "IRDA_TX_INV": {
    +                    "description": "Set this bit to invert the level of  IrDA transmitter.",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "IRDA_RX_INV": {
    +                    "description": "Set this bit to invert the level of IrDA receiver.",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "LOOPBACK": {
    +                    "description": "Set this bit to enable uart loopback test mode.",
    +                    "offset": 14,
    +                    "size": 1
    +                  },
    +                  "TX_FLOW_EN": {
    +                    "description": "Set this bit to enable flow control function for transmitter.",
    +                    "offset": 15,
    +                    "size": 1
    +                  },
    +                  "IRDA_EN": {
    +                    "description": "Set this bit to enable IrDA protocol.",
    +                    "offset": 16,
    +                    "size": 1
    +                  },
    +                  "RXFIFO_RST": {
    +                    "description": "Set this bit to reset the uart receive-FIFO.",
    +                    "offset": 17,
    +                    "size": 1
    +                  },
    +                  "TXFIFO_RST": {
    +                    "description": "Set this bit to reset the uart transmit-FIFO.",
    +                    "offset": 18,
    +                    "size": 1
    +                  },
    +                  "RXD_INV": {
    +                    "description": "Set this bit to inverse the level value of uart rxd signal.",
    +                    "offset": 19,
    +                    "size": 1
    +                  },
    +                  "CTS_INV": {
    +                    "description": "Set this bit to inverse the level value of uart cts signal.",
    +                    "offset": 20,
    +                    "size": 1
    +                  },
    +                  "DSR_INV": {
    +                    "description": "Set this bit to inverse the level value of uart dsr signal.",
    +                    "offset": 21,
    +                    "size": 1
    +                  },
    +                  "TXD_INV": {
    +                    "description": "Set this bit to inverse the level value of uart txd signal.",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "RTS_INV": {
    +                    "description": "Set this bit to inverse the level value of uart rts signal.",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "DTR_INV": {
    +                    "description": "Set this bit to inverse the level value of uart dtr signal.",
    +                    "offset": 24,
    +                    "size": 1
    +                  },
    +                  "CLK_EN": {
    +                    "description": "1'h1: Force clock on for register. 1'h0: Support clock only when application writes registers.",
    +                    "offset": 25,
    +                    "size": 1
    +                  },
    +                  "ERR_WR_MASK": {
    +                    "description": "1'h1: Receiver stops storing data into FIFO when data is wrong. 1'h0: Receiver stores the data even if the  received data is wrong.",
    +                    "offset": 26,
    +                    "size": 1
    +                  },
    +                  "AUTOBAUD_EN": {
    +                    "description": "This is the enable bit for detecting baudrate.",
    +                    "offset": 27,
    +                    "size": 1
    +                  },
    +                  "MEM_CLK_EN": {
    +                    "description": "UART memory clock gate enable signal.",
    +                    "offset": 28,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "CONF1": {
    +              "description": "Configuration register 1",
    +              "offset": 36,
    +              "size": 32,
    +              "reset_value": 49248,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RXFIFO_FULL_THRHD": {
    +                    "description": "It will produce rxfifo_full_int interrupt when receiver receives more data than this register value.",
    +                    "offset": 0,
    +                    "size": 9
    +                  },
    +                  "TXFIFO_EMPTY_THRHD": {
    +                    "description": "It will produce txfifo_empty_int interrupt when the data amount in Tx-FIFO is less than this register value.",
    +                    "offset": 9,
    +                    "size": 9
    +                  },
    +                  "DIS_RX_DAT_OVF": {
    +                    "description": "Disable UART Rx data overflow detect.",
    +                    "offset": 18,
    +                    "size": 1
    +                  },
    +                  "RX_TOUT_FLOW_DIS": {
    +                    "description": "Set this bit to stop accumulating idle_cnt when hardware flow control works.",
    +                    "offset": 19,
    +                    "size": 1
    +                  },
    +                  "RX_FLOW_EN": {
    +                    "description": "This is the flow enable bit for UART receiver.",
    +                    "offset": 20,
    +                    "size": 1
    +                  },
    +                  "RX_TOUT_EN": {
    +                    "description": "This is the enble bit for uart receiver's timeout function.",
    +                    "offset": 21,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "LOWPULSE": {
    +              "description": "Autobaud minimum low pulse duration register",
    +              "offset": 40,
    +              "size": 32,
    +              "reset_value": 4095,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "MIN_CNT": {
    +                    "description": "This register stores the value of the minimum duration time of the low level pulse. It is used in baud rate-detect process.",
    +                    "offset": 0,
    +                    "size": 12,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "HIGHPULSE": {
    +              "description": "Autobaud minimum high pulse duration register",
    +              "offset": 44,
    +              "size": 32,
    +              "reset_value": 4095,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "MIN_CNT": {
    +                    "description": "This register stores  the value of the maxinum duration time for the high level pulse. It is used in baud rate-detect process.",
    +                    "offset": 0,
    +                    "size": 12,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RXD_CNT": {
    +              "description": "Autobaud edge change count register",
    +              "offset": 48,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RXD_EDGE_CNT": {
    +                    "description": "This register stores the count of rxd edge change. It is used in baud rate-detect process.",
    +                    "offset": 0,
    +                    "size": 10,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "FLOW_CONF": {
    +              "description": "Software flow-control configuration",
    +              "offset": 52,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SW_FLOW_CON_EN": {
    +                    "description": "Set this bit to enable software flow control. It is used with register sw_xon or sw_xoff.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "XONOFF_DEL": {
    +                    "description": "Set this bit to remove flow control char from the received data.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "FORCE_XON": {
    +                    "description": "Set this bit to enable the transmitter to go on sending data.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "FORCE_XOFF": {
    +                    "description": "Set this bit to stop the  transmitter from sending data.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "SEND_XON": {
    +                    "description": "Set this bit to send Xon char. It is cleared by hardware automatically.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "SEND_XOFF": {
    +                    "description": "Set this bit to send Xoff char. It is cleared by hardware automatically.",
    +                    "offset": 5,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "SLEEP_CONF": {
    +              "description": "Sleep-mode configuration",
    +              "offset": 56,
    +              "size": 32,
    +              "reset_value": 240,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ACTIVE_THRESHOLD": {
    +                    "description": "The uart is activated from light sleeping mode when the input rxd edge changes more times than this register value.",
    +                    "offset": 0,
    +                    "size": 10
    +                  }
    +                }
    +              }
    +            },
    +            "SWFC_CONF0": {
    +              "description": "Software flow-control character configuration",
    +              "offset": 60,
    +              "size": 32,
    +              "reset_value": 9952,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "XOFF_THRESHOLD": {
    +                    "description": "When the data amount in Rx-FIFO is more than this register value with uart_sw_flow_con_en set to 1, it will send a Xoff char.",
    +                    "offset": 0,
    +                    "size": 9
    +                  },
    +                  "XOFF_CHAR": {
    +                    "description": "This register stores the Xoff flow control char.",
    +                    "offset": 9,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "SWFC_CONF1": {
    +              "description": "Software flow-control character configuration",
    +              "offset": 64,
    +              "size": 32,
    +              "reset_value": 8704,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "XON_THRESHOLD": {
    +                    "description": "When the data amount in Rx-FIFO is less than this register value with uart_sw_flow_con_en set to 1, it will send a Xon char.",
    +                    "offset": 0,
    +                    "size": 9
    +                  },
    +                  "XON_CHAR": {
    +                    "description": "This register stores the Xon flow control char.",
    +                    "offset": 9,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "TXBRK_CONF": {
    +              "description": "Tx Break character configuration",
    +              "offset": 68,
    +              "size": 32,
    +              "reset_value": 10,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_BRK_NUM": {
    +                    "description": "This register is used to configure the number of 0 to be sent after the process of sending data is done. It is active when txd_brk is set to 1.",
    +                    "offset": 0,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "IDLE_CONF": {
    +              "description": "Frame-end idle configuration",
    +              "offset": 72,
    +              "size": 32,
    +              "reset_value": 262400,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_IDLE_THRHD": {
    +                    "description": "It will produce frame end signal when receiver takes more time to receive one byte data than this register value.",
    +                    "offset": 0,
    +                    "size": 10
    +                  },
    +                  "TX_IDLE_NUM": {
    +                    "description": "This register is used to configure the duration time between transfers.",
    +                    "offset": 10,
    +                    "size": 10
    +                  }
    +                }
    +              }
    +            },
    +            "RS485_CONF": {
    +              "description": "RS485 mode configuration",
    +              "offset": 76,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RS485_EN": {
    +                    "description": "Set this bit to choose the rs485 mode.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "DL0_EN": {
    +                    "description": "Set this bit to delay the stop bit by 1 bit.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "DL1_EN": {
    +                    "description": "Set this bit to delay the stop bit by 1 bit.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "RS485TX_RX_EN": {
    +                    "description": "Set this bit to enable receiver could receive data when the transmitter is transmitting data in rs485 mode.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "RS485RXBY_TX_EN": {
    +                    "description": "1'h1: enable rs485 transmitter to send data when rs485 receiver line is busy.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "RS485_RX_DLY_NUM": {
    +                    "description": "This register is used to delay the receiver's internal data signal.",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "RS485_TX_DLY_NUM": {
    +                    "description": "This register is used to delay the transmitter's internal data signal.",
    +                    "offset": 6,
    +                    "size": 4
    +                  }
    +                }
    +              }
    +            },
    +            "AT_CMD_PRECNT": {
    +              "description": "Pre-sequence timing configuration",
    +              "offset": 80,
    +              "size": 32,
    +              "reset_value": 2305,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PRE_IDLE_NUM": {
    +                    "description": "This register is used to configure the idle duration time before the first at_cmd is received by receiver.",
    +                    "offset": 0,
    +                    "size": 16
    +                  }
    +                }
    +              }
    +            },
    +            "AT_CMD_POSTCNT": {
    +              "description": "Post-sequence timing configuration",
    +              "offset": 84,
    +              "size": 32,
    +              "reset_value": 2305,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "POST_IDLE_NUM": {
    +                    "description": "This register is used to configure the duration time between the last at_cmd and the next data.",
    +                    "offset": 0,
    +                    "size": 16
    +                  }
    +                }
    +              }
    +            },
    +            "AT_CMD_GAPTOUT": {
    +              "description": "Timeout configuration",
    +              "offset": 88,
    +              "size": 32,
    +              "reset_value": 11,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_GAP_TOUT": {
    +                    "description": "This register is used to configure the duration time between the at_cmd chars.",
    +                    "offset": 0,
    +                    "size": 16
    +                  }
    +                }
    +              }
    +            },
    +            "AT_CMD_CHAR": {
    +              "description": "AT escape sequence detection configuration",
    +              "offset": 92,
    +              "size": 32,
    +              "reset_value": 811,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "AT_CMD_CHAR": {
    +                    "description": "This register is used to configure the content of at_cmd char.",
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "CHAR_NUM": {
    +                    "description": "This register is used to configure the num of continuous at_cmd chars received by receiver.",
    +                    "offset": 8,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "MEM_CONF": {
    +              "description": "UART threshold and allocation configuration",
    +              "offset": 96,
    +              "size": 32,
    +              "reset_value": 655378,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_SIZE": {
    +                    "description": "This register is used to configure the amount of mem allocated for receive-FIFO. The default number is 128 bytes.",
    +                    "offset": 1,
    +                    "size": 3
    +                  },
    +                  "TX_SIZE": {
    +                    "description": "This register is used to configure the amount of mem allocated for transmit-FIFO. The default number is 128 bytes.",
    +                    "offset": 4,
    +                    "size": 3
    +                  },
    +                  "RX_FLOW_THRHD": {
    +                    "description": "This register is used to configure the maximum amount of data that can be received  when hardware flow control works.",
    +                    "offset": 7,
    +                    "size": 9
    +                  },
    +                  "RX_TOUT_THRHD": {
    +                    "description": "This register is used to configure the threshold time that receiver takes to receive one byte. The rxfifo_tout_int interrupt will be trigger when the receiver takes more time to receive one byte with rx_tout_en set to 1.",
    +                    "offset": 16,
    +                    "size": 10
    +                  },
    +                  "MEM_FORCE_PD": {
    +                    "description": "Set this bit to force power down UART memory.",
    +                    "offset": 26,
    +                    "size": 1
    +                  },
    +                  "MEM_FORCE_PU": {
    +                    "description": "Set this bit to force power up UART memory.",
    +                    "offset": 27,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "MEM_TX_STATUS": {
    +              "description": "Tx-FIFO write and read offset address.",
    +              "offset": 100,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "APB_TX_WADDR": {
    +                    "description": "This register stores the offset address in Tx-FIFO when software writes Tx-FIFO via APB.",
    +                    "offset": 0,
    +                    "size": 10,
    +                    "access": "read-only"
    +                  },
    +                  "TX_RADDR": {
    +                    "description": "This register stores the offset address in Tx-FIFO when Tx-FSM reads data via Tx-FIFO_Ctrl.",
    +                    "offset": 11,
    +                    "size": 10,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "MEM_RX_STATUS": {
    +              "description": "Rx-FIFO write and read offset address.",
    +              "offset": 104,
    +              "size": 32,
    +              "reset_value": 524544,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "APB_RX_RADDR": {
    +                    "description": "This register stores the offset address in RX-FIFO when software reads data from Rx-FIFO via APB. UART0 is 10'h100. UART1 is 10'h180.",
    +                    "offset": 0,
    +                    "size": 10,
    +                    "access": "read-only"
    +                  },
    +                  "RX_WADDR": {
    +                    "description": "This register stores the offset address in Rx-FIFO when Rx-FIFO_Ctrl writes Rx-FIFO. UART0 is 10'h100. UART1 is 10'h180.",
    +                    "offset": 11,
    +                    "size": 10,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "FSM_STATUS": {
    +              "description": "UART transmit and receive status.",
    +              "offset": 108,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ST_URX_OUT": {
    +                    "description": "This is the status register of receiver.",
    +                    "offset": 0,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  },
    +                  "ST_UTX_OUT": {
    +                    "description": "This is the status register of transmitter.",
    +                    "offset": 4,
    +                    "size": 4,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "POSPULSE": {
    +              "description": "Autobaud high pulse register",
    +              "offset": 112,
    +              "size": 32,
    +              "reset_value": 4095,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "POSEDGE_MIN_CNT": {
    +                    "description": "This register stores the minimal input clock count between two positive edges. It is used in boudrate-detect process.",
    +                    "offset": 0,
    +                    "size": 12,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "NEGPULSE": {
    +              "description": "Autobaud low pulse register",
    +              "offset": 116,
    +              "size": 32,
    +              "reset_value": 4095,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "NEGEDGE_MIN_CNT": {
    +                    "description": "This register stores the minimal input clock count between two negative edges. It is used in boudrate-detect process.",
    +                    "offset": 0,
    +                    "size": 12,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CLK_CONF": {
    +              "description": "UART core clock configuration",
    +              "offset": 120,
    +              "size": 32,
    +              "reset_value": 57675776,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SCLK_DIV_B": {
    +                    "description": "The  denominator of the frequency divider factor.",
    +                    "offset": 0,
    +                    "size": 6
    +                  },
    +                  "SCLK_DIV_A": {
    +                    "description": "The numerator of the frequency divider factor.",
    +                    "offset": 6,
    +                    "size": 6
    +                  },
    +                  "SCLK_DIV_NUM": {
    +                    "description": "The integral part of the frequency divider factor.",
    +                    "offset": 12,
    +                    "size": 8
    +                  },
    +                  "SCLK_SEL": {
    +                    "description": "UART clock source select. 1: 80Mhz, 2: 8Mhz, 3: XTAL.",
    +                    "offset": 20,
    +                    "size": 2
    +                  },
    +                  "SCLK_EN": {
    +                    "description": "Set this bit to enable UART Tx/Rx clock.",
    +                    "offset": 22,
    +                    "size": 1
    +                  },
    +                  "RST_CORE": {
    +                    "description": "Write 1 then write 0 to this bit, reset UART Tx/Rx.",
    +                    "offset": 23,
    +                    "size": 1
    +                  },
    +                  "TX_SCLK_EN": {
    +                    "description": "Set this bit to enable UART Tx clock.",
    +                    "offset": 24,
    +                    "size": 1
    +                  },
    +                  "RX_SCLK_EN": {
    +                    "description": "Set this bit to enable UART Rx clock.",
    +                    "offset": 25,
    +                    "size": 1
    +                  },
    +                  "TX_RST_CORE": {
    +                    "description": "Write 1 then write 0 to this bit, reset UART Tx.",
    +                    "offset": 26,
    +                    "size": 1
    +                  },
    +                  "RX_RST_CORE": {
    +                    "description": "Write 1 then write 0 to this bit, reset UART Rx.",
    +                    "offset": 27,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DATE": {
    +              "description": "UART Version register",
    +              "offset": 124,
    +              "size": 32,
    +              "reset_value": 33587824,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATE": {
    +                    "description": "This is the version register.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "ID": {
    +              "description": "UART ID register",
    +              "offset": 128,
    +              "size": 32,
    +              "reset_value": 1073743104,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ID": {
    +                    "description": "This register is used to configure the uart_id.",
    +                    "offset": 0,
    +                    "size": 30
    +                  },
    +                  "HIGH_SPEED": {
    +                    "description": "This bit used to select synchronize mode. 1: Registers are auto synchronized into UART Core clock and UART core should be keep the same with APB clock. 0: After configure registers, software needs to write 1 to UART_REG_UPDATE to synchronize registers.",
    +                    "offset": 30,
    +                    "size": 1
    +                  },
    +                  "REG_UPDATE": {
    +                    "description": "Software write 1 would synchronize registers into UART Core clock domain and would be cleared by hardware after synchronization is done.",
    +                    "offset": 31,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "USB_DEVICE": {
    +        "description": "Full-speed USB Serial/JTAG Controller",
    +        "children": {
    +          "registers": {
    +            "EP1": {
    +              "description": "USB_DEVICE_EP1_REG.",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RDWR_BYTE": {
    +                    "description": "Write and read byte data to/from UART Tx/Rx FIFO through this field. When USB_DEVICE_SERIAL_IN_EMPTY_INT is set, then user can write data (up to 64 bytes) into UART Tx FIFO. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is set, user can check USB_DEVICE_OUT_EP1_WR_ADDR USB_DEVICE_OUT_EP0_RD_ADDR to know how many data is received, then read data from UART Rx FIFO.",
    +                    "offset": 0,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "EP1_CONF": {
    +              "description": "USB_DEVICE_EP1_CONF_REG.",
    +              "offset": 4,
    +              "size": 32,
    +              "reset_value": 2,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "WR_DONE": {
    +                    "description": "Set this bit to indicate writing byte data to UART Tx FIFO is done.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SERIAL_IN_EP_DATA_FREE": {
    +                    "description": "1'b1: Indicate UART Tx FIFO is not full and can write data into in. After writing USB_DEVICE_WR_DONE, this bit would be 0 until data in UART Tx FIFO is read by USB Host.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SERIAL_OUT_EP_DATA_AVAIL": {
    +                    "description": "1'b1: Indicate there is data in UART Rx FIFO.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_RAW": {
    +              "description": "USB_DEVICE_INT_RAW_REG.",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 8,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "JTAG_IN_FLUSH_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when flush cmd is received for IN endpoint 2 of JTAG.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SOF_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when SOF frame is received.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SERIAL_OUT_RECV_PKT_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when Serial Port OUT Endpoint received one packet.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SERIAL_IN_EMPTY_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when Serial Port IN Endpoint is empty.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "PID_ERR_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when pid error is detected.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CRC5_ERR_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when CRC5 error is detected.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CRC16_ERR_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when CRC16 error is detected.",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "STUFF_ERR_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when stuff error is detected.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_TOKEN_REC_IN_EP1_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when IN token for IN endpoint 1 is received.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "USB_BUS_RESET_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when usb bus reset is detected.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_EP1_ZERO_PAYLOAD_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when OUT endpoint 1 received packet with zero palyload.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_EP2_ZERO_PAYLOAD_INT_RAW": {
    +                    "description": "The raw interrupt bit turns to high level when OUT endpoint 2 received packet with zero palyload.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ST": {
    +              "description": "USB_DEVICE_INT_ST_REG.",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "JTAG_IN_FLUSH_INT_ST": {
    +                    "description": "The raw interrupt status bit for the USB_DEVICE_JTAG_IN_FLUSH_INT interrupt.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SOF_INT_ST": {
    +                    "description": "The raw interrupt status bit for the USB_DEVICE_SOF_INT interrupt.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SERIAL_OUT_RECV_PKT_INT_ST": {
    +                    "description": "The raw interrupt status bit for the USB_DEVICE_SERIAL_OUT_RECV_PKT_INT interrupt.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SERIAL_IN_EMPTY_INT_ST": {
    +                    "description": "The raw interrupt status bit for the USB_DEVICE_SERIAL_IN_EMPTY_INT interrupt.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "PID_ERR_INT_ST": {
    +                    "description": "The raw interrupt status bit for the USB_DEVICE_PID_ERR_INT interrupt.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CRC5_ERR_INT_ST": {
    +                    "description": "The raw interrupt status bit for the USB_DEVICE_CRC5_ERR_INT interrupt.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "CRC16_ERR_INT_ST": {
    +                    "description": "The raw interrupt status bit for the USB_DEVICE_CRC16_ERR_INT interrupt.",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "STUFF_ERR_INT_ST": {
    +                    "description": "The raw interrupt status bit for the USB_DEVICE_STUFF_ERR_INT interrupt.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_TOKEN_REC_IN_EP1_INT_ST": {
    +                    "description": "The raw interrupt status bit for the USB_DEVICE_IN_TOKEN_REC_IN_EP1_INT interrupt.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "USB_BUS_RESET_INT_ST": {
    +                    "description": "The raw interrupt status bit for the USB_DEVICE_USB_BUS_RESET_INT interrupt.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_EP1_ZERO_PAYLOAD_INT_ST": {
    +                    "description": "The raw interrupt status bit for the USB_DEVICE_OUT_EP1_ZERO_PAYLOAD_INT interrupt.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_EP2_ZERO_PAYLOAD_INT_ST": {
    +                    "description": "The raw interrupt status bit for the USB_DEVICE_OUT_EP2_ZERO_PAYLOAD_INT interrupt.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ENA": {
    +              "description": "USB_DEVICE_INT_ENA_REG.",
    +              "offset": 16,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "JTAG_IN_FLUSH_INT_ENA": {
    +                    "description": "The interrupt enable bit for the USB_DEVICE_JTAG_IN_FLUSH_INT interrupt.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "SOF_INT_ENA": {
    +                    "description": "The interrupt enable bit for the USB_DEVICE_SOF_INT interrupt.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "SERIAL_OUT_RECV_PKT_INT_ENA": {
    +                    "description": "The interrupt enable bit for the USB_DEVICE_SERIAL_OUT_RECV_PKT_INT interrupt.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "SERIAL_IN_EMPTY_INT_ENA": {
    +                    "description": "The interrupt enable bit for the USB_DEVICE_SERIAL_IN_EMPTY_INT interrupt.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "PID_ERR_INT_ENA": {
    +                    "description": "The interrupt enable bit for the USB_DEVICE_PID_ERR_INT interrupt.",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "CRC5_ERR_INT_ENA": {
    +                    "description": "The interrupt enable bit for the USB_DEVICE_CRC5_ERR_INT interrupt.",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "CRC16_ERR_INT_ENA": {
    +                    "description": "The interrupt enable bit for the USB_DEVICE_CRC16_ERR_INT interrupt.",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "STUFF_ERR_INT_ENA": {
    +                    "description": "The interrupt enable bit for the USB_DEVICE_STUFF_ERR_INT interrupt.",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "IN_TOKEN_REC_IN_EP1_INT_ENA": {
    +                    "description": "The interrupt enable bit for the USB_DEVICE_IN_TOKEN_REC_IN_EP1_INT interrupt.",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "USB_BUS_RESET_INT_ENA": {
    +                    "description": "The interrupt enable bit for the USB_DEVICE_USB_BUS_RESET_INT interrupt.",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "OUT_EP1_ZERO_PAYLOAD_INT_ENA": {
    +                    "description": "The interrupt enable bit for the USB_DEVICE_OUT_EP1_ZERO_PAYLOAD_INT interrupt.",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "OUT_EP2_ZERO_PAYLOAD_INT_ENA": {
    +                    "description": "The interrupt enable bit for the USB_DEVICE_OUT_EP2_ZERO_PAYLOAD_INT interrupt.",
    +                    "offset": 11,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INT_CLR": {
    +              "description": "USB_DEVICE_INT_CLR_REG.",
    +              "offset": 20,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "JTAG_IN_FLUSH_INT_CLR": {
    +                    "description": "Set this bit to clear the USB_DEVICE_JTAG_IN_FLUSH_INT interrupt.",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SOF_INT_CLR": {
    +                    "description": "Set this bit to clear the USB_DEVICE_JTAG_SOF_INT interrupt.",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SERIAL_OUT_RECV_PKT_INT_CLR": {
    +                    "description": "Set this bit to clear the USB_DEVICE_SERIAL_OUT_RECV_PKT_INT interrupt.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SERIAL_IN_EMPTY_INT_CLR": {
    +                    "description": "Set this bit to clear the USB_DEVICE_SERIAL_IN_EMPTY_INT interrupt.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "PID_ERR_INT_CLR": {
    +                    "description": "Set this bit to clear the USB_DEVICE_PID_ERR_INT interrupt.",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "CRC5_ERR_INT_CLR": {
    +                    "description": "Set this bit to clear the USB_DEVICE_CRC5_ERR_INT interrupt.",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "CRC16_ERR_INT_CLR": {
    +                    "description": "Set this bit to clear the USB_DEVICE_CRC16_ERR_INT interrupt.",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "STUFF_ERR_INT_CLR": {
    +                    "description": "Set this bit to clear the USB_DEVICE_STUFF_ERR_INT interrupt.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "IN_TOKEN_REC_IN_EP1_INT_CLR": {
    +                    "description": "Set this bit to clear the USB_DEVICE_IN_TOKEN_IN_EP1_INT interrupt.",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "USB_BUS_RESET_INT_CLR": {
    +                    "description": "Set this bit to clear the USB_DEVICE_USB_BUS_RESET_INT interrupt.",
    +                    "offset": 9,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OUT_EP1_ZERO_PAYLOAD_INT_CLR": {
    +                    "description": "Set this bit to clear the USB_DEVICE_OUT_EP1_ZERO_PAYLOAD_INT interrupt.",
    +                    "offset": 10,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OUT_EP2_ZERO_PAYLOAD_INT_CLR": {
    +                    "description": "Set this bit to clear the USB_DEVICE_OUT_EP2_ZERO_PAYLOAD_INT interrupt.",
    +                    "offset": 11,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CONF0": {
    +              "description": "USB_DEVICE_CONF0_REG.",
    +              "offset": 24,
    +              "size": 32,
    +              "reset_value": 16896,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PHY_SEL": {
    +                    "description": "Select internal/external PHY",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "EXCHG_PINS_OVERRIDE": {
    +                    "description": "Enable software control USB D+ D- exchange",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "EXCHG_PINS": {
    +                    "description": "USB D+ D- exchange",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "VREFH": {
    +                    "description": "Control single-end input high threshold,1.76V to 2V, step 80mV",
    +                    "offset": 3,
    +                    "size": 2
    +                  },
    +                  "VREFL": {
    +                    "description": "Control single-end input low threshold,0.8V to 1.04V, step 80mV",
    +                    "offset": 5,
    +                    "size": 2
    +                  },
    +                  "VREF_OVERRIDE": {
    +                    "description": "Enable software control input  threshold",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "PAD_PULL_OVERRIDE": {
    +                    "description": "Enable software control USB D+ D- pullup pulldown",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "DP_PULLUP": {
    +                    "description": "Control USB D+ pull up.",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "DP_PULLDOWN": {
    +                    "description": "Control USB D+ pull down.",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "DM_PULLUP": {
    +                    "description": "Control USB D- pull up.",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "DM_PULLDOWN": {
    +                    "description": "Control USB D- pull down.",
    +                    "offset": 12,
    +                    "size": 1
    +                  },
    +                  "PULLUP_VALUE": {
    +                    "description": "Control pull up value.",
    +                    "offset": 13,
    +                    "size": 1
    +                  },
    +                  "USB_PAD_ENABLE": {
    +                    "description": "Enable USB pad function.",
    +                    "offset": 14,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "TEST": {
    +              "description": "USB_DEVICE_TEST_REG.",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ENABLE": {
    +                    "description": "Enable test of the USB pad",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "USB_OE": {
    +                    "description": "USB pad oen in test",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "TX_DP": {
    +                    "description": "USB D+ tx value in test",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "TX_DM": {
    +                    "description": "USB D- tx value in test",
    +                    "offset": 3,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "JFIFO_ST": {
    +              "description": "USB_DEVICE_JFIFO_ST_REG.",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 68,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_FIFO_CNT": {
    +                    "description": "JTAT in fifo counter.",
    +                    "offset": 0,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "IN_FIFO_EMPTY": {
    +                    "description": "1: JTAG in fifo is empty.",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_FIFO_FULL": {
    +                    "description": "1: JTAG in fifo is full.",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_FIFO_CNT": {
    +                    "description": "JTAT out fifo counter.",
    +                    "offset": 4,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_FIFO_EMPTY": {
    +                    "description": "1: JTAG out fifo is empty.",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_FIFO_FULL": {
    +                    "description": "1: JTAG out fifo is full.",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "IN_FIFO_RESET": {
    +                    "description": "Write 1 to reset JTAG in fifo.",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "OUT_FIFO_RESET": {
    +                    "description": "Write 1 to reset JTAG out fifo.",
    +                    "offset": 9,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "FRAM_NUM": {
    +              "description": "USB_DEVICE_FRAM_NUM_REG.",
    +              "offset": 36,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SOF_FRAME_INDEX": {
    +                    "description": "Frame index of received SOF frame.",
    +                    "offset": 0,
    +                    "size": 11,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_EP0_ST": {
    +              "description": "USB_DEVICE_IN_EP0_ST_REG.",
    +              "offset": 40,
    +              "size": 32,
    +              "reset_value": 1,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_EP0_STATE": {
    +                    "description": "State of IN Endpoint 0.",
    +                    "offset": 0,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "IN_EP0_WR_ADDR": {
    +                    "description": "Write data address of IN endpoint 0.",
    +                    "offset": 2,
    +                    "size": 7,
    +                    "access": "read-only"
    +                  },
    +                  "IN_EP0_RD_ADDR": {
    +                    "description": "Read data address of IN endpoint 0.",
    +                    "offset": 9,
    +                    "size": 7,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_EP1_ST": {
    +              "description": "USB_DEVICE_IN_EP1_ST_REG.",
    +              "offset": 44,
    +              "size": 32,
    +              "reset_value": 1,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_EP1_STATE": {
    +                    "description": "State of IN Endpoint 1.",
    +                    "offset": 0,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "IN_EP1_WR_ADDR": {
    +                    "description": "Write data address of IN endpoint 1.",
    +                    "offset": 2,
    +                    "size": 7,
    +                    "access": "read-only"
    +                  },
    +                  "IN_EP1_RD_ADDR": {
    +                    "description": "Read data address of IN endpoint 1.",
    +                    "offset": 9,
    +                    "size": 7,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_EP2_ST": {
    +              "description": "USB_DEVICE_IN_EP2_ST_REG.",
    +              "offset": 48,
    +              "size": 32,
    +              "reset_value": 1,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_EP2_STATE": {
    +                    "description": "State of IN Endpoint 2.",
    +                    "offset": 0,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "IN_EP2_WR_ADDR": {
    +                    "description": "Write data address of IN endpoint 2.",
    +                    "offset": 2,
    +                    "size": 7,
    +                    "access": "read-only"
    +                  },
    +                  "IN_EP2_RD_ADDR": {
    +                    "description": "Read data address of IN endpoint 2.",
    +                    "offset": 9,
    +                    "size": 7,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "IN_EP3_ST": {
    +              "description": "USB_DEVICE_IN_EP3_ST_REG.",
    +              "offset": 52,
    +              "size": 32,
    +              "reset_value": 1,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "IN_EP3_STATE": {
    +                    "description": "State of IN Endpoint 3.",
    +                    "offset": 0,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "IN_EP3_WR_ADDR": {
    +                    "description": "Write data address of IN endpoint 3.",
    +                    "offset": 2,
    +                    "size": 7,
    +                    "access": "read-only"
    +                  },
    +                  "IN_EP3_RD_ADDR": {
    +                    "description": "Read data address of IN endpoint 3.",
    +                    "offset": 9,
    +                    "size": 7,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_EP0_ST": {
    +              "description": "USB_DEVICE_OUT_EP0_ST_REG.",
    +              "offset": 56,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUT_EP0_STATE": {
    +                    "description": "State of OUT Endpoint 0.",
    +                    "offset": 0,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_EP0_WR_ADDR": {
    +                    "description": "Write data address of OUT endpoint 0. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is detected, there are USB_DEVICE_OUT_EP0_WR_ADDR-2 bytes data in OUT EP0.",
    +                    "offset": 2,
    +                    "size": 7,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_EP0_RD_ADDR": {
    +                    "description": "Read data address of OUT endpoint 0.",
    +                    "offset": 9,
    +                    "size": 7,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_EP1_ST": {
    +              "description": "USB_DEVICE_OUT_EP1_ST_REG.",
    +              "offset": 60,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUT_EP1_STATE": {
    +                    "description": "State of OUT Endpoint 1.",
    +                    "offset": 0,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_EP1_WR_ADDR": {
    +                    "description": "Write data address of OUT endpoint 1. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is detected, there are USB_DEVICE_OUT_EP1_WR_ADDR-2 bytes data in OUT EP1.",
    +                    "offset": 2,
    +                    "size": 7,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_EP1_RD_ADDR": {
    +                    "description": "Read data address of OUT endpoint 1.",
    +                    "offset": 9,
    +                    "size": 7,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_EP1_REC_DATA_CNT": {
    +                    "description": "Data count in OUT endpoint 1 when one packet is received.",
    +                    "offset": 16,
    +                    "size": 7,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "OUT_EP2_ST": {
    +              "description": "USB_DEVICE_OUT_EP2_ST_REG.",
    +              "offset": 64,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "OUT_EP2_STATE": {
    +                    "description": "State of OUT Endpoint 2.",
    +                    "offset": 0,
    +                    "size": 2,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_EP2_WR_ADDR": {
    +                    "description": "Write data address of OUT endpoint 2. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is detected, there are USB_DEVICE_OUT_EP2_WR_ADDR-2 bytes data in OUT EP2.",
    +                    "offset": 2,
    +                    "size": 7,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_EP2_RD_ADDR": {
    +                    "description": "Read data address of OUT endpoint 2.",
    +                    "offset": 9,
    +                    "size": 7,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "MISC_CONF": {
    +              "description": "USB_DEVICE_MISC_CONF_REG.",
    +              "offset": 68,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CLK_EN": {
    +                    "description": "1'h1: Force clock on for register. 1'h0: Support clock only when application writes registers.",
    +                    "offset": 0,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "MEM_CONF": {
    +              "description": "USB_DEVICE_MEM_CONF_REG.",
    +              "offset": 72,
    +              "size": 32,
    +              "reset_value": 2,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "USB_MEM_PD": {
    +                    "description": "1: power down usb memory.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "USB_MEM_CLK_EN": {
    +                    "description": "1: Force clock on for usb memory.",
    +                    "offset": 1,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "DATE": {
    +              "description": "USB_DEVICE_DATE_REG.",
    +              "offset": 128,
    +              "size": 32,
    +              "reset_value": 33583872,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATE": {
    +                    "description": "register version.",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      },
    +      "UHCI0": {
    +        "description": "Universal Host Controller Interface",
    +        "children": {
    +          "registers": {
    +            "CONF0": {
    +              "description": "a",
    +              "offset": 0,
    +              "size": 32,
    +              "reset_value": 1760,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_RST": {
    +                    "description": "Write 1, then write 0 to this bit to reset decode state machine.",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "RX_RST": {
    +                    "description": "Write 1, then write 0 to this bit to reset encode state machine.",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "UART0_CE": {
    +                    "description": "Set this bit to link up HCI and UART0.",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "UART1_CE": {
    +                    "description": "Set this bit to link up HCI and UART1.",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "SEPER_EN": {
    +                    "description": "Set this bit to separate the data frame using a special char.",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "HEAD_EN": {
    +                    "description": "Set this bit to encode the data packet with a formatting header.",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "CRC_REC_EN": {
    +                    "description": "Set this bit to enable UHCI to receive the 16 bit CRC.",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "UART_IDLE_EOF_EN": {
    +                    "description": "If this bit is set to 1, UHCI will end the payload receiving process when UART has been in idle state.",
    +                    "offset": 8,
    +                    "size": 1
    +                  },
    +                  "LEN_EOF_EN": {
    +                    "description": "If this bit is set to 1, UHCI decoder receiving payload data is end when the receiving byte count has reached the specified value. The value is payload length indicated by UHCI packet header when UHCI_HEAD_EN is 1 or the value is configuration value when UHCI_HEAD_EN is 0. If this bit is set to 0, UHCI decoder receiving payload data is end when 0xc0 is received.",
    +                    "offset": 9,
    +                    "size": 1
    +                  },
    +                  "ENCODE_CRC_EN": {
    +                    "description": "Set this bit to enable data integrity checking by appending a 16 bit CCITT-CRC to end of the payload.",
    +                    "offset": 10,
    +                    "size": 1
    +                  },
    +                  "CLK_EN": {
    +                    "description": "1'b1: Force clock on for register. 1'b0: Support clock only when application writes registers.",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "UART_RX_BRK_EOF_EN": {
    +                    "description": "If this bit is set to 1, UHCI will end payload receive process when NULL frame is received by UART.",
    +                    "offset": 12,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INT_RAW": {
    +              "description": "a",
    +              "offset": 4,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_START_INT_RAW": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TX_START_INT_RAW": {
    +                    "description": "a",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RX_HUNG_INT_RAW": {
    +                    "description": "a",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TX_HUNG_INT_RAW": {
    +                    "description": "a",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SEND_S_REG_Q_INT_RAW": {
    +                    "description": "a",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SEND_A_REG_Q_INT_RAW": {
    +                    "description": "a",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUT_EOF_INT_RAW": {
    +                    "description": "This is the interrupt raw bit. Triggered when there are some errors in EOF in the",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "APP_CTRL0_INT_RAW": {
    +                    "description": "Soft control int raw bit.",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "APP_CTRL1_INT_RAW": {
    +                    "description": "Soft control int raw bit.",
    +                    "offset": 8,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ST": {
    +              "description": "a",
    +              "offset": 8,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_START_INT_ST": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TX_START_INT_ST": {
    +                    "description": "a",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "RX_HUNG_INT_ST": {
    +                    "description": "a",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "TX_HUNG_INT_ST": {
    +                    "description": "a",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SEND_S_REG_Q_INT_ST": {
    +                    "description": "a",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "SEND_A_REG_Q_INT_ST": {
    +                    "description": "a",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "OUTLINK_EOF_ERR_INT_ST": {
    +                    "description": "a",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "APP_CTRL0_INT_ST": {
    +                    "description": "a",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  },
    +                  "APP_CTRL1_INT_ST": {
    +                    "description": "a",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "INT_ENA": {
    +              "description": "a",
    +              "offset": 12,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_START_INT_ENA": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "TX_START_INT_ENA": {
    +                    "description": "a",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "RX_HUNG_INT_ENA": {
    +                    "description": "a",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "TX_HUNG_INT_ENA": {
    +                    "description": "a",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "SEND_S_REG_Q_INT_ENA": {
    +                    "description": "a",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "SEND_A_REG_Q_INT_ENA": {
    +                    "description": "a",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "OUTLINK_EOF_ERR_INT_ENA": {
    +                    "description": "a",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "APP_CTRL0_INT_ENA": {
    +                    "description": "a",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "APP_CTRL1_INT_ENA": {
    +                    "description": "a",
    +                    "offset": 8,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "INT_CLR": {
    +              "description": "a",
    +              "offset": 16,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_START_INT_CLR": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "TX_START_INT_CLR": {
    +                    "description": "a",
    +                    "offset": 1,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "RX_HUNG_INT_CLR": {
    +                    "description": "a",
    +                    "offset": 2,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "TX_HUNG_INT_CLR": {
    +                    "description": "a",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SEND_S_REG_Q_INT_CLR": {
    +                    "description": "a",
    +                    "offset": 4,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "SEND_A_REG_Q_INT_CLR": {
    +                    "description": "a",
    +                    "offset": 5,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "OUTLINK_EOF_ERR_INT_CLR": {
    +                    "description": "a",
    +                    "offset": 6,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "APP_CTRL0_INT_CLR": {
    +                    "description": "a",
    +                    "offset": 7,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  },
    +                  "APP_CTRL1_INT_CLR": {
    +                    "description": "a",
    +                    "offset": 8,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "CONF1": {
    +              "description": "a",
    +              "offset": 20,
    +              "size": 32,
    +              "reset_value": 51,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "CHECK_SUM_EN": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "CHECK_SEQ_EN": {
    +                    "description": "a",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "CRC_DISABLE": {
    +                    "description": "a",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "SAVE_HEAD": {
    +                    "description": "a",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "TX_CHECK_SUM_RE": {
    +                    "description": "a",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "TX_ACK_NUM_RE": {
    +                    "description": "a",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "WAIT_SW_START": {
    +                    "description": "a",
    +                    "offset": 7,
    +                    "size": 1
    +                  },
    +                  "SW_START": {
    +                    "description": "a",
    +                    "offset": 8,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "STATE0": {
    +              "description": "a",
    +              "offset": 24,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_ERR_CAUSE": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  },
    +                  "DECODE_STATE": {
    +                    "description": "a",
    +                    "offset": 3,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "STATE1": {
    +              "description": "a",
    +              "offset": 28,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ENCODE_STATE": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 3,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "ESCAPE_CONF": {
    +              "description": "a",
    +              "offset": 32,
    +              "size": 32,
    +              "reset_value": 51,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TX_C0_ESC_EN": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 1
    +                  },
    +                  "TX_DB_ESC_EN": {
    +                    "description": "a",
    +                    "offset": 1,
    +                    "size": 1
    +                  },
    +                  "TX_11_ESC_EN": {
    +                    "description": "a",
    +                    "offset": 2,
    +                    "size": 1
    +                  },
    +                  "TX_13_ESC_EN": {
    +                    "description": "a",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "RX_C0_ESC_EN": {
    +                    "description": "a",
    +                    "offset": 4,
    +                    "size": 1
    +                  },
    +                  "RX_DB_ESC_EN": {
    +                    "description": "a",
    +                    "offset": 5,
    +                    "size": 1
    +                  },
    +                  "RX_11_ESC_EN": {
    +                    "description": "a",
    +                    "offset": 6,
    +                    "size": 1
    +                  },
    +                  "RX_13_ESC_EN": {
    +                    "description": "a",
    +                    "offset": 7,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "HUNG_CONF": {
    +              "description": "a",
    +              "offset": 36,
    +              "size": 32,
    +              "reset_value": 8456208,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "TXFIFO_TIMEOUT": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "TXFIFO_TIMEOUT_SHIFT": {
    +                    "description": "a",
    +                    "offset": 8,
    +                    "size": 3
    +                  },
    +                  "TXFIFO_TIMEOUT_ENA": {
    +                    "description": "a",
    +                    "offset": 11,
    +                    "size": 1
    +                  },
    +                  "RXFIFO_TIMEOUT": {
    +                    "description": "a",
    +                    "offset": 12,
    +                    "size": 8
    +                  },
    +                  "RXFIFO_TIMEOUT_SHIFT": {
    +                    "description": "a",
    +                    "offset": 20,
    +                    "size": 3
    +                  },
    +                  "RXFIFO_TIMEOUT_ENA": {
    +                    "description": "a",
    +                    "offset": 23,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "ACK_NUM": {
    +              "description": "a",
    +              "offset": 40,
    +              "size": 32,
    +              "reset_value": 8,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ACK_NUM": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 3
    +                  },
    +                  "LOAD": {
    +                    "description": "a",
    +                    "offset": 3,
    +                    "size": 1,
    +                    "access": "write-only"
    +                  }
    +                }
    +              }
    +            },
    +            "RX_HEAD": {
    +              "description": "a",
    +              "offset": 44,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "RX_HEAD": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 32,
    +                    "access": "read-only"
    +                  }
    +                }
    +              }
    +            },
    +            "QUICK_SENT": {
    +              "description": "a",
    +              "offset": 48,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SINGLE_SEND_NUM": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 3
    +                  },
    +                  "SINGLE_SEND_EN": {
    +                    "description": "a",
    +                    "offset": 3,
    +                    "size": 1
    +                  },
    +                  "ALWAYS_SEND_NUM": {
    +                    "description": "a",
    +                    "offset": 4,
    +                    "size": 3
    +                  },
    +                  "ALWAYS_SEND_EN": {
    +                    "description": "a",
    +                    "offset": 7,
    +                    "size": 1
    +                  }
    +                }
    +              }
    +            },
    +            "REG_Q0_WORD0": {
    +              "description": "a",
    +              "offset": 52,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SEND_Q0_WORD0": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "REG_Q0_WORD1": {
    +              "description": "a",
    +              "offset": 56,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SEND_Q0_WORD1": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "REG_Q1_WORD0": {
    +              "description": "a",
    +              "offset": 60,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SEND_Q1_WORD0": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "REG_Q1_WORD1": {
    +              "description": "a",
    +              "offset": 64,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SEND_Q1_WORD1": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "REG_Q2_WORD0": {
    +              "description": "a",
    +              "offset": 68,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SEND_Q2_WORD0": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "REG_Q2_WORD1": {
    +              "description": "a",
    +              "offset": 72,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SEND_Q2_WORD1": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "REG_Q3_WORD0": {
    +              "description": "a",
    +              "offset": 76,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SEND_Q3_WORD0": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "REG_Q3_WORD1": {
    +              "description": "a",
    +              "offset": 80,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SEND_Q3_WORD1": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "REG_Q4_WORD0": {
    +              "description": "a",
    +              "offset": 84,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SEND_Q4_WORD0": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "REG_Q4_WORD1": {
    +              "description": "a",
    +              "offset": 88,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SEND_Q4_WORD1": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "REG_Q5_WORD0": {
    +              "description": "a",
    +              "offset": 92,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SEND_Q5_WORD0": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "REG_Q5_WORD1": {
    +              "description": "a",
    +              "offset": 96,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SEND_Q5_WORD1": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "REG_Q6_WORD0": {
    +              "description": "a",
    +              "offset": 100,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SEND_Q6_WORD0": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "REG_Q6_WORD1": {
    +              "description": "a",
    +              "offset": 104,
    +              "size": 32,
    +              "reset_value": 0,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SEND_Q6_WORD1": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            },
    +            "ESC_CONF0": {
    +              "description": "a",
    +              "offset": 108,
    +              "size": 32,
    +              "reset_value": 14474176,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "SEPER_CHAR": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "SEPER_ESC_CHAR0": {
    +                    "description": "a",
    +                    "offset": 8,
    +                    "size": 8
    +                  },
    +                  "SEPER_ESC_CHAR1": {
    +                    "description": "a",
    +                    "offset": 16,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "ESC_CONF1": {
    +              "description": "a",
    +              "offset": 112,
    +              "size": 32,
    +              "reset_value": 14539739,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ESC_SEQ0": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "ESC_SEQ0_CHAR0": {
    +                    "description": "a",
    +                    "offset": 8,
    +                    "size": 8
    +                  },
    +                  "ESC_SEQ0_CHAR1": {
    +                    "description": "a",
    +                    "offset": 16,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "ESC_CONF2": {
    +              "description": "a",
    +              "offset": 116,
    +              "size": 32,
    +              "reset_value": 14605073,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ESC_SEQ1": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "ESC_SEQ1_CHAR0": {
    +                    "description": "a",
    +                    "offset": 8,
    +                    "size": 8
    +                  },
    +                  "ESC_SEQ1_CHAR1": {
    +                    "description": "a",
    +                    "offset": 16,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "ESC_CONF3": {
    +              "description": "a",
    +              "offset": 120,
    +              "size": 32,
    +              "reset_value": 14670611,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "ESC_SEQ2": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 8
    +                  },
    +                  "ESC_SEQ2_CHAR0": {
    +                    "description": "a",
    +                    "offset": 8,
    +                    "size": 8
    +                  },
    +                  "ESC_SEQ2_CHAR1": {
    +                    "description": "a",
    +                    "offset": 16,
    +                    "size": 8
    +                  }
    +                }
    +              }
    +            },
    +            "PKT_THRES": {
    +              "description": "a",
    +              "offset": 124,
    +              "size": 32,
    +              "reset_value": 128,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "PKT_THRS": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 13
    +                  }
    +                }
    +              }
    +            },
    +            "DATE": {
    +              "description": "a",
    +              "offset": 128,
    +              "size": 32,
    +              "reset_value": 33583472,
    +              "reset_mask": 4294967295,
    +              "children": {
    +                "fields": {
    +                  "DATE": {
    +                    "description": "a",
    +                    "offset": 0,
    +                    "size": 32
    +                  }
    +                }
    +              }
    +            }
    +          }
    +        }
    +      }
    +    }
    +  },
    +  "devices": {
    +    "ESP32-C3": {
    +      "arch": "unknown",
    +      "description": "32-bit RISC-V MCU & 2.4 GHz Wi-Fi & Bluetooth 5 (LE)",
    +      "properties": {
    +        "cpu.mpuPresent": "false",
    +        "cpu.nvicPrioBits": "4",
    +        "cpu.vendorSystickConfig": "false",
    +        "cpu.revision": "r0p0",
    +        "cpu.endian": "little",
    +        "license": "\n    Copyright 2022 Espressif Systems (Shanghai) PTE LTD\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n        http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n",
    +        "cpu.name": "RV32IMC",
    +        "cpu.fpuPresent": "false"
    +      },
    +      "children": {
    +        "interrupts": {
    +          "AES": {
    +            "index": 48
    +          },
    +          "APB_ADC": {
    +            "index": 43
    +          },
    +          "ASSIST_DEBUG": {
    +            "index": 54
    +          },
    +          "DMA_CH0": {
    +            "index": 44
    +          },
    +          "DMA_CH1": {
    +            "index": 45
    +          },
    +          "DMA_CH2": {
    +            "index": 46
    +          },
    +          "EFUSE": {
    +            "index": 24
    +          },
    +          "GPIO": {
    +            "index": 16
    +          },
    +          "GPIO_NMI": {
    +            "index": 17
    +          },
    +          "I2C_EXT0": {
    +            "index": 29
    +          },
    +          "I2S": {
    +            "index": 20
    +          },
    +          "LEDC": {
    +            "index": 23
    +          },
    +          "RMT": {
    +            "index": 28
    +          },
    +          "RSA": {
    +            "index": 47
    +          },
    +          "RTC_CORE": {
    +            "index": 27
    +          },
    +          "SHA": {
    +            "index": 49
    +          },
    +          "SPI2": {
    +            "index": 19
    +          },
    +          "SYSTIMER_TARGET0": {
    +            "index": 37
    +          },
    +          "SYSTIMER_TARGET1": {
    +            "index": 38
    +          },
    +          "SYSTIMER_TARGET2": {
    +            "index": 39
    +          },
    +          "TG0_T0_LEVEL": {
    +            "index": 32
    +          },
    +          "TG0_WDT_LEVEL": {
    +            "index": 33
    +          },
    +          "TG1_T0_LEVEL": {
    +            "index": 34
    +          },
    +          "TG1_WDT_LEVEL": {
    +            "index": 35
    +          },
    +          "TWAI": {
    +            "index": 25
    +          },
    +          "UART0": {
    +            "index": 21
    +          },
    +          "UART1": {
    +            "index": 22
    +          },
    +          "UHCI0": {
    +            "index": 15
    +          },
    +          "USB_SERIAL_JTAG": {
    +            "index": 26
    +          }
    +        },
    +        "peripheral_instances": {
    +          "AES": {
    +            "description": "AES (Advanced Encryption Standard) Accelerator",
    +            "offset": 1610850304,
    +            "type": "types.peripherals.AES"
    +          },
    +          "APB_CTRL": {
    +            "description": "Advanced Peripheral Bus Controller",
    +            "offset": 1610768384,
    +            "type": "types.peripherals.APB_CTRL"
    +          },
    +          "APB_SARADC": {
    +            "description": "Successive Approximation Register Analog to Digital Converter",
    +            "offset": 1610874880,
    +            "type": "types.peripherals.APB_SARADC"
    +          },
    +          "ASSIST_DEBUG": {
    +            "description": "Debug Assist",
    +            "offset": 1611456512,
    +            "type": "types.peripherals.ASSIST_DEBUG"
    +          },
    +          "DMA": {
    +            "description": "DMA (Direct Memory Access) Controller",
    +            "offset": 1610870784,
    +            "type": "types.peripherals.DMA"
    +          },
    +          "DS": {
    +            "description": "Digital Signature",
    +            "offset": 1610862592,
    +            "type": "types.peripherals.DS"
    +          },
    +          "EFUSE": {
    +            "description": "eFuse Controller",
    +            "offset": 1610647552,
    +            "type": "types.peripherals.EFUSE"
    +          },
    +          "EXTMEM": {
    +            "description": "External Memory",
    +            "offset": 1611415552,
    +            "type": "types.peripherals.EXTMEM"
    +          },
    +          "GPIO": {
    +            "description": "General Purpose Input/Output",
    +            "offset": 1610629120,
    +            "type": "types.peripherals.GPIO"
    +          },
    +          "GPIOSD": {
    +            "description": "Sigma-Delta Modulation",
    +            "offset": 1610632960,
    +            "type": "types.peripherals.GPIOSD"
    +          },
    +          "HMAC": {
    +            "description": "HMAC (Hash-based Message Authentication Code) Accelerator",
    +            "offset": 1610866688,
    +            "type": "types.peripherals.HMAC"
    +          },
    +          "I2C0": {
    +            "description": "I2C (Inter-Integrated Circuit) Controller",
    +            "offset": 1610690560,
    +            "type": "types.peripherals.I2C0"
    +          },
    +          "I2S": {
    +            "description": "I2S (Inter-IC Sound) Controller",
    +            "offset": 1610797056,
    +            "type": "types.peripherals.I2S"
    +          },
    +          "INTERRUPT_CORE0": {
    +            "description": "Interrupt Core",
    +            "offset": 1611407360,
    +            "type": "types.peripherals.INTERRUPT_CORE0"
    +          },
    +          "IO_MUX": {
    +            "description": "Input/Output Multiplexer",
    +            "offset": 1610649600,
    +            "type": "types.peripherals.IO_MUX"
    +          },
    +          "LEDC": {
    +            "description": "LED Control PWM (Pulse Width Modulation)",
    +            "offset": 1610715136,
    +            "type": "types.peripherals.LEDC"
    +          },
    +          "RMT": {
    +            "description": "Remote Control Peripheral",
    +            "offset": 1610702848,
    +            "type": "types.peripherals.RMT"
    +          },
    +          "RNG": {
    +            "description": "Hardware random number generator",
    +            "offset": 1610768384,
    +            "type": "types.peripherals.RNG"
    +          },
    +          "RSA": {
    +            "description": "RSA (Rivest Shamir Adleman) Accelerator",
    +            "offset": 1610858496,
    +            "type": "types.peripherals.RSA"
    +          },
    +          "RTC_CNTL": {
    +            "description": "Real-Time Clock Control",
    +            "offset": 1610645504,
    +            "type": "types.peripherals.RTC_CNTL"
    +          },
    +          "SENSITIVE": {
    +            "description": "Sensitive",
    +            "offset": 1611403264,
    +            "type": "types.peripherals.SENSITIVE"
    +          },
    +          "SHA": {
    +            "description": "SHA (Secure Hash Algorithm) Accelerator",
    +            "offset": 1610854400,
    +            "type": "types.peripherals.SHA"
    +          },
    +          "SPI0": {
    +            "description": "SPI (Serial Peripheral Interface) Controller",
    +            "offset": 1610625024,
    +            "type": "types.peripherals.SPI0"
    +          },
    +          "SPI1": {
    +            "description": "SPI (Serial Peripheral Interface) Controller",
    +            "offset": 1610620928,
    +            "type": "types.peripherals.SPI1"
    +          },
    +          "SPI2": {
    +            "description": "SPI (Serial Peripheral Interface) Controller",
    +            "offset": 1610760192,
    +            "type": "types.peripherals.SPI2"
    +          },
    +          "SYSTEM": {
    +            "description": "System",
    +            "offset": 1611399168,
    +            "type": "types.peripherals.SYSTEM"
    +          },
    +          "SYSTIMER": {
    +            "description": "System Timer",
    +            "offset": 1610756096,
    +            "type": "types.peripherals.SYSTIMER"
    +          },
    +          "TIMG0": {
    +            "description": "Timer Group",
    +            "offset": 1610739712,
    +            "type": "types.peripherals.TIMG0"
    +          },
    +          "TIMG1": {
    +            "description": "Timer Group",
    +            "offset": 1610743808,
    +            "type": "types.peripherals.TIMG0"
    +          },
    +          "TWAI": {
    +            "description": "Two-Wire Automotive Interface",
    +            "offset": 1610788864,
    +            "type": "types.peripherals.TWAI"
    +          },
    +          "UART0": {
    +            "description": "UART (Universal Asynchronous Receiver-Transmitter) Controller",
    +            "offset": 1610612736,
    +            "type": "types.peripherals.UART0"
    +          },
    +          "UART1": {
    +            "description": "UART (Universal Asynchronous Receiver-Transmitter) Controller",
    +            "offset": 1610678272,
    +            "type": "types.peripherals.UART0"
    +          },
    +          "UHCI0": {
    +            "description": "Universal Host Controller Interface",
    +            "offset": 1610694656,
    +            "type": "types.peripherals.UHCI0"
    +          },
    +          "UHCI1": {
    +            "description": "Universal Host Controller Interface",
    +            "offset": 1610661888,
    +            "type": "types.peripherals.UHCI0"
    +          },
    +          "USB_DEVICE": {
    +            "description": "Full-speed USB Serial/JTAG Controller",
    +            "offset": 1610887168,
    +            "type": "types.peripherals.USB_DEVICE"
    +          },
    +          "XTS_AES": {
    +            "description": "XTS-AES-128 Flash Encryption",
    +            "offset": 1611448320,
    +            "type": "types.peripherals.XTS_AES"
    +          }
    +        }
    +      }
    +    }
    +  }
    +}
    \ No newline at end of file
    diff --git a/src/chips/ESP32_C3.zig b/src/chips/ESP32_C3.zig
    new file mode 100644
    index 0000000..50a3263
    --- /dev/null
    +++ b/src/chips/ESP32_C3.zig
    @@ -0,0 +1,12378 @@
    +const micro = @import("microzig");
    +const mmio = micro.mmio;
    +
    +pub const devices = struct {
    +    ///  32-bit RISC-V MCU & 2.4 GHz Wi-Fi & Bluetooth 5 (LE)
    +    pub const @"ESP32-C3" = struct {
    +        pub const properties = struct {
    +            pub const @"cpu.mpuPresent" = "false";
    +            pub const @"cpu.nvicPrioBits" = "4";
    +            pub const @"cpu.vendorSystickConfig" = "false";
    +            pub const @"cpu.revision" = "r0p0";
    +            pub const @"cpu.endian" = "little";
    +            pub const license =
    +                \\
    +                \\    Copyright 2022 Espressif Systems (Shanghai) PTE LTD
    +                \\
    +                \\    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.
    +                \\
    +            ;
    +            pub const @"cpu.name" = "RV32IMC";
    +            pub const @"cpu.fpuPresent" = "false";
    +        };
    +
    +        pub const peripherals = struct {
    +            ///  UART (Universal Asynchronous Receiver-Transmitter) Controller
    +            pub const UART0 = @intToPtr(*volatile types.peripherals.UART0, 0x60000000);
    +            ///  SPI (Serial Peripheral Interface) Controller
    +            pub const SPI1 = @intToPtr(*volatile types.peripherals.SPI1, 0x60002000);
    +            ///  SPI (Serial Peripheral Interface) Controller
    +            pub const SPI0 = @intToPtr(*volatile types.peripherals.SPI0, 0x60003000);
    +            ///  General Purpose Input/Output
    +            pub const GPIO = @intToPtr(*volatile types.peripherals.GPIO, 0x60004000);
    +            ///  Sigma-Delta Modulation
    +            pub const GPIOSD = @intToPtr(*volatile types.peripherals.GPIOSD, 0x60004f00);
    +            ///  Real-Time Clock Control
    +            pub const RTC_CNTL = @intToPtr(*volatile types.peripherals.RTC_CNTL, 0x60008000);
    +            ///  eFuse Controller
    +            pub const EFUSE = @intToPtr(*volatile types.peripherals.EFUSE, 0x60008800);
    +            ///  Input/Output Multiplexer
    +            pub const IO_MUX = @intToPtr(*volatile types.peripherals.IO_MUX, 0x60009000);
    +            ///  Universal Host Controller Interface
    +            pub const UHCI1 = @intToPtr(*volatile types.peripherals.UHCI0, 0x6000c000);
    +            ///  UART (Universal Asynchronous Receiver-Transmitter) Controller
    +            pub const UART1 = @intToPtr(*volatile types.peripherals.UART0, 0x60010000);
    +            ///  I2C (Inter-Integrated Circuit) Controller
    +            pub const I2C0 = @intToPtr(*volatile types.peripherals.I2C0, 0x60013000);
    +            ///  Universal Host Controller Interface
    +            pub const UHCI0 = @intToPtr(*volatile types.peripherals.UHCI0, 0x60014000);
    +            ///  Remote Control Peripheral
    +            pub const RMT = @intToPtr(*volatile types.peripherals.RMT, 0x60016000);
    +            ///  LED Control PWM (Pulse Width Modulation)
    +            pub const LEDC = @intToPtr(*volatile types.peripherals.LEDC, 0x60019000);
    +            ///  Timer Group
    +            pub const TIMG0 = @intToPtr(*volatile types.peripherals.TIMG0, 0x6001f000);
    +            ///  Timer Group
    +            pub const TIMG1 = @intToPtr(*volatile types.peripherals.TIMG0, 0x60020000);
    +            ///  System Timer
    +            pub const SYSTIMER = @intToPtr(*volatile types.peripherals.SYSTIMER, 0x60023000);
    +            ///  SPI (Serial Peripheral Interface) Controller
    +            pub const SPI2 = @intToPtr(*volatile types.peripherals.SPI2, 0x60024000);
    +            ///  Advanced Peripheral Bus Controller
    +            pub const APB_CTRL = @intToPtr(*volatile types.peripherals.APB_CTRL, 0x60026000);
    +            ///  Hardware random number generator
    +            pub const RNG = @intToPtr(*volatile types.peripherals.RNG, 0x60026000);
    +            ///  Two-Wire Automotive Interface
    +            pub const TWAI = @intToPtr(*volatile types.peripherals.TWAI, 0x6002b000);
    +            ///  I2S (Inter-IC Sound) Controller
    +            pub const I2S = @intToPtr(*volatile types.peripherals.I2S, 0x6002d000);
    +            ///  AES (Advanced Encryption Standard) Accelerator
    +            pub const AES = @intToPtr(*volatile types.peripherals.AES, 0x6003a000);
    +            ///  SHA (Secure Hash Algorithm) Accelerator
    +            pub const SHA = @intToPtr(*volatile types.peripherals.SHA, 0x6003b000);
    +            ///  RSA (Rivest Shamir Adleman) Accelerator
    +            pub const RSA = @intToPtr(*volatile types.peripherals.RSA, 0x6003c000);
    +            ///  Digital Signature
    +            pub const DS = @intToPtr(*volatile types.peripherals.DS, 0x6003d000);
    +            ///  HMAC (Hash-based Message Authentication Code) Accelerator
    +            pub const HMAC = @intToPtr(*volatile types.peripherals.HMAC, 0x6003e000);
    +            ///  DMA (Direct Memory Access) Controller
    +            pub const DMA = @intToPtr(*volatile types.peripherals.DMA, 0x6003f000);
    +            ///  Successive Approximation Register Analog to Digital Converter
    +            pub const APB_SARADC = @intToPtr(*volatile types.peripherals.APB_SARADC, 0x60040000);
    +            ///  Full-speed USB Serial/JTAG Controller
    +            pub const USB_DEVICE = @intToPtr(*volatile types.peripherals.USB_DEVICE, 0x60043000);
    +            ///  System
    +            pub const SYSTEM = @intToPtr(*volatile types.peripherals.SYSTEM, 0x600c0000);
    +            ///  Sensitive
    +            pub const SENSITIVE = @intToPtr(*volatile types.peripherals.SENSITIVE, 0x600c1000);
    +            ///  Interrupt Core
    +            pub const INTERRUPT_CORE0 = @intToPtr(*volatile types.peripherals.INTERRUPT_CORE0, 0x600c2000);
    +            ///  External Memory
    +            pub const EXTMEM = @intToPtr(*volatile types.peripherals.EXTMEM, 0x600c4000);
    +            ///  XTS-AES-128 Flash Encryption
    +            pub const XTS_AES = @intToPtr(*volatile types.peripherals.XTS_AES, 0x600cc000);
    +            ///  Debug Assist
    +            pub const ASSIST_DEBUG = @intToPtr(*volatile types.peripherals.ASSIST_DEBUG, 0x600ce000);
    +        };
    +    };
    +};
    +
    +pub const types = struct {
    +    pub const peripherals = struct {
    +        ///  AES (Advanced Encryption Standard) Accelerator
    +        pub const AES = extern struct {
    +            ///  Key material key_0 configure register
    +            KEY_0: mmio.Mmio(packed struct(u32) {
    +                ///  This bits stores key_0 that is a part of key material.
    +                KEY_0: u32,
    +            }),
    +            ///  Key material key_1 configure register
    +            KEY_1: mmio.Mmio(packed struct(u32) {
    +                ///  This bits stores key_1 that is a part of key material.
    +                KEY_1: u32,
    +            }),
    +            ///  Key material key_2 configure register
    +            KEY_2: mmio.Mmio(packed struct(u32) {
    +                ///  This bits stores key_2 that is a part of key material.
    +                KEY_2: u32,
    +            }),
    +            ///  Key material key_3 configure register
    +            KEY_3: mmio.Mmio(packed struct(u32) {
    +                ///  This bits stores key_3 that is a part of key material.
    +                KEY_3: u32,
    +            }),
    +            ///  Key material key_4 configure register
    +            KEY_4: mmio.Mmio(packed struct(u32) {
    +                ///  This bits stores key_4 that is a part of key material.
    +                KEY_4: u32,
    +            }),
    +            ///  Key material key_5 configure register
    +            KEY_5: mmio.Mmio(packed struct(u32) {
    +                ///  This bits stores key_5 that is a part of key material.
    +                KEY_5: u32,
    +            }),
    +            ///  Key material key_6 configure register
    +            KEY_6: mmio.Mmio(packed struct(u32) {
    +                ///  This bits stores key_6 that is a part of key material.
    +                KEY_6: u32,
    +            }),
    +            ///  Key material key_7 configure register
    +            KEY_7: mmio.Mmio(packed struct(u32) {
    +                ///  This bits stores key_7 that is a part of key material.
    +                KEY_7: u32,
    +            }),
    +            ///  source text material text_in_0 configure register
    +            TEXT_IN_0: mmio.Mmio(packed struct(u32) {
    +                ///  This bits stores text_in_0 that is a part of source text material.
    +                TEXT_IN_0: u32,
    +            }),
    +            ///  source text material text_in_1 configure register
    +            TEXT_IN_1: mmio.Mmio(packed struct(u32) {
    +                ///  This bits stores text_in_1 that is a part of source text material.
    +                TEXT_IN_1: u32,
    +            }),
    +            ///  source text material text_in_2 configure register
    +            TEXT_IN_2: mmio.Mmio(packed struct(u32) {
    +                ///  This bits stores text_in_2 that is a part of source text material.
    +                TEXT_IN_2: u32,
    +            }),
    +            ///  source text material text_in_3 configure register
    +            TEXT_IN_3: mmio.Mmio(packed struct(u32) {
    +                ///  This bits stores text_in_3 that is a part of source text material.
    +                TEXT_IN_3: u32,
    +            }),
    +            ///  result text material text_out_0 configure register
    +            TEXT_OUT_0: mmio.Mmio(packed struct(u32) {
    +                ///  This bits stores text_out_0 that is a part of result text material.
    +                TEXT_OUT_0: u32,
    +            }),
    +            ///  result text material text_out_1 configure register
    +            TEXT_OUT_1: mmio.Mmio(packed struct(u32) {
    +                ///  This bits stores text_out_1 that is a part of result text material.
    +                TEXT_OUT_1: u32,
    +            }),
    +            ///  result text material text_out_2 configure register
    +            TEXT_OUT_2: mmio.Mmio(packed struct(u32) {
    +                ///  This bits stores text_out_2 that is a part of result text material.
    +                TEXT_OUT_2: u32,
    +            }),
    +            ///  result text material text_out_3 configure register
    +            TEXT_OUT_3: mmio.Mmio(packed struct(u32) {
    +                ///  This bits stores text_out_3 that is a part of result text material.
    +                TEXT_OUT_3: u32,
    +            }),
    +            ///  AES Mode register
    +            MODE: mmio.Mmio(packed struct(u32) {
    +                ///  This bits decides which one operation mode will be used. 3'd0: AES-EN-128, 3'd1: AES-EN-192, 3'd2: AES-EN-256, 3'd4: AES-DE-128, 3'd5: AES-DE-192, 3'd6: AES-DE-256.
    +                MODE: u3,
    +                padding: u29,
    +            }),
    +            ///  AES Endian configure register
    +            ENDIAN: mmio.Mmio(packed struct(u32) {
    +                ///  endian. [1:0] key endian, [3:2] text_in endian or in_stream endian, [5:4] text_out endian or out_stream endian
    +                ENDIAN: u6,
    +                padding: u26,
    +            }),
    +            ///  AES trigger register
    +            TRIGGER: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to start AES calculation.
    +                TRIGGER: u1,
    +                padding: u31,
    +            }),
    +            ///  AES state register
    +            STATE: mmio.Mmio(packed struct(u32) {
    +                ///  Those bits shows AES status. For typical AES, 0: idle, 1: busy. For DMA-AES, 0: idle, 1: busy, 2: calculation_done.
    +                STATE: u2,
    +                padding: u30,
    +            }),
    +            ///  The memory that stores initialization vector
    +            IV_MEM: [16]u8,
    +            ///  The memory that stores GCM hash subkey
    +            H_MEM: [16]u8,
    +            ///  The memory that stores J0
    +            J0_MEM: [16]u8,
    +            ///  The memory that stores T0
    +            T0_MEM: [16]u8,
    +            ///  DMA-AES working mode register
    +            DMA_ENABLE: mmio.Mmio(packed struct(u32) {
    +                ///  1'b0: typical AES working mode, 1'b1: DMA-AES working mode.
    +                DMA_ENABLE: u1,
    +                padding: u31,
    +            }),
    +            ///  AES cipher block mode register
    +            BLOCK_MODE: mmio.Mmio(packed struct(u32) {
    +                ///  Those bits decides which block mode will be used. 0x0: ECB, 0x1: CBC, 0x2: OFB, 0x3: CTR, 0x4: CFB-8, 0x5: CFB-128, 0x6: GCM, 0x7: reserved.
    +                BLOCK_MODE: u3,
    +                padding: u29,
    +            }),
    +            ///  AES block number register
    +            BLOCK_NUM: mmio.Mmio(packed struct(u32) {
    +                ///  Those bits stores the number of Plaintext/ciphertext block.
    +                BLOCK_NUM: u32,
    +            }),
    +            ///  Standard incrementing function configure register
    +            INC_SEL: mmio.Mmio(packed struct(u32) {
    +                ///  This bit decides the standard incrementing function. 0: INC32. 1: INC128.
    +                INC_SEL: u1,
    +                padding: u31,
    +            }),
    +            ///  Additional Authential Data block number register
    +            AAD_BLOCK_NUM: mmio.Mmio(packed struct(u32) {
    +                ///  Those bits stores the number of AAD block.
    +                AAD_BLOCK_NUM: u32,
    +            }),
    +            ///  AES remainder bit number register
    +            REMAINDER_BIT_NUM: mmio.Mmio(packed struct(u32) {
    +                ///  Those bits stores the number of remainder bit.
    +                REMAINDER_BIT_NUM: u7,
    +                padding: u25,
    +            }),
    +            ///  AES continue register
    +            CONTINUE: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to continue GCM operation.
    +                CONTINUE: u1,
    +                padding: u31,
    +            }),
    +            ///  AES Interrupt clear register
    +            INT_CLEAR: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to clear the AES interrupt.
    +                INT_CLEAR: u1,
    +                padding: u31,
    +            }),
    +            ///  AES Interrupt enable register
    +            INT_ENA: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to enable interrupt that occurs when DMA-AES calculation is done.
    +                INT_ENA: u1,
    +                padding: u31,
    +            }),
    +            ///  AES version control register
    +            DATE: mmio.Mmio(packed struct(u32) {
    +                ///  This bits stores the version information of AES.
    +                DATE: u30,
    +                padding: u2,
    +            }),
    +            ///  AES-DMA exit config
    +            DMA_EXIT: mmio.Mmio(packed struct(u32) {
    +                ///  Set this register to leave calculation done stage. Recommend to use it after software finishes reading DMA's output buffer.
    +                DMA_EXIT: u1,
    +                padding: u31,
    +            }),
    +        };
    +
    +        ///  Advanced Peripheral Bus Controller
    +        pub const APB_CTRL = extern struct {
    +            ///  APB_CTRL_SYSCLK_CONF_REG
    +            SYSCLK_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  reg_pre_div_cnt
    +                PRE_DIV_CNT: u10,
    +                ///  reg_clk_320m_en
    +                CLK_320M_EN: u1,
    +                ///  reg_clk_en
    +                CLK_EN: u1,
    +                ///  reg_rst_tick_cnt
    +                RST_TICK_CNT: u1,
    +                padding: u19,
    +            }),
    +            ///  APB_CTRL_TICK_CONF_REG
    +            TICK_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  reg_xtal_tick_num
    +                XTAL_TICK_NUM: u8,
    +                ///  reg_ck8m_tick_num
    +                CK8M_TICK_NUM: u8,
    +                ///  reg_tick_enable
    +                TICK_ENABLE: u1,
    +                padding: u15,
    +            }),
    +            ///  APB_CTRL_CLK_OUT_EN_REG
    +            CLK_OUT_EN: mmio.Mmio(packed struct(u32) {
    +                ///  reg_clk20_oen
    +                CLK20_OEN: u1,
    +                ///  reg_clk22_oen
    +                CLK22_OEN: u1,
    +                ///  reg_clk44_oen
    +                CLK44_OEN: u1,
    +                ///  reg_clk_bb_oen
    +                CLK_BB_OEN: u1,
    +                ///  reg_clk80_oen
    +                CLK80_OEN: u1,
    +                ///  reg_clk160_oen
    +                CLK160_OEN: u1,
    +                ///  reg_clk_320m_oen
    +                CLK_320M_OEN: u1,
    +                ///  reg_clk_adc_inf_oen
    +                CLK_ADC_INF_OEN: u1,
    +                ///  reg_clk_dac_cpu_oen
    +                CLK_DAC_CPU_OEN: u1,
    +                ///  reg_clk40x_bb_oen
    +                CLK40X_BB_OEN: u1,
    +                ///  reg_clk_xtal_oen
    +                CLK_XTAL_OEN: u1,
    +                padding: u21,
    +            }),
    +            ///  APB_CTRL_WIFI_BB_CFG_REG
    +            WIFI_BB_CFG: mmio.Mmio(packed struct(u32) {
    +                ///  reg_wifi_bb_cfg
    +                WIFI_BB_CFG: u32,
    +            }),
    +            ///  APB_CTRL_WIFI_BB_CFG_2_REG
    +            WIFI_BB_CFG_2: mmio.Mmio(packed struct(u32) {
    +                ///  reg_wifi_bb_cfg_2
    +                WIFI_BB_CFG_2: u32,
    +            }),
    +            ///  APB_CTRL_WIFI_CLK_EN_REG
    +            WIFI_CLK_EN: mmio.Mmio(packed struct(u32) {
    +                ///  reg_wifi_clk_en
    +                WIFI_CLK_EN: u32,
    +            }),
    +            ///  APB_CTRL_WIFI_RST_EN_REG
    +            WIFI_RST_EN: mmio.Mmio(packed struct(u32) {
    +                ///  reg_wifi_rst
    +                WIFI_RST: u32,
    +            }),
    +            ///  APB_CTRL_HOST_INF_SEL_REG
    +            HOST_INF_SEL: mmio.Mmio(packed struct(u32) {
    +                ///  reg_peri_io_swap
    +                PERI_IO_SWAP: u8,
    +                padding: u24,
    +            }),
    +            ///  APB_CTRL_EXT_MEM_PMS_LOCK_REG
    +            EXT_MEM_PMS_LOCK: mmio.Mmio(packed struct(u32) {
    +                ///  reg_ext_mem_pms_lock
    +                EXT_MEM_PMS_LOCK: u1,
    +                padding: u31,
    +            }),
    +            reserved40: [4]u8,
    +            ///  APB_CTRL_FLASH_ACE0_ATTR_REG
    +            FLASH_ACE0_ATTR: mmio.Mmio(packed struct(u32) {
    +                ///  reg_flash_ace0_attr
    +                FLASH_ACE0_ATTR: u2,
    +                padding: u30,
    +            }),
    +            ///  APB_CTRL_FLASH_ACE1_ATTR_REG
    +            FLASH_ACE1_ATTR: mmio.Mmio(packed struct(u32) {
    +                ///  reg_flash_ace1_attr
    +                FLASH_ACE1_ATTR: u2,
    +                padding: u30,
    +            }),
    +            ///  APB_CTRL_FLASH_ACE2_ATTR_REG
    +            FLASH_ACE2_ATTR: mmio.Mmio(packed struct(u32) {
    +                ///  reg_flash_ace2_attr
    +                FLASH_ACE2_ATTR: u2,
    +                padding: u30,
    +            }),
    +            ///  APB_CTRL_FLASH_ACE3_ATTR_REG
    +            FLASH_ACE3_ATTR: mmio.Mmio(packed struct(u32) {
    +                ///  reg_flash_ace3_attr
    +                FLASH_ACE3_ATTR: u2,
    +                padding: u30,
    +            }),
    +            ///  APB_CTRL_FLASH_ACE0_ADDR_REG
    +            FLASH_ACE0_ADDR: mmio.Mmio(packed struct(u32) {
    +                ///  reg_flash_ace0_addr_s
    +                S: u32,
    +            }),
    +            ///  APB_CTRL_FLASH_ACE1_ADDR_REG
    +            FLASH_ACE1_ADDR: mmio.Mmio(packed struct(u32) {
    +                ///  reg_flash_ace1_addr_s
    +                S: u32,
    +            }),
    +            ///  APB_CTRL_FLASH_ACE2_ADDR_REG
    +            FLASH_ACE2_ADDR: mmio.Mmio(packed struct(u32) {
    +                ///  reg_flash_ace2_addr_s
    +                S: u32,
    +            }),
    +            ///  APB_CTRL_FLASH_ACE3_ADDR_REG
    +            FLASH_ACE3_ADDR: mmio.Mmio(packed struct(u32) {
    +                ///  reg_flash_ace3_addr_s
    +                S: u32,
    +            }),
    +            ///  APB_CTRL_FLASH_ACE0_SIZE_REG
    +            FLASH_ACE0_SIZE: mmio.Mmio(packed struct(u32) {
    +                ///  reg_flash_ace0_size
    +                FLASH_ACE0_SIZE: u13,
    +                padding: u19,
    +            }),
    +            ///  APB_CTRL_FLASH_ACE1_SIZE_REG
    +            FLASH_ACE1_SIZE: mmio.Mmio(packed struct(u32) {
    +                ///  reg_flash_ace1_size
    +                FLASH_ACE1_SIZE: u13,
    +                padding: u19,
    +            }),
    +            ///  APB_CTRL_FLASH_ACE2_SIZE_REG
    +            FLASH_ACE2_SIZE: mmio.Mmio(packed struct(u32) {
    +                ///  reg_flash_ace2_size
    +                FLASH_ACE2_SIZE: u13,
    +                padding: u19,
    +            }),
    +            ///  APB_CTRL_FLASH_ACE3_SIZE_REG
    +            FLASH_ACE3_SIZE: mmio.Mmio(packed struct(u32) {
    +                ///  reg_flash_ace3_size
    +                FLASH_ACE3_SIZE: u13,
    +                padding: u19,
    +            }),
    +            reserved136: [48]u8,
    +            ///  APB_CTRL_SPI_MEM_PMS_CTRL_REG
    +            SPI_MEM_PMS_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  reg_spi_mem_reject_int
    +                SPI_MEM_REJECT_INT: u1,
    +                ///  reg_spi_mem_reject_clr
    +                SPI_MEM_REJECT_CLR: u1,
    +                ///  reg_spi_mem_reject_cde
    +                SPI_MEM_REJECT_CDE: u5,
    +                padding: u25,
    +            }),
    +            ///  APB_CTRL_SPI_MEM_REJECT_ADDR_REG
    +            SPI_MEM_REJECT_ADDR: mmio.Mmio(packed struct(u32) {
    +                ///  reg_spi_mem_reject_addr
    +                SPI_MEM_REJECT_ADDR: u32,
    +            }),
    +            ///  APB_CTRL_SDIO_CTRL_REG
    +            SDIO_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  reg_sdio_win_access_en
    +                SDIO_WIN_ACCESS_EN: u1,
    +                padding: u31,
    +            }),
    +            ///  APB_CTRL_REDCY_SIG0_REG
    +            REDCY_SIG0: mmio.Mmio(packed struct(u32) {
    +                ///  reg_redcy_sig0
    +                REDCY_SIG0: u31,
    +                ///  reg_redcy_andor
    +                REDCY_ANDOR: u1,
    +            }),
    +            ///  APB_CTRL_REDCY_SIG1_REG
    +            REDCY_SIG1: mmio.Mmio(packed struct(u32) {
    +                ///  reg_redcy_sig1
    +                REDCY_SIG1: u31,
    +                ///  reg_redcy_nandor
    +                REDCY_NANDOR: u1,
    +            }),
    +            ///  APB_CTRL_FRONT_END_MEM_PD_REG
    +            FRONT_END_MEM_PD: mmio.Mmio(packed struct(u32) {
    +                ///  reg_agc_mem_force_pu
    +                AGC_MEM_FORCE_PU: u1,
    +                ///  reg_agc_mem_force_pd
    +                AGC_MEM_FORCE_PD: u1,
    +                ///  reg_pbus_mem_force_pu
    +                PBUS_MEM_FORCE_PU: u1,
    +                ///  reg_pbus_mem_force_pd
    +                PBUS_MEM_FORCE_PD: u1,
    +                ///  reg_dc_mem_force_pu
    +                DC_MEM_FORCE_PU: u1,
    +                ///  reg_dc_mem_force_pd
    +                DC_MEM_FORCE_PD: u1,
    +                padding: u26,
    +            }),
    +            ///  APB_CTRL_RETENTION_CTRL_REG
    +            RETENTION_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  reg_retention_link_addr
    +                RETENTION_LINK_ADDR: u27,
    +                ///  reg_nobypass_cpu_iso_rst
    +                NOBYPASS_CPU_ISO_RST: u1,
    +                padding: u4,
    +            }),
    +            ///  APB_CTRL_CLKGATE_FORCE_ON_REG
    +            CLKGATE_FORCE_ON: mmio.Mmio(packed struct(u32) {
    +                ///  reg_rom_clkgate_force_on
    +                ROM_CLKGATE_FORCE_ON: u2,
    +                ///  reg_sram_clkgate_force_on
    +                SRAM_CLKGATE_FORCE_ON: u4,
    +                padding: u26,
    +            }),
    +            ///  APB_CTRL_MEM_POWER_DOWN_REG
    +            MEM_POWER_DOWN: mmio.Mmio(packed struct(u32) {
    +                ///  reg_rom_power_down
    +                ROM_POWER_DOWN: u2,
    +                ///  reg_sram_power_down
    +                SRAM_POWER_DOWN: u4,
    +                padding: u26,
    +            }),
    +            ///  APB_CTRL_MEM_POWER_UP_REG
    +            MEM_POWER_UP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_rom_power_up
    +                ROM_POWER_UP: u2,
    +                ///  reg_sram_power_up
    +                SRAM_POWER_UP: u4,
    +                padding: u26,
    +            }),
    +            ///  APB_CTRL_RND_DATA_REG
    +            RND_DATA: mmio.Mmio(packed struct(u32) {
    +                ///  reg_rnd_data
    +                RND_DATA: u32,
    +            }),
    +            ///  APB_CTRL_PERI_BACKUP_CONFIG_REG
    +            PERI_BACKUP_CONFIG: mmio.Mmio(packed struct(u32) {
    +                reserved1: u1,
    +                ///  reg_peri_backup_flow_err
    +                PERI_BACKUP_FLOW_ERR: u2,
    +                reserved4: u1,
    +                ///  reg_peri_backup_burst_limit
    +                PERI_BACKUP_BURST_LIMIT: u5,
    +                ///  reg_peri_backup_tout_thres
    +                PERI_BACKUP_TOUT_THRES: u10,
    +                ///  reg_peri_backup_size
    +                PERI_BACKUP_SIZE: u10,
    +                ///  reg_peri_backup_start
    +                PERI_BACKUP_START: u1,
    +                ///  reg_peri_backup_to_mem
    +                PERI_BACKUP_TO_MEM: u1,
    +                ///  reg_peri_backup_ena
    +                PERI_BACKUP_ENA: u1,
    +            }),
    +            ///  APB_CTRL_PERI_BACKUP_APB_ADDR_REG
    +            PERI_BACKUP_APB_ADDR: mmio.Mmio(packed struct(u32) {
    +                ///  reg_backup_apb_start_addr
    +                BACKUP_APB_START_ADDR: u32,
    +            }),
    +            ///  APB_CTRL_PERI_BACKUP_MEM_ADDR_REG
    +            PERI_BACKUP_MEM_ADDR: mmio.Mmio(packed struct(u32) {
    +                ///  reg_backup_mem_start_addr
    +                BACKUP_MEM_START_ADDR: u32,
    +            }),
    +            ///  APB_CTRL_PERI_BACKUP_INT_RAW_REG
    +            PERI_BACKUP_INT_RAW: mmio.Mmio(packed struct(u32) {
    +                ///  reg_peri_backup_done_int_raw
    +                PERI_BACKUP_DONE_INT_RAW: u1,
    +                ///  reg_peri_backup_err_int_raw
    +                PERI_BACKUP_ERR_INT_RAW: u1,
    +                padding: u30,
    +            }),
    +            ///  APB_CTRL_PERI_BACKUP_INT_ST_REG
    +            PERI_BACKUP_INT_ST: mmio.Mmio(packed struct(u32) {
    +                ///  reg_peri_backup_done_int_st
    +                PERI_BACKUP_DONE_INT_ST: u1,
    +                ///  reg_peri_backup_err_int_st
    +                PERI_BACKUP_ERR_INT_ST: u1,
    +                padding: u30,
    +            }),
    +            ///  APB_CTRL_PERI_BACKUP_INT_ENA_REG
    +            PERI_BACKUP_INT_ENA: mmio.Mmio(packed struct(u32) {
    +                ///  reg_peri_backup_done_int_ena
    +                PERI_BACKUP_DONE_INT_ENA: u1,
    +                ///  reg_peri_backup_err_int_ena
    +                PERI_BACKUP_ERR_INT_ENA: u1,
    +                padding: u30,
    +            }),
    +            reserved208: [4]u8,
    +            ///  APB_CTRL_PERI_BACKUP_INT_CLR_REG
    +            PERI_BACKUP_INT_CLR: mmio.Mmio(packed struct(u32) {
    +                ///  reg_peri_backup_done_int_clr
    +                PERI_BACKUP_DONE_INT_CLR: u1,
    +                ///  reg_peri_backup_err_int_clr
    +                PERI_BACKUP_ERR_INT_CLR: u1,
    +                padding: u30,
    +            }),
    +            reserved1020: [808]u8,
    +            ///  APB_CTRL_DATE_REG
    +            DATE: mmio.Mmio(packed struct(u32) {
    +                ///  reg_dateVersion control
    +                DATE: u32,
    +            }),
    +        };
    +
    +        ///  Successive Approximation Register Analog to Digital Converter
    +        pub const APB_SARADC = extern struct {
    +            ///  digital saradc configure register
    +            CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  select software enable saradc sample
    +                SARADC_START_FORCE: u1,
    +                ///  software enable saradc sample
    +                SARADC_START: u1,
    +                reserved6: u4,
    +                ///  SAR clock gated
    +                SARADC_SAR_CLK_GATED: u1,
    +                ///  SAR clock divider
    +                SARADC_SAR_CLK_DIV: u8,
    +                ///  0 ~ 15 means length 1 ~ 16
    +                SARADC_SAR_PATT_LEN: u3,
    +                reserved23: u5,
    +                ///  clear the pointer of pattern table for DIG ADC1 CTRL
    +                SARADC_SAR_PATT_P_CLEAR: u1,
    +                reserved27: u3,
    +                ///  force option to xpd sar blocks
    +                SARADC_XPD_SAR_FORCE: u2,
    +                reserved30: u1,
    +                ///  wait arbit signal stable after sar_done
    +                SARADC_WAIT_ARB_CYCLE: u2,
    +            }),
    +            ///  digital saradc configure register
    +            CTRL2: mmio.Mmio(packed struct(u32) {
    +                ///  enable max meas num
    +                SARADC_MEAS_NUM_LIMIT: u1,
    +                ///  max conversion number
    +                SARADC_MAX_MEAS_NUM: u8,
    +                ///  1: data to DIG ADC1 CTRL is inverted, otherwise not
    +                SARADC_SAR1_INV: u1,
    +                ///  1: data to DIG ADC2 CTRL is inverted, otherwise not
    +                SARADC_SAR2_INV: u1,
    +                reserved12: u1,
    +                ///  to set saradc timer target
    +                SARADC_TIMER_TARGET: u12,
    +                ///  to enable saradc timer trigger
    +                SARADC_TIMER_EN: u1,
    +                padding: u7,
    +            }),
    +            ///  digital saradc configure register
    +            FILTER_CTRL1: mmio.Mmio(packed struct(u32) {
    +                reserved26: u26,
    +                ///  Factor of saradc filter1
    +                APB_SARADC_FILTER_FACTOR1: u3,
    +                ///  Factor of saradc filter0
    +                APB_SARADC_FILTER_FACTOR0: u3,
    +            }),
    +            ///  digital saradc configure register
    +            FSM_WAIT: mmio.Mmio(packed struct(u32) {
    +                ///  saradc_xpd_wait
    +                SARADC_XPD_WAIT: u8,
    +                ///  saradc_rstb_wait
    +                SARADC_RSTB_WAIT: u8,
    +                ///  saradc_standby_wait
    +                SARADC_STANDBY_WAIT: u8,
    +                padding: u8,
    +            }),
    +            ///  digital saradc configure register
    +            SAR1_STATUS: mmio.Mmio(packed struct(u32) {
    +                ///  saradc1 status about data and channel
    +                SARADC_SAR1_STATUS: u32,
    +            }),
    +            ///  digital saradc configure register
    +            SAR2_STATUS: mmio.Mmio(packed struct(u32) {
    +                ///  saradc2 status about data and channel
    +                SARADC_SAR2_STATUS: u32,
    +            }),
    +            ///  digital saradc configure register
    +            SAR_PATT_TAB1: mmio.Mmio(packed struct(u32) {
    +                ///  item 0 ~ 3 for pattern table 1 (each item one byte)
    +                SARADC_SAR_PATT_TAB1: u24,
    +                padding: u8,
    +            }),
    +            ///  digital saradc configure register
    +            SAR_PATT_TAB2: mmio.Mmio(packed struct(u32) {
    +                ///  Item 4 ~ 7 for pattern table 1 (each item one byte)
    +                SARADC_SAR_PATT_TAB2: u24,
    +                padding: u8,
    +            }),
    +            ///  digital saradc configure register
    +            ONETIME_SAMPLE: mmio.Mmio(packed struct(u32) {
    +                reserved23: u23,
    +                ///  configure onetime atten
    +                SARADC_ONETIME_ATTEN: u2,
    +                ///  configure onetime channel
    +                SARADC_ONETIME_CHANNEL: u4,
    +                ///  trigger adc onetime sample
    +                SARADC_ONETIME_START: u1,
    +                ///  enable adc2 onetime sample
    +                SARADC2_ONETIME_SAMPLE: u1,
    +                ///  enable adc1 onetime sample
    +                SARADC1_ONETIME_SAMPLE: u1,
    +            }),
    +            ///  digital saradc configure register
    +            ARB_CTRL: mmio.Mmio(packed struct(u32) {
    +                reserved2: u2,
    +                ///  adc2 arbiter force to enableapb controller
    +                ADC_ARB_APB_FORCE: u1,
    +                ///  adc2 arbiter force to enable rtc controller
    +                ADC_ARB_RTC_FORCE: u1,
    +                ///  adc2 arbiter force to enable wifi controller
    +                ADC_ARB_WIFI_FORCE: u1,
    +                ///  adc2 arbiter force grant
    +                ADC_ARB_GRANT_FORCE: u1,
    +                ///  Set adc2 arbiterapb priority
    +                ADC_ARB_APB_PRIORITY: u2,
    +                ///  Set adc2 arbiter rtc priority
    +                ADC_ARB_RTC_PRIORITY: u2,
    +                ///  Set adc2 arbiter wifi priority
    +                ADC_ARB_WIFI_PRIORITY: u2,
    +                ///  adc2 arbiter uses fixed priority
    +                ADC_ARB_FIX_PRIORITY: u1,
    +                padding: u19,
    +            }),
    +            ///  digital saradc configure register
    +            FILTER_CTRL0: mmio.Mmio(packed struct(u32) {
    +                reserved18: u18,
    +                ///  configure filter1 to adc channel
    +                APB_SARADC_FILTER_CHANNEL1: u4,
    +                ///  configure filter0 to adc channel
    +                APB_SARADC_FILTER_CHANNEL0: u4,
    +                reserved31: u5,
    +                ///  enable apb_adc1_filter
    +                APB_SARADC_FILTER_RESET: u1,
    +            }),
    +            ///  digital saradc configure register
    +            SAR1DATA_STATUS: mmio.Mmio(packed struct(u32) {
    +                ///  saradc1 data
    +                APB_SARADC1_DATA: u17,
    +                padding: u15,
    +            }),
    +            ///  digital saradc configure register
    +            SAR2DATA_STATUS: mmio.Mmio(packed struct(u32) {
    +                ///  saradc2 data
    +                APB_SARADC2_DATA: u17,
    +                padding: u15,
    +            }),
    +            ///  digital saradc configure register
    +            THRES0_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  configure thres0 to adc channel
    +                APB_SARADC_THRES0_CHANNEL: u4,
    +                reserved5: u1,
    +                ///  saradc thres0 monitor thres
    +                APB_SARADC_THRES0_HIGH: u13,
    +                ///  saradc thres0 monitor thres
    +                APB_SARADC_THRES0_LOW: u13,
    +                padding: u1,
    +            }),
    +            ///  digital saradc configure register
    +            THRES1_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  configure thres1 to adc channel
    +                APB_SARADC_THRES1_CHANNEL: u4,
    +                reserved5: u1,
    +                ///  saradc thres1 monitor thres
    +                APB_SARADC_THRES1_HIGH: u13,
    +                ///  saradc thres1 monitor thres
    +                APB_SARADC_THRES1_LOW: u13,
    +                padding: u1,
    +            }),
    +            ///  digital saradc configure register
    +            THRES_CTRL: mmio.Mmio(packed struct(u32) {
    +                reserved27: u27,
    +                ///  enable thres to all channel
    +                APB_SARADC_THRES_ALL_EN: u1,
    +                reserved30: u2,
    +                ///  enable thres1
    +                APB_SARADC_THRES1_EN: u1,
    +                ///  enable thres0
    +                APB_SARADC_THRES0_EN: u1,
    +            }),
    +            ///  digital saradc int register
    +            INT_ENA: mmio.Mmio(packed struct(u32) {
    +                reserved26: u26,
    +                ///  saradc thres1 low interrupt enable
    +                APB_SARADC_THRES1_LOW_INT_ENA: u1,
    +                ///  saradc thres0 low interrupt enable
    +                APB_SARADC_THRES0_LOW_INT_ENA: u1,
    +                ///  saradc thres1 high interrupt enable
    +                APB_SARADC_THRES1_HIGH_INT_ENA: u1,
    +                ///  saradc thres0 high interrupt enable
    +                APB_SARADC_THRES0_HIGH_INT_ENA: u1,
    +                ///  saradc2 done interrupt enable
    +                APB_SARADC2_DONE_INT_ENA: u1,
    +                ///  saradc1 done interrupt enable
    +                APB_SARADC1_DONE_INT_ENA: u1,
    +            }),
    +            ///  digital saradc int register
    +            INT_RAW: mmio.Mmio(packed struct(u32) {
    +                reserved26: u26,
    +                ///  saradc thres1 low interrupt raw
    +                APB_SARADC_THRES1_LOW_INT_RAW: u1,
    +                ///  saradc thres0 low interrupt raw
    +                APB_SARADC_THRES0_LOW_INT_RAW: u1,
    +                ///  saradc thres1 high interrupt raw
    +                APB_SARADC_THRES1_HIGH_INT_RAW: u1,
    +                ///  saradc thres0 high interrupt raw
    +                APB_SARADC_THRES0_HIGH_INT_RAW: u1,
    +                ///  saradc2 done interrupt raw
    +                APB_SARADC2_DONE_INT_RAW: u1,
    +                ///  saradc1 done interrupt raw
    +                APB_SARADC1_DONE_INT_RAW: u1,
    +            }),
    +            ///  digital saradc int register
    +            INT_ST: mmio.Mmio(packed struct(u32) {
    +                reserved26: u26,
    +                ///  saradc thres1 low interrupt state
    +                APB_SARADC_THRES1_LOW_INT_ST: u1,
    +                ///  saradc thres0 low interrupt state
    +                APB_SARADC_THRES0_LOW_INT_ST: u1,
    +                ///  saradc thres1 high interrupt state
    +                APB_SARADC_THRES1_HIGH_INT_ST: u1,
    +                ///  saradc thres0 high interrupt state
    +                APB_SARADC_THRES0_HIGH_INT_ST: u1,
    +                ///  saradc2 done interrupt state
    +                APB_SARADC2_DONE_INT_ST: u1,
    +                ///  saradc1 done interrupt state
    +                APB_SARADC1_DONE_INT_ST: u1,
    +            }),
    +            ///  digital saradc int register
    +            INT_CLR: mmio.Mmio(packed struct(u32) {
    +                reserved26: u26,
    +                ///  saradc thres1 low interrupt clear
    +                APB_SARADC_THRES1_LOW_INT_CLR: u1,
    +                ///  saradc thres0 low interrupt clear
    +                APB_SARADC_THRES0_LOW_INT_CLR: u1,
    +                ///  saradc thres1 high interrupt clear
    +                APB_SARADC_THRES1_HIGH_INT_CLR: u1,
    +                ///  saradc thres0 high interrupt clear
    +                APB_SARADC_THRES0_HIGH_INT_CLR: u1,
    +                ///  saradc2 done interrupt clear
    +                APB_SARADC2_DONE_INT_CLR: u1,
    +                ///  saradc1 done interrupt clear
    +                APB_SARADC1_DONE_INT_CLR: u1,
    +            }),
    +            ///  digital saradc configure register
    +            DMA_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  the dma_in_suc_eof gen when sample cnt = spi_eof_num
    +                APB_ADC_EOF_NUM: u16,
    +                reserved30: u14,
    +                ///  reset_apb_adc_state
    +                APB_ADC_RESET_FSM: u1,
    +                ///  enable apb_adc use spi_dma
    +                APB_ADC_TRANS: u1,
    +            }),
    +            ///  digital saradc configure register
    +            CLKM_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  Integral I2S clock divider value
    +                CLKM_DIV_NUM: u8,
    +                ///  Fractional clock divider numerator value
    +                CLKM_DIV_B: u6,
    +                ///  Fractional clock divider denominator value
    +                CLKM_DIV_A: u6,
    +                ///  reg clk en
    +                CLK_EN: u1,
    +                ///  Set this bit to enable clk_apll
    +                CLK_SEL: u2,
    +                padding: u9,
    +            }),
    +            ///  digital tsens configure register
    +            APB_TSENS_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  temperature sensor data out
    +                TSENS_OUT: u8,
    +                reserved13: u5,
    +                ///  invert temperature sensor data
    +                TSENS_IN_INV: u1,
    +                ///  temperature sensor clock divider
    +                TSENS_CLK_DIV: u8,
    +                ///  temperature sensor power up
    +                TSENS_PU: u1,
    +                padding: u9,
    +            }),
    +            ///  digital tsens configure register
    +            TSENS_CTRL2: mmio.Mmio(packed struct(u32) {
    +                ///  the time that power up tsens need wait
    +                TSENS_XPD_WAIT: u12,
    +                ///  force power up tsens
    +                TSENS_XPD_FORCE: u2,
    +                ///  inv tsens clk
    +                TSENS_CLK_INV: u1,
    +                ///  tsens clk select
    +                TSENS_CLK_SEL: u1,
    +                padding: u16,
    +            }),
    +            ///  digital saradc configure register
    +            CALI: mmio.Mmio(packed struct(u32) {
    +                ///  saradc cali factor
    +                APB_SARADC_CALI_CFG: u17,
    +                padding: u15,
    +            }),
    +            reserved1020: [920]u8,
    +            ///  version
    +            CTRL_DATE: mmio.Mmio(packed struct(u32) {
    +                ///  version
    +                DATE: u32,
    +            }),
    +        };
    +
    +        ///  Debug Assist
    +        pub const ASSIST_DEBUG = extern struct {
    +            ///  ASSIST_DEBUG_C0RE_0_MONTR_ENA_REG
    +            C0RE_0_MONTR_ENA: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_area_dram0_0_rd_ena
    +                CORE_0_AREA_DRAM0_0_RD_ENA: u1,
    +                ///  reg_core_0_area_dram0_0_wr_ena
    +                CORE_0_AREA_DRAM0_0_WR_ENA: u1,
    +                ///  reg_core_0_area_dram0_1_rd_ena
    +                CORE_0_AREA_DRAM0_1_RD_ENA: u1,
    +                ///  reg_core_0_area_dram0_1_wr_ena
    +                CORE_0_AREA_DRAM0_1_WR_ENA: u1,
    +                ///  reg_core_0_area_pif_0_rd_ena
    +                CORE_0_AREA_PIF_0_RD_ENA: u1,
    +                ///  reg_core_0_area_pif_0_wr_ena
    +                CORE_0_AREA_PIF_0_WR_ENA: u1,
    +                ///  reg_core_0_area_pif_1_rd_ena
    +                CORE_0_AREA_PIF_1_RD_ENA: u1,
    +                ///  reg_core_0_area_pif_1_wr_ena
    +                CORE_0_AREA_PIF_1_WR_ENA: u1,
    +                ///  reg_core_0_sp_spill_min_ena
    +                CORE_0_SP_SPILL_MIN_ENA: u1,
    +                ///  reg_core_0_sp_spill_max_ena
    +                CORE_0_SP_SPILL_MAX_ENA: u1,
    +                ///  reg_core_0_iram0_exception_monitor_ena
    +                CORE_0_IRAM0_EXCEPTION_MONITOR_ENA: u1,
    +                ///  reg_core_0_dram0_exception_monitor_ena
    +                CORE_0_DRAM0_EXCEPTION_MONITOR_ENA: u1,
    +                padding: u20,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_INTR_RAW_REG
    +            CORE_0_INTR_RAW: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_area_dram0_0_rd_raw
    +                CORE_0_AREA_DRAM0_0_RD_RAW: u1,
    +                ///  reg_core_0_area_dram0_0_wr_raw
    +                CORE_0_AREA_DRAM0_0_WR_RAW: u1,
    +                ///  reg_core_0_area_dram0_1_rd_raw
    +                CORE_0_AREA_DRAM0_1_RD_RAW: u1,
    +                ///  reg_core_0_area_dram0_1_wr_raw
    +                CORE_0_AREA_DRAM0_1_WR_RAW: u1,
    +                ///  reg_core_0_area_pif_0_rd_raw
    +                CORE_0_AREA_PIF_0_RD_RAW: u1,
    +                ///  reg_core_0_area_pif_0_wr_raw
    +                CORE_0_AREA_PIF_0_WR_RAW: u1,
    +                ///  reg_core_0_area_pif_1_rd_raw
    +                CORE_0_AREA_PIF_1_RD_RAW: u1,
    +                ///  reg_core_0_area_pif_1_wr_raw
    +                CORE_0_AREA_PIF_1_WR_RAW: u1,
    +                ///  reg_core_0_sp_spill_min_raw
    +                CORE_0_SP_SPILL_MIN_RAW: u1,
    +                ///  reg_core_0_sp_spill_max_raw
    +                CORE_0_SP_SPILL_MAX_RAW: u1,
    +                ///  reg_core_0_iram0_exception_monitor_raw
    +                CORE_0_IRAM0_EXCEPTION_MONITOR_RAW: u1,
    +                ///  reg_core_0_dram0_exception_monitor_raw
    +                CORE_0_DRAM0_EXCEPTION_MONITOR_RAW: u1,
    +                padding: u20,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_INTR_ENA_REG
    +            CORE_0_INTR_ENA: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_area_dram0_0_rd_intr_ena
    +                CORE_0_AREA_DRAM0_0_RD_INTR_ENA: u1,
    +                ///  reg_core_0_area_dram0_0_wr_intr_ena
    +                CORE_0_AREA_DRAM0_0_WR_INTR_ENA: u1,
    +                ///  reg_core_0_area_dram0_1_rd_intr_ena
    +                CORE_0_AREA_DRAM0_1_RD_INTR_ENA: u1,
    +                ///  reg_core_0_area_dram0_1_wr_intr_ena
    +                CORE_0_AREA_DRAM0_1_WR_INTR_ENA: u1,
    +                ///  reg_core_0_area_pif_0_rd_intr_ena
    +                CORE_0_AREA_PIF_0_RD_INTR_ENA: u1,
    +                ///  reg_core_0_area_pif_0_wr_intr_ena
    +                CORE_0_AREA_PIF_0_WR_INTR_ENA: u1,
    +                ///  reg_core_0_area_pif_1_rd_intr_ena
    +                CORE_0_AREA_PIF_1_RD_INTR_ENA: u1,
    +                ///  reg_core_0_area_pif_1_wr_intr_ena
    +                CORE_0_AREA_PIF_1_WR_INTR_ENA: u1,
    +                ///  reg_core_0_sp_spill_min_intr_ena
    +                CORE_0_SP_SPILL_MIN_INTR_ENA: u1,
    +                ///  reg_core_0_sp_spill_max_intr_ena
    +                CORE_0_SP_SPILL_MAX_INTR_ENA: u1,
    +                ///  reg_core_0_iram0_exception_monitor_ena
    +                CORE_0_IRAM0_EXCEPTION_MONITOR_RLS: u1,
    +                ///  reg_core_0_dram0_exception_monitor_ena
    +                CORE_0_DRAM0_EXCEPTION_MONITOR_RLS: u1,
    +                padding: u20,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_INTR_CLR_REG
    +            CORE_0_INTR_CLR: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_area_dram0_0_rd_clr
    +                CORE_0_AREA_DRAM0_0_RD_CLR: u1,
    +                ///  reg_core_0_area_dram0_0_wr_clr
    +                CORE_0_AREA_DRAM0_0_WR_CLR: u1,
    +                ///  reg_core_0_area_dram0_1_rd_clr
    +                CORE_0_AREA_DRAM0_1_RD_CLR: u1,
    +                ///  reg_core_0_area_dram0_1_wr_clr
    +                CORE_0_AREA_DRAM0_1_WR_CLR: u1,
    +                ///  reg_core_0_area_pif_0_rd_clr
    +                CORE_0_AREA_PIF_0_RD_CLR: u1,
    +                ///  reg_core_0_area_pif_0_wr_clr
    +                CORE_0_AREA_PIF_0_WR_CLR: u1,
    +                ///  reg_core_0_area_pif_1_rd_clr
    +                CORE_0_AREA_PIF_1_RD_CLR: u1,
    +                ///  reg_core_0_area_pif_1_wr_clr
    +                CORE_0_AREA_PIF_1_WR_CLR: u1,
    +                ///  reg_core_0_sp_spill_min_clr
    +                CORE_0_SP_SPILL_MIN_CLR: u1,
    +                ///  reg_core_0_sp_spill_max_clr
    +                CORE_0_SP_SPILL_MAX_CLR: u1,
    +                ///  reg_core_0_iram0_exception_monitor_clr
    +                CORE_0_IRAM0_EXCEPTION_MONITOR_CLR: u1,
    +                ///  reg_core_0_dram0_exception_monitor_clr
    +                CORE_0_DRAM0_EXCEPTION_MONITOR_CLR: u1,
    +                padding: u20,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_AREA_DRAM0_0_MIN_REG
    +            CORE_0_AREA_DRAM0_0_MIN: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_area_dram0_0_min
    +                CORE_0_AREA_DRAM0_0_MIN: u32,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_AREA_DRAM0_0_MAX_REG
    +            CORE_0_AREA_DRAM0_0_MAX: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_area_dram0_0_max
    +                CORE_0_AREA_DRAM0_0_MAX: u32,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_AREA_DRAM0_1_MIN_REG
    +            CORE_0_AREA_DRAM0_1_MIN: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_area_dram0_1_min
    +                CORE_0_AREA_DRAM0_1_MIN: u32,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_AREA_DRAM0_1_MAX_REG
    +            CORE_0_AREA_DRAM0_1_MAX: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_area_dram0_1_max
    +                CORE_0_AREA_DRAM0_1_MAX: u32,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_AREA_PIF_0_MIN_REG
    +            CORE_0_AREA_PIF_0_MIN: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_area_pif_0_min
    +                CORE_0_AREA_PIF_0_MIN: u32,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_AREA_PIF_0_MAX_REG
    +            CORE_0_AREA_PIF_0_MAX: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_area_pif_0_max
    +                CORE_0_AREA_PIF_0_MAX: u32,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_AREA_PIF_1_MIN_REG
    +            CORE_0_AREA_PIF_1_MIN: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_area_pif_1_min
    +                CORE_0_AREA_PIF_1_MIN: u32,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_AREA_PIF_1_MAX_REG
    +            CORE_0_AREA_PIF_1_MAX: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_area_pif_1_max
    +                CORE_0_AREA_PIF_1_MAX: u32,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_AREA_PC_REG
    +            CORE_0_AREA_PC: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_area_pc
    +                CORE_0_AREA_PC: u32,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_AREA_SP_REG
    +            CORE_0_AREA_SP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_area_sp
    +                CORE_0_AREA_SP: u32,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_SP_MIN_REG
    +            CORE_0_SP_MIN: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_sp_min
    +                CORE_0_SP_MIN: u32,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_SP_MAX_REG
    +            CORE_0_SP_MAX: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_sp_max
    +                CORE_0_SP_MAX: u32,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_SP_PC_REG
    +            CORE_0_SP_PC: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_sp_pc
    +                CORE_0_SP_PC: u32,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_RCD_EN_REG
    +            CORE_0_RCD_EN: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_rcd_recorden
    +                CORE_0_RCD_RECORDEN: u1,
    +                ///  reg_core_0_rcd_pdebugen
    +                CORE_0_RCD_PDEBUGEN: u1,
    +                padding: u30,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_RCD_PDEBUGPC_REG
    +            CORE_0_RCD_PDEBUGPC: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_rcd_pdebugpc
    +                CORE_0_RCD_PDEBUGPC: u32,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_RCD_PDEBUGSP_REG
    +            CORE_0_RCD_PDEBUGSP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_rcd_pdebugsp
    +                CORE_0_RCD_PDEBUGSP: u32,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_RCD_PDEBUGSP_REG
    +            CORE_0_IRAM0_EXCEPTION_MONITOR_0: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_iram0_recording_addr_0
    +                CORE_0_IRAM0_RECORDING_ADDR_0: u24,
    +                ///  reg_core_0_iram0_recording_wr_0
    +                CORE_0_IRAM0_RECORDING_WR_0: u1,
    +                ///  reg_core_0_iram0_recording_loadstore_0
    +                CORE_0_IRAM0_RECORDING_LOADSTORE_0: u1,
    +                padding: u6,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_IRAM0_EXCEPTION_MONITOR_1_REG
    +            CORE_0_IRAM0_EXCEPTION_MONITOR_1: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_iram0_recording_addr_1
    +                CORE_0_IRAM0_RECORDING_ADDR_1: u24,
    +                ///  reg_core_0_iram0_recording_wr_1
    +                CORE_0_IRAM0_RECORDING_WR_1: u1,
    +                ///  reg_core_0_iram0_recording_loadstore_1
    +                CORE_0_IRAM0_RECORDING_LOADSTORE_1: u1,
    +                padding: u6,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_0_REG
    +            CORE_0_DRAM0_EXCEPTION_MONITOR_0: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_dram0_recording_addr_0
    +                CORE_0_DRAM0_RECORDING_ADDR_0: u24,
    +                ///  reg_core_0_dram0_recording_wr_0
    +                CORE_0_DRAM0_RECORDING_WR_0: u1,
    +                ///  reg_core_0_dram0_recording_byteen_0
    +                CORE_0_DRAM0_RECORDING_BYTEEN_0: u4,
    +                padding: u3,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_1_REG
    +            CORE_0_DRAM0_EXCEPTION_MONITOR_1: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_dram0_recording_pc_0
    +                CORE_0_DRAM0_RECORDING_PC_0: u32,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_1_REG
    +            CORE_0_DRAM0_EXCEPTION_MONITOR_2: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_dram0_recording_addr_1
    +                CORE_0_DRAM0_RECORDING_ADDR_1: u24,
    +                ///  reg_core_0_dram0_recording_wr_1
    +                CORE_0_DRAM0_RECORDING_WR_1: u1,
    +                ///  reg_core_0_dram0_recording_byteen_1
    +                CORE_0_DRAM0_RECORDING_BYTEEN_1: u4,
    +                padding: u3,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_3_REG
    +            CORE_0_DRAM0_EXCEPTION_MONITOR_3: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_dram0_recording_pc_1
    +                CORE_0_DRAM0_RECORDING_PC_1: u32,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_0_REG
    +            CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_0: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_x_iram0_dram0_limit_cycle_0
    +                CORE_X_IRAM0_DRAM0_LIMIT_CYCLE_0: u20,
    +                padding: u12,
    +            }),
    +            ///  ASSIST_DEBUG_CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_1_REG
    +            CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_1: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_x_iram0_dram0_limit_cycle_1
    +                CORE_X_IRAM0_DRAM0_LIMIT_CYCLE_1: u20,
    +                padding: u12,
    +            }),
    +            ///  ASSIST_DEBUG_LOG_SETTING
    +            LOG_SETTING: mmio.Mmio(packed struct(u32) {
    +                ///  reg_log_ena
    +                LOG_ENA: u3,
    +                ///  reg_log_mode
    +                LOG_MODE: u4,
    +                ///  reg_log_mem_loop_enable
    +                LOG_MEM_LOOP_ENABLE: u1,
    +                padding: u24,
    +            }),
    +            ///  ASSIST_DEBUG_LOG_DATA_0_REG
    +            LOG_DATA_0: mmio.Mmio(packed struct(u32) {
    +                ///  reg_log_data_0
    +                LOG_DATA_0: u32,
    +            }),
    +            ///  ASSIST_DEBUG_LOG_DATA_MASK_REG
    +            LOG_DATA_MASK: mmio.Mmio(packed struct(u32) {
    +                ///  reg_log_data_size
    +                LOG_DATA_SIZE: u16,
    +                padding: u16,
    +            }),
    +            ///  ASSIST_DEBUG_LOG_MIN_REG
    +            LOG_MIN: mmio.Mmio(packed struct(u32) {
    +                ///  reg_log_min
    +                LOG_MIN: u32,
    +            }),
    +            ///  ASSIST_DEBUG_LOG_MAX_REG
    +            LOG_MAX: mmio.Mmio(packed struct(u32) {
    +                ///  reg_log_max
    +                LOG_MAX: u32,
    +            }),
    +            ///  ASSIST_DEBUG_LOG_MEM_START_REG
    +            LOG_MEM_START: mmio.Mmio(packed struct(u32) {
    +                ///  reg_log_mem_start
    +                LOG_MEM_START: u32,
    +            }),
    +            ///  ASSIST_DEBUG_LOG_MEM_END_REG
    +            LOG_MEM_END: mmio.Mmio(packed struct(u32) {
    +                ///  reg_log_mem_end
    +                LOG_MEM_END: u32,
    +            }),
    +            ///  ASSIST_DEBUG_LOG_MEM_WRITING_ADDR_REG
    +            LOG_MEM_WRITING_ADDR: mmio.Mmio(packed struct(u32) {
    +                ///  reg_log_mem_writing_addr
    +                LOG_MEM_WRITING_ADDR: u32,
    +            }),
    +            ///  ASSIST_DEBUG_LOG_MEM_FULL_FLAG_REG
    +            LOG_MEM_FULL_FLAG: mmio.Mmio(packed struct(u32) {
    +                ///  reg_log_mem_full_flag
    +                LOG_MEM_FULL_FLAG: u1,
    +                ///  reg_clr_log_mem_full_flag
    +                CLR_LOG_MEM_FULL_FLAG: u1,
    +                padding: u30,
    +            }),
    +            ///  ASSIST_DEBUG_C0RE_0_LASTPC_BEFORE_EXCEPTION
    +            C0RE_0_LASTPC_BEFORE_EXCEPTION: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_lastpc_before_exc
    +                CORE_0_LASTPC_BEFORE_EXC: u32,
    +            }),
    +            ///  ASSIST_DEBUG_C0RE_0_DEBUG_MODE
    +            C0RE_0_DEBUG_MODE: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core_0_debug_mode
    +                CORE_0_DEBUG_MODE: u1,
    +                ///  reg_core_0_debug_module_active
    +                CORE_0_DEBUG_MODULE_ACTIVE: u1,
    +                padding: u30,
    +            }),
    +            reserved508: [352]u8,
    +            ///  ASSIST_DEBUG_DATE_REG
    +            DATE: mmio.Mmio(packed struct(u32) {
    +                ///  reg_assist_debug_date
    +                ASSIST_DEBUG_DATE: u28,
    +                padding: u4,
    +            }),
    +        };
    +
    +        ///  DMA (Direct Memory Access) Controller
    +        pub const DMA = extern struct {
    +            ///  DMA_INT_RAW_CH0_REG.
    +            INT_RAW_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 0.
    +                IN_DONE_CH0_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 0. For UHCI0, the raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received and no data error is detected for Rx channel 0.
    +                IN_SUC_EOF_CH0_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when data error is detected only in the case that the peripheral is UHCI0 for Rx channel 0. For other peripherals, this raw interrupt is reserved.
    +                IN_ERR_EOF_CH0_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been transmitted to peripherals for Tx channel 0.
    +                OUT_DONE_CH0_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been read from memory for Tx channel 0.
    +                OUT_EOF_CH0_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when detecting inlink descriptor error, including owner error, the second and third word error of inlink descriptor for Rx channel 0.
    +                IN_DSCR_ERR_CH0_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when detecting outlink descriptor error, including owner error, the second and third word error of outlink descriptor for Tx channel 0.
    +                OUT_DSCR_ERR_CH0_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when Rx buffer pointed by inlink is full and receiving data is not completed, but there is no more inlink for Rx channel 0.
    +                IN_DSCR_EMPTY_CH0_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when data corresponding a outlink (includes one link descriptor or few link descriptors) is transmitted out for Tx channel 0.
    +                OUT_TOTAL_EOF_CH0_INT_RAW: u1,
    +                ///  This raw interrupt bit turns to high level when level 1 fifo of Rx channel 0 is overflow.
    +                INFIFO_OVF_CH0_INT_RAW: u1,
    +                ///  This raw interrupt bit turns to high level when level 1 fifo of Rx channel 0 is underflow.
    +                INFIFO_UDF_CH0_INT_RAW: u1,
    +                ///  This raw interrupt bit turns to high level when level 1 fifo of Tx channel 0 is overflow.
    +                OUTFIFO_OVF_CH0_INT_RAW: u1,
    +                ///  This raw interrupt bit turns to high level when level 1 fifo of Tx channel 0 is underflow.
    +                OUTFIFO_UDF_CH0_INT_RAW: u1,
    +                padding: u19,
    +            }),
    +            ///  DMA_INT_ST_CH0_REG.
    +            INT_ST_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  The raw interrupt status bit for the IN_DONE_CH_INT interrupt.
    +                IN_DONE_CH0_INT_ST: u1,
    +                ///  The raw interrupt status bit for the IN_SUC_EOF_CH_INT interrupt.
    +                IN_SUC_EOF_CH0_INT_ST: u1,
    +                ///  The raw interrupt status bit for the IN_ERR_EOF_CH_INT interrupt.
    +                IN_ERR_EOF_CH0_INT_ST: u1,
    +                ///  The raw interrupt status bit for the OUT_DONE_CH_INT interrupt.
    +                OUT_DONE_CH0_INT_ST: u1,
    +                ///  The raw interrupt status bit for the OUT_EOF_CH_INT interrupt.
    +                OUT_EOF_CH0_INT_ST: u1,
    +                ///  The raw interrupt status bit for the IN_DSCR_ERR_CH_INT interrupt.
    +                IN_DSCR_ERR_CH0_INT_ST: u1,
    +                ///  The raw interrupt status bit for the OUT_DSCR_ERR_CH_INT interrupt.
    +                OUT_DSCR_ERR_CH0_INT_ST: u1,
    +                ///  The raw interrupt status bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    +                IN_DSCR_EMPTY_CH0_INT_ST: u1,
    +                ///  The raw interrupt status bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    +                OUT_TOTAL_EOF_CH0_INT_ST: u1,
    +                ///  The raw interrupt status bit for the INFIFO_OVF_L1_CH_INT interrupt.
    +                INFIFO_OVF_CH0_INT_ST: u1,
    +                ///  The raw interrupt status bit for the INFIFO_UDF_L1_CH_INT interrupt.
    +                INFIFO_UDF_CH0_INT_ST: u1,
    +                ///  The raw interrupt status bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    +                OUTFIFO_OVF_CH0_INT_ST: u1,
    +                ///  The raw interrupt status bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    +                OUTFIFO_UDF_CH0_INT_ST: u1,
    +                padding: u19,
    +            }),
    +            ///  DMA_INT_ENA_CH0_REG.
    +            INT_ENA_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  The interrupt enable bit for the IN_DONE_CH_INT interrupt.
    +                IN_DONE_CH0_INT_ENA: u1,
    +                ///  The interrupt enable bit for the IN_SUC_EOF_CH_INT interrupt.
    +                IN_SUC_EOF_CH0_INT_ENA: u1,
    +                ///  The interrupt enable bit for the IN_ERR_EOF_CH_INT interrupt.
    +                IN_ERR_EOF_CH0_INT_ENA: u1,
    +                ///  The interrupt enable bit for the OUT_DONE_CH_INT interrupt.
    +                OUT_DONE_CH0_INT_ENA: u1,
    +                ///  The interrupt enable bit for the OUT_EOF_CH_INT interrupt.
    +                OUT_EOF_CH0_INT_ENA: u1,
    +                ///  The interrupt enable bit for the IN_DSCR_ERR_CH_INT interrupt.
    +                IN_DSCR_ERR_CH0_INT_ENA: u1,
    +                ///  The interrupt enable bit for the OUT_DSCR_ERR_CH_INT interrupt.
    +                OUT_DSCR_ERR_CH0_INT_ENA: u1,
    +                ///  The interrupt enable bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    +                IN_DSCR_EMPTY_CH0_INT_ENA: u1,
    +                ///  The interrupt enable bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    +                OUT_TOTAL_EOF_CH0_INT_ENA: u1,
    +                ///  The interrupt enable bit for the INFIFO_OVF_L1_CH_INT interrupt.
    +                INFIFO_OVF_CH0_INT_ENA: u1,
    +                ///  The interrupt enable bit for the INFIFO_UDF_L1_CH_INT interrupt.
    +                INFIFO_UDF_CH0_INT_ENA: u1,
    +                ///  The interrupt enable bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    +                OUTFIFO_OVF_CH0_INT_ENA: u1,
    +                ///  The interrupt enable bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    +                OUTFIFO_UDF_CH0_INT_ENA: u1,
    +                padding: u19,
    +            }),
    +            ///  DMA_INT_CLR_CH0_REG.
    +            INT_CLR_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to clear the IN_DONE_CH_INT interrupt.
    +                IN_DONE_CH0_INT_CLR: u1,
    +                ///  Set this bit to clear the IN_SUC_EOF_CH_INT interrupt.
    +                IN_SUC_EOF_CH0_INT_CLR: u1,
    +                ///  Set this bit to clear the IN_ERR_EOF_CH_INT interrupt.
    +                IN_ERR_EOF_CH0_INT_CLR: u1,
    +                ///  Set this bit to clear the OUT_DONE_CH_INT interrupt.
    +                OUT_DONE_CH0_INT_CLR: u1,
    +                ///  Set this bit to clear the OUT_EOF_CH_INT interrupt.
    +                OUT_EOF_CH0_INT_CLR: u1,
    +                ///  Set this bit to clear the IN_DSCR_ERR_CH_INT interrupt.
    +                IN_DSCR_ERR_CH0_INT_CLR: u1,
    +                ///  Set this bit to clear the OUT_DSCR_ERR_CH_INT interrupt.
    +                OUT_DSCR_ERR_CH0_INT_CLR: u1,
    +                ///  Set this bit to clear the IN_DSCR_EMPTY_CH_INT interrupt.
    +                IN_DSCR_EMPTY_CH0_INT_CLR: u1,
    +                ///  Set this bit to clear the OUT_TOTAL_EOF_CH_INT interrupt.
    +                OUT_TOTAL_EOF_CH0_INT_CLR: u1,
    +                ///  Set this bit to clear the INFIFO_OVF_L1_CH_INT interrupt.
    +                INFIFO_OVF_CH0_INT_CLR: u1,
    +                ///  Set this bit to clear the INFIFO_UDF_L1_CH_INT interrupt.
    +                INFIFO_UDF_CH0_INT_CLR: u1,
    +                ///  Set this bit to clear the OUTFIFO_OVF_L1_CH_INT interrupt.
    +                OUTFIFO_OVF_CH0_INT_CLR: u1,
    +                ///  Set this bit to clear the OUTFIFO_UDF_L1_CH_INT interrupt.
    +                OUTFIFO_UDF_CH0_INT_CLR: u1,
    +                padding: u19,
    +            }),
    +            ///  DMA_INT_RAW_CH1_REG.
    +            INT_RAW_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 1.
    +                IN_DONE_CH1_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 1. For UHCI0, the raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received and no data error is detected for Rx channel 1.
    +                IN_SUC_EOF_CH1_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when data error is detected only in the case that the peripheral is UHCI0 for Rx channel 1. For other peripherals, this raw interrupt is reserved.
    +                IN_ERR_EOF_CH1_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been transmitted to peripherals for Tx channel 1.
    +                OUT_DONE_CH1_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been read from memory for Tx channel 1.
    +                OUT_EOF_CH1_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when detecting inlink descriptor error, including owner error, the second and third word error of inlink descriptor for Rx channel 1.
    +                IN_DSCR_ERR_CH1_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when detecting outlink descriptor error, including owner error, the second and third word error of outlink descriptor for Tx channel 1.
    +                OUT_DSCR_ERR_CH1_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when Rx buffer pointed by inlink is full and receiving data is not completed, but there is no more inlink for Rx channel 1.
    +                IN_DSCR_EMPTY_CH1_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when data corresponding a outlink (includes one link descriptor or few link descriptors) is transmitted out for Tx channel 1.
    +                OUT_TOTAL_EOF_CH1_INT_RAW: u1,
    +                ///  This raw interrupt bit turns to high level when level 1 fifo of Rx channel 1 is overflow.
    +                INFIFO_OVF_CH1_INT_RAW: u1,
    +                ///  This raw interrupt bit turns to high level when level 1 fifo of Rx channel 1 is underflow.
    +                INFIFO_UDF_CH1_INT_RAW: u1,
    +                ///  This raw interrupt bit turns to high level when level 1 fifo of Tx channel 1 is overflow.
    +                OUTFIFO_OVF_CH1_INT_RAW: u1,
    +                ///  This raw interrupt bit turns to high level when level 1 fifo of Tx channel 1 is underflow.
    +                OUTFIFO_UDF_CH1_INT_RAW: u1,
    +                padding: u19,
    +            }),
    +            ///  DMA_INT_ST_CH1_REG.
    +            INT_ST_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  The raw interrupt status bit for the IN_DONE_CH_INT interrupt.
    +                IN_DONE_CH1_INT_ST: u1,
    +                ///  The raw interrupt status bit for the IN_SUC_EOF_CH_INT interrupt.
    +                IN_SUC_EOF_CH1_INT_ST: u1,
    +                ///  The raw interrupt status bit for the IN_ERR_EOF_CH_INT interrupt.
    +                IN_ERR_EOF_CH1_INT_ST: u1,
    +                ///  The raw interrupt status bit for the OUT_DONE_CH_INT interrupt.
    +                OUT_DONE_CH1_INT_ST: u1,
    +                ///  The raw interrupt status bit for the OUT_EOF_CH_INT interrupt.
    +                OUT_EOF_CH1_INT_ST: u1,
    +                ///  The raw interrupt status bit for the IN_DSCR_ERR_CH_INT interrupt.
    +                IN_DSCR_ERR_CH1_INT_ST: u1,
    +                ///  The raw interrupt status bit for the OUT_DSCR_ERR_CH_INT interrupt.
    +                OUT_DSCR_ERR_CH1_INT_ST: u1,
    +                ///  The raw interrupt status bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    +                IN_DSCR_EMPTY_CH1_INT_ST: u1,
    +                ///  The raw interrupt status bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    +                OUT_TOTAL_EOF_CH1_INT_ST: u1,
    +                ///  The raw interrupt status bit for the INFIFO_OVF_L1_CH_INT interrupt.
    +                INFIFO_OVF_CH1_INT_ST: u1,
    +                ///  The raw interrupt status bit for the INFIFO_UDF_L1_CH_INT interrupt.
    +                INFIFO_UDF_CH1_INT_ST: u1,
    +                ///  The raw interrupt status bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    +                OUTFIFO_OVF_CH1_INT_ST: u1,
    +                ///  The raw interrupt status bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    +                OUTFIFO_UDF_CH1_INT_ST: u1,
    +                padding: u19,
    +            }),
    +            ///  DMA_INT_ENA_CH1_REG.
    +            INT_ENA_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  The interrupt enable bit for the IN_DONE_CH_INT interrupt.
    +                IN_DONE_CH1_INT_ENA: u1,
    +                ///  The interrupt enable bit for the IN_SUC_EOF_CH_INT interrupt.
    +                IN_SUC_EOF_CH1_INT_ENA: u1,
    +                ///  The interrupt enable bit for the IN_ERR_EOF_CH_INT interrupt.
    +                IN_ERR_EOF_CH1_INT_ENA: u1,
    +                ///  The interrupt enable bit for the OUT_DONE_CH_INT interrupt.
    +                OUT_DONE_CH1_INT_ENA: u1,
    +                ///  The interrupt enable bit for the OUT_EOF_CH_INT interrupt.
    +                OUT_EOF_CH1_INT_ENA: u1,
    +                ///  The interrupt enable bit for the IN_DSCR_ERR_CH_INT interrupt.
    +                IN_DSCR_ERR_CH1_INT_ENA: u1,
    +                ///  The interrupt enable bit for the OUT_DSCR_ERR_CH_INT interrupt.
    +                OUT_DSCR_ERR_CH1_INT_ENA: u1,
    +                ///  The interrupt enable bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    +                IN_DSCR_EMPTY_CH1_INT_ENA: u1,
    +                ///  The interrupt enable bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    +                OUT_TOTAL_EOF_CH1_INT_ENA: u1,
    +                ///  The interrupt enable bit for the INFIFO_OVF_L1_CH_INT interrupt.
    +                INFIFO_OVF_CH1_INT_ENA: u1,
    +                ///  The interrupt enable bit for the INFIFO_UDF_L1_CH_INT interrupt.
    +                INFIFO_UDF_CH1_INT_ENA: u1,
    +                ///  The interrupt enable bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    +                OUTFIFO_OVF_CH1_INT_ENA: u1,
    +                ///  The interrupt enable bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    +                OUTFIFO_UDF_CH1_INT_ENA: u1,
    +                padding: u19,
    +            }),
    +            ///  DMA_INT_CLR_CH1_REG.
    +            INT_CLR_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to clear the IN_DONE_CH_INT interrupt.
    +                IN_DONE_CH1_INT_CLR: u1,
    +                ///  Set this bit to clear the IN_SUC_EOF_CH_INT interrupt.
    +                IN_SUC_EOF_CH1_INT_CLR: u1,
    +                ///  Set this bit to clear the IN_ERR_EOF_CH_INT interrupt.
    +                IN_ERR_EOF_CH1_INT_CLR: u1,
    +                ///  Set this bit to clear the OUT_DONE_CH_INT interrupt.
    +                OUT_DONE_CH1_INT_CLR: u1,
    +                ///  Set this bit to clear the OUT_EOF_CH_INT interrupt.
    +                OUT_EOF_CH1_INT_CLR: u1,
    +                ///  Set this bit to clear the IN_DSCR_ERR_CH_INT interrupt.
    +                IN_DSCR_ERR_CH1_INT_CLR: u1,
    +                ///  Set this bit to clear the OUT_DSCR_ERR_CH_INT interrupt.
    +                OUT_DSCR_ERR_CH1_INT_CLR: u1,
    +                ///  Set this bit to clear the IN_DSCR_EMPTY_CH_INT interrupt.
    +                IN_DSCR_EMPTY_CH1_INT_CLR: u1,
    +                ///  Set this bit to clear the OUT_TOTAL_EOF_CH_INT interrupt.
    +                OUT_TOTAL_EOF_CH1_INT_CLR: u1,
    +                ///  Set this bit to clear the INFIFO_OVF_L1_CH_INT interrupt.
    +                INFIFO_OVF_CH1_INT_CLR: u1,
    +                ///  Set this bit to clear the INFIFO_UDF_L1_CH_INT interrupt.
    +                INFIFO_UDF_CH1_INT_CLR: u1,
    +                ///  Set this bit to clear the OUTFIFO_OVF_L1_CH_INT interrupt.
    +                OUTFIFO_OVF_CH1_INT_CLR: u1,
    +                ///  Set this bit to clear the OUTFIFO_UDF_L1_CH_INT interrupt.
    +                OUTFIFO_UDF_CH1_INT_CLR: u1,
    +                padding: u19,
    +            }),
    +            ///  DMA_INT_RAW_CH2_REG.
    +            INT_RAW_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 2.
    +                IN_DONE_CH2_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 2. For UHCI0, the raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received and no data error is detected for Rx channel 2.
    +                IN_SUC_EOF_CH2_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when data error is detected only in the case that the peripheral is UHCI0 for Rx channel 2. For other peripherals, this raw interrupt is reserved.
    +                IN_ERR_EOF_CH2_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been transmitted to peripherals for Tx channel 2.
    +                OUT_DONE_CH2_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been read from memory for Tx channel 2.
    +                OUT_EOF_CH2_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when detecting inlink descriptor error, including owner error, the second and third word error of inlink descriptor for Rx channel 2.
    +                IN_DSCR_ERR_CH2_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when detecting outlink descriptor error, including owner error, the second and third word error of outlink descriptor for Tx channel 2.
    +                OUT_DSCR_ERR_CH2_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when Rx buffer pointed by inlink is full and receiving data is not completed, but there is no more inlink for Rx channel 2.
    +                IN_DSCR_EMPTY_CH2_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when data corresponding a outlink (includes one link descriptor or few link descriptors) is transmitted out for Tx channel 2.
    +                OUT_TOTAL_EOF_CH2_INT_RAW: u1,
    +                ///  This raw interrupt bit turns to high level when level 1 fifo of Rx channel 2 is overflow.
    +                INFIFO_OVF_CH2_INT_RAW: u1,
    +                ///  This raw interrupt bit turns to high level when level 1 fifo of Rx channel 2 is underflow.
    +                INFIFO_UDF_CH2_INT_RAW: u1,
    +                ///  This raw interrupt bit turns to high level when level 1 fifo of Tx channel 2 is overflow.
    +                OUTFIFO_OVF_CH2_INT_RAW: u1,
    +                ///  This raw interrupt bit turns to high level when level 1 fifo of Tx channel 2 is underflow.
    +                OUTFIFO_UDF_CH2_INT_RAW: u1,
    +                padding: u19,
    +            }),
    +            ///  DMA_INT_ST_CH2_REG.
    +            INT_ST_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  The raw interrupt status bit for the IN_DONE_CH_INT interrupt.
    +                IN_DONE_CH2_INT_ST: u1,
    +                ///  The raw interrupt status bit for the IN_SUC_EOF_CH_INT interrupt.
    +                IN_SUC_EOF_CH2_INT_ST: u1,
    +                ///  The raw interrupt status bit for the IN_ERR_EOF_CH_INT interrupt.
    +                IN_ERR_EOF_CH2_INT_ST: u1,
    +                ///  The raw interrupt status bit for the OUT_DONE_CH_INT interrupt.
    +                OUT_DONE_CH2_INT_ST: u1,
    +                ///  The raw interrupt status bit for the OUT_EOF_CH_INT interrupt.
    +                OUT_EOF_CH2_INT_ST: u1,
    +                ///  The raw interrupt status bit for the IN_DSCR_ERR_CH_INT interrupt.
    +                IN_DSCR_ERR_CH2_INT_ST: u1,
    +                ///  The raw interrupt status bit for the OUT_DSCR_ERR_CH_INT interrupt.
    +                OUT_DSCR_ERR_CH2_INT_ST: u1,
    +                ///  The raw interrupt status bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    +                IN_DSCR_EMPTY_CH2_INT_ST: u1,
    +                ///  The raw interrupt status bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    +                OUT_TOTAL_EOF_CH2_INT_ST: u1,
    +                ///  The raw interrupt status bit for the INFIFO_OVF_L1_CH_INT interrupt.
    +                INFIFO_OVF_CH2_INT_ST: u1,
    +                ///  The raw interrupt status bit for the INFIFO_UDF_L1_CH_INT interrupt.
    +                INFIFO_UDF_CH2_INT_ST: u1,
    +                ///  The raw interrupt status bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    +                OUTFIFO_OVF_CH2_INT_ST: u1,
    +                ///  The raw interrupt status bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    +                OUTFIFO_UDF_CH2_INT_ST: u1,
    +                padding: u19,
    +            }),
    +            ///  DMA_INT_ENA_CH2_REG.
    +            INT_ENA_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  The interrupt enable bit for the IN_DONE_CH_INT interrupt.
    +                IN_DONE_CH2_INT_ENA: u1,
    +                ///  The interrupt enable bit for the IN_SUC_EOF_CH_INT interrupt.
    +                IN_SUC_EOF_CH2_INT_ENA: u1,
    +                ///  The interrupt enable bit for the IN_ERR_EOF_CH_INT interrupt.
    +                IN_ERR_EOF_CH2_INT_ENA: u1,
    +                ///  The interrupt enable bit for the OUT_DONE_CH_INT interrupt.
    +                OUT_DONE_CH2_INT_ENA: u1,
    +                ///  The interrupt enable bit for the OUT_EOF_CH_INT interrupt.
    +                OUT_EOF_CH2_INT_ENA: u1,
    +                ///  The interrupt enable bit for the IN_DSCR_ERR_CH_INT interrupt.
    +                IN_DSCR_ERR_CH2_INT_ENA: u1,
    +                ///  The interrupt enable bit for the OUT_DSCR_ERR_CH_INT interrupt.
    +                OUT_DSCR_ERR_CH2_INT_ENA: u1,
    +                ///  The interrupt enable bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    +                IN_DSCR_EMPTY_CH2_INT_ENA: u1,
    +                ///  The interrupt enable bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    +                OUT_TOTAL_EOF_CH2_INT_ENA: u1,
    +                ///  The interrupt enable bit for the INFIFO_OVF_L1_CH_INT interrupt.
    +                INFIFO_OVF_CH2_INT_ENA: u1,
    +                ///  The interrupt enable bit for the INFIFO_UDF_L1_CH_INT interrupt.
    +                INFIFO_UDF_CH2_INT_ENA: u1,
    +                ///  The interrupt enable bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    +                OUTFIFO_OVF_CH2_INT_ENA: u1,
    +                ///  The interrupt enable bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    +                OUTFIFO_UDF_CH2_INT_ENA: u1,
    +                padding: u19,
    +            }),
    +            ///  DMA_INT_CLR_CH2_REG.
    +            INT_CLR_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to clear the IN_DONE_CH_INT interrupt.
    +                IN_DONE_CH2_INT_CLR: u1,
    +                ///  Set this bit to clear the IN_SUC_EOF_CH_INT interrupt.
    +                IN_SUC_EOF_CH2_INT_CLR: u1,
    +                ///  Set this bit to clear the IN_ERR_EOF_CH_INT interrupt.
    +                IN_ERR_EOF_CH2_INT_CLR: u1,
    +                ///  Set this bit to clear the OUT_DONE_CH_INT interrupt.
    +                OUT_DONE_CH2_INT_CLR: u1,
    +                ///  Set this bit to clear the OUT_EOF_CH_INT interrupt.
    +                OUT_EOF_CH2_INT_CLR: u1,
    +                ///  Set this bit to clear the IN_DSCR_ERR_CH_INT interrupt.
    +                IN_DSCR_ERR_CH2_INT_CLR: u1,
    +                ///  Set this bit to clear the OUT_DSCR_ERR_CH_INT interrupt.
    +                OUT_DSCR_ERR_CH2_INT_CLR: u1,
    +                ///  Set this bit to clear the IN_DSCR_EMPTY_CH_INT interrupt.
    +                IN_DSCR_EMPTY_CH2_INT_CLR: u1,
    +                ///  Set this bit to clear the OUT_TOTAL_EOF_CH_INT interrupt.
    +                OUT_TOTAL_EOF_CH2_INT_CLR: u1,
    +                ///  Set this bit to clear the INFIFO_OVF_L1_CH_INT interrupt.
    +                INFIFO_OVF_CH2_INT_CLR: u1,
    +                ///  Set this bit to clear the INFIFO_UDF_L1_CH_INT interrupt.
    +                INFIFO_UDF_CH2_INT_CLR: u1,
    +                ///  Set this bit to clear the OUTFIFO_OVF_L1_CH_INT interrupt.
    +                OUTFIFO_OVF_CH2_INT_CLR: u1,
    +                ///  Set this bit to clear the OUTFIFO_UDF_L1_CH_INT interrupt.
    +                OUTFIFO_UDF_CH2_INT_CLR: u1,
    +                padding: u19,
    +            }),
    +            reserved64: [16]u8,
    +            ///  DMA_AHB_TEST_REG.
    +            AHB_TEST: mmio.Mmio(packed struct(u32) {
    +                ///  reserved
    +                AHB_TESTMODE: u3,
    +                reserved4: u1,
    +                ///  reserved
    +                AHB_TESTADDR: u2,
    +                padding: u26,
    +            }),
    +            ///  DMA_MISC_CONF_REG.
    +            MISC_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit, then clear this bit to reset the internal ahb FSM.
    +                AHBM_RST_INTER: u1,
    +                reserved2: u1,
    +                ///  Set this bit to disable priority arbitration function.
    +                ARB_PRI_DIS: u1,
    +                ///  reg_clk_en
    +                CLK_EN: u1,
    +                padding: u28,
    +            }),
    +            ///  DMA_DATE_REG.
    +            DATE: mmio.Mmio(packed struct(u32) {
    +                ///  register version.
    +                DATE: u32,
    +            }),
    +            reserved112: [36]u8,
    +            ///  DMA_IN_CONF0_CH0_REG.
    +            IN_CONF0_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  This bit is used to reset DMA channel 0 Rx FSM and Rx FIFO pointer.
    +                IN_RST_CH0: u1,
    +                ///  reserved
    +                IN_LOOP_TEST_CH0: u1,
    +                ///  Set this bit to 1 to enable INCR burst transfer for Rx channel 0 reading link descriptor when accessing internal SRAM.
    +                INDSCR_BURST_EN_CH0: u1,
    +                ///  Set this bit to 1 to enable INCR burst transfer for Rx channel 0 receiving data when accessing internal SRAM.
    +                IN_DATA_BURST_EN_CH0: u1,
    +                ///  Set this bit 1 to enable automatic transmitting data from memory to memory via DMA.
    +                MEM_TRANS_EN_CH0: u1,
    +                padding: u27,
    +            }),
    +            ///  DMA_IN_CONF1_CH0_REG.
    +            IN_CONF1_CH0: mmio.Mmio(packed struct(u32) {
    +                reserved12: u12,
    +                ///  Set this bit to enable checking the owner attribute of the link descriptor.
    +                IN_CHECK_OWNER_CH0: u1,
    +                padding: u19,
    +            }),
    +            ///  DMA_INFIFO_STATUS_CH0_REG.
    +            INFIFO_STATUS_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  L1 Rx FIFO full signal for Rx channel 0.
    +                INFIFO_FULL_CH0: u1,
    +                ///  L1 Rx FIFO empty signal for Rx channel 0.
    +                INFIFO_EMPTY_CH0: u1,
    +                ///  The register stores the byte number of the data in L1 Rx FIFO for Rx channel 0.
    +                INFIFO_CNT_CH0: u6,
    +                reserved23: u15,
    +                ///  reserved
    +                IN_REMAIN_UNDER_1B_CH0: u1,
    +                ///  reserved
    +                IN_REMAIN_UNDER_2B_CH0: u1,
    +                ///  reserved
    +                IN_REMAIN_UNDER_3B_CH0: u1,
    +                ///  reserved
    +                IN_REMAIN_UNDER_4B_CH0: u1,
    +                ///  reserved
    +                IN_BUF_HUNGRY_CH0: u1,
    +                padding: u4,
    +            }),
    +            ///  DMA_IN_POP_CH0_REG.
    +            IN_POP_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the data popping from DMA FIFO.
    +                INFIFO_RDATA_CH0: u12,
    +                ///  Set this bit to pop data from DMA FIFO.
    +                INFIFO_POP_CH0: u1,
    +                padding: u19,
    +            }),
    +            ///  DMA_IN_LINK_CH0_REG.
    +            IN_LINK_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the 20 least significant bits of the first inlink descriptor's address.
    +                INLINK_ADDR_CH0: u20,
    +                ///  Set this bit to return to current inlink descriptor's address, when there are some errors in current receiving data.
    +                INLINK_AUTO_RET_CH0: u1,
    +                ///  Set this bit to stop dealing with the inlink descriptors.
    +                INLINK_STOP_CH0: u1,
    +                ///  Set this bit to start dealing with the inlink descriptors.
    +                INLINK_START_CH0: u1,
    +                ///  Set this bit to mount a new inlink descriptor.
    +                INLINK_RESTART_CH0: u1,
    +                ///  1: the inlink descriptor's FSM is in idle state. 0: the inlink descriptor's FSM is working.
    +                INLINK_PARK_CH0: u1,
    +                padding: u7,
    +            }),
    +            ///  DMA_IN_STATE_CH0_REG.
    +            IN_STATE_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the current inlink descriptor's address.
    +                INLINK_DSCR_ADDR_CH0: u18,
    +                ///  reserved
    +                IN_DSCR_STATE_CH0: u2,
    +                ///  reserved
    +                IN_STATE_CH0: u3,
    +                padding: u9,
    +            }),
    +            ///  DMA_IN_SUC_EOF_DES_ADDR_CH0_REG.
    +            IN_SUC_EOF_DES_ADDR_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the address of the inlink descriptor when the EOF bit in this descriptor is 1.
    +                IN_SUC_EOF_DES_ADDR_CH0: u32,
    +            }),
    +            ///  DMA_IN_ERR_EOF_DES_ADDR_CH0_REG.
    +            IN_ERR_EOF_DES_ADDR_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the address of the inlink descriptor when there are some errors in current receiving data. Only used when peripheral is UHCI0.
    +                IN_ERR_EOF_DES_ADDR_CH0: u32,
    +            }),
    +            ///  DMA_IN_DSCR_CH0_REG.
    +            IN_DSCR_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  The address of the current inlink descriptor x.
    +                INLINK_DSCR_CH0: u32,
    +            }),
    +            ///  DMA_IN_DSCR_BF0_CH0_REG.
    +            IN_DSCR_BF0_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  The address of the last inlink descriptor x-1.
    +                INLINK_DSCR_BF0_CH0: u32,
    +            }),
    +            ///  DMA_IN_DSCR_BF1_CH0_REG.
    +            IN_DSCR_BF1_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  The address of the second-to-last inlink descriptor x-2.
    +                INLINK_DSCR_BF1_CH0: u32,
    +            }),
    +            ///  DMA_IN_PRI_CH0_REG.
    +            IN_PRI_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  The priority of Rx channel 0. The larger of the value, the higher of the priority.
    +                RX_PRI_CH0: u4,
    +                padding: u28,
    +            }),
    +            ///  DMA_IN_PERI_SEL_CH0_REG.
    +            IN_PERI_SEL_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  This register is used to select peripheral for Rx channel 0. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.
    +                PERI_IN_SEL_CH0: u6,
    +                padding: u26,
    +            }),
    +            reserved208: [44]u8,
    +            ///  DMA_OUT_CONF0_CH0_REG.
    +            OUT_CONF0_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  This bit is used to reset DMA channel 0 Tx FSM and Tx FIFO pointer.
    +                OUT_RST_CH0: u1,
    +                ///  reserved
    +                OUT_LOOP_TEST_CH0: u1,
    +                ///  Set this bit to enable automatic outlink-writeback when all the data in tx buffer has been transmitted.
    +                OUT_AUTO_WRBACK_CH0: u1,
    +                ///  EOF flag generation mode when transmitting data. 1: EOF flag for Tx channel 0 is generated when data need to transmit has been popped from FIFO in DMA
    +                OUT_EOF_MODE_CH0: u1,
    +                ///  Set this bit to 1 to enable INCR burst transfer for Tx channel 0 reading link descriptor when accessing internal SRAM.
    +                OUTDSCR_BURST_EN_CH0: u1,
    +                ///  Set this bit to 1 to enable INCR burst transfer for Tx channel 0 transmitting data when accessing internal SRAM.
    +                OUT_DATA_BURST_EN_CH0: u1,
    +                padding: u26,
    +            }),
    +            ///  DMA_OUT_CONF1_CH0_REG.
    +            OUT_CONF1_CH0: mmio.Mmio(packed struct(u32) {
    +                reserved12: u12,
    +                ///  Set this bit to enable checking the owner attribute of the link descriptor.
    +                OUT_CHECK_OWNER_CH0: u1,
    +                padding: u19,
    +            }),
    +            ///  DMA_OUTFIFO_STATUS_CH0_REG.
    +            OUTFIFO_STATUS_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  L1 Tx FIFO full signal for Tx channel 0.
    +                OUTFIFO_FULL_CH0: u1,
    +                ///  L1 Tx FIFO empty signal for Tx channel 0.
    +                OUTFIFO_EMPTY_CH0: u1,
    +                ///  The register stores the byte number of the data in L1 Tx FIFO for Tx channel 0.
    +                OUTFIFO_CNT_CH0: u6,
    +                reserved23: u15,
    +                ///  reserved
    +                OUT_REMAIN_UNDER_1B_CH0: u1,
    +                ///  reserved
    +                OUT_REMAIN_UNDER_2B_CH0: u1,
    +                ///  reserved
    +                OUT_REMAIN_UNDER_3B_CH0: u1,
    +                ///  reserved
    +                OUT_REMAIN_UNDER_4B_CH0: u1,
    +                padding: u5,
    +            }),
    +            ///  DMA_OUT_PUSH_CH0_REG.
    +            OUT_PUSH_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the data that need to be pushed into DMA FIFO.
    +                OUTFIFO_WDATA_CH0: u9,
    +                ///  Set this bit to push data into DMA FIFO.
    +                OUTFIFO_PUSH_CH0: u1,
    +                padding: u22,
    +            }),
    +            ///  DMA_OUT_LINK_CH0_REG.
    +            OUT_LINK_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the 20 least significant bits of the first outlink descriptor's address.
    +                OUTLINK_ADDR_CH0: u20,
    +                ///  Set this bit to stop dealing with the outlink descriptors.
    +                OUTLINK_STOP_CH0: u1,
    +                ///  Set this bit to start dealing with the outlink descriptors.
    +                OUTLINK_START_CH0: u1,
    +                ///  Set this bit to restart a new outlink from the last address.
    +                OUTLINK_RESTART_CH0: u1,
    +                ///  1: the outlink descriptor's FSM is in idle state. 0: the outlink descriptor's FSM is working.
    +                OUTLINK_PARK_CH0: u1,
    +                padding: u8,
    +            }),
    +            ///  DMA_OUT_STATE_CH0_REG.
    +            OUT_STATE_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the current outlink descriptor's address.
    +                OUTLINK_DSCR_ADDR_CH0: u18,
    +                ///  reserved
    +                OUT_DSCR_STATE_CH0: u2,
    +                ///  reserved
    +                OUT_STATE_CH0: u3,
    +                padding: u9,
    +            }),
    +            ///  DMA_OUT_EOF_DES_ADDR_CH0_REG.
    +            OUT_EOF_DES_ADDR_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the address of the outlink descriptor when the EOF bit in this descriptor is 1.
    +                OUT_EOF_DES_ADDR_CH0: u32,
    +            }),
    +            ///  DMA_OUT_EOF_BFR_DES_ADDR_CH0_REG.
    +            OUT_EOF_BFR_DES_ADDR_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the address of the outlink descriptor before the last outlink descriptor.
    +                OUT_EOF_BFR_DES_ADDR_CH0: u32,
    +            }),
    +            ///  DMA_OUT_DSCR_CH0_REG.
    +            OUT_DSCR_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  The address of the current outlink descriptor y.
    +                OUTLINK_DSCR_CH0: u32,
    +            }),
    +            ///  DMA_OUT_DSCR_BF0_CH0_REG.
    +            OUT_DSCR_BF0_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  The address of the last outlink descriptor y-1.
    +                OUTLINK_DSCR_BF0_CH0: u32,
    +            }),
    +            ///  DMA_OUT_DSCR_BF1_CH0_REG.
    +            OUT_DSCR_BF1_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  The address of the second-to-last inlink descriptor x-2.
    +                OUTLINK_DSCR_BF1_CH0: u32,
    +            }),
    +            ///  DMA_OUT_PRI_CH0_REG.
    +            OUT_PRI_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  The priority of Tx channel 0. The larger of the value, the higher of the priority.
    +                TX_PRI_CH0: u4,
    +                padding: u28,
    +            }),
    +            ///  DMA_OUT_PERI_SEL_CH0_REG.
    +            OUT_PERI_SEL_CH0: mmio.Mmio(packed struct(u32) {
    +                ///  This register is used to select peripheral for Tx channel 0. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.
    +                PERI_OUT_SEL_CH0: u6,
    +                padding: u26,
    +            }),
    +            reserved304: [44]u8,
    +            ///  DMA_IN_CONF0_CH1_REG.
    +            IN_CONF0_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  This bit is used to reset DMA channel 1 Rx FSM and Rx FIFO pointer.
    +                IN_RST_CH1: u1,
    +                ///  reserved
    +                IN_LOOP_TEST_CH1: u1,
    +                ///  Set this bit to 1 to enable INCR burst transfer for Rx channel 1 reading link descriptor when accessing internal SRAM.
    +                INDSCR_BURST_EN_CH1: u1,
    +                ///  Set this bit to 1 to enable INCR burst transfer for Rx channel 1 receiving data when accessing internal SRAM.
    +                IN_DATA_BURST_EN_CH1: u1,
    +                ///  Set this bit 1 to enable automatic transmitting data from memory to memory via DMA.
    +                MEM_TRANS_EN_CH1: u1,
    +                padding: u27,
    +            }),
    +            ///  DMA_IN_CONF1_CH1_REG.
    +            IN_CONF1_CH1: mmio.Mmio(packed struct(u32) {
    +                reserved12: u12,
    +                ///  Set this bit to enable checking the owner attribute of the link descriptor.
    +                IN_CHECK_OWNER_CH1: u1,
    +                padding: u19,
    +            }),
    +            ///  DMA_INFIFO_STATUS_CH1_REG.
    +            INFIFO_STATUS_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  L1 Rx FIFO full signal for Rx channel 1.
    +                INFIFO_FULL_CH1: u1,
    +                ///  L1 Rx FIFO empty signal for Rx channel 1.
    +                INFIFO_EMPTY_CH1: u1,
    +                ///  The register stores the byte number of the data in L1 Rx FIFO for Rx channel 1.
    +                INFIFO_CNT_CH1: u6,
    +                reserved23: u15,
    +                ///  reserved
    +                IN_REMAIN_UNDER_1B_CH1: u1,
    +                ///  reserved
    +                IN_REMAIN_UNDER_2B_CH1: u1,
    +                ///  reserved
    +                IN_REMAIN_UNDER_3B_CH1: u1,
    +                ///  reserved
    +                IN_REMAIN_UNDER_4B_CH1: u1,
    +                ///  reserved
    +                IN_BUF_HUNGRY_CH1: u1,
    +                padding: u4,
    +            }),
    +            ///  DMA_IN_POP_CH1_REG.
    +            IN_POP_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the data popping from DMA FIFO.
    +                INFIFO_RDATA_CH1: u12,
    +                ///  Set this bit to pop data from DMA FIFO.
    +                INFIFO_POP_CH1: u1,
    +                padding: u19,
    +            }),
    +            ///  DMA_IN_LINK_CH1_REG.
    +            IN_LINK_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the 20 least significant bits of the first inlink descriptor's address.
    +                INLINK_ADDR_CH1: u20,
    +                ///  Set this bit to return to current inlink descriptor's address, when there are some errors in current receiving data.
    +                INLINK_AUTO_RET_CH1: u1,
    +                ///  Set this bit to stop dealing with the inlink descriptors.
    +                INLINK_STOP_CH1: u1,
    +                ///  Set this bit to start dealing with the inlink descriptors.
    +                INLINK_START_CH1: u1,
    +                ///  Set this bit to mount a new inlink descriptor.
    +                INLINK_RESTART_CH1: u1,
    +                ///  1: the inlink descriptor's FSM is in idle state. 0: the inlink descriptor's FSM is working.
    +                INLINK_PARK_CH1: u1,
    +                padding: u7,
    +            }),
    +            ///  DMA_IN_STATE_CH1_REG.
    +            IN_STATE_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the current inlink descriptor's address.
    +                INLINK_DSCR_ADDR_CH1: u18,
    +                ///  reserved
    +                IN_DSCR_STATE_CH1: u2,
    +                ///  reserved
    +                IN_STATE_CH1: u3,
    +                padding: u9,
    +            }),
    +            ///  DMA_IN_SUC_EOF_DES_ADDR_CH1_REG.
    +            IN_SUC_EOF_DES_ADDR_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the address of the inlink descriptor when the EOF bit in this descriptor is 1.
    +                IN_SUC_EOF_DES_ADDR_CH1: u32,
    +            }),
    +            ///  DMA_IN_ERR_EOF_DES_ADDR_CH1_REG.
    +            IN_ERR_EOF_DES_ADDR_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the address of the inlink descriptor when there are some errors in current receiving data. Only used when peripheral is UHCI0.
    +                IN_ERR_EOF_DES_ADDR_CH1: u32,
    +            }),
    +            ///  DMA_IN_DSCR_CH1_REG.
    +            IN_DSCR_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  The address of the current inlink descriptor x.
    +                INLINK_DSCR_CH1: u32,
    +            }),
    +            ///  DMA_IN_DSCR_BF0_CH1_REG.
    +            IN_DSCR_BF0_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  The address of the last inlink descriptor x-1.
    +                INLINK_DSCR_BF0_CH1: u32,
    +            }),
    +            ///  DMA_IN_DSCR_BF1_CH1_REG.
    +            IN_DSCR_BF1_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  The address of the second-to-last inlink descriptor x-2.
    +                INLINK_DSCR_BF1_CH1: u32,
    +            }),
    +            ///  DMA_IN_PRI_CH1_REG.
    +            IN_PRI_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  The priority of Rx channel 1. The larger of the value, the higher of the priority.
    +                RX_PRI_CH1: u4,
    +                padding: u28,
    +            }),
    +            ///  DMA_IN_PERI_SEL_CH1_REG.
    +            IN_PERI_SEL_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  This register is used to select peripheral for Rx channel 1. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.
    +                PERI_IN_SEL_CH1: u6,
    +                padding: u26,
    +            }),
    +            reserved400: [44]u8,
    +            ///  DMA_OUT_CONF0_CH1_REG.
    +            OUT_CONF0_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  This bit is used to reset DMA channel 1 Tx FSM and Tx FIFO pointer.
    +                OUT_RST_CH1: u1,
    +                ///  reserved
    +                OUT_LOOP_TEST_CH1: u1,
    +                ///  Set this bit to enable automatic outlink-writeback when all the data in tx buffer has been transmitted.
    +                OUT_AUTO_WRBACK_CH1: u1,
    +                ///  EOF flag generation mode when transmitting data. 1: EOF flag for Tx channel 1 is generated when data need to transmit has been popped from FIFO in DMA
    +                OUT_EOF_MODE_CH1: u1,
    +                ///  Set this bit to 1 to enable INCR burst transfer for Tx channel 1 reading link descriptor when accessing internal SRAM.
    +                OUTDSCR_BURST_EN_CH1: u1,
    +                ///  Set this bit to 1 to enable INCR burst transfer for Tx channel 1 transmitting data when accessing internal SRAM.
    +                OUT_DATA_BURST_EN_CH1: u1,
    +                padding: u26,
    +            }),
    +            ///  DMA_OUT_CONF1_CH1_REG.
    +            OUT_CONF1_CH1: mmio.Mmio(packed struct(u32) {
    +                reserved12: u12,
    +                ///  Set this bit to enable checking the owner attribute of the link descriptor.
    +                OUT_CHECK_OWNER_CH1: u1,
    +                padding: u19,
    +            }),
    +            ///  DMA_OUTFIFO_STATUS_CH1_REG.
    +            OUTFIFO_STATUS_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  L1 Tx FIFO full signal for Tx channel 1.
    +                OUTFIFO_FULL_CH1: u1,
    +                ///  L1 Tx FIFO empty signal for Tx channel 1.
    +                OUTFIFO_EMPTY_CH1: u1,
    +                ///  The register stores the byte number of the data in L1 Tx FIFO for Tx channel 1.
    +                OUTFIFO_CNT_CH1: u6,
    +                reserved23: u15,
    +                ///  reserved
    +                OUT_REMAIN_UNDER_1B_CH1: u1,
    +                ///  reserved
    +                OUT_REMAIN_UNDER_2B_CH1: u1,
    +                ///  reserved
    +                OUT_REMAIN_UNDER_3B_CH1: u1,
    +                ///  reserved
    +                OUT_REMAIN_UNDER_4B_CH1: u1,
    +                padding: u5,
    +            }),
    +            ///  DMA_OUT_PUSH_CH1_REG.
    +            OUT_PUSH_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the data that need to be pushed into DMA FIFO.
    +                OUTFIFO_WDATA_CH1: u9,
    +                ///  Set this bit to push data into DMA FIFO.
    +                OUTFIFO_PUSH_CH1: u1,
    +                padding: u22,
    +            }),
    +            ///  DMA_OUT_LINK_CH1_REG.
    +            OUT_LINK_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the 20 least significant bits of the first outlink descriptor's address.
    +                OUTLINK_ADDR_CH1: u20,
    +                ///  Set this bit to stop dealing with the outlink descriptors.
    +                OUTLINK_STOP_CH1: u1,
    +                ///  Set this bit to start dealing with the outlink descriptors.
    +                OUTLINK_START_CH1: u1,
    +                ///  Set this bit to restart a new outlink from the last address.
    +                OUTLINK_RESTART_CH1: u1,
    +                ///  1: the outlink descriptor's FSM is in idle state. 0: the outlink descriptor's FSM is working.
    +                OUTLINK_PARK_CH1: u1,
    +                padding: u8,
    +            }),
    +            ///  DMA_OUT_STATE_CH1_REG.
    +            OUT_STATE_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the current outlink descriptor's address.
    +                OUTLINK_DSCR_ADDR_CH1: u18,
    +                ///  reserved
    +                OUT_DSCR_STATE_CH1: u2,
    +                ///  reserved
    +                OUT_STATE_CH1: u3,
    +                padding: u9,
    +            }),
    +            ///  DMA_OUT_EOF_DES_ADDR_CH1_REG.
    +            OUT_EOF_DES_ADDR_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the address of the outlink descriptor when the EOF bit in this descriptor is 1.
    +                OUT_EOF_DES_ADDR_CH1: u32,
    +            }),
    +            ///  DMA_OUT_EOF_BFR_DES_ADDR_CH1_REG.
    +            OUT_EOF_BFR_DES_ADDR_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the address of the outlink descriptor before the last outlink descriptor.
    +                OUT_EOF_BFR_DES_ADDR_CH1: u32,
    +            }),
    +            ///  DMA_OUT_DSCR_CH1_REG.
    +            OUT_DSCR_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  The address of the current outlink descriptor y.
    +                OUTLINK_DSCR_CH1: u32,
    +            }),
    +            ///  DMA_OUT_DSCR_BF0_CH1_REG.
    +            OUT_DSCR_BF0_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  The address of the last outlink descriptor y-1.
    +                OUTLINK_DSCR_BF0_CH1: u32,
    +            }),
    +            ///  DMA_OUT_DSCR_BF1_CH1_REG.
    +            OUT_DSCR_BF1_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  The address of the second-to-last inlink descriptor x-2.
    +                OUTLINK_DSCR_BF1_CH1: u32,
    +            }),
    +            ///  DMA_OUT_PRI_CH1_REG.
    +            OUT_PRI_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  The priority of Tx channel 1. The larger of the value, the higher of the priority.
    +                TX_PRI_CH1: u4,
    +                padding: u28,
    +            }),
    +            ///  DMA_OUT_PERI_SEL_CH1_REG.
    +            OUT_PERI_SEL_CH1: mmio.Mmio(packed struct(u32) {
    +                ///  This register is used to select peripheral for Tx channel 1. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.
    +                PERI_OUT_SEL_CH1: u6,
    +                padding: u26,
    +            }),
    +            reserved496: [44]u8,
    +            ///  DMA_IN_CONF0_CH2_REG.
    +            IN_CONF0_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  This bit is used to reset DMA channel 2 Rx FSM and Rx FIFO pointer.
    +                IN_RST_CH2: u1,
    +                ///  reserved
    +                IN_LOOP_TEST_CH2: u1,
    +                ///  Set this bit to 1 to enable INCR burst transfer for Rx channel 2 reading link descriptor when accessing internal SRAM.
    +                INDSCR_BURST_EN_CH2: u1,
    +                ///  Set this bit to 1 to enable INCR burst transfer for Rx channel 2 receiving data when accessing internal SRAM.
    +                IN_DATA_BURST_EN_CH2: u1,
    +                ///  Set this bit 1 to enable automatic transmitting data from memory to memory via DMA.
    +                MEM_TRANS_EN_CH2: u1,
    +                padding: u27,
    +            }),
    +            ///  DMA_IN_CONF1_CH2_REG.
    +            IN_CONF1_CH2: mmio.Mmio(packed struct(u32) {
    +                reserved12: u12,
    +                ///  Set this bit to enable checking the owner attribute of the link descriptor.
    +                IN_CHECK_OWNER_CH2: u1,
    +                padding: u19,
    +            }),
    +            ///  DMA_INFIFO_STATUS_CH2_REG.
    +            INFIFO_STATUS_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  L1 Rx FIFO full signal for Rx channel 2.
    +                INFIFO_FULL_CH2: u1,
    +                ///  L1 Rx FIFO empty signal for Rx channel 2.
    +                INFIFO_EMPTY_CH2: u1,
    +                ///  The register stores the byte number of the data in L1 Rx FIFO for Rx channel 2.
    +                INFIFO_CNT_CH2: u6,
    +                reserved23: u15,
    +                ///  reserved
    +                IN_REMAIN_UNDER_1B_CH2: u1,
    +                ///  reserved
    +                IN_REMAIN_UNDER_2B_CH2: u1,
    +                ///  reserved
    +                IN_REMAIN_UNDER_3B_CH2: u1,
    +                ///  reserved
    +                IN_REMAIN_UNDER_4B_CH2: u1,
    +                ///  reserved
    +                IN_BUF_HUNGRY_CH2: u1,
    +                padding: u4,
    +            }),
    +            ///  DMA_IN_POP_CH2_REG.
    +            IN_POP_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the data popping from DMA FIFO.
    +                INFIFO_RDATA_CH2: u12,
    +                ///  Set this bit to pop data from DMA FIFO.
    +                INFIFO_POP_CH2: u1,
    +                padding: u19,
    +            }),
    +            ///  DMA_IN_LINK_CH2_REG.
    +            IN_LINK_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the 20 least significant bits of the first inlink descriptor's address.
    +                INLINK_ADDR_CH2: u20,
    +                ///  Set this bit to return to current inlink descriptor's address, when there are some errors in current receiving data.
    +                INLINK_AUTO_RET_CH2: u1,
    +                ///  Set this bit to stop dealing with the inlink descriptors.
    +                INLINK_STOP_CH2: u1,
    +                ///  Set this bit to start dealing with the inlink descriptors.
    +                INLINK_START_CH2: u1,
    +                ///  Set this bit to mount a new inlink descriptor.
    +                INLINK_RESTART_CH2: u1,
    +                ///  1: the inlink descriptor's FSM is in idle state. 0: the inlink descriptor's FSM is working.
    +                INLINK_PARK_CH2: u1,
    +                padding: u7,
    +            }),
    +            ///  DMA_IN_STATE_CH2_REG.
    +            IN_STATE_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the current inlink descriptor's address.
    +                INLINK_DSCR_ADDR_CH2: u18,
    +                ///  reserved
    +                IN_DSCR_STATE_CH2: u2,
    +                ///  reserved
    +                IN_STATE_CH2: u3,
    +                padding: u9,
    +            }),
    +            ///  DMA_IN_SUC_EOF_DES_ADDR_CH2_REG.
    +            IN_SUC_EOF_DES_ADDR_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the address of the inlink descriptor when the EOF bit in this descriptor is 1.
    +                IN_SUC_EOF_DES_ADDR_CH2: u32,
    +            }),
    +            ///  DMA_IN_ERR_EOF_DES_ADDR_CH2_REG.
    +            IN_ERR_EOF_DES_ADDR_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the address of the inlink descriptor when there are some errors in current receiving data. Only used when peripheral is UHCI0.
    +                IN_ERR_EOF_DES_ADDR_CH2: u32,
    +            }),
    +            ///  DMA_IN_DSCR_CH2_REG.
    +            IN_DSCR_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  The address of the current inlink descriptor x.
    +                INLINK_DSCR_CH2: u32,
    +            }),
    +            ///  DMA_IN_DSCR_BF0_CH2_REG.
    +            IN_DSCR_BF0_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  The address of the last inlink descriptor x-1.
    +                INLINK_DSCR_BF0_CH2: u32,
    +            }),
    +            ///  DMA_IN_DSCR_BF1_CH2_REG.
    +            IN_DSCR_BF1_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  The address of the second-to-last inlink descriptor x-2.
    +                INLINK_DSCR_BF1_CH2: u32,
    +            }),
    +            ///  DMA_IN_PRI_CH2_REG.
    +            IN_PRI_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  The priority of Rx channel 2. The larger of the value, the higher of the priority.
    +                RX_PRI_CH2: u4,
    +                padding: u28,
    +            }),
    +            ///  DMA_IN_PERI_SEL_CH2_REG.
    +            IN_PERI_SEL_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  This register is used to select peripheral for Rx channel 2. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.
    +                PERI_IN_SEL_CH2: u6,
    +                padding: u26,
    +            }),
    +            reserved592: [44]u8,
    +            ///  DMA_OUT_CONF0_CH2_REG.
    +            OUT_CONF0_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  This bit is used to reset DMA channel 2 Tx FSM and Tx FIFO pointer.
    +                OUT_RST_CH2: u1,
    +                ///  reserved
    +                OUT_LOOP_TEST_CH2: u1,
    +                ///  Set this bit to enable automatic outlink-writeback when all the data in tx buffer has been transmitted.
    +                OUT_AUTO_WRBACK_CH2: u1,
    +                ///  EOF flag generation mode when transmitting data. 1: EOF flag for Tx channel 2 is generated when data need to transmit has been popped from FIFO in DMA
    +                OUT_EOF_MODE_CH2: u1,
    +                ///  Set this bit to 1 to enable INCR burst transfer for Tx channel 2 reading link descriptor when accessing internal SRAM.
    +                OUTDSCR_BURST_EN_CH2: u1,
    +                ///  Set this bit to 1 to enable INCR burst transfer for Tx channel 2 transmitting data when accessing internal SRAM.
    +                OUT_DATA_BURST_EN_CH2: u1,
    +                padding: u26,
    +            }),
    +            ///  DMA_OUT_CONF1_CH2_REG.
    +            OUT_CONF1_CH2: mmio.Mmio(packed struct(u32) {
    +                reserved12: u12,
    +                ///  Set this bit to enable checking the owner attribute of the link descriptor.
    +                OUT_CHECK_OWNER_CH2: u1,
    +                padding: u19,
    +            }),
    +            ///  DMA_OUTFIFO_STATUS_CH2_REG.
    +            OUTFIFO_STATUS_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  L1 Tx FIFO full signal for Tx channel 2.
    +                OUTFIFO_FULL_CH2: u1,
    +                ///  L1 Tx FIFO empty signal for Tx channel 2.
    +                OUTFIFO_EMPTY_CH2: u1,
    +                ///  The register stores the byte number of the data in L1 Tx FIFO for Tx channel 2.
    +                OUTFIFO_CNT_CH2: u6,
    +                reserved23: u15,
    +                ///  reserved
    +                OUT_REMAIN_UNDER_1B_CH2: u1,
    +                ///  reserved
    +                OUT_REMAIN_UNDER_2B_CH2: u1,
    +                ///  reserved
    +                OUT_REMAIN_UNDER_3B_CH2: u1,
    +                ///  reserved
    +                OUT_REMAIN_UNDER_4B_CH2: u1,
    +                padding: u5,
    +            }),
    +            ///  DMA_OUT_PUSH_CH2_REG.
    +            OUT_PUSH_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the data that need to be pushed into DMA FIFO.
    +                OUTFIFO_WDATA_CH2: u9,
    +                ///  Set this bit to push data into DMA FIFO.
    +                OUTFIFO_PUSH_CH2: u1,
    +                padding: u22,
    +            }),
    +            ///  DMA_OUT_LINK_CH2_REG.
    +            OUT_LINK_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the 20 least significant bits of the first outlink descriptor's address.
    +                OUTLINK_ADDR_CH2: u20,
    +                ///  Set this bit to stop dealing with the outlink descriptors.
    +                OUTLINK_STOP_CH2: u1,
    +                ///  Set this bit to start dealing with the outlink descriptors.
    +                OUTLINK_START_CH2: u1,
    +                ///  Set this bit to restart a new outlink from the last address.
    +                OUTLINK_RESTART_CH2: u1,
    +                ///  1: the outlink descriptor's FSM is in idle state. 0: the outlink descriptor's FSM is working.
    +                OUTLINK_PARK_CH2: u1,
    +                padding: u8,
    +            }),
    +            ///  DMA_OUT_STATE_CH2_REG.
    +            OUT_STATE_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the current outlink descriptor's address.
    +                OUTLINK_DSCR_ADDR_CH2: u18,
    +                ///  reserved
    +                OUT_DSCR_STATE_CH2: u2,
    +                ///  reserved
    +                OUT_STATE_CH2: u3,
    +                padding: u9,
    +            }),
    +            ///  DMA_OUT_EOF_DES_ADDR_CH2_REG.
    +            OUT_EOF_DES_ADDR_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the address of the outlink descriptor when the EOF bit in this descriptor is 1.
    +                OUT_EOF_DES_ADDR_CH2: u32,
    +            }),
    +            ///  DMA_OUT_EOF_BFR_DES_ADDR_CH2_REG.
    +            OUT_EOF_BFR_DES_ADDR_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the address of the outlink descriptor before the last outlink descriptor.
    +                OUT_EOF_BFR_DES_ADDR_CH2: u32,
    +            }),
    +            ///  DMA_OUT_DSCR_CH2_REG.
    +            OUT_DSCR_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  The address of the current outlink descriptor y.
    +                OUTLINK_DSCR_CH2: u32,
    +            }),
    +            ///  DMA_OUT_DSCR_BF0_CH2_REG.
    +            OUT_DSCR_BF0_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  The address of the last outlink descriptor y-1.
    +                OUTLINK_DSCR_BF0_CH2: u32,
    +            }),
    +            ///  DMA_OUT_DSCR_BF1_CH2_REG.
    +            OUT_DSCR_BF1_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  The address of the second-to-last inlink descriptor x-2.
    +                OUTLINK_DSCR_BF1_CH2: u32,
    +            }),
    +            ///  DMA_OUT_PRI_CH2_REG.
    +            OUT_PRI_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  The priority of Tx channel 2. The larger of the value, the higher of the priority.
    +                TX_PRI_CH2: u4,
    +                padding: u28,
    +            }),
    +            ///  DMA_OUT_PERI_SEL_CH2_REG.
    +            OUT_PERI_SEL_CH2: mmio.Mmio(packed struct(u32) {
    +                ///  This register is used to select peripheral for Tx channel 2. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.
    +                PERI_OUT_SEL_CH2: u6,
    +                padding: u26,
    +            }),
    +        };
    +
    +        ///  Digital Signature
    +        pub const DS = extern struct {
    +            ///  memory that stores Y
    +            Y_MEM: [512]u8,
    +            ///  memory that stores M
    +            M_MEM: [512]u8,
    +            ///  memory that stores Rb
    +            RB_MEM: [512]u8,
    +            ///  memory that stores BOX
    +            BOX_MEM: [48]u8,
    +            reserved2048: [464]u8,
    +            ///  memory that stores X
    +            X_MEM: [512]u8,
    +            ///  memory that stores Z
    +            Z_MEM: [512]u8,
    +            reserved3584: [512]u8,
    +            ///  DS start control register
    +            SET_START: mmio.Mmio(packed struct(u32) {
    +                ///  set this bit to start DS operation.
    +                SET_START: u1,
    +                padding: u31,
    +            }),
    +            ///  DS continue control register
    +            SET_CONTINUE: mmio.Mmio(packed struct(u32) {
    +                ///  set this bit to continue DS operation.
    +                SET_CONTINUE: u1,
    +                padding: u31,
    +            }),
    +            ///  DS finish control register
    +            SET_FINISH: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to finish DS process.
    +                SET_FINISH: u1,
    +                padding: u31,
    +            }),
    +            ///  DS query busy register
    +            QUERY_BUSY: mmio.Mmio(packed struct(u32) {
    +                ///  digital signature state. 1'b0: idle, 1'b1: busy
    +                QUERY_BUSY: u1,
    +                padding: u31,
    +            }),
    +            ///  DS query key-wrong counter register
    +            QUERY_KEY_WRONG: mmio.Mmio(packed struct(u32) {
    +                ///  digital signature key wrong counter
    +                QUERY_KEY_WRONG: u4,
    +                padding: u28,
    +            }),
    +            ///  DS query check result register
    +            QUERY_CHECK: mmio.Mmio(packed struct(u32) {
    +                ///  MD checkout result. 1'b0: MD check pass, 1'b1: MD check fail
    +                MD_ERROR: u1,
    +                ///  padding checkout result. 1'b0: a good padding, 1'b1: a bad padding
    +                PADDING_BAD: u1,
    +                padding: u30,
    +            }),
    +            reserved3616: [8]u8,
    +            ///  DS version control register
    +            DATE: mmio.Mmio(packed struct(u32) {
    +                ///  ds version information
    +                DATE: u30,
    +                padding: u2,
    +            }),
    +        };
    +
    +        ///  eFuse Controller
    +        pub const EFUSE = extern struct {
    +            ///  Register 0 that stores data to be programmed.
    +            PGM_DATA0: mmio.Mmio(packed struct(u32) {
    +                ///  The content of the 0th 32-bit data to be programmed.
    +                PGM_DATA_0: u32,
    +            }),
    +            ///  Register 1 that stores data to be programmed.
    +            PGM_DATA1: mmio.Mmio(packed struct(u32) {
    +                ///  The content of the 1st 32-bit data to be programmed.
    +                PGM_DATA_1: u32,
    +            }),
    +            ///  Register 2 that stores data to be programmed.
    +            PGM_DATA2: mmio.Mmio(packed struct(u32) {
    +                ///  The content of the 2nd 32-bit data to be programmed.
    +                PGM_DATA_2: u32,
    +            }),
    +            ///  Register 3 that stores data to be programmed.
    +            PGM_DATA3: mmio.Mmio(packed struct(u32) {
    +                ///  The content of the 3rd 32-bit data to be programmed.
    +                PGM_DATA_3: u32,
    +            }),
    +            ///  Register 4 that stores data to be programmed.
    +            PGM_DATA4: mmio.Mmio(packed struct(u32) {
    +                ///  The content of the 4th 32-bit data to be programmed.
    +                PGM_DATA_4: u32,
    +            }),
    +            ///  Register 5 that stores data to be programmed.
    +            PGM_DATA5: mmio.Mmio(packed struct(u32) {
    +                ///  The content of the 5th 32-bit data to be programmed.
    +                PGM_DATA_5: u32,
    +            }),
    +            ///  Register 6 that stores data to be programmed.
    +            PGM_DATA6: mmio.Mmio(packed struct(u32) {
    +                ///  The content of the 6th 32-bit data to be programmed.
    +                PGM_DATA_6: u32,
    +            }),
    +            ///  Register 7 that stores data to be programmed.
    +            PGM_DATA7: mmio.Mmio(packed struct(u32) {
    +                ///  The content of the 7th 32-bit data to be programmed.
    +                PGM_DATA_7: u32,
    +            }),
    +            ///  Register 0 that stores the RS code to be programmed.
    +            PGM_CHECK_VALUE0: mmio.Mmio(packed struct(u32) {
    +                ///  The content of the 0th 32-bit RS code to be programmed.
    +                PGM_RS_DATA_0: u32,
    +            }),
    +            ///  Register 1 that stores the RS code to be programmed.
    +            PGM_CHECK_VALUE1: mmio.Mmio(packed struct(u32) {
    +                ///  The content of the 1st 32-bit RS code to be programmed.
    +                PGM_RS_DATA_1: u32,
    +            }),
    +            ///  Register 2 that stores the RS code to be programmed.
    +            PGM_CHECK_VALUE2: mmio.Mmio(packed struct(u32) {
    +                ///  The content of the 2nd 32-bit RS code to be programmed.
    +                PGM_RS_DATA_2: u32,
    +            }),
    +            ///  BLOCK0 data register 0.
    +            RD_WR_DIS: mmio.Mmio(packed struct(u32) {
    +                ///  Disable programming of individual eFuses.
    +                WR_DIS: u32,
    +            }),
    +            ///  BLOCK0 data register 1.
    +            RD_REPEAT_DATA0: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to disable reading from BlOCK4-10.
    +                RD_DIS: u7,
    +                ///  Set this bit to disable boot from RTC RAM.
    +                DIS_RTC_RAM_BOOT: u1,
    +                ///  Set this bit to disable Icache.
    +                DIS_ICACHE: u1,
    +                ///  Set this bit to disable function of usb switch to jtag in module of usb device.
    +                DIS_USB_JTAG: u1,
    +                ///  Set this bit to disable Icache in download mode (boot_mode[3:0] is 0, 1, 2, 3, 6, 7).
    +                DIS_DOWNLOAD_ICACHE: u1,
    +                ///  Set this bit to disable usb device.
    +                DIS_USB_DEVICE: u1,
    +                ///  Set this bit to disable the function that forces chip into download mode.
    +                DIS_FORCE_DOWNLOAD: u1,
    +                ///  Reserved (used for four backups method).
    +                RPT4_RESERVED6: u1,
    +                ///  Set this bit to disable CAN function.
    +                DIS_CAN: u1,
    +                ///  Set this bit to enable selection between usb_to_jtag and pad_to_jtag through strapping gpio10 when both reg_dis_usb_jtag and reg_dis_pad_jtag are equal to 0.
    +                JTAG_SEL_ENABLE: u1,
    +                ///  Set these bits to disable JTAG in the soft way (odd number 1 means disable ). JTAG can be enabled in HMAC module.
    +                SOFT_DIS_JTAG: u3,
    +                ///  Set this bit to disable JTAG in the hard way. JTAG is disabled permanently.
    +                DIS_PAD_JTAG: u1,
    +                ///  Set this bit to disable flash encryption when in download boot modes.
    +                DIS_DOWNLOAD_MANUAL_ENCRYPT: u1,
    +                ///  Controls single-end input threshold vrefh, 1.76 V to 2 V with step of 80 mV, stored in eFuse.
    +                USB_DREFH: u2,
    +                ///  Controls single-end input threshold vrefl, 0.8 V to 1.04 V with step of 80 mV, stored in eFuse.
    +                USB_DREFL: u2,
    +                ///  Set this bit to exchange USB D+ and D- pins.
    +                USB_EXCHG_PINS: u1,
    +                ///  Set this bit to vdd spi pin function as gpio.
    +                VDD_SPI_AS_GPIO: u1,
    +                ///  Enable btlc gpio.
    +                BTLC_GPIO_ENABLE: u2,
    +                ///  Set this bit to enable power glitch function.
    +                POWERGLITCH_EN: u1,
    +                ///  Sample delay configuration of power glitch.
    +                POWER_GLITCH_DSENSE: u2,
    +            }),
    +            ///  BLOCK0 data register 2.
    +            RD_REPEAT_DATA1: mmio.Mmio(packed struct(u32) {
    +                ///  Reserved (used for four backups method).
    +                RPT4_RESERVED2: u16,
    +                ///  Selects RTC watchdog timeout threshold, in unit of slow clock cycle. 0: 40000. 1: 80000. 2: 160000. 3:320000.
    +                WDT_DELAY_SEL: u2,
    +                ///  Set this bit to enable SPI boot encrypt/decrypt. Odd number of 1: enable. even number of 1: disable.
    +                SPI_BOOT_CRYPT_CNT: u3,
    +                ///  Set this bit to enable revoking first secure boot key.
    +                SECURE_BOOT_KEY_REVOKE0: u1,
    +                ///  Set this bit to enable revoking second secure boot key.
    +                SECURE_BOOT_KEY_REVOKE1: u1,
    +                ///  Set this bit to enable revoking third secure boot key.
    +                SECURE_BOOT_KEY_REVOKE2: u1,
    +                ///  Purpose of Key0.
    +                KEY_PURPOSE_0: u4,
    +                ///  Purpose of Key1.
    +                KEY_PURPOSE_1: u4,
    +            }),
    +            ///  BLOCK0 data register 3.
    +            RD_REPEAT_DATA2: mmio.Mmio(packed struct(u32) {
    +                ///  Purpose of Key2.
    +                KEY_PURPOSE_2: u4,
    +                ///  Purpose of Key3.
    +                KEY_PURPOSE_3: u4,
    +                ///  Purpose of Key4.
    +                KEY_PURPOSE_4: u4,
    +                ///  Purpose of Key5.
    +                KEY_PURPOSE_5: u4,
    +                ///  Reserved (used for four backups method).
    +                RPT4_RESERVED3: u4,
    +                ///  Set this bit to enable secure boot.
    +                SECURE_BOOT_EN: u1,
    +                ///  Set this bit to enable revoking aggressive secure boot.
    +                SECURE_BOOT_AGGRESSIVE_REVOKE: u1,
    +                ///  Reserved (used for four backups method).
    +                RPT4_RESERVED0: u6,
    +                ///  Configures flash waiting time after power-up, in unit of ms. If the value is less than 15, the waiting time is the configurable value; Otherwise, the waiting time is twice the configurable value.
    +                FLASH_TPUW: u4,
    +            }),
    +            ///  BLOCK0 data register 4.
    +            RD_REPEAT_DATA3: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to disable download mode (boot_mode[3:0] = 0, 1, 2, 3, 6, 7).
    +                DIS_DOWNLOAD_MODE: u1,
    +                ///  Set this bit to disable Legacy SPI boot mode (boot_mode[3:0] = 4).
    +                DIS_LEGACY_SPI_BOOT: u1,
    +                ///  Selectes the default UART print channel. 0: UART0. 1: UART1.
    +                UART_PRINT_CHANNEL: u1,
    +                ///  Set ECC mode in ROM, 0: ROM would Enable Flash ECC 16to18 byte mode. 1:ROM would use 16to17 byte mode.
    +                FLASH_ECC_MODE: u1,
    +                ///  Set this bit to disable UART download mode through USB.
    +                DIS_USB_DOWNLOAD_MODE: u1,
    +                ///  Set this bit to enable secure UART download mode.
    +                ENABLE_SECURITY_DOWNLOAD: u1,
    +                ///  Set the default UARTboot message output mode. 00: Enabled. 01: Enabled when GPIO8 is low at reset. 10: Enabled when GPIO8 is high at reset. 11:disabled.
    +                UART_PRINT_CONTROL: u2,
    +                ///  GPIO33-GPIO37 power supply selection in ROM code. 0: VDD3P3_CPU. 1: VDD_SPI.
    +                PIN_POWER_SELECTION: u1,
    +                ///  Set the maximum lines of SPI flash. 0: four lines. 1: eight lines.
    +                FLASH_TYPE: u1,
    +                ///  Set Flash page size.
    +                FLASH_PAGE_SIZE: u2,
    +                ///  Set 1 to enable ECC for flash boot.
    +                FLASH_ECC_EN: u1,
    +                ///  Set this bit to force ROM code to send a resume command during SPI boot.
    +                FORCE_SEND_RESUME: u1,
    +                ///  Secure version (used by ESP-IDF anti-rollback feature).
    +                SECURE_VERSION: u16,
    +                ///  Reserved (used for four backups method).
    +                RPT4_RESERVED1: u2,
    +            }),
    +            ///  BLOCK0 data register 5.
    +            RD_REPEAT_DATA4: mmio.Mmio(packed struct(u32) {
    +                ///  Reserved (used for four backups method).
    +                RPT4_RESERVED4: u24,
    +                padding: u8,
    +            }),
    +            ///  BLOCK1 data register 0.
    +            RD_MAC_SPI_SYS_0: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the low 32 bits of MAC address.
    +                MAC_0: u32,
    +            }),
    +            ///  BLOCK1 data register 1.
    +            RD_MAC_SPI_SYS_1: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the high 16 bits of MAC address.
    +                MAC_1: u16,
    +                ///  Stores the zeroth part of SPI_PAD_CONF.
    +                SPI_PAD_CONF_0: u16,
    +            }),
    +            ///  BLOCK1 data register 2.
    +            RD_MAC_SPI_SYS_2: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the first part of SPI_PAD_CONF.
    +                SPI_PAD_CONF_1: u32,
    +            }),
    +            ///  BLOCK1 data register 3.
    +            RD_MAC_SPI_SYS_3: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the second part of SPI_PAD_CONF.
    +                SPI_PAD_CONF_2: u18,
    +                ///  Stores the fist 14 bits of the zeroth part of system data.
    +                SYS_DATA_PART0_0: u14,
    +            }),
    +            ///  BLOCK1 data register 4.
    +            RD_MAC_SPI_SYS_4: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the fist 32 bits of the zeroth part of system data.
    +                SYS_DATA_PART0_1: u32,
    +            }),
    +            ///  BLOCK1 data register 5.
    +            RD_MAC_SPI_SYS_5: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the second 32 bits of the zeroth part of system data.
    +                SYS_DATA_PART0_2: u32,
    +            }),
    +            ///  Register 0 of BLOCK2 (system).
    +            RD_SYS_PART1_DATA0: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the zeroth 32 bits of the first part of system data.
    +                SYS_DATA_PART1_0: u32,
    +            }),
    +            ///  Register 1 of BLOCK2 (system).
    +            RD_SYS_PART1_DATA1: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the first 32 bits of the first part of system data.
    +                SYS_DATA_PART1_1: u32,
    +            }),
    +            ///  Register 2 of BLOCK2 (system).
    +            RD_SYS_PART1_DATA2: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the second 32 bits of the first part of system data.
    +                SYS_DATA_PART1_2: u32,
    +            }),
    +            ///  Register 3 of BLOCK2 (system).
    +            RD_SYS_PART1_DATA3: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the third 32 bits of the first part of system data.
    +                SYS_DATA_PART1_3: u32,
    +            }),
    +            ///  Register 4 of BLOCK2 (system).
    +            RD_SYS_PART1_DATA4: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the fourth 32 bits of the first part of system data.
    +                SYS_DATA_PART1_4: u32,
    +            }),
    +            ///  Register 5 of BLOCK2 (system).
    +            RD_SYS_PART1_DATA5: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the fifth 32 bits of the first part of system data.
    +                SYS_DATA_PART1_5: u32,
    +            }),
    +            ///  Register 6 of BLOCK2 (system).
    +            RD_SYS_PART1_DATA6: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the sixth 32 bits of the first part of system data.
    +                SYS_DATA_PART1_6: u32,
    +            }),
    +            ///  Register 7 of BLOCK2 (system).
    +            RD_SYS_PART1_DATA7: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the seventh 32 bits of the first part of system data.
    +                SYS_DATA_PART1_7: u32,
    +            }),
    +            ///  Register 0 of BLOCK3 (user).
    +            RD_USR_DATA0: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the zeroth 32 bits of BLOCK3 (user).
    +                USR_DATA0: u32,
    +            }),
    +            ///  Register 1 of BLOCK3 (user).
    +            RD_USR_DATA1: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the first 32 bits of BLOCK3 (user).
    +                USR_DATA1: u32,
    +            }),
    +            ///  Register 2 of BLOCK3 (user).
    +            RD_USR_DATA2: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the second 32 bits of BLOCK3 (user).
    +                USR_DATA2: u32,
    +            }),
    +            ///  Register 3 of BLOCK3 (user).
    +            RD_USR_DATA3: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the third 32 bits of BLOCK3 (user).
    +                USR_DATA3: u32,
    +            }),
    +            ///  Register 4 of BLOCK3 (user).
    +            RD_USR_DATA4: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the fourth 32 bits of BLOCK3 (user).
    +                USR_DATA4: u32,
    +            }),
    +            ///  Register 5 of BLOCK3 (user).
    +            RD_USR_DATA5: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the fifth 32 bits of BLOCK3 (user).
    +                USR_DATA5: u32,
    +            }),
    +            ///  Register 6 of BLOCK3 (user).
    +            RD_USR_DATA6: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the sixth 32 bits of BLOCK3 (user).
    +                USR_DATA6: u32,
    +            }),
    +            ///  Register 7 of BLOCK3 (user).
    +            RD_USR_DATA7: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the seventh 32 bits of BLOCK3 (user).
    +                USR_DATA7: u32,
    +            }),
    +            ///  Register 0 of BLOCK4 (KEY0).
    +            RD_KEY0_DATA0: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the zeroth 32 bits of KEY0.
    +                KEY0_DATA0: u32,
    +            }),
    +            ///  Register 1 of BLOCK4 (KEY0).
    +            RD_KEY0_DATA1: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the first 32 bits of KEY0.
    +                KEY0_DATA1: u32,
    +            }),
    +            ///  Register 2 of BLOCK4 (KEY0).
    +            RD_KEY0_DATA2: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the second 32 bits of KEY0.
    +                KEY0_DATA2: u32,
    +            }),
    +            ///  Register 3 of BLOCK4 (KEY0).
    +            RD_KEY0_DATA3: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the third 32 bits of KEY0.
    +                KEY0_DATA3: u32,
    +            }),
    +            ///  Register 4 of BLOCK4 (KEY0).
    +            RD_KEY0_DATA4: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the fourth 32 bits of KEY0.
    +                KEY0_DATA4: u32,
    +            }),
    +            ///  Register 5 of BLOCK4 (KEY0).
    +            RD_KEY0_DATA5: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the fifth 32 bits of KEY0.
    +                KEY0_DATA5: u32,
    +            }),
    +            ///  Register 6 of BLOCK4 (KEY0).
    +            RD_KEY0_DATA6: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the sixth 32 bits of KEY0.
    +                KEY0_DATA6: u32,
    +            }),
    +            ///  Register 7 of BLOCK4 (KEY0).
    +            RD_KEY0_DATA7: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the seventh 32 bits of KEY0.
    +                KEY0_DATA7: u32,
    +            }),
    +            ///  Register 0 of BLOCK5 (KEY1).
    +            RD_KEY1_DATA0: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the zeroth 32 bits of KEY1.
    +                KEY1_DATA0: u32,
    +            }),
    +            ///  Register 1 of BLOCK5 (KEY1).
    +            RD_KEY1_DATA1: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the first 32 bits of KEY1.
    +                KEY1_DATA1: u32,
    +            }),
    +            ///  Register 2 of BLOCK5 (KEY1).
    +            RD_KEY1_DATA2: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the second 32 bits of KEY1.
    +                KEY1_DATA2: u32,
    +            }),
    +            ///  Register 3 of BLOCK5 (KEY1).
    +            RD_KEY1_DATA3: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the third 32 bits of KEY1.
    +                KEY1_DATA3: u32,
    +            }),
    +            ///  Register 4 of BLOCK5 (KEY1).
    +            RD_KEY1_DATA4: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the fourth 32 bits of KEY1.
    +                KEY1_DATA4: u32,
    +            }),
    +            ///  Register 5 of BLOCK5 (KEY1).
    +            RD_KEY1_DATA5: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the fifth 32 bits of KEY1.
    +                KEY1_DATA5: u32,
    +            }),
    +            ///  Register 6 of BLOCK5 (KEY1).
    +            RD_KEY1_DATA6: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the sixth 32 bits of KEY1.
    +                KEY1_DATA6: u32,
    +            }),
    +            ///  Register 7 of BLOCK5 (KEY1).
    +            RD_KEY1_DATA7: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the seventh 32 bits of KEY1.
    +                KEY1_DATA7: u32,
    +            }),
    +            ///  Register 0 of BLOCK6 (KEY2).
    +            RD_KEY2_DATA0: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the zeroth 32 bits of KEY2.
    +                KEY2_DATA0: u32,
    +            }),
    +            ///  Register 1 of BLOCK6 (KEY2).
    +            RD_KEY2_DATA1: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the first 32 bits of KEY2.
    +                KEY2_DATA1: u32,
    +            }),
    +            ///  Register 2 of BLOCK6 (KEY2).
    +            RD_KEY2_DATA2: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the second 32 bits of KEY2.
    +                KEY2_DATA2: u32,
    +            }),
    +            ///  Register 3 of BLOCK6 (KEY2).
    +            RD_KEY2_DATA3: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the third 32 bits of KEY2.
    +                KEY2_DATA3: u32,
    +            }),
    +            ///  Register 4 of BLOCK6 (KEY2).
    +            RD_KEY2_DATA4: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the fourth 32 bits of KEY2.
    +                KEY2_DATA4: u32,
    +            }),
    +            ///  Register 5 of BLOCK6 (KEY2).
    +            RD_KEY2_DATA5: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the fifth 32 bits of KEY2.
    +                KEY2_DATA5: u32,
    +            }),
    +            ///  Register 6 of BLOCK6 (KEY2).
    +            RD_KEY2_DATA6: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the sixth 32 bits of KEY2.
    +                KEY2_DATA6: u32,
    +            }),
    +            ///  Register 7 of BLOCK6 (KEY2).
    +            RD_KEY2_DATA7: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the seventh 32 bits of KEY2.
    +                KEY2_DATA7: u32,
    +            }),
    +            ///  Register 0 of BLOCK7 (KEY3).
    +            RD_KEY3_DATA0: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the zeroth 32 bits of KEY3.
    +                KEY3_DATA0: u32,
    +            }),
    +            ///  Register 1 of BLOCK7 (KEY3).
    +            RD_KEY3_DATA1: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the first 32 bits of KEY3.
    +                KEY3_DATA1: u32,
    +            }),
    +            ///  Register 2 of BLOCK7 (KEY3).
    +            RD_KEY3_DATA2: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the second 32 bits of KEY3.
    +                KEY3_DATA2: u32,
    +            }),
    +            ///  Register 3 of BLOCK7 (KEY3).
    +            RD_KEY3_DATA3: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the third 32 bits of KEY3.
    +                KEY3_DATA3: u32,
    +            }),
    +            ///  Register 4 of BLOCK7 (KEY3).
    +            RD_KEY3_DATA4: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the fourth 32 bits of KEY3.
    +                KEY3_DATA4: u32,
    +            }),
    +            ///  Register 5 of BLOCK7 (KEY3).
    +            RD_KEY3_DATA5: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the fifth 32 bits of KEY3.
    +                KEY3_DATA5: u32,
    +            }),
    +            ///  Register 6 of BLOCK7 (KEY3).
    +            RD_KEY3_DATA6: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the sixth 32 bits of KEY3.
    +                KEY3_DATA6: u32,
    +            }),
    +            ///  Register 7 of BLOCK7 (KEY3).
    +            RD_KEY3_DATA7: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the seventh 32 bits of KEY3.
    +                KEY3_DATA7: u32,
    +            }),
    +            ///  Register 0 of BLOCK8 (KEY4).
    +            RD_KEY4_DATA0: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the zeroth 32 bits of KEY4.
    +                KEY4_DATA0: u32,
    +            }),
    +            ///  Register 1 of BLOCK8 (KEY4).
    +            RD_KEY4_DATA1: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the first 32 bits of KEY4.
    +                KEY4_DATA1: u32,
    +            }),
    +            ///  Register 2 of BLOCK8 (KEY4).
    +            RD_KEY4_DATA2: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the second 32 bits of KEY4.
    +                KEY4_DATA2: u32,
    +            }),
    +            ///  Register 3 of BLOCK8 (KEY4).
    +            RD_KEY4_DATA3: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the third 32 bits of KEY4.
    +                KEY4_DATA3: u32,
    +            }),
    +            ///  Register 4 of BLOCK8 (KEY4).
    +            RD_KEY4_DATA4: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the fourth 32 bits of KEY4.
    +                KEY4_DATA4: u32,
    +            }),
    +            ///  Register 5 of BLOCK8 (KEY4).
    +            RD_KEY4_DATA5: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the fifth 32 bits of KEY4.
    +                KEY4_DATA5: u32,
    +            }),
    +            ///  Register 6 of BLOCK8 (KEY4).
    +            RD_KEY4_DATA6: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the sixth 32 bits of KEY4.
    +                KEY4_DATA6: u32,
    +            }),
    +            ///  Register 7 of BLOCK8 (KEY4).
    +            RD_KEY4_DATA7: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the seventh 32 bits of KEY4.
    +                KEY4_DATA7: u32,
    +            }),
    +            ///  Register 0 of BLOCK9 (KEY5).
    +            RD_KEY5_DATA0: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the zeroth 32 bits of KEY5.
    +                KEY5_DATA0: u32,
    +            }),
    +            ///  Register 1 of BLOCK9 (KEY5).
    +            RD_KEY5_DATA1: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the first 32 bits of KEY5.
    +                KEY5_DATA1: u32,
    +            }),
    +            ///  Register 2 of BLOCK9 (KEY5).
    +            RD_KEY5_DATA2: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the second 32 bits of KEY5.
    +                KEY5_DATA2: u32,
    +            }),
    +            ///  Register 3 of BLOCK9 (KEY5).
    +            RD_KEY5_DATA3: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the third 32 bits of KEY5.
    +                KEY5_DATA3: u32,
    +            }),
    +            ///  Register 4 of BLOCK9 (KEY5).
    +            RD_KEY5_DATA4: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the fourth 32 bits of KEY5.
    +                KEY5_DATA4: u32,
    +            }),
    +            ///  Register 5 of BLOCK9 (KEY5).
    +            RD_KEY5_DATA5: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the fifth 32 bits of KEY5.
    +                KEY5_DATA5: u32,
    +            }),
    +            ///  Register 6 of BLOCK9 (KEY5).
    +            RD_KEY5_DATA6: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the sixth 32 bits of KEY5.
    +                KEY5_DATA6: u32,
    +            }),
    +            ///  Register 7 of BLOCK9 (KEY5).
    +            RD_KEY5_DATA7: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the seventh 32 bits of KEY5.
    +                KEY5_DATA7: u32,
    +            }),
    +            ///  Register 0 of BLOCK10 (system).
    +            RD_SYS_PART2_DATA0: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the 0th 32 bits of the 2nd part of system data.
    +                SYS_DATA_PART2_0: u32,
    +            }),
    +            ///  Register 1 of BLOCK9 (KEY5).
    +            RD_SYS_PART2_DATA1: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the 1st 32 bits of the 2nd part of system data.
    +                SYS_DATA_PART2_1: u32,
    +            }),
    +            ///  Register 2 of BLOCK10 (system).
    +            RD_SYS_PART2_DATA2: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the 2nd 32 bits of the 2nd part of system data.
    +                SYS_DATA_PART2_2: u32,
    +            }),
    +            ///  Register 3 of BLOCK10 (system).
    +            RD_SYS_PART2_DATA3: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the 3rd 32 bits of the 2nd part of system data.
    +                SYS_DATA_PART2_3: u32,
    +            }),
    +            ///  Register 4 of BLOCK10 (system).
    +            RD_SYS_PART2_DATA4: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the 4th 32 bits of the 2nd part of system data.
    +                SYS_DATA_PART2_4: u32,
    +            }),
    +            ///  Register 5 of BLOCK10 (system).
    +            RD_SYS_PART2_DATA5: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the 5th 32 bits of the 2nd part of system data.
    +                SYS_DATA_PART2_5: u32,
    +            }),
    +            ///  Register 6 of BLOCK10 (system).
    +            RD_SYS_PART2_DATA6: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the 6th 32 bits of the 2nd part of system data.
    +                SYS_DATA_PART2_6: u32,
    +            }),
    +            ///  Register 7 of BLOCK10 (system).
    +            RD_SYS_PART2_DATA7: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the 7th 32 bits of the 2nd part of system data.
    +                SYS_DATA_PART2_7: u32,
    +            }),
    +            ///  Programming error record register 0 of BLOCK0.
    +            RD_REPEAT_ERR0: mmio.Mmio(packed struct(u32) {
    +                ///  If any bit in RD_DIS is 1, then it indicates a programming error.
    +                RD_DIS_ERR: u7,
    +                ///  If DIS_RTC_RAM_BOOT is 1, then it indicates a programming error.
    +                DIS_RTC_RAM_BOOT_ERR: u1,
    +                ///  If DIS_ICACHE is 1, then it indicates a programming error.
    +                DIS_ICACHE_ERR: u1,
    +                ///  If DIS_USB_JTAG is 1, then it indicates a programming error.
    +                DIS_USB_JTAG_ERR: u1,
    +                ///  If DIS_DOWNLOAD_ICACHE is 1, then it indicates a programming error.
    +                DIS_DOWNLOAD_ICACHE_ERR: u1,
    +                ///  If DIS_USB_DEVICE is 1, then it indicates a programming error.
    +                DIS_USB_DEVICE_ERR: u1,
    +                ///  If DIS_FORCE_DOWNLOAD is 1, then it indicates a programming error.
    +                DIS_FORCE_DOWNLOAD_ERR: u1,
    +                ///  Reserved.
    +                RPT4_RESERVED6_ERR: u1,
    +                ///  If DIS_CAN is 1, then it indicates a programming error.
    +                DIS_CAN_ERR: u1,
    +                ///  If JTAG_SEL_ENABLE is 1, then it indicates a programming error.
    +                JTAG_SEL_ENABLE_ERR: u1,
    +                ///  If SOFT_DIS_JTAG is 1, then it indicates a programming error.
    +                SOFT_DIS_JTAG_ERR: u3,
    +                ///  If DIS_PAD_JTAG is 1, then it indicates a programming error.
    +                DIS_PAD_JTAG_ERR: u1,
    +                ///  If DIS_DOWNLOAD_MANUAL_ENCRYPT is 1, then it indicates a programming error.
    +                DIS_DOWNLOAD_MANUAL_ENCRYPT_ERR: u1,
    +                ///  If any bit in USB_DREFH is 1, then it indicates a programming error.
    +                USB_DREFH_ERR: u2,
    +                ///  If any bit in USB_DREFL is 1, then it indicates a programming error.
    +                USB_DREFL_ERR: u2,
    +                ///  If USB_EXCHG_PINS is 1, then it indicates a programming error.
    +                USB_EXCHG_PINS_ERR: u1,
    +                ///  If VDD_SPI_AS_GPIO is 1, then it indicates a programming error.
    +                VDD_SPI_AS_GPIO_ERR: u1,
    +                ///  If any bit in BTLC_GPIO_ENABLE is 1, then it indicates a programming error.
    +                BTLC_GPIO_ENABLE_ERR: u2,
    +                ///  If POWERGLITCH_EN is 1, then it indicates a programming error.
    +                POWERGLITCH_EN_ERR: u1,
    +                ///  If any bit in POWER_GLITCH_DSENSE is 1, then it indicates a programming error.
    +                POWER_GLITCH_DSENSE_ERR: u2,
    +            }),
    +            ///  Programming error record register 1 of BLOCK0.
    +            RD_REPEAT_ERR1: mmio.Mmio(packed struct(u32) {
    +                ///  Reserved.
    +                RPT4_RESERVED2_ERR: u16,
    +                ///  If any bit in WDT_DELAY_SEL is 1, then it indicates a programming error.
    +                WDT_DELAY_SEL_ERR: u2,
    +                ///  If any bit in SPI_BOOT_CRYPT_CNT is 1, then it indicates a programming error.
    +                SPI_BOOT_CRYPT_CNT_ERR: u3,
    +                ///  If SECURE_BOOT_KEY_REVOKE0 is 1, then it indicates a programming error.
    +                SECURE_BOOT_KEY_REVOKE0_ERR: u1,
    +                ///  If SECURE_BOOT_KEY_REVOKE1 is 1, then it indicates a programming error.
    +                SECURE_BOOT_KEY_REVOKE1_ERR: u1,
    +                ///  If SECURE_BOOT_KEY_REVOKE2 is 1, then it indicates a programming error.
    +                SECURE_BOOT_KEY_REVOKE2_ERR: u1,
    +                ///  If any bit in KEY_PURPOSE_0 is 1, then it indicates a programming error.
    +                KEY_PURPOSE_0_ERR: u4,
    +                ///  If any bit in KEY_PURPOSE_1 is 1, then it indicates a programming error.
    +                KEY_PURPOSE_1_ERR: u4,
    +            }),
    +            ///  Programming error record register 2 of BLOCK0.
    +            RD_REPEAT_ERR2: mmio.Mmio(packed struct(u32) {
    +                ///  If any bit in KEY_PURPOSE_2 is 1, then it indicates a programming error.
    +                KEY_PURPOSE_2_ERR: u4,
    +                ///  If any bit in KEY_PURPOSE_3 is 1, then it indicates a programming error.
    +                KEY_PURPOSE_3_ERR: u4,
    +                ///  If any bit in KEY_PURPOSE_4 is 1, then it indicates a programming error.
    +                KEY_PURPOSE_4_ERR: u4,
    +                ///  If any bit in KEY_PURPOSE_5 is 1, then it indicates a programming error.
    +                KEY_PURPOSE_5_ERR: u4,
    +                ///  Reserved.
    +                RPT4_RESERVED3_ERR: u4,
    +                ///  If SECURE_BOOT_EN is 1, then it indicates a programming error.
    +                SECURE_BOOT_EN_ERR: u1,
    +                ///  If SECURE_BOOT_AGGRESSIVE_REVOKE is 1, then it indicates a programming error.
    +                SECURE_BOOT_AGGRESSIVE_REVOKE_ERR: u1,
    +                ///  Reserved.
    +                RPT4_RESERVED0_ERR: u6,
    +                ///  If any bit in FLASH_TPUM is 1, then it indicates a programming error.
    +                FLASH_TPUW_ERR: u4,
    +            }),
    +            ///  Programming error record register 3 of BLOCK0.
    +            RD_REPEAT_ERR3: mmio.Mmio(packed struct(u32) {
    +                ///  If DIS_DOWNLOAD_MODE is 1, then it indicates a programming error.
    +                DIS_DOWNLOAD_MODE_ERR: u1,
    +                ///  If DIS_LEGACY_SPI_BOOT is 1, then it indicates a programming error.
    +                DIS_LEGACY_SPI_BOOT_ERR: u1,
    +                ///  If UART_PRINT_CHANNEL is 1, then it indicates a programming error.
    +                UART_PRINT_CHANNEL_ERR: u1,
    +                ///  If FLASH_ECC_MODE is 1, then it indicates a programming error.
    +                FLASH_ECC_MODE_ERR: u1,
    +                ///  If DIS_USB_DOWNLOAD_MODE is 1, then it indicates a programming error.
    +                DIS_USB_DOWNLOAD_MODE_ERR: u1,
    +                ///  If ENABLE_SECURITY_DOWNLOAD is 1, then it indicates a programming error.
    +                ENABLE_SECURITY_DOWNLOAD_ERR: u1,
    +                ///  If any bit in UART_PRINT_CONTROL is 1, then it indicates a programming error.
    +                UART_PRINT_CONTROL_ERR: u2,
    +                ///  If PIN_POWER_SELECTION is 1, then it indicates a programming error.
    +                PIN_POWER_SELECTION_ERR: u1,
    +                ///  If FLASH_TYPE is 1, then it indicates a programming error.
    +                FLASH_TYPE_ERR: u1,
    +                ///  If any bits in FLASH_PAGE_SIZE is 1, then it indicates a programming error.
    +                FLASH_PAGE_SIZE_ERR: u2,
    +                ///  If FLASH_ECC_EN_ERR is 1, then it indicates a programming error.
    +                FLASH_ECC_EN_ERR: u1,
    +                ///  If FORCE_SEND_RESUME is 1, then it indicates a programming error.
    +                FORCE_SEND_RESUME_ERR: u1,
    +                ///  If any bit in SECURE_VERSION is 1, then it indicates a programming error.
    +                SECURE_VERSION_ERR: u16,
    +                ///  Reserved.
    +                RPT4_RESERVED1_ERR: u2,
    +            }),
    +            reserved400: [4]u8,
    +            ///  Programming error record register 4 of BLOCK0.
    +            RD_REPEAT_ERR4: mmio.Mmio(packed struct(u32) {
    +                ///  Reserved.
    +                RPT4_RESERVED4_ERR: u24,
    +                padding: u8,
    +            }),
    +            reserved448: [44]u8,
    +            ///  Programming error record register 0 of BLOCK1-10.
    +            RD_RS_ERR0: mmio.Mmio(packed struct(u32) {
    +                ///  The value of this signal means the number of error bytes.
    +                MAC_SPI_8M_ERR_NUM: u3,
    +                ///  0: Means no failure and that the data of MAC_SPI_8M is reliable 1: Means that programming user data failed and the number of error bytes is over 6.
    +                MAC_SPI_8M_FAIL: u1,
    +                ///  The value of this signal means the number of error bytes.
    +                SYS_PART1_NUM: u3,
    +                ///  0: Means no failure and that the data of system part1 is reliable 1: Means that programming user data failed and the number of error bytes is over 6.
    +                SYS_PART1_FAIL: u1,
    +                ///  The value of this signal means the number of error bytes.
    +                USR_DATA_ERR_NUM: u3,
    +                ///  0: Means no failure and that the user data is reliable 1: Means that programming user data failed and the number of error bytes is over 6.
    +                USR_DATA_FAIL: u1,
    +                ///  The value of this signal means the number of error bytes.
    +                KEY0_ERR_NUM: u3,
    +                ///  0: Means no failure and that the data of key0 is reliable 1: Means that programming key0 failed and the number of error bytes is over 6.
    +                KEY0_FAIL: u1,
    +                ///  The value of this signal means the number of error bytes.
    +                KEY1_ERR_NUM: u3,
    +                ///  0: Means no failure and that the data of key1 is reliable 1: Means that programming key1 failed and the number of error bytes is over 6.
    +                KEY1_FAIL: u1,
    +                ///  The value of this signal means the number of error bytes.
    +                KEY2_ERR_NUM: u3,
    +                ///  0: Means no failure and that the data of key2 is reliable 1: Means that programming key2 failed and the number of error bytes is over 6.
    +                KEY2_FAIL: u1,
    +                ///  The value of this signal means the number of error bytes.
    +                KEY3_ERR_NUM: u3,
    +                ///  0: Means no failure and that the data of key3 is reliable 1: Means that programming key3 failed and the number of error bytes is over 6.
    +                KEY3_FAIL: u1,
    +                ///  The value of this signal means the number of error bytes.
    +                KEY4_ERR_NUM: u3,
    +                ///  0: Means no failure and that the data of key4 is reliable 1: Means that programming key4 failed and the number of error bytes is over 6.
    +                KEY4_FAIL: u1,
    +            }),
    +            ///  Programming error record register 1 of BLOCK1-10.
    +            RD_RS_ERR1: mmio.Mmio(packed struct(u32) {
    +                ///  The value of this signal means the number of error bytes.
    +                KEY5_ERR_NUM: u3,
    +                ///  0: Means no failure and that the data of KEY5 is reliable 1: Means that programming user data failed and the number of error bytes is over 6.
    +                KEY5_FAIL: u1,
    +                ///  The value of this signal means the number of error bytes.
    +                SYS_PART2_ERR_NUM: u3,
    +                ///  0: Means no failure and that the data of system part2 is reliable 1: Means that programming user data failed and the number of error bytes is over 6.
    +                SYS_PART2_FAIL: u1,
    +                padding: u24,
    +            }),
    +            ///  eFuse clcok configuration register.
    +            CLK: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to force eFuse SRAM into power-saving mode.
    +                EFUSE_MEM_FORCE_PD: u1,
    +                ///  Set this bit and force to activate clock signal of eFuse SRAM.
    +                MEM_CLK_FORCE_ON: u1,
    +                ///  Set this bit to force eFuse SRAM into working mode.
    +                EFUSE_MEM_FORCE_PU: u1,
    +                reserved16: u13,
    +                ///  Set this bit and force to enable clock signal of eFuse memory.
    +                EN: u1,
    +                padding: u15,
    +            }),
    +            ///  eFuse operation mode configuraiton register;
    +            CONF: mmio.Mmio(packed struct(u32) {
    +                ///  0x5A5A: Operate programming command 0x5AA5: Operate read command.
    +                OP_CODE: u16,
    +                padding: u16,
    +            }),
    +            ///  eFuse status register.
    +            STATUS: mmio.Mmio(packed struct(u32) {
    +                ///  Indicates the state of the eFuse state machine.
    +                STATE: u4,
    +                ///  The value of OTP_LOAD_SW.
    +                OTP_LOAD_SW: u1,
    +                ///  The value of OTP_VDDQ_C_SYNC2.
    +                OTP_VDDQ_C_SYNC2: u1,
    +                ///  The value of OTP_STROBE_SW.
    +                OTP_STROBE_SW: u1,
    +                ///  The value of OTP_CSB_SW.
    +                OTP_CSB_SW: u1,
    +                ///  The value of OTP_PGENB_SW.
    +                OTP_PGENB_SW: u1,
    +                ///  The value of OTP_VDDQ_IS_SW.
    +                OTP_VDDQ_IS_SW: u1,
    +                ///  Indicates the number of error bits during programming BLOCK0.
    +                REPEAT_ERR_CNT: u8,
    +                padding: u14,
    +            }),
    +            ///  eFuse command register.
    +            CMD: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to send read command.
    +                READ_CMD: u1,
    +                ///  Set this bit to send programming command.
    +                PGM_CMD: u1,
    +                ///  The serial number of the block to be programmed. Value 0-10 corresponds to block number 0-10, respectively.
    +                BLK_NUM: u4,
    +                padding: u26,
    +            }),
    +            ///  eFuse raw interrupt register.
    +            INT_RAW: mmio.Mmio(packed struct(u32) {
    +                ///  The raw bit signal for read_done interrupt.
    +                READ_DONE_INT_RAW: u1,
    +                ///  The raw bit signal for pgm_done interrupt.
    +                PGM_DONE_INT_RAW: u1,
    +                padding: u30,
    +            }),
    +            ///  eFuse interrupt status register.
    +            INT_ST: mmio.Mmio(packed struct(u32) {
    +                ///  The status signal for read_done interrupt.
    +                READ_DONE_INT_ST: u1,
    +                ///  The status signal for pgm_done interrupt.
    +                PGM_DONE_INT_ST: u1,
    +                padding: u30,
    +            }),
    +            ///  eFuse interrupt enable register.
    +            INT_ENA: mmio.Mmio(packed struct(u32) {
    +                ///  The enable signal for read_done interrupt.
    +                READ_DONE_INT_ENA: u1,
    +                ///  The enable signal for pgm_done interrupt.
    +                PGM_DONE_INT_ENA: u1,
    +                padding: u30,
    +            }),
    +            ///  eFuse interrupt clear register.
    +            INT_CLR: mmio.Mmio(packed struct(u32) {
    +                ///  The clear signal for read_done interrupt.
    +                READ_DONE_INT_CLR: u1,
    +                ///  The clear signal for pgm_done interrupt.
    +                PGM_DONE_INT_CLR: u1,
    +                padding: u30,
    +            }),
    +            ///  Controls the eFuse programming voltage.
    +            DAC_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  Controls the division factor of the rising clock of the programming voltage.
    +                DAC_CLK_DIV: u8,
    +                ///  Don't care.
    +                DAC_CLK_PAD_SEL: u1,
    +                ///  Controls the rising period of the programming voltage.
    +                DAC_NUM: u8,
    +                ///  Reduces the power supply of the programming voltage.
    +                OE_CLR: u1,
    +                padding: u14,
    +            }),
    +            ///  Configures read timing parameters.
    +            RD_TIM_CONF: mmio.Mmio(packed struct(u32) {
    +                reserved24: u24,
    +                ///  Configures the initial read time of eFuse.
    +                READ_INIT_NUM: u8,
    +            }),
    +            ///  Configurarion register 1 of eFuse programming timing parameters.
    +            WR_TIM_CONF1: mmio.Mmio(packed struct(u32) {
    +                reserved8: u8,
    +                ///  Configures the power up time for VDDQ.
    +                PWR_ON_NUM: u16,
    +                padding: u8,
    +            }),
    +            ///  Configurarion register 2 of eFuse programming timing parameters.
    +            WR_TIM_CONF2: mmio.Mmio(packed struct(u32) {
    +                ///  Configures the power outage time for VDDQ.
    +                PWR_OFF_NUM: u16,
    +                padding: u16,
    +            }),
    +            reserved508: [4]u8,
    +            ///  eFuse version register.
    +            DATE: mmio.Mmio(packed struct(u32) {
    +                ///  Stores eFuse version.
    +                DATE: u28,
    +                padding: u4,
    +            }),
    +        };
    +
    +        ///  External Memory
    +        pub const EXTMEM = extern struct {
    +            ///  This description will be updated in the near future.
    +            ICACHE_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to activate the data cache. 0: disable, 1: enable
    +                ICACHE_ENABLE: u1,
    +                padding: u31,
    +            }),
    +            ///  This description will be updated in the near future.
    +            ICACHE_CTRL1: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to disable core0 ibus, 0: enable, 1: disable
    +                ICACHE_SHUT_IBUS: u1,
    +                ///  The bit is used to disable core1 ibus, 0: enable, 1: disable
    +                ICACHE_SHUT_DBUS: u1,
    +                padding: u30,
    +            }),
    +            ///  This description will be updated in the near future.
    +            ICACHE_TAG_POWER_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to close clock gating of icache tag memory. 1: close gating, 0: open clock gating.
    +                ICACHE_TAG_MEM_FORCE_ON: u1,
    +                ///  The bit is used to power icache tag memory down, 0: follow rtc_lslp, 1: power down
    +                ICACHE_TAG_MEM_FORCE_PD: u1,
    +                ///  The bit is used to power icache tag memory up, 0: follow rtc_lslp, 1: power up
    +                ICACHE_TAG_MEM_FORCE_PU: u1,
    +                padding: u29,
    +            }),
    +            ///  This description will be updated in the near future.
    +            ICACHE_PRELOCK_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to enable the first section of prelock function.
    +                ICACHE_PRELOCK_SCT0_EN: u1,
    +                ///  The bit is used to enable the second section of prelock function.
    +                ICACHE_PRELOCK_SCT1_EN: u1,
    +                padding: u30,
    +            }),
    +            ///  This description will be updated in the near future.
    +            ICACHE_PRELOCK_SCT0_ADDR: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to configure the first start virtual address of data prelock, which is combined with ICACHE_PRELOCK_SCT0_SIZE_REG
    +                ICACHE_PRELOCK_SCT0_ADDR: u32,
    +            }),
    +            ///  This description will be updated in the near future.
    +            ICACHE_PRELOCK_SCT1_ADDR: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to configure the second start virtual address of data prelock, which is combined with ICACHE_PRELOCK_SCT1_SIZE_REG
    +                ICACHE_PRELOCK_SCT1_ADDR: u32,
    +            }),
    +            ///  This description will be updated in the near future.
    +            ICACHE_PRELOCK_SCT_SIZE: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to configure the second length of data locking, which is combined with ICACHE_PRELOCK_SCT1_ADDR_REG
    +                ICACHE_PRELOCK_SCT1_SIZE: u16,
    +                ///  The bits are used to configure the first length of data locking, which is combined with ICACHE_PRELOCK_SCT0_ADDR_REG
    +                ICACHE_PRELOCK_SCT0_SIZE: u16,
    +            }),
    +            ///  This description will be updated in the near future.
    +            ICACHE_LOCK_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to enable lock operation. It will be cleared by hardware after lock operation done.
    +                ICACHE_LOCK_ENA: u1,
    +                ///  The bit is used to enable unlock operation. It will be cleared by hardware after unlock operation done.
    +                ICACHE_UNLOCK_ENA: u1,
    +                ///  The bit is used to indicate unlock/lock operation is finished.
    +                ICACHE_LOCK_DONE: u1,
    +                padding: u29,
    +            }),
    +            ///  This description will be updated in the near future.
    +            ICACHE_LOCK_ADDR: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to configure the start virtual address for lock operations. It should be combined with ICACHE_LOCK_SIZE_REG.
    +                ICACHE_LOCK_ADDR: u32,
    +            }),
    +            ///  This description will be updated in the near future.
    +            ICACHE_LOCK_SIZE: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to configure the length for lock operations. The bits are the counts of cache block. It should be combined with ICACHE_LOCK_ADDR_REG.
    +                ICACHE_LOCK_SIZE: u16,
    +                padding: u16,
    +            }),
    +            ///  This description will be updated in the near future.
    +            ICACHE_SYNC_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to enable invalidate operation. It will be cleared by hardware after invalidate operation done.
    +                ICACHE_INVALIDATE_ENA: u1,
    +                ///  The bit is used to indicate invalidate operation is finished.
    +                ICACHE_SYNC_DONE: u1,
    +                padding: u30,
    +            }),
    +            ///  This description will be updated in the near future.
    +            ICACHE_SYNC_ADDR: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to configure the start virtual address for clean operations. It should be combined with ICACHE_SYNC_SIZE_REG.
    +                ICACHE_SYNC_ADDR: u32,
    +            }),
    +            ///  This description will be updated in the near future.
    +            ICACHE_SYNC_SIZE: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to configure the length for sync operations. The bits are the counts of cache block. It should be combined with ICACHE_SYNC_ADDR_REG.
    +                ICACHE_SYNC_SIZE: u23,
    +                padding: u9,
    +            }),
    +            ///  This description will be updated in the near future.
    +            ICACHE_PRELOAD_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to enable preload operation. It will be cleared by hardware after preload operation done.
    +                ICACHE_PRELOAD_ENA: u1,
    +                ///  The bit is used to indicate preload operation is finished.
    +                ICACHE_PRELOAD_DONE: u1,
    +                ///  The bit is used to configure the direction of preload operation. 1: descending, 0: ascending.
    +                ICACHE_PRELOAD_ORDER: u1,
    +                padding: u29,
    +            }),
    +            ///  This description will be updated in the near future.
    +            ICACHE_PRELOAD_ADDR: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to configure the start virtual address for preload operation. It should be combined with ICACHE_PRELOAD_SIZE_REG.
    +                ICACHE_PRELOAD_ADDR: u32,
    +            }),
    +            ///  This description will be updated in the near future.
    +            ICACHE_PRELOAD_SIZE: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to configure the length for preload operation. The bits are the counts of cache block. It should be combined with ICACHE_PRELOAD_ADDR_REG..
    +                ICACHE_PRELOAD_SIZE: u16,
    +                padding: u16,
    +            }),
    +            ///  This description will be updated in the near future.
    +            ICACHE_AUTOLOAD_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to enable the first section for autoload operation.
    +                ICACHE_AUTOLOAD_SCT0_ENA: u1,
    +                ///  The bits are used to enable the second section for autoload operation.
    +                ICACHE_AUTOLOAD_SCT1_ENA: u1,
    +                ///  The bit is used to enable and disable autoload operation. It is combined with icache_autoload_done. 1: enable, 0: disable.
    +                ICACHE_AUTOLOAD_ENA: u1,
    +                ///  The bit is used to indicate autoload operation is finished.
    +                ICACHE_AUTOLOAD_DONE: u1,
    +                ///  The bits are used to configure the direction of autoload. 1: descending, 0: ascending.
    +                ICACHE_AUTOLOAD_ORDER: u1,
    +                ///  The bits are used to configure trigger conditions for autoload. 0/3: cache miss, 1: cache hit, 2: both cache miss and hit.
    +                ICACHE_AUTOLOAD_RQST: u2,
    +                padding: u25,
    +            }),
    +            ///  This description will be updated in the near future.
    +            ICACHE_AUTOLOAD_SCT0_ADDR: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to configure the start virtual address of the first section for autoload operation. It should be combined with icache_autoload_sct0_ena.
    +                ICACHE_AUTOLOAD_SCT0_ADDR: u32,
    +            }),
    +            ///  This description will be updated in the near future.
    +            ICACHE_AUTOLOAD_SCT0_SIZE: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to configure the length of the first section for autoload operation. It should be combined with icache_autoload_sct0_ena.
    +                ICACHE_AUTOLOAD_SCT0_SIZE: u27,
    +                padding: u5,
    +            }),
    +            ///  This description will be updated in the near future.
    +            ICACHE_AUTOLOAD_SCT1_ADDR: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to configure the start virtual address of the second section for autoload operation. It should be combined with icache_autoload_sct1_ena.
    +                ICACHE_AUTOLOAD_SCT1_ADDR: u32,
    +            }),
    +            ///  This description will be updated in the near future.
    +            ICACHE_AUTOLOAD_SCT1_SIZE: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to configure the length of the second section for autoload operation. It should be combined with icache_autoload_sct1_ena.
    +                ICACHE_AUTOLOAD_SCT1_SIZE: u27,
    +                padding: u5,
    +            }),
    +            ///  This description will be updated in the near future.
    +            IBUS_TO_FLASH_START_VADDR: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to configure the start virtual address of ibus to access flash. The register is used to give constraints to ibus access counter.
    +                IBUS_TO_FLASH_START_VADDR: u32,
    +            }),
    +            ///  This description will be updated in the near future.
    +            IBUS_TO_FLASH_END_VADDR: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to configure the end virtual address of ibus to access flash. The register is used to give constraints to ibus access counter.
    +                IBUS_TO_FLASH_END_VADDR: u32,
    +            }),
    +            ///  This description will be updated in the near future.
    +            DBUS_TO_FLASH_START_VADDR: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to configure the start virtual address of dbus to access flash. The register is used to give constraints to dbus access counter.
    +                DBUS_TO_FLASH_START_VADDR: u32,
    +            }),
    +            ///  This description will be updated in the near future.
    +            DBUS_TO_FLASH_END_VADDR: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to configure the end virtual address of dbus to access flash. The register is used to give constraints to dbus access counter.
    +                DBUS_TO_FLASH_END_VADDR: u32,
    +            }),
    +            ///  This description will be updated in the near future.
    +            CACHE_ACS_CNT_CLR: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to clear ibus counter.
    +                IBUS_ACS_CNT_CLR: u1,
    +                ///  The bit is used to clear dbus counter.
    +                DBUS_ACS_CNT_CLR: u1,
    +                padding: u30,
    +            }),
    +            ///  This description will be updated in the near future.
    +            IBUS_ACS_MISS_CNT: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to count the number of the cache miss caused by ibus access flash.
    +                IBUS_ACS_MISS_CNT: u32,
    +            }),
    +            ///  This description will be updated in the near future.
    +            IBUS_ACS_CNT: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to count the number of ibus access flash through icache.
    +                IBUS_ACS_CNT: u32,
    +            }),
    +            ///  This description will be updated in the near future.
    +            DBUS_ACS_FLASH_MISS_CNT: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to count the number of the cache miss caused by dbus access flash.
    +                DBUS_ACS_FLASH_MISS_CNT: u32,
    +            }),
    +            ///  This description will be updated in the near future.
    +            DBUS_ACS_CNT: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to count the number of dbus access flash through icache.
    +                DBUS_ACS_CNT: u32,
    +            }),
    +            ///  This description will be updated in the near future.
    +            CACHE_ILG_INT_ENA: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to enable interrupt by sync configurations fault.
    +                ICACHE_SYNC_OP_FAULT_INT_ENA: u1,
    +                ///  The bit is used to enable interrupt by preload configurations fault.
    +                ICACHE_PRELOAD_OP_FAULT_INT_ENA: u1,
    +                reserved5: u3,
    +                ///  The bit is used to enable interrupt by mmu entry fault.
    +                MMU_ENTRY_FAULT_INT_ENA: u1,
    +                reserved7: u1,
    +                ///  The bit is used to enable interrupt by ibus counter overflow.
    +                IBUS_CNT_OVF_INT_ENA: u1,
    +                ///  The bit is used to enable interrupt by dbus counter overflow.
    +                DBUS_CNT_OVF_INT_ENA: u1,
    +                padding: u23,
    +            }),
    +            ///  This description will be updated in the near future.
    +            CACHE_ILG_INT_CLR: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to clear interrupt by sync configurations fault.
    +                ICACHE_SYNC_OP_FAULT_INT_CLR: u1,
    +                ///  The bit is used to clear interrupt by preload configurations fault.
    +                ICACHE_PRELOAD_OP_FAULT_INT_CLR: u1,
    +                reserved5: u3,
    +                ///  The bit is used to clear interrupt by mmu entry fault.
    +                MMU_ENTRY_FAULT_INT_CLR: u1,
    +                reserved7: u1,
    +                ///  The bit is used to clear interrupt by ibus counter overflow.
    +                IBUS_CNT_OVF_INT_CLR: u1,
    +                ///  The bit is used to clear interrupt by dbus counter overflow.
    +                DBUS_CNT_OVF_INT_CLR: u1,
    +                padding: u23,
    +            }),
    +            ///  This description will be updated in the near future.
    +            CACHE_ILG_INT_ST: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to indicate interrupt by sync configurations fault.
    +                ICACHE_SYNC_OP_FAULT_ST: u1,
    +                ///  The bit is used to indicate interrupt by preload configurations fault.
    +                ICACHE_PRELOAD_OP_FAULT_ST: u1,
    +                reserved5: u3,
    +                ///  The bit is used to indicate interrupt by mmu entry fault.
    +                MMU_ENTRY_FAULT_ST: u1,
    +                reserved7: u1,
    +                ///  The bit is used to indicate interrupt by ibus access flash/spiram counter overflow.
    +                IBUS_ACS_CNT_OVF_ST: u1,
    +                ///  The bit is used to indicate interrupt by ibus access flash/spiram miss counter overflow.
    +                IBUS_ACS_MISS_CNT_OVF_ST: u1,
    +                ///  The bit is used to indicate interrupt by dbus access flash/spiram counter overflow.
    +                DBUS_ACS_CNT_OVF_ST: u1,
    +                ///  The bit is used to indicate interrupt by dbus access flash miss counter overflow.
    +                DBUS_ACS_FLASH_MISS_CNT_OVF_ST: u1,
    +                padding: u21,
    +            }),
    +            ///  This description will be updated in the near future.
    +            CORE0_ACS_CACHE_INT_ENA: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to enable interrupt by cpu access icache while the corresponding ibus is disabled which include speculative access.
    +                CORE0_IBUS_ACS_MSK_IC_INT_ENA: u1,
    +                ///  The bit is used to enable interrupt by ibus trying to write icache
    +                CORE0_IBUS_WR_IC_INT_ENA: u1,
    +                ///  The bit is used to enable interrupt by authentication fail.
    +                CORE0_IBUS_REJECT_INT_ENA: u1,
    +                ///  The bit is used to enable interrupt by cpu access icache while the corresponding dbus is disabled which include speculative access.
    +                CORE0_DBUS_ACS_MSK_IC_INT_ENA: u1,
    +                ///  The bit is used to enable interrupt by authentication fail.
    +                CORE0_DBUS_REJECT_INT_ENA: u1,
    +                ///  The bit is used to enable interrupt by dbus trying to write icache
    +                CORE0_DBUS_WR_IC_INT_ENA: u1,
    +                padding: u26,
    +            }),
    +            ///  This description will be updated in the near future.
    +            CORE0_ACS_CACHE_INT_CLR: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to clear interrupt by cpu access icache while the corresponding ibus is disabled or icache is disabled which include speculative access.
    +                CORE0_IBUS_ACS_MSK_IC_INT_CLR: u1,
    +                ///  The bit is used to clear interrupt by ibus trying to write icache
    +                CORE0_IBUS_WR_IC_INT_CLR: u1,
    +                ///  The bit is used to clear interrupt by authentication fail.
    +                CORE0_IBUS_REJECT_INT_CLR: u1,
    +                ///  The bit is used to clear interrupt by cpu access icache while the corresponding dbus is disabled or icache is disabled which include speculative access.
    +                CORE0_DBUS_ACS_MSK_IC_INT_CLR: u1,
    +                ///  The bit is used to clear interrupt by authentication fail.
    +                CORE0_DBUS_REJECT_INT_CLR: u1,
    +                ///  The bit is used to clear interrupt by dbus trying to write icache
    +                CORE0_DBUS_WR_IC_INT_CLR: u1,
    +                padding: u26,
    +            }),
    +            ///  This description will be updated in the near future.
    +            CORE0_ACS_CACHE_INT_ST: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to indicate interrupt by cpu access icache while the core0_ibus is disabled or icache is disabled which include speculative access.
    +                CORE0_IBUS_ACS_MSK_ICACHE_ST: u1,
    +                ///  The bit is used to indicate interrupt by ibus trying to write icache
    +                CORE0_IBUS_WR_ICACHE_ST: u1,
    +                ///  The bit is used to indicate interrupt by authentication fail.
    +                CORE0_IBUS_REJECT_ST: u1,
    +                ///  The bit is used to indicate interrupt by cpu access icache while the core0_dbus is disabled or icache is disabled which include speculative access.
    +                CORE0_DBUS_ACS_MSK_ICACHE_ST: u1,
    +                ///  The bit is used to indicate interrupt by authentication fail.
    +                CORE0_DBUS_REJECT_ST: u1,
    +                ///  The bit is used to indicate interrupt by dbus trying to write icache
    +                CORE0_DBUS_WR_ICACHE_ST: u1,
    +                padding: u26,
    +            }),
    +            ///  This description will be updated in the near future.
    +            CORE0_DBUS_REJECT_ST: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to indicate the attribute of CPU access dbus when authentication fail. 0: invalidate, 1: execute-able, 2: read-able, 4: write-able.
    +                CORE0_DBUS_ATTR: u3,
    +                ///  The bit is used to indicate the world of CPU access dbus when authentication fail. 0: WORLD0, 1: WORLD1
    +                CORE0_DBUS_WORLD: u1,
    +                padding: u28,
    +            }),
    +            ///  This description will be updated in the near future.
    +            CORE0_DBUS_REJECT_VADDR: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to indicate the virtual address of CPU access dbus when authentication fail.
    +                CORE0_DBUS_VADDR: u32,
    +            }),
    +            ///  This description will be updated in the near future.
    +            CORE0_IBUS_REJECT_ST: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to indicate the attribute of CPU access ibus when authentication fail. 0: invalidate, 1: execute-able, 2: read-able
    +                CORE0_IBUS_ATTR: u3,
    +                ///  The bit is used to indicate the world of CPU access ibus when authentication fail. 0: WORLD0, 1: WORLD1
    +                CORE0_IBUS_WORLD: u1,
    +                padding: u28,
    +            }),
    +            ///  This description will be updated in the near future.
    +            CORE0_IBUS_REJECT_VADDR: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to indicate the virtual address of CPU access ibus when authentication fail.
    +                CORE0_IBUS_VADDR: u32,
    +            }),
    +            ///  This description will be updated in the near future.
    +            CACHE_MMU_FAULT_CONTENT: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to indicate the content of mmu entry which cause mmu fault..
    +                CACHE_MMU_FAULT_CONTENT: u10,
    +                ///  The right-most 3 bits are used to indicate the operations which cause mmu fault occurrence. 0: default, 1: cpu miss, 2: preload miss, 3: writeback, 4: cpu miss evict recovery address, 5: load miss evict recovery address, 6: external dma tx, 7: external dma rx. The most significant bit is used to indicate this operation occurs in which one icache.
    +                CACHE_MMU_FAULT_CODE: u4,
    +                padding: u18,
    +            }),
    +            ///  This description will be updated in the near future.
    +            CACHE_MMU_FAULT_VADDR: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to indicate the virtual address which cause mmu fault..
    +                CACHE_MMU_FAULT_VADDR: u32,
    +            }),
    +            ///  This description will be updated in the near future.
    +            CACHE_WRAP_AROUND_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to enable wrap around mode when read data from flash.
    +                CACHE_FLASH_WRAP_AROUND: u1,
    +                padding: u31,
    +            }),
    +            ///  This description will be updated in the near future.
    +            CACHE_MMU_POWER_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to enable clock gating to save power when access mmu memory, 0: enable, 1: disable
    +                CACHE_MMU_MEM_FORCE_ON: u1,
    +                ///  The bit is used to power mmu memory down, 0: follow_rtc_lslp_pd, 1: power down
    +                CACHE_MMU_MEM_FORCE_PD: u1,
    +                ///  The bit is used to power mmu memory down, 0: follow_rtc_lslp_pd, 1: power up
    +                CACHE_MMU_MEM_FORCE_PU: u1,
    +                padding: u29,
    +            }),
    +            ///  This description will be updated in the near future.
    +            CACHE_STATE: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to indicate whether icache main fsm is in idle state or not. 1: in idle state, 0: not in idle state
    +                ICACHE_STATE: u12,
    +                padding: u20,
    +            }),
    +            ///  This description will be updated in the near future.
    +            CACHE_ENCRYPT_DECRYPT_RECORD_DISABLE: mmio.Mmio(packed struct(u32) {
    +                ///  Reserved.
    +                RECORD_DISABLE_DB_ENCRYPT: u1,
    +                ///  Reserved.
    +                RECORD_DISABLE_G0CB_DECRYPT: u1,
    +                padding: u30,
    +            }),
    +            ///  This description will be updated in the near future.
    +            CACHE_ENCRYPT_DECRYPT_CLK_FORCE_ON: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to close clock gating of manual crypt clock. 1: close gating, 0: open clock gating.
    +                CLK_FORCE_ON_MANUAL_CRYPT: u1,
    +                ///  The bit is used to close clock gating of automatic crypt clock. 1: close gating, 0: open clock gating.
    +                CLK_FORCE_ON_AUTO_CRYPT: u1,
    +                ///  The bit is used to close clock gating of external memory encrypt and decrypt clock. 1: close gating, 0: open clock gating.
    +                CLK_FORCE_ON_CRYPT: u1,
    +                padding: u29,
    +            }),
    +            ///  This description will be updated in the near future.
    +            CACHE_PRELOAD_INT_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to indicate the interrupt by icache pre-load done.
    +                ICACHE_PRELOAD_INT_ST: u1,
    +                ///  The bit is used to enable the interrupt by icache pre-load done.
    +                ICACHE_PRELOAD_INT_ENA: u1,
    +                ///  The bit is used to clear the interrupt by icache pre-load done.
    +                ICACHE_PRELOAD_INT_CLR: u1,
    +                padding: u29,
    +            }),
    +            ///  This description will be updated in the near future.
    +            CACHE_SYNC_INT_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to indicate the interrupt by icache sync done.
    +                ICACHE_SYNC_INT_ST: u1,
    +                ///  The bit is used to enable the interrupt by icache sync done.
    +                ICACHE_SYNC_INT_ENA: u1,
    +                ///  The bit is used to clear the interrupt by icache sync done.
    +                ICACHE_SYNC_INT_CLR: u1,
    +                padding: u29,
    +            }),
    +            ///  This description will be updated in the near future.
    +            CACHE_MMU_OWNER: mmio.Mmio(packed struct(u32) {
    +                ///  The bits are used to specify the owner of MMU.bit0/bit2: ibus, bit1/bit3: dbus
    +                CACHE_MMU_OWNER: u4,
    +                padding: u28,
    +            }),
    +            ///  This description will be updated in the near future.
    +            CACHE_CONF_MISC: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to disable checking mmu entry fault by preload operation.
    +                CACHE_IGNORE_PRELOAD_MMU_ENTRY_FAULT: u1,
    +                ///  The bit is used to disable checking mmu entry fault by sync operation.
    +                CACHE_IGNORE_SYNC_MMU_ENTRY_FAULT: u1,
    +                ///  The bit is used to enable cache trace function.
    +                CACHE_TRACE_ENA: u1,
    +                padding: u29,
    +            }),
    +            ///  This description will be updated in the near future.
    +            ICACHE_FREEZE: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to enable icache freeze mode
    +                ENA: u1,
    +                ///  The bit is used to configure freeze mode, 0: assert busy if CPU miss 1: assert hit if CPU miss
    +                MODE: u1,
    +                ///  The bit is used to indicate icache freeze success
    +                DONE: u1,
    +                padding: u29,
    +            }),
    +            ///  This description will be updated in the near future.
    +            ICACHE_ATOMIC_OPERATE_ENA: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to activate icache atomic operation protection. In this case, sync/lock operation can not interrupt miss-work. This feature does not work during invalidateAll operation.
    +                ICACHE_ATOMIC_OPERATE_ENA: u1,
    +                padding: u31,
    +            }),
    +            ///  This description will be updated in the near future.
    +            CACHE_REQUEST: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to disable request recording which could cause performance issue
    +                BYPASS: u1,
    +                padding: u31,
    +            }),
    +            ///  This description will be updated in the near future.
    +            IBUS_PMS_TBL_LOCK: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to configure the ibus permission control section boundary0
    +                IBUS_PMS_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  This description will be updated in the near future.
    +            IBUS_PMS_TBL_BOUNDARY0: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to configure the ibus permission control section boundary0
    +                IBUS_PMS_BOUNDARY0: u12,
    +                padding: u20,
    +            }),
    +            ///  This description will be updated in the near future.
    +            IBUS_PMS_TBL_BOUNDARY1: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to configure the ibus permission control section boundary1
    +                IBUS_PMS_BOUNDARY1: u12,
    +                padding: u20,
    +            }),
    +            ///  This description will be updated in the near future.
    +            IBUS_PMS_TBL_BOUNDARY2: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to configure the ibus permission control section boundary2
    +                IBUS_PMS_BOUNDARY2: u12,
    +                padding: u20,
    +            }),
    +            ///  This description will be updated in the near future.
    +            IBUS_PMS_TBL_ATTR: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to configure attribute of the ibus permission control section1, bit0: fetch in world0, bit1: load in world0, bit2: fetch in world1, bit3: load in world1
    +                IBUS_PMS_SCT1_ATTR: u4,
    +                ///  The bit is used to configure attribute of the ibus permission control section2, bit0: fetch in world0, bit1: load in world0, bit2: fetch in world1, bit3: load in world1
    +                IBUS_PMS_SCT2_ATTR: u4,
    +                padding: u24,
    +            }),
    +            ///  This description will be updated in the near future.
    +            DBUS_PMS_TBL_LOCK: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to configure the ibus permission control section boundary0
    +                DBUS_PMS_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  This description will be updated in the near future.
    +            DBUS_PMS_TBL_BOUNDARY0: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to configure the dbus permission control section boundary0
    +                DBUS_PMS_BOUNDARY0: u12,
    +                padding: u20,
    +            }),
    +            ///  This description will be updated in the near future.
    +            DBUS_PMS_TBL_BOUNDARY1: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to configure the dbus permission control section boundary1
    +                DBUS_PMS_BOUNDARY1: u12,
    +                padding: u20,
    +            }),
    +            ///  This description will be updated in the near future.
    +            DBUS_PMS_TBL_BOUNDARY2: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to configure the dbus permission control section boundary2
    +                DBUS_PMS_BOUNDARY2: u12,
    +                padding: u20,
    +            }),
    +            ///  This description will be updated in the near future.
    +            DBUS_PMS_TBL_ATTR: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to configure attribute of the dbus permission control section1, bit0: load in world0, bit2: load in world1
    +                DBUS_PMS_SCT1_ATTR: u2,
    +                ///  The bit is used to configure attribute of the dbus permission control section2, bit0: load in world0, bit2: load in world1
    +                DBUS_PMS_SCT2_ATTR: u2,
    +                padding: u28,
    +            }),
    +            ///  This description will be updated in the near future.
    +            CLOCK_GATE: mmio.Mmio(packed struct(u32) {
    +                ///  clock gate enable.
    +                CLK_EN: u1,
    +                padding: u31,
    +            }),
    +            reserved1020: [760]u8,
    +            ///  This description will be updated in the near future.
    +            REG_DATE: mmio.Mmio(packed struct(u32) {
    +                ///  version information
    +                DATE: u28,
    +                padding: u4,
    +            }),
    +        };
    +
    +        ///  General Purpose Input/Output
    +        pub const GPIO = extern struct {
    +            ///  GPIO bit select register
    +            BT_SELECT: mmio.Mmio(packed struct(u32) {
    +                ///  GPIO bit select register
    +                BT_SEL: u32,
    +            }),
    +            ///  GPIO output register
    +            OUT: mmio.Mmio(packed struct(u32) {
    +                ///  GPIO output register for GPIO0-25
    +                DATA_ORIG: u26,
    +                padding: u6,
    +            }),
    +            ///  GPIO output set register
    +            OUT_W1TS: mmio.Mmio(packed struct(u32) {
    +                ///  GPIO output set register for GPIO0-25
    +                OUT_W1TS: u26,
    +                padding: u6,
    +            }),
    +            ///  GPIO output clear register
    +            OUT_W1TC: mmio.Mmio(packed struct(u32) {
    +                ///  GPIO output clear register for GPIO0-25
    +                OUT_W1TC: u26,
    +                padding: u6,
    +            }),
    +            reserved28: [12]u8,
    +            ///  GPIO sdio select register
    +            SDIO_SELECT: mmio.Mmio(packed struct(u32) {
    +                ///  GPIO sdio select register
    +                SDIO_SEL: u8,
    +                padding: u24,
    +            }),
    +            ///  GPIO output enable register
    +            ENABLE: mmio.Mmio(packed struct(u32) {
    +                ///  GPIO output enable register for GPIO0-25
    +                DATA: u26,
    +                padding: u6,
    +            }),
    +            ///  GPIO output enable set register
    +            ENABLE_W1TS: mmio.Mmio(packed struct(u32) {
    +                ///  GPIO output enable set register for GPIO0-25
    +                ENABLE_W1TS: u26,
    +                padding: u6,
    +            }),
    +            ///  GPIO output enable clear register
    +            ENABLE_W1TC: mmio.Mmio(packed struct(u32) {
    +                ///  GPIO output enable clear register for GPIO0-25
    +                ENABLE_W1TC: u26,
    +                padding: u6,
    +            }),
    +            reserved56: [12]u8,
    +            ///  pad strapping register
    +            STRAP: mmio.Mmio(packed struct(u32) {
    +                ///  pad strapping register
    +                STRAPPING: u16,
    +                padding: u16,
    +            }),
    +            ///  GPIO input register
    +            IN: mmio.Mmio(packed struct(u32) {
    +                ///  GPIO input register for GPIO0-25
    +                DATA_NEXT: u26,
    +                padding: u6,
    +            }),
    +            reserved68: [4]u8,
    +            ///  GPIO interrupt status register
    +            STATUS: mmio.Mmio(packed struct(u32) {
    +                ///  GPIO interrupt status register for GPIO0-25
    +                INTERRUPT: u26,
    +                padding: u6,
    +            }),
    +            ///  GPIO interrupt status set register
    +            STATUS_W1TS: mmio.Mmio(packed struct(u32) {
    +                ///  GPIO interrupt status set register for GPIO0-25
    +                STATUS_W1TS: u26,
    +                padding: u6,
    +            }),
    +            ///  GPIO interrupt status clear register
    +            STATUS_W1TC: mmio.Mmio(packed struct(u32) {
    +                ///  GPIO interrupt status clear register for GPIO0-25
    +                STATUS_W1TC: u26,
    +                padding: u6,
    +            }),
    +            reserved92: [12]u8,
    +            ///  GPIO PRO_CPU interrupt status register
    +            PCPU_INT: mmio.Mmio(packed struct(u32) {
    +                ///  GPIO PRO_CPU interrupt status register for GPIO0-25
    +                PROCPU_INT: u26,
    +                padding: u6,
    +            }),
    +            ///  GPIO PRO_CPU(not shielded) interrupt status register
    +            PCPU_NMI_INT: mmio.Mmio(packed struct(u32) {
    +                ///  GPIO PRO_CPU(not shielded) interrupt status register for GPIO0-25
    +                PROCPU_NMI_INT: u26,
    +                padding: u6,
    +            }),
    +            ///  GPIO CPUSDIO interrupt status register
    +            CPUSDIO_INT: mmio.Mmio(packed struct(u32) {
    +                ///  GPIO CPUSDIO interrupt status register for GPIO0-25
    +                SDIO_INT: u26,
    +                padding: u6,
    +            }),
    +            reserved116: [12]u8,
    +            ///  GPIO pin configuration register
    +            PIN: [26]mmio.Mmio(packed struct(u32) {
    +                ///  set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger at posedge.
    +                PIN_SYNC2_BYPASS: u2,
    +                ///  set this bit to select pad driver. 1:open-drain. :normal.
    +                PIN_PAD_DRIVER: u1,
    +                ///  set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger at posedge.
    +                PIN_SYNC1_BYPASS: u2,
    +                reserved7: u2,
    +                ///  set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level. 5:valid at high level
    +                PIN_INT_TYPE: u3,
    +                ///  set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    +                PIN_WAKEUP_ENABLE: u1,
    +                ///  reserved
    +                PIN_CONFIG: u2,
    +                ///  set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded) interrupt.
    +                PIN_INT_ENA: u5,
    +                padding: u14,
    +            }),
    +            reserved332: [112]u8,
    +            ///  GPIO interrupt source register
    +            STATUS_NEXT: mmio.Mmio(packed struct(u32) {
    +                ///  GPIO interrupt source register for GPIO0-25
    +                STATUS_INTERRUPT_NEXT: u26,
    +                padding: u6,
    +            }),
    +            reserved340: [4]u8,
    +            ///  GPIO input function configuration register
    +            FUNC_IN_SEL_CFG: [128]mmio.Mmio(packed struct(u32) {
    +                ///  set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always high level. s=x3C: set this port always low level.
    +                IN_SEL: u5,
    +                ///  set this bit to invert input signal. 1:invert. :not invert.
    +                IN_INV_SEL: u1,
    +                ///  set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    +                SEL: u1,
    +                padding: u25,
    +            }),
    +            reserved1364: [512]u8,
    +            ///  GPIO output function select register
    +            FUNC_OUT_SEL_CFG: [26]mmio.Mmio(packed struct(u32) {
    +                ///  The value of the bits: <=s<=256. Set the value to select output signal. s=-255: output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals GPIO_OUT_REG[n].
    +                OUT_SEL: u8,
    +                ///  set this bit to invert output signal.1:invert.:not invert.
    +                INV_SEL: u1,
    +                ///  set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output enable signal.:use peripheral output enable signal.
    +                OEN_SEL: u1,
    +                ///  set this bit to invert output enable signal.1:invert.:not invert.
    +                OEN_INV_SEL: u1,
    +                padding: u21,
    +            }),
    +            reserved1580: [112]u8,
    +            ///  GPIO clock gate register
    +            CLOCK_GATE: mmio.Mmio(packed struct(u32) {
    +                ///  set this bit to enable GPIO clock gate
    +                CLK_EN: u1,
    +                padding: u31,
    +            }),
    +            reserved1788: [204]u8,
    +            ///  GPIO version register
    +            REG_DATE: mmio.Mmio(packed struct(u32) {
    +                ///  version register
    +                REG_DATE: u28,
    +                padding: u4,
    +            }),
    +        };
    +
    +        ///  Sigma-Delta Modulation
    +        pub const GPIOSD = extern struct {
    +            ///  Duty Cycle Configure Register of SDM%s
    +            SIGMADELTA: [4]mmio.Mmio(packed struct(u32) {
    +                ///  This field is used to configure the duty cycle of sigma delta modulation output.
    +                SD0_IN: u8,
    +                ///  This field is used to set a divider value to divide APB clock.
    +                SD0_PRESCALE: u8,
    +                padding: u16,
    +            }),
    +            reserved32: [16]u8,
    +            ///  Clock Gating Configure Register
    +            SIGMADELTA_CG: mmio.Mmio(packed struct(u32) {
    +                reserved31: u31,
    +                ///  Clock enable bit of configuration registers for sigma delta modulation.
    +                CLK_EN: u1,
    +            }),
    +            ///  MISC Register
    +            SIGMADELTA_MISC: mmio.Mmio(packed struct(u32) {
    +                reserved30: u30,
    +                ///  Clock enable bit of sigma delta modulation.
    +                FUNCTION_CLK_EN: u1,
    +                ///  Reserved.
    +                SPI_SWAP: u1,
    +            }),
    +            ///  Version Control Register
    +            SIGMADELTA_VERSION: mmio.Mmio(packed struct(u32) {
    +                ///  Version control register.
    +                GPIO_SD_DATE: u28,
    +                padding: u4,
    +            }),
    +        };
    +
    +        ///  HMAC (Hash-based Message Authentication Code) Accelerator
    +        pub const HMAC = extern struct {
    +            reserved64: [64]u8,
    +            ///  Process control register 0.
    +            SET_START: mmio.Mmio(packed struct(u32) {
    +                ///  Start hmac operation.
    +                SET_START: u1,
    +                padding: u31,
    +            }),
    +            ///  Configure purpose.
    +            SET_PARA_PURPOSE: mmio.Mmio(packed struct(u32) {
    +                ///  Set hmac parameter purpose.
    +                PURPOSE_SET: u4,
    +                padding: u28,
    +            }),
    +            ///  Configure key.
    +            SET_PARA_KEY: mmio.Mmio(packed struct(u32) {
    +                ///  Set hmac parameter key.
    +                KEY_SET: u3,
    +                padding: u29,
    +            }),
    +            ///  Finish initial configuration.
    +            SET_PARA_FINISH: mmio.Mmio(packed struct(u32) {
    +                ///  Finish hmac configuration.
    +                SET_PARA_END: u1,
    +                padding: u31,
    +            }),
    +            ///  Process control register 1.
    +            SET_MESSAGE_ONE: mmio.Mmio(packed struct(u32) {
    +                ///  Call SHA to calculate one message block.
    +                SET_TEXT_ONE: u1,
    +                padding: u31,
    +            }),
    +            ///  Process control register 2.
    +            SET_MESSAGE_ING: mmio.Mmio(packed struct(u32) {
    +                ///  Continue typical hmac.
    +                SET_TEXT_ING: u1,
    +                padding: u31,
    +            }),
    +            ///  Process control register 3.
    +            SET_MESSAGE_END: mmio.Mmio(packed struct(u32) {
    +                ///  Start hardware padding.
    +                SET_TEXT_END: u1,
    +                padding: u31,
    +            }),
    +            ///  Process control register 4.
    +            SET_RESULT_FINISH: mmio.Mmio(packed struct(u32) {
    +                ///  After read result from upstream, then let hmac back to idle.
    +                SET_RESULT_END: u1,
    +                padding: u31,
    +            }),
    +            ///  Invalidate register 0.
    +            SET_INVALIDATE_JTAG: mmio.Mmio(packed struct(u32) {
    +                ///  Clear result from hmac downstream JTAG.
    +                SET_INVALIDATE_JTAG: u1,
    +                padding: u31,
    +            }),
    +            ///  Invalidate register 1.
    +            SET_INVALIDATE_DS: mmio.Mmio(packed struct(u32) {
    +                ///  Clear result from hmac downstream DS.
    +                SET_INVALIDATE_DS: u1,
    +                padding: u31,
    +            }),
    +            ///  Error register.
    +            QUERY_ERROR: mmio.Mmio(packed struct(u32) {
    +                ///  Hmac configuration state. 0: key are agree with purpose. 1: error
    +                QUREY_CHECK: u1,
    +                padding: u31,
    +            }),
    +            ///  Busy register.
    +            QUERY_BUSY: mmio.Mmio(packed struct(u32) {
    +                ///  Hmac state. 1'b0: idle. 1'b1: busy
    +                BUSY_STATE: u1,
    +                padding: u31,
    +            }),
    +            reserved128: [16]u8,
    +            ///  Message block memory.
    +            WR_MESSAGE_MEM: [64]u8,
    +            ///  Result from upstream.
    +            RD_RESULT_MEM: [32]u8,
    +            reserved240: [16]u8,
    +            ///  Process control register 5.
    +            SET_MESSAGE_PAD: mmio.Mmio(packed struct(u32) {
    +                ///  Start software padding.
    +                SET_TEXT_PAD: u1,
    +                padding: u31,
    +            }),
    +            ///  Process control register 6.
    +            ONE_BLOCK: mmio.Mmio(packed struct(u32) {
    +                ///  Don't have to do padding.
    +                SET_ONE_BLOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  Jtag register 0.
    +            SOFT_JTAG_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  Turn on JTAG verification.
    +                SOFT_JTAG_CTRL: u1,
    +                padding: u31,
    +            }),
    +            ///  Jtag register 1.
    +            WR_JTAG: mmio.Mmio(packed struct(u32) {
    +                ///  32-bit of key to be compared.
    +                WR_JTAG: u32,
    +            }),
    +        };
    +
    +        ///  I2C (Inter-Integrated Circuit) Controller
    +        pub const I2C0 = extern struct {
    +            ///  I2C_SCL_LOW_PERIOD_REG
    +            SCL_LOW_PERIOD: mmio.Mmio(packed struct(u32) {
    +                ///  reg_scl_low_period
    +                SCL_LOW_PERIOD: u9,
    +                padding: u23,
    +            }),
    +            ///  I2C_CTR_REG
    +            CTR: mmio.Mmio(packed struct(u32) {
    +                ///  reg_sda_force_out
    +                SDA_FORCE_OUT: u1,
    +                ///  reg_scl_force_out
    +                SCL_FORCE_OUT: u1,
    +                ///  reg_sample_scl_level
    +                SAMPLE_SCL_LEVEL: u1,
    +                ///  reg_rx_full_ack_level
    +                RX_FULL_ACK_LEVEL: u1,
    +                ///  reg_ms_mode
    +                MS_MODE: u1,
    +                ///  reg_trans_start
    +                TRANS_START: u1,
    +                ///  reg_tx_lsb_first
    +                TX_LSB_FIRST: u1,
    +                ///  reg_rx_lsb_first
    +                RX_LSB_FIRST: u1,
    +                ///  reg_clk_en
    +                CLK_EN: u1,
    +                ///  reg_arbitration_en
    +                ARBITRATION_EN: u1,
    +                ///  reg_fsm_rst
    +                FSM_RST: u1,
    +                ///  reg_conf_upgate
    +                CONF_UPGATE: u1,
    +                ///  reg_slv_tx_auto_start_en
    +                SLV_TX_AUTO_START_EN: u1,
    +                ///  reg_addr_10bit_rw_check_en
    +                ADDR_10BIT_RW_CHECK_EN: u1,
    +                ///  reg_addr_broadcasting_en
    +                ADDR_BROADCASTING_EN: u1,
    +                padding: u17,
    +            }),
    +            ///  I2C_SR_REG
    +            SR: mmio.Mmio(packed struct(u32) {
    +                ///  reg_resp_rec
    +                RESP_REC: u1,
    +                ///  reg_slave_rw
    +                SLAVE_RW: u1,
    +                reserved3: u1,
    +                ///  reg_arb_lost
    +                ARB_LOST: u1,
    +                ///  reg_bus_busy
    +                BUS_BUSY: u1,
    +                ///  reg_slave_addressed
    +                SLAVE_ADDRESSED: u1,
    +                reserved8: u2,
    +                ///  reg_rxfifo_cnt
    +                RXFIFO_CNT: u6,
    +                ///  reg_stretch_cause
    +                STRETCH_CAUSE: u2,
    +                reserved18: u2,
    +                ///  reg_txfifo_cnt
    +                TXFIFO_CNT: u6,
    +                ///  reg_scl_main_state_last
    +                SCL_MAIN_STATE_LAST: u3,
    +                reserved28: u1,
    +                ///  reg_scl_state_last
    +                SCL_STATE_LAST: u3,
    +                padding: u1,
    +            }),
    +            ///  I2C_TO_REG
    +            TO: mmio.Mmio(packed struct(u32) {
    +                ///  reg_time_out_value
    +                TIME_OUT_VALUE: u5,
    +                ///  reg_time_out_en
    +                TIME_OUT_EN: u1,
    +                padding: u26,
    +            }),
    +            ///  I2C_SLAVE_ADDR_REG
    +            SLAVE_ADDR: mmio.Mmio(packed struct(u32) {
    +                ///  reg_slave_addr
    +                SLAVE_ADDR: u15,
    +                reserved31: u16,
    +                ///  reg_addr_10bit_en
    +                ADDR_10BIT_EN: u1,
    +            }),
    +            ///  I2C_FIFO_ST_REG
    +            FIFO_ST: mmio.Mmio(packed struct(u32) {
    +                ///  reg_rxfifo_raddr
    +                RXFIFO_RADDR: u5,
    +                ///  reg_rxfifo_waddr
    +                RXFIFO_WADDR: u5,
    +                ///  reg_txfifo_raddr
    +                TXFIFO_RADDR: u5,
    +                ///  reg_txfifo_waddr
    +                TXFIFO_WADDR: u5,
    +                reserved22: u2,
    +                ///  reg_slave_rw_point
    +                SLAVE_RW_POINT: u8,
    +                padding: u2,
    +            }),
    +            ///  I2C_FIFO_CONF_REG
    +            FIFO_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  reg_rxfifo_wm_thrhd
    +                RXFIFO_WM_THRHD: u5,
    +                ///  reg_txfifo_wm_thrhd
    +                TXFIFO_WM_THRHD: u5,
    +                ///  reg_nonfifo_en
    +                NONFIFO_EN: u1,
    +                ///  reg_fifo_addr_cfg_en
    +                FIFO_ADDR_CFG_EN: u1,
    +                ///  reg_rx_fifo_rst
    +                RX_FIFO_RST: u1,
    +                ///  reg_tx_fifo_rst
    +                TX_FIFO_RST: u1,
    +                ///  reg_fifo_prt_en
    +                FIFO_PRT_EN: u1,
    +                padding: u17,
    +            }),
    +            ///  I2C_FIFO_DATA_REG
    +            DATA: mmio.Mmio(packed struct(u32) {
    +                ///  reg_fifo_rdata
    +                FIFO_RDATA: u8,
    +                padding: u24,
    +            }),
    +            ///  I2C_INT_RAW_REG
    +            INT_RAW: mmio.Mmio(packed struct(u32) {
    +                ///  reg_rxfifo_wm_int_raw
    +                RXFIFO_WM_INT_RAW: u1,
    +                ///  reg_txfifo_wm_int_raw
    +                TXFIFO_WM_INT_RAW: u1,
    +                ///  reg_rxfifo_ovf_int_raw
    +                RXFIFO_OVF_INT_RAW: u1,
    +                ///  reg_end_detect_int_raw
    +                END_DETECT_INT_RAW: u1,
    +                ///  reg_byte_trans_done_int_raw
    +                BYTE_TRANS_DONE_INT_RAW: u1,
    +                ///  reg_arbitration_lost_int_raw
    +                ARBITRATION_LOST_INT_RAW: u1,
    +                ///  reg_mst_txfifo_udf_int_raw
    +                MST_TXFIFO_UDF_INT_RAW: u1,
    +                ///  reg_trans_complete_int_raw
    +                TRANS_COMPLETE_INT_RAW: u1,
    +                ///  reg_time_out_int_raw
    +                TIME_OUT_INT_RAW: u1,
    +                ///  reg_trans_start_int_raw
    +                TRANS_START_INT_RAW: u1,
    +                ///  reg_nack_int_raw
    +                NACK_INT_RAW: u1,
    +                ///  reg_txfifo_ovf_int_raw
    +                TXFIFO_OVF_INT_RAW: u1,
    +                ///  reg_rxfifo_udf_int_raw
    +                RXFIFO_UDF_INT_RAW: u1,
    +                ///  reg_scl_st_to_int_raw
    +                SCL_ST_TO_INT_RAW: u1,
    +                ///  reg_scl_main_st_to_int_raw
    +                SCL_MAIN_ST_TO_INT_RAW: u1,
    +                ///  reg_det_start_int_raw
    +                DET_START_INT_RAW: u1,
    +                ///  reg_slave_stretch_int_raw
    +                SLAVE_STRETCH_INT_RAW: u1,
    +                ///  reg_general_call_int_raw
    +                GENERAL_CALL_INT_RAW: u1,
    +                padding: u14,
    +            }),
    +            ///  I2C_INT_CLR_REG
    +            INT_CLR: mmio.Mmio(packed struct(u32) {
    +                ///  reg_rxfifo_wm_int_clr
    +                RXFIFO_WM_INT_CLR: u1,
    +                ///  reg_txfifo_wm_int_clr
    +                TXFIFO_WM_INT_CLR: u1,
    +                ///  reg_rxfifo_ovf_int_clr
    +                RXFIFO_OVF_INT_CLR: u1,
    +                ///  reg_end_detect_int_clr
    +                END_DETECT_INT_CLR: u1,
    +                ///  reg_byte_trans_done_int_clr
    +                BYTE_TRANS_DONE_INT_CLR: u1,
    +                ///  reg_arbitration_lost_int_clr
    +                ARBITRATION_LOST_INT_CLR: u1,
    +                ///  reg_mst_txfifo_udf_int_clr
    +                MST_TXFIFO_UDF_INT_CLR: u1,
    +                ///  reg_trans_complete_int_clr
    +                TRANS_COMPLETE_INT_CLR: u1,
    +                ///  reg_time_out_int_clr
    +                TIME_OUT_INT_CLR: u1,
    +                ///  reg_trans_start_int_clr
    +                TRANS_START_INT_CLR: u1,
    +                ///  reg_nack_int_clr
    +                NACK_INT_CLR: u1,
    +                ///  reg_txfifo_ovf_int_clr
    +                TXFIFO_OVF_INT_CLR: u1,
    +                ///  reg_rxfifo_udf_int_clr
    +                RXFIFO_UDF_INT_CLR: u1,
    +                ///  reg_scl_st_to_int_clr
    +                SCL_ST_TO_INT_CLR: u1,
    +                ///  reg_scl_main_st_to_int_clr
    +                SCL_MAIN_ST_TO_INT_CLR: u1,
    +                ///  reg_det_start_int_clr
    +                DET_START_INT_CLR: u1,
    +                ///  reg_slave_stretch_int_clr
    +                SLAVE_STRETCH_INT_CLR: u1,
    +                ///  reg_general_call_int_clr
    +                GENERAL_CALL_INT_CLR: u1,
    +                padding: u14,
    +            }),
    +            ///  I2C_INT_ENA_REG
    +            INT_ENA: mmio.Mmio(packed struct(u32) {
    +                ///  reg_rxfifo_wm_int_ena
    +                RXFIFO_WM_INT_ENA: u1,
    +                ///  reg_txfifo_wm_int_ena
    +                TXFIFO_WM_INT_ENA: u1,
    +                ///  reg_rxfifo_ovf_int_ena
    +                RXFIFO_OVF_INT_ENA: u1,
    +                ///  reg_end_detect_int_ena
    +                END_DETECT_INT_ENA: u1,
    +                ///  reg_byte_trans_done_int_ena
    +                BYTE_TRANS_DONE_INT_ENA: u1,
    +                ///  reg_arbitration_lost_int_ena
    +                ARBITRATION_LOST_INT_ENA: u1,
    +                ///  reg_mst_txfifo_udf_int_ena
    +                MST_TXFIFO_UDF_INT_ENA: u1,
    +                ///  reg_trans_complete_int_ena
    +                TRANS_COMPLETE_INT_ENA: u1,
    +                ///  reg_time_out_int_ena
    +                TIME_OUT_INT_ENA: u1,
    +                ///  reg_trans_start_int_ena
    +                TRANS_START_INT_ENA: u1,
    +                ///  reg_nack_int_ena
    +                NACK_INT_ENA: u1,
    +                ///  reg_txfifo_ovf_int_ena
    +                TXFIFO_OVF_INT_ENA: u1,
    +                ///  reg_rxfifo_udf_int_ena
    +                RXFIFO_UDF_INT_ENA: u1,
    +                ///  reg_scl_st_to_int_ena
    +                SCL_ST_TO_INT_ENA: u1,
    +                ///  reg_scl_main_st_to_int_ena
    +                SCL_MAIN_ST_TO_INT_ENA: u1,
    +                ///  reg_det_start_int_ena
    +                DET_START_INT_ENA: u1,
    +                ///  reg_slave_stretch_int_ena
    +                SLAVE_STRETCH_INT_ENA: u1,
    +                ///  reg_general_call_int_ena
    +                GENERAL_CALL_INT_ENA: u1,
    +                padding: u14,
    +            }),
    +            ///  I2C_INT_STATUS_REG
    +            INT_STATUS: mmio.Mmio(packed struct(u32) {
    +                ///  reg_rxfifo_wm_int_st
    +                RXFIFO_WM_INT_ST: u1,
    +                ///  reg_txfifo_wm_int_st
    +                TXFIFO_WM_INT_ST: u1,
    +                ///  reg_rxfifo_ovf_int_st
    +                RXFIFO_OVF_INT_ST: u1,
    +                ///  reg_end_detect_int_st
    +                END_DETECT_INT_ST: u1,
    +                ///  reg_byte_trans_done_int_st
    +                BYTE_TRANS_DONE_INT_ST: u1,
    +                ///  reg_arbitration_lost_int_st
    +                ARBITRATION_LOST_INT_ST: u1,
    +                ///  reg_mst_txfifo_udf_int_st
    +                MST_TXFIFO_UDF_INT_ST: u1,
    +                ///  reg_trans_complete_int_st
    +                TRANS_COMPLETE_INT_ST: u1,
    +                ///  reg_time_out_int_st
    +                TIME_OUT_INT_ST: u1,
    +                ///  reg_trans_start_int_st
    +                TRANS_START_INT_ST: u1,
    +                ///  reg_nack_int_st
    +                NACK_INT_ST: u1,
    +                ///  reg_txfifo_ovf_int_st
    +                TXFIFO_OVF_INT_ST: u1,
    +                ///  reg_rxfifo_udf_int_st
    +                RXFIFO_UDF_INT_ST: u1,
    +                ///  reg_scl_st_to_int_st
    +                SCL_ST_TO_INT_ST: u1,
    +                ///  reg_scl_main_st_to_int_st
    +                SCL_MAIN_ST_TO_INT_ST: u1,
    +                ///  reg_det_start_int_st
    +                DET_START_INT_ST: u1,
    +                ///  reg_slave_stretch_int_st
    +                SLAVE_STRETCH_INT_ST: u1,
    +                ///  reg_general_call_int_st
    +                GENERAL_CALL_INT_ST: u1,
    +                padding: u14,
    +            }),
    +            ///  I2C_SDA_HOLD_REG
    +            SDA_HOLD: mmio.Mmio(packed struct(u32) {
    +                ///  reg_sda_hold_time
    +                TIME: u9,
    +                padding: u23,
    +            }),
    +            ///  I2C_SDA_SAMPLE_REG
    +            SDA_SAMPLE: mmio.Mmio(packed struct(u32) {
    +                ///  reg_sda_sample_time
    +                TIME: u9,
    +                padding: u23,
    +            }),
    +            ///  I2C_SCL_HIGH_PERIOD_REG
    +            SCL_HIGH_PERIOD: mmio.Mmio(packed struct(u32) {
    +                ///  reg_scl_high_period
    +                SCL_HIGH_PERIOD: u9,
    +                ///  reg_scl_wait_high_period
    +                SCL_WAIT_HIGH_PERIOD: u7,
    +                padding: u16,
    +            }),
    +            reserved64: [4]u8,
    +            ///  I2C_SCL_START_HOLD_REG
    +            SCL_START_HOLD: mmio.Mmio(packed struct(u32) {
    +                ///  reg_scl_start_hold_time
    +                TIME: u9,
    +                padding: u23,
    +            }),
    +            ///  I2C_SCL_RSTART_SETUP_REG
    +            SCL_RSTART_SETUP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_scl_rstart_setup_time
    +                TIME: u9,
    +                padding: u23,
    +            }),
    +            ///  I2C_SCL_STOP_HOLD_REG
    +            SCL_STOP_HOLD: mmio.Mmio(packed struct(u32) {
    +                ///  reg_scl_stop_hold_time
    +                TIME: u9,
    +                padding: u23,
    +            }),
    +            ///  I2C_SCL_STOP_SETUP_REG
    +            SCL_STOP_SETUP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_scl_stop_setup_time
    +                TIME: u9,
    +                padding: u23,
    +            }),
    +            ///  I2C_FILTER_CFG_REG
    +            FILTER_CFG: mmio.Mmio(packed struct(u32) {
    +                ///  reg_scl_filter_thres
    +                SCL_FILTER_THRES: u4,
    +                ///  reg_sda_filter_thres
    +                SDA_FILTER_THRES: u4,
    +                ///  reg_scl_filter_en
    +                SCL_FILTER_EN: u1,
    +                ///  reg_sda_filter_en
    +                SDA_FILTER_EN: u1,
    +                padding: u22,
    +            }),
    +            ///  I2C_CLK_CONF_REG
    +            CLK_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  reg_sclk_div_num
    +                SCLK_DIV_NUM: u8,
    +                ///  reg_sclk_div_a
    +                SCLK_DIV_A: u6,
    +                ///  reg_sclk_div_b
    +                SCLK_DIV_B: u6,
    +                ///  reg_sclk_sel
    +                SCLK_SEL: u1,
    +                ///  reg_sclk_active
    +                SCLK_ACTIVE: u1,
    +                padding: u10,
    +            }),
    +            ///  I2C_COMD%s_REG
    +            COMD: [8]mmio.Mmio(packed struct(u32) {
    +                ///  reg_command
    +                COMMAND: u14,
    +                reserved31: u17,
    +                ///  reg_command_done
    +                COMMAND_DONE: u1,
    +            }),
    +            ///  I2C_SCL_ST_TIME_OUT_REG
    +            SCL_ST_TIME_OUT: mmio.Mmio(packed struct(u32) {
    +                ///  reg_scl_st_to_regno more than 23
    +                SCL_ST_TO_I2C: u5,
    +                padding: u27,
    +            }),
    +            ///  I2C_SCL_MAIN_ST_TIME_OUT_REG
    +            SCL_MAIN_ST_TIME_OUT: mmio.Mmio(packed struct(u32) {
    +                ///  reg_scl_main_st_to_regno more than 23
    +                SCL_MAIN_ST_TO_I2C: u5,
    +                padding: u27,
    +            }),
    +            ///  I2C_SCL_SP_CONF_REG
    +            SCL_SP_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  reg_scl_rst_slv_en
    +                SCL_RST_SLV_EN: u1,
    +                ///  reg_scl_rst_slv_num
    +                SCL_RST_SLV_NUM: u5,
    +                ///  reg_scl_pd_en
    +                SCL_PD_EN: u1,
    +                ///  reg_sda_pd_en
    +                SDA_PD_EN: u1,
    +                padding: u24,
    +            }),
    +            ///  I2C_SCL_STRETCH_CONF_REG
    +            SCL_STRETCH_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  reg_stretch_protect_num
    +                STRETCH_PROTECT_NUM: u10,
    +                ///  reg_slave_scl_stretch_en
    +                SLAVE_SCL_STRETCH_EN: u1,
    +                ///  reg_slave_scl_stretch_clr
    +                SLAVE_SCL_STRETCH_CLR: u1,
    +                ///  reg_slave_byte_ack_ctl_en
    +                SLAVE_BYTE_ACK_CTL_EN: u1,
    +                ///  reg_slave_byte_ack_lvl
    +                SLAVE_BYTE_ACK_LVL: u1,
    +                padding: u18,
    +            }),
    +            reserved248: [112]u8,
    +            ///  I2C_DATE_REG
    +            DATE: mmio.Mmio(packed struct(u32) {
    +                ///  reg_date
    +                DATE: u32,
    +            }),
    +            reserved256: [4]u8,
    +            ///  I2C_TXFIFO_START_ADDR_REG
    +            TXFIFO_START_ADDR: mmio.Mmio(packed struct(u32) {
    +                ///  reg_txfifo_start_addr.
    +                TXFIFO_START_ADDR: u32,
    +            }),
    +            reserved384: [124]u8,
    +            ///  I2C_RXFIFO_START_ADDR_REG
    +            RXFIFO_START_ADDR: mmio.Mmio(packed struct(u32) {
    +                ///  reg_rxfifo_start_addr.
    +                RXFIFO_START_ADDR: u32,
    +            }),
    +        };
    +
    +        ///  I2S (Inter-IC Sound) Controller
    +        pub const I2S = extern struct {
    +            reserved12: [12]u8,
    +            ///  I2S interrupt raw register, valid in level.
    +            INT_RAW: mmio.Mmio(packed struct(u32) {
    +                ///  The raw interrupt status bit for the i2s_rx_done_int interrupt
    +                RX_DONE_INT_RAW: u1,
    +                ///  The raw interrupt status bit for the i2s_tx_done_int interrupt
    +                TX_DONE_INT_RAW: u1,
    +                ///  The raw interrupt status bit for the i2s_rx_hung_int interrupt
    +                RX_HUNG_INT_RAW: u1,
    +                ///  The raw interrupt status bit for the i2s_tx_hung_int interrupt
    +                TX_HUNG_INT_RAW: u1,
    +                padding: u28,
    +            }),
    +            ///  I2S interrupt status register.
    +            INT_ST: mmio.Mmio(packed struct(u32) {
    +                ///  The masked interrupt status bit for the i2s_rx_done_int interrupt
    +                RX_DONE_INT_ST: u1,
    +                ///  The masked interrupt status bit for the i2s_tx_done_int interrupt
    +                TX_DONE_INT_ST: u1,
    +                ///  The masked interrupt status bit for the i2s_rx_hung_int interrupt
    +                RX_HUNG_INT_ST: u1,
    +                ///  The masked interrupt status bit for the i2s_tx_hung_int interrupt
    +                TX_HUNG_INT_ST: u1,
    +                padding: u28,
    +            }),
    +            ///  I2S interrupt enable register.
    +            INT_ENA: mmio.Mmio(packed struct(u32) {
    +                ///  The interrupt enable bit for the i2s_rx_done_int interrupt
    +                RX_DONE_INT_ENA: u1,
    +                ///  The interrupt enable bit for the i2s_tx_done_int interrupt
    +                TX_DONE_INT_ENA: u1,
    +                ///  The interrupt enable bit for the i2s_rx_hung_int interrupt
    +                RX_HUNG_INT_ENA: u1,
    +                ///  The interrupt enable bit for the i2s_tx_hung_int interrupt
    +                TX_HUNG_INT_ENA: u1,
    +                padding: u28,
    +            }),
    +            ///  I2S interrupt clear register.
    +            INT_CLR: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to clear the i2s_rx_done_int interrupt
    +                RX_DONE_INT_CLR: u1,
    +                ///  Set this bit to clear the i2s_tx_done_int interrupt
    +                TX_DONE_INT_CLR: u1,
    +                ///  Set this bit to clear the i2s_rx_hung_int interrupt
    +                RX_HUNG_INT_CLR: u1,
    +                ///  Set this bit to clear the i2s_tx_hung_int interrupt
    +                TX_HUNG_INT_CLR: u1,
    +                padding: u28,
    +            }),
    +            reserved32: [4]u8,
    +            ///  I2S RX configure register
    +            RX_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to reset receiver
    +                RX_RESET: u1,
    +                ///  Set this bit to reset Rx AFIFO
    +                RX_FIFO_RESET: u1,
    +                ///  Set this bit to start receiving data
    +                RX_START: u1,
    +                ///  Set this bit to enable slave receiver mode
    +                RX_SLAVE_MOD: u1,
    +                reserved5: u1,
    +                ///  Set this bit to enable receiver in mono mode
    +                RX_MONO: u1,
    +                reserved7: u1,
    +                ///  I2S Rx byte endian, 1: low addr value to high addr. 0: low addr with low addr value.
    +                RX_BIG_ENDIAN: u1,
    +                ///  Set 1 to update I2S RX registers from APB clock domain to I2S RX clock domain. This bit will be cleared by hardware after update register done.
    +                RX_UPDATE: u1,
    +                ///  1: The first channel data value is valid in I2S RX mono mode. 0: The second channel data value is valid in I2S RX mono mode.
    +                RX_MONO_FST_VLD: u1,
    +                ///  I2S RX compress/decompress configuration bit. & 0 (atol): A-Law decompress, 1 (ltoa) : A-Law compress, 2 (utol) : u-Law decompress, 3 (ltou) : u-Law compress. &
    +                RX_PCM_CONF: u2,
    +                ///  Set this bit to bypass Compress/Decompress module for received data.
    +                RX_PCM_BYPASS: u1,
    +                ///  0 : I2S Rx only stop when reg_rx_start is cleared. 1: Stop when reg_rx_start is 0 or in_suc_eof is 1. 2: Stop I2S RX when reg_rx_start is 0 or RX FIFO is full.
    +                RX_STOP_MODE: u2,
    +                ///  1: I2S RX left alignment mode. 0: I2S RX right alignment mode.
    +                RX_LEFT_ALIGN: u1,
    +                ///  1: store 24 channel bits to 32 bits. 0:store 24 channel bits to 24 bits.
    +                RX_24_FILL_EN: u1,
    +                ///  0: WS should be 0 when receiving left channel data, and WS is 1in right channel. 1: WS should be 1 when receiving left channel data, and WS is 0in right channel.
    +                RX_WS_IDLE_POL: u1,
    +                ///  I2S Rx bit endian. 1:small endian, the LSB is received first. 0:big endian, the MSB is received first.
    +                RX_BIT_ORDER: u1,
    +                ///  1: Enable I2S TDM Rx mode . 0: Disable.
    +                RX_TDM_EN: u1,
    +                ///  1: Enable I2S PDM Rx mode . 0: Disable.
    +                RX_PDM_EN: u1,
    +                padding: u11,
    +            }),
    +            ///  I2S TX configure register
    +            TX_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to reset transmitter
    +                TX_RESET: u1,
    +                ///  Set this bit to reset Tx AFIFO
    +                TX_FIFO_RESET: u1,
    +                ///  Set this bit to start transmitting data
    +                TX_START: u1,
    +                ///  Set this bit to enable slave transmitter mode
    +                TX_SLAVE_MOD: u1,
    +                reserved5: u1,
    +                ///  Set this bit to enable transmitter in mono mode
    +                TX_MONO: u1,
    +                ///  1: The value of Left channel data is equal to the value of right channel data in I2S TX mono mode or TDM channel select mode. 0: The invalid channel data is reg_i2s_single_data in I2S TX mono mode or TDM channel select mode.
    +                TX_CHAN_EQUAL: u1,
    +                ///  I2S Tx byte endian, 1: low addr value to high addr. 0: low addr with low addr value.
    +                TX_BIG_ENDIAN: u1,
    +                ///  Set 1 to update I2S TX registers from APB clock domain to I2S TX clock domain. This bit will be cleared by hardware after update register done.
    +                TX_UPDATE: u1,
    +                ///  1: The first channel data value is valid in I2S TX mono mode. 0: The second channel data value is valid in I2S TX mono mode.
    +                TX_MONO_FST_VLD: u1,
    +                ///  I2S TX compress/decompress configuration bit. & 0 (atol): A-Law decompress, 1 (ltoa) : A-Law compress, 2 (utol) : u-Law decompress, 3 (ltou) : u-Law compress. &
    +                TX_PCM_CONF: u2,
    +                ///  Set this bit to bypass Compress/Decompress module for transmitted data.
    +                TX_PCM_BYPASS: u1,
    +                ///  Set this bit to stop disable output BCK signal and WS signal when tx FIFO is emtpy
    +                TX_STOP_EN: u1,
    +                reserved15: u1,
    +                ///  1: I2S TX left alignment mode. 0: I2S TX right alignment mode.
    +                TX_LEFT_ALIGN: u1,
    +                ///  1: Sent 32 bits in 24 channel bits mode. 0: Sent 24 bits in 24 channel bits mode
    +                TX_24_FILL_EN: u1,
    +                ///  0: WS should be 0 when sending left channel data, and WS is 1in right channel. 1: WS should be 1 when sending left channel data, and WS is 0in right channel.
    +                TX_WS_IDLE_POL: u1,
    +                ///  I2S Tx bit endian. 1:small endian, the LSB is sent first. 0:big endian, the MSB is sent first.
    +                TX_BIT_ORDER: u1,
    +                ///  1: Enable I2S TDM Tx mode . 0: Disable.
    +                TX_TDM_EN: u1,
    +                ///  1: Enable I2S PDM Tx mode . 0: Disable.
    +                TX_PDM_EN: u1,
    +                reserved24: u3,
    +                ///  I2S transmitter channel mode configuration bits.
    +                TX_CHAN_MOD: u3,
    +                ///  Enable signal loop back mode with transmitter module and receiver module sharing the same WS and BCK signals.
    +                SIG_LOOPBACK: u1,
    +                padding: u4,
    +            }),
    +            ///  I2S RX configure register 1
    +            RX_CONF1: mmio.Mmio(packed struct(u32) {
    +                ///  The width of rx_ws_out in TDM mode is (I2S_RX_TDM_WS_WIDTH[6:0] +1) * T_bck
    +                RX_TDM_WS_WIDTH: u7,
    +                ///  Bit clock configuration bits in receiver mode.
    +                RX_BCK_DIV_NUM: u6,
    +                ///  Set the bits to configure the valid data bit length of I2S receiver channel. 7: all the valid channel data is in 8-bit-mode. 15: all the valid channel data is in 16-bit-mode. 23: all the valid channel data is in 24-bit-mode. 31:all the valid channel data is in 32-bit-mode.
    +                RX_BITS_MOD: u5,
    +                ///  I2S Rx half sample bits -1.
    +                RX_HALF_SAMPLE_BITS: u6,
    +                ///  The Rx bit number for each channel minus 1in TDM mode.
    +                RX_TDM_CHAN_BITS: u5,
    +                ///  Set this bit to enable receiver in Phillips standard mode
    +                RX_MSB_SHIFT: u1,
    +                padding: u2,
    +            }),
    +            ///  I2S TX configure register 1
    +            TX_CONF1: mmio.Mmio(packed struct(u32) {
    +                ///  The width of tx_ws_out in TDM mode is (I2S_TX_TDM_WS_WIDTH[6:0] +1) * T_bck
    +                TX_TDM_WS_WIDTH: u7,
    +                ///  Bit clock configuration bits in transmitter mode.
    +                TX_BCK_DIV_NUM: u6,
    +                ///  Set the bits to configure the valid data bit length of I2S transmitter channel. 7: all the valid channel data is in 8-bit-mode. 15: all the valid channel data is in 16-bit-mode. 23: all the valid channel data is in 24-bit-mode. 31:all the valid channel data is in 32-bit-mode.
    +                TX_BITS_MOD: u5,
    +                ///  I2S Tx half sample bits -1.
    +                TX_HALF_SAMPLE_BITS: u6,
    +                ///  The Tx bit number for each channel minus 1in TDM mode.
    +                TX_TDM_CHAN_BITS: u5,
    +                ///  Set this bit to enable transmitter in Phillips standard mode
    +                TX_MSB_SHIFT: u1,
    +                ///  1: BCK is not delayed to generate pos/neg edge in master mode. 0: BCK is delayed to generate pos/neg edge in master mode.
    +                TX_BCK_NO_DLY: u1,
    +                padding: u1,
    +            }),
    +            ///  I2S RX clock configure register
    +            RX_CLKM_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  Integral I2S clock divider value
    +                RX_CLKM_DIV_NUM: u8,
    +                reserved26: u18,
    +                ///  I2S Rx module clock enable signal.
    +                RX_CLK_ACTIVE: u1,
    +                ///  Select I2S Rx module source clock. 0: no clock. 1: APLL. 2: CLK160. 3: I2S_MCLK_in.
    +                RX_CLK_SEL: u2,
    +                ///  0: UseI2S Tx module clock as I2S_MCLK_OUT. 1: UseI2S Rx module clock as I2S_MCLK_OUT.
    +                MCLK_SEL: u1,
    +                padding: u2,
    +            }),
    +            ///  I2S TX clock configure register
    +            TX_CLKM_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  Integral I2S TX clock divider value. f_I2S_CLK = f_I2S_CLK_S/(N+b/a). There will be (a-b) * n-div and b * (n+1)-div. So the average combination will be: for b <= a/2, z * [x * n-div + (n+1)-div] + y * n-div. For b > a/2, z * [n-div + x * (n+1)-div] + y * (n+1)-div.
    +                TX_CLKM_DIV_NUM: u8,
    +                reserved26: u18,
    +                ///  I2S Tx module clock enable signal.
    +                TX_CLK_ACTIVE: u1,
    +                ///  Select I2S Tx module source clock. 0: XTAL clock. 1: APLL. 2: CLK160. 3: I2S_MCLK_in.
    +                TX_CLK_SEL: u2,
    +                ///  Set this bit to enable clk gate
    +                CLK_EN: u1,
    +                padding: u2,
    +            }),
    +            ///  I2S RX module clock divider configure register
    +            RX_CLKM_DIV_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  For b <= a/2, the value of I2S_RX_CLKM_DIV_Z is b. For b > a/2, the value of I2S_RX_CLKM_DIV_Z is (a-b).
    +                RX_CLKM_DIV_Z: u9,
    +                ///  For b <= a/2, the value of I2S_RX_CLKM_DIV_Y is (a%b) . For b > a/2, the value of I2S_RX_CLKM_DIV_Y is (a%(a-b)).
    +                RX_CLKM_DIV_Y: u9,
    +                ///  For b <= a/2, the value of I2S_RX_CLKM_DIV_X is (a/b) - 1. For b > a/2, the value of I2S_RX_CLKM_DIV_X is (a/(a-b)) - 1.
    +                RX_CLKM_DIV_X: u9,
    +                ///  For b <= a/2, the value of I2S_RX_CLKM_DIV_YN1 is 0 . For b > a/2, the value of I2S_RX_CLKM_DIV_YN1 is 1.
    +                RX_CLKM_DIV_YN1: u1,
    +                padding: u4,
    +            }),
    +            ///  I2S TX module clock divider configure register
    +            TX_CLKM_DIV_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  For b <= a/2, the value of I2S_TX_CLKM_DIV_Z is b. For b > a/2, the value of I2S_TX_CLKM_DIV_Z is (a-b).
    +                TX_CLKM_DIV_Z: u9,
    +                ///  For b <= a/2, the value of I2S_TX_CLKM_DIV_Y is (a%b) . For b > a/2, the value of I2S_TX_CLKM_DIV_Y is (a%(a-b)).
    +                TX_CLKM_DIV_Y: u9,
    +                ///  For b <= a/2, the value of I2S_TX_CLKM_DIV_X is (a/b) - 1. For b > a/2, the value of I2S_TX_CLKM_DIV_X is (a/(a-b)) - 1.
    +                TX_CLKM_DIV_X: u9,
    +                ///  For b <= a/2, the value of I2S_TX_CLKM_DIV_YN1 is 0 . For b > a/2, the value of I2S_TX_CLKM_DIV_YN1 is 1.
    +                TX_CLKM_DIV_YN1: u1,
    +                padding: u4,
    +            }),
    +            ///  I2S TX PCM2PDM configuration register
    +            TX_PCM2PDM_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  I2S TX PDM bypass hp filter or not. The option has been removed.
    +                TX_PDM_HP_BYPASS: u1,
    +                ///  I2S TX PDM OSR2 value
    +                TX_PDM_SINC_OSR2: u4,
    +                ///  I2S TX PDM prescale for sigmadelta
    +                TX_PDM_PRESCALE: u8,
    +                ///  I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4
    +                TX_PDM_HP_IN_SHIFT: u2,
    +                ///  I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4
    +                TX_PDM_LP_IN_SHIFT: u2,
    +                ///  I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4
    +                TX_PDM_SINC_IN_SHIFT: u2,
    +                ///  I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4
    +                TX_PDM_SIGMADELTA_IN_SHIFT: u2,
    +                ///  I2S TX PDM sigmadelta dither2 value
    +                TX_PDM_SIGMADELTA_DITHER2: u1,
    +                ///  I2S TX PDM sigmadelta dither value
    +                TX_PDM_SIGMADELTA_DITHER: u1,
    +                ///  I2S TX PDM dac mode enable
    +                TX_PDM_DAC_2OUT_EN: u1,
    +                ///  I2S TX PDM dac 2channel enable
    +                TX_PDM_DAC_MODE_EN: u1,
    +                ///  I2S TX PDM Converter enable
    +                PCM2PDM_CONV_EN: u1,
    +                padding: u6,
    +            }),
    +            ///  I2S TX PCM2PDM configuration register
    +            TX_PCM2PDM_CONF1: mmio.Mmio(packed struct(u32) {
    +                ///  I2S TX PDM Fp
    +                TX_PDM_FP: u10,
    +                ///  I2S TX PDM Fs
    +                TX_PDM_FS: u10,
    +                ///  The fourth parameter of PDM TX IIR_HP filter stage 2 is (504 + I2S_TX_IIR_HP_MULT12_5[2:0])
    +                TX_IIR_HP_MULT12_5: u3,
    +                ///  The fourth parameter of PDM TX IIR_HP filter stage 1 is (504 + I2S_TX_IIR_HP_MULT12_0[2:0])
    +                TX_IIR_HP_MULT12_0: u3,
    +                padding: u6,
    +            }),
    +            reserved80: [8]u8,
    +            ///  I2S TX TDM mode control register
    +            RX_TDM_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  1: Enable the valid data input of I2S RX TDM or PDM channel 0. 0: Disable, just input 0 in this channel.
    +                RX_TDM_PDM_CHAN0_EN: u1,
    +                ///  1: Enable the valid data input of I2S RX TDM or PDM channel 1. 0: Disable, just input 0 in this channel.
    +                RX_TDM_PDM_CHAN1_EN: u1,
    +                ///  1: Enable the valid data input of I2S RX TDM or PDM channel 2. 0: Disable, just input 0 in this channel.
    +                RX_TDM_PDM_CHAN2_EN: u1,
    +                ///  1: Enable the valid data input of I2S RX TDM or PDM channel 3. 0: Disable, just input 0 in this channel.
    +                RX_TDM_PDM_CHAN3_EN: u1,
    +                ///  1: Enable the valid data input of I2S RX TDM or PDM channel 4. 0: Disable, just input 0 in this channel.
    +                RX_TDM_PDM_CHAN4_EN: u1,
    +                ///  1: Enable the valid data input of I2S RX TDM or PDM channel 5. 0: Disable, just input 0 in this channel.
    +                RX_TDM_PDM_CHAN5_EN: u1,
    +                ///  1: Enable the valid data input of I2S RX TDM or PDM channel 6. 0: Disable, just input 0 in this channel.
    +                RX_TDM_PDM_CHAN6_EN: u1,
    +                ///  1: Enable the valid data input of I2S RX TDM or PDM channel 7. 0: Disable, just input 0 in this channel.
    +                RX_TDM_PDM_CHAN7_EN: u1,
    +                ///  1: Enable the valid data input of I2S RX TDM channel 8. 0: Disable, just input 0 in this channel.
    +                RX_TDM_CHAN8_EN: u1,
    +                ///  1: Enable the valid data input of I2S RX TDM channel 9. 0: Disable, just input 0 in this channel.
    +                RX_TDM_CHAN9_EN: u1,
    +                ///  1: Enable the valid data input of I2S RX TDM channel 10. 0: Disable, just input 0 in this channel.
    +                RX_TDM_CHAN10_EN: u1,
    +                ///  1: Enable the valid data input of I2S RX TDM channel 11. 0: Disable, just input 0 in this channel.
    +                RX_TDM_CHAN11_EN: u1,
    +                ///  1: Enable the valid data input of I2S RX TDM channel 12. 0: Disable, just input 0 in this channel.
    +                RX_TDM_CHAN12_EN: u1,
    +                ///  1: Enable the valid data input of I2S RX TDM channel 13. 0: Disable, just input 0 in this channel.
    +                RX_TDM_CHAN13_EN: u1,
    +                ///  1: Enable the valid data input of I2S RX TDM channel 14. 0: Disable, just input 0 in this channel.
    +                RX_TDM_CHAN14_EN: u1,
    +                ///  1: Enable the valid data input of I2S RX TDM channel 15. 0: Disable, just input 0 in this channel.
    +                RX_TDM_CHAN15_EN: u1,
    +                ///  The total channel number of I2S TX TDM mode.
    +                RX_TDM_TOT_CHAN_NUM: u4,
    +                padding: u12,
    +            }),
    +            ///  I2S TX TDM mode control register
    +            TX_TDM_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  1: Enable the valid data output of I2S TX TDM channel 0. 0: Disable, just output 0 in this channel.
    +                TX_TDM_CHAN0_EN: u1,
    +                ///  1: Enable the valid data output of I2S TX TDM channel 1. 0: Disable, just output 0 in this channel.
    +                TX_TDM_CHAN1_EN: u1,
    +                ///  1: Enable the valid data output of I2S TX TDM channel 2. 0: Disable, just output 0 in this channel.
    +                TX_TDM_CHAN2_EN: u1,
    +                ///  1: Enable the valid data output of I2S TX TDM channel 3. 0: Disable, just output 0 in this channel.
    +                TX_TDM_CHAN3_EN: u1,
    +                ///  1: Enable the valid data output of I2S TX TDM channel 4. 0: Disable, just output 0 in this channel.
    +                TX_TDM_CHAN4_EN: u1,
    +                ///  1: Enable the valid data output of I2S TX TDM channel 5. 0: Disable, just output 0 in this channel.
    +                TX_TDM_CHAN5_EN: u1,
    +                ///  1: Enable the valid data output of I2S TX TDM channel 6. 0: Disable, just output 0 in this channel.
    +                TX_TDM_CHAN6_EN: u1,
    +                ///  1: Enable the valid data output of I2S TX TDM channel 7. 0: Disable, just output 0 in this channel.
    +                TX_TDM_CHAN7_EN: u1,
    +                ///  1: Enable the valid data output of I2S TX TDM channel 8. 0: Disable, just output 0 in this channel.
    +                TX_TDM_CHAN8_EN: u1,
    +                ///  1: Enable the valid data output of I2S TX TDM channel 9. 0: Disable, just output 0 in this channel.
    +                TX_TDM_CHAN9_EN: u1,
    +                ///  1: Enable the valid data output of I2S TX TDM channel 10. 0: Disable, just output 0 in this channel.
    +                TX_TDM_CHAN10_EN: u1,
    +                ///  1: Enable the valid data output of I2S TX TDM channel 11. 0: Disable, just output 0 in this channel.
    +                TX_TDM_CHAN11_EN: u1,
    +                ///  1: Enable the valid data output of I2S TX TDM channel 12. 0: Disable, just output 0 in this channel.
    +                TX_TDM_CHAN12_EN: u1,
    +                ///  1: Enable the valid data output of I2S TX TDM channel 13. 0: Disable, just output 0 in this channel.
    +                TX_TDM_CHAN13_EN: u1,
    +                ///  1: Enable the valid data output of I2S TX TDM channel 14. 0: Disable, just output 0 in this channel.
    +                TX_TDM_CHAN14_EN: u1,
    +                ///  1: Enable the valid data output of I2S TX TDM channel 15. 0: Disable, just output 0 in this channel.
    +                TX_TDM_CHAN15_EN: u1,
    +                ///  The total channel number of I2S TX TDM mode.
    +                TX_TDM_TOT_CHAN_NUM: u4,
    +                ///  When DMA TX buffer stores the data of (REG_TX_TDM_TOT_CHAN_NUM + 1) channels, and only the data of the enabled channels is sent, then this bit should be set. Clear it when all the data stored in DMA TX buffer is for enabled channels.
    +                TX_TDM_SKIP_MSK_EN: u1,
    +                padding: u11,
    +            }),
    +            ///  I2S RX timing control register
    +            RX_TIMING: mmio.Mmio(packed struct(u32) {
    +                ///  The delay mode of I2S Rx SD input signal. 0: bypass. 1: delay by pos edge. 2: delay by neg edge. 3: not used.
    +                RX_SD_IN_DM: u2,
    +                reserved16: u14,
    +                ///  The delay mode of I2S Rx WS output signal. 0: bypass. 1: delay by pos edge. 2: delay by neg edge. 3: not used.
    +                RX_WS_OUT_DM: u2,
    +                reserved20: u2,
    +                ///  The delay mode of I2S Rx BCK output signal. 0: bypass. 1: delay by pos edge. 2: delay by neg edge. 3: not used.
    +                RX_BCK_OUT_DM: u2,
    +                reserved24: u2,
    +                ///  The delay mode of I2S Rx WS input signal. 0: bypass. 1: delay by pos edge. 2: delay by neg edge. 3: not used.
    +                RX_WS_IN_DM: u2,
    +                reserved28: u2,
    +                ///  The delay mode of I2S Rx BCK input signal. 0: bypass. 1: delay by pos edge. 2: delay by neg edge. 3: not used.
    +                RX_BCK_IN_DM: u2,
    +                padding: u2,
    +            }),
    +            ///  I2S TX timing control register
    +            TX_TIMING: mmio.Mmio(packed struct(u32) {
    +                ///  The delay mode of I2S TX SD output signal. 0: bypass. 1: delay by pos edge. 2: delay by neg edge. 3: not used.
    +                TX_SD_OUT_DM: u2,
    +                reserved4: u2,
    +                ///  The delay mode of I2S TX SD1 output signal. 0: bypass. 1: delay by pos edge. 2: delay by neg edge. 3: not used.
    +                TX_SD1_OUT_DM: u2,
    +                reserved16: u10,
    +                ///  The delay mode of I2S TX WS output signal. 0: bypass. 1: delay by pos edge. 2: delay by neg edge. 3: not used.
    +                TX_WS_OUT_DM: u2,
    +                reserved20: u2,
    +                ///  The delay mode of I2S TX BCK output signal. 0: bypass. 1: delay by pos edge. 2: delay by neg edge. 3: not used.
    +                TX_BCK_OUT_DM: u2,
    +                reserved24: u2,
    +                ///  The delay mode of I2S TX WS input signal. 0: bypass. 1: delay by pos edge. 2: delay by neg edge. 3: not used.
    +                TX_WS_IN_DM: u2,
    +                reserved28: u2,
    +                ///  The delay mode of I2S TX BCK input signal. 0: bypass. 1: delay by pos edge. 2: delay by neg edge. 3: not used.
    +                TX_BCK_IN_DM: u2,
    +                padding: u2,
    +            }),
    +            ///  I2S HUNG configure register.
    +            LC_HUNG_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  the i2s_tx_hung_int interrupt or the i2s_rx_hung_int interrupt will be triggered when fifo hung counter is equal to this value
    +                LC_FIFO_TIMEOUT: u8,
    +                ///  The bits are used to scale tick counter threshold. The tick counter is reset when counter value >= 88000/2^i2s_lc_fifo_timeout_shift
    +                LC_FIFO_TIMEOUT_SHIFT: u3,
    +                ///  The enable bit for FIFO timeout
    +                LC_FIFO_TIMEOUT_ENA: u1,
    +                padding: u20,
    +            }),
    +            ///  I2S RX data number control register.
    +            RXEOF_NUM: mmio.Mmio(packed struct(u32) {
    +                ///  The receive data bit length is (I2S_RX_BITS_MOD[4:0] + 1) * (REG_RX_EOF_NUM[11:0] + 1) . It will trigger in_suc_eof interrupt in the configured DMA RX channel.
    +                RX_EOF_NUM: u12,
    +                padding: u20,
    +            }),
    +            ///  I2S signal data register
    +            CONF_SIGLE_DATA: mmio.Mmio(packed struct(u32) {
    +                ///  The configured constant channel data to be sent out.
    +                SINGLE_DATA: u32,
    +            }),
    +            ///  I2S TX status register
    +            STATE: mmio.Mmio(packed struct(u32) {
    +                ///  1: i2s_tx is idle state. 0: i2s_tx is working.
    +                TX_IDLE: u1,
    +                padding: u31,
    +            }),
    +            reserved128: [16]u8,
    +            ///  Version control register
    +            DATE: mmio.Mmio(packed struct(u32) {
    +                ///  I2S version control register
    +                DATE: u28,
    +                padding: u4,
    +            }),
    +        };
    +
    +        ///  Interrupt Core
    +        pub const INTERRUPT_CORE0 = extern struct {
    +            ///  mac intr map register
    +            MAC_INTR_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  core0_mac_intr_map
    +                MAC_INTR_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  mac nmi_intr map register
    +            MAC_NMI_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_mac_nmi_map
    +                MAC_NMI_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  pwr intr map register
    +            PWR_INTR_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_pwr_intr_map
    +                PWR_INTR_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  bb intr map register
    +            BB_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_bb_int_map
    +                BB_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  bt intr map register
    +            BT_MAC_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_bt_mac_int_map
    +                BT_MAC_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  bb_bt intr map register
    +            BT_BB_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_bt_bb_int_map
    +                BT_BB_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  bb_bt_nmi intr map register
    +            BT_BB_NMI_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_bt_bb_nmi_map
    +                BT_BB_NMI_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  rwbt intr map register
    +            RWBT_IRQ_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_rwbt_irq_map
    +                RWBT_IRQ_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  rwble intr map register
    +            RWBLE_IRQ_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_rwble_irq_map
    +                RWBLE_IRQ_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  rwbt_nmi intr map register
    +            RWBT_NMI_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_rwbt_nmi_map
    +                RWBT_NMI_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  rwble_nmi intr map register
    +            RWBLE_NMI_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_rwble_nmi_map
    +                RWBLE_NMI_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  i2c intr map register
    +            I2C_MST_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_i2c_mst_int_map
    +                I2C_MST_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  slc0 intr map register
    +            SLC0_INTR_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_slc0_intr_map
    +                SLC0_INTR_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  slc1 intr map register
    +            SLC1_INTR_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_slc1_intr_map
    +                SLC1_INTR_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  apb_ctrl intr map register
    +            APB_CTRL_INTR_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_apb_ctrl_intr_map
    +                APB_CTRL_INTR_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  uchi0 intr map register
    +            UHCI0_INTR_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_uhci0_intr_map
    +                UHCI0_INTR_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  gpio intr map register
    +            GPIO_INTERRUPT_PRO_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_gpio_interrupt_pro_map
    +                GPIO_INTERRUPT_PRO_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  gpio_pro intr map register
    +            GPIO_INTERRUPT_PRO_NMI_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_gpio_interrupt_pro_nmi_map
    +                GPIO_INTERRUPT_PRO_NMI_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  gpio_pro_nmi intr map register
    +            SPI_INTR_1_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_spi_intr_1_map
    +                SPI_INTR_1_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  spi1 intr map register
    +            SPI_INTR_2_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_spi_intr_2_map
    +                SPI_INTR_2_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  spi2 intr map register
    +            I2S1_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_i2s1_int_map
    +                I2S1_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  i2s1 intr map register
    +            UART_INTR_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_uart_intr_map
    +                UART_INTR_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  uart1 intr map register
    +            UART1_INTR_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_uart1_intr_map
    +                UART1_INTR_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  ledc intr map register
    +            LEDC_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_ledc_int_map
    +                LEDC_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  efuse intr map register
    +            EFUSE_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_efuse_int_map
    +                EFUSE_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  can intr map register
    +            CAN_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_can_int_map
    +                CAN_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  usb intr map register
    +            USB_INTR_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_usb_intr_map
    +                USB_INTR_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  rtc intr map register
    +            RTC_CORE_INTR_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_rtc_core_intr_map
    +                RTC_CORE_INTR_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  rmt intr map register
    +            RMT_INTR_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_rmt_intr_map
    +                RMT_INTR_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  i2c intr map register
    +            I2C_EXT0_INTR_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_i2c_ext0_intr_map
    +                I2C_EXT0_INTR_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  timer1 intr map register
    +            TIMER_INT1_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_timer_int1_map
    +                TIMER_INT1_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  timer2 intr map register
    +            TIMER_INT2_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_timer_int2_map
    +                TIMER_INT2_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  tg to intr map register
    +            TG_T0_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_tg_t0_int_map
    +                TG_T0_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  tg wdt intr map register
    +            TG_WDT_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_tg_wdt_int_map
    +                TG_WDT_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  tg1 to intr map register
    +            TG1_T0_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_tg1_t0_int_map
    +                TG1_T0_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  tg1 wdt intr map register
    +            TG1_WDT_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_tg1_wdt_int_map
    +                TG1_WDT_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  cache ia intr map register
    +            CACHE_IA_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cache_ia_int_map
    +                CACHE_IA_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  systimer intr map register
    +            SYSTIMER_TARGET0_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_systimer_target0_int_map
    +                SYSTIMER_TARGET0_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  systimer target1 intr map register
    +            SYSTIMER_TARGET1_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_systimer_target1_int_map
    +                SYSTIMER_TARGET1_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  systimer target2 intr map register
    +            SYSTIMER_TARGET2_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_systimer_target2_int_map
    +                SYSTIMER_TARGET2_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  spi mem reject intr map register
    +            SPI_MEM_REJECT_INTR_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_spi_mem_reject_intr_map
    +                SPI_MEM_REJECT_INTR_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  icache perload intr map register
    +            ICACHE_PRELOAD_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_icache_preload_int_map
    +                ICACHE_PRELOAD_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  icache sync intr map register
    +            ICACHE_SYNC_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_icache_sync_int_map
    +                ICACHE_SYNC_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  adc intr map register
    +            APB_ADC_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_apb_adc_int_map
    +                APB_ADC_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  dma ch0 intr map register
    +            DMA_CH0_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_dma_ch0_int_map
    +                DMA_CH0_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  dma ch1 intr map register
    +            DMA_CH1_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_dma_ch1_int_map
    +                DMA_CH1_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  dma ch2 intr map register
    +            DMA_CH2_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_dma_ch2_int_map
    +                DMA_CH2_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  rsa intr map register
    +            RSA_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_rsa_int_map
    +                RSA_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  aes intr map register
    +            AES_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_aes_int_map
    +                AES_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  sha intr map register
    +            SHA_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_sha_int_map
    +                SHA_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  cpu from cpu 0 intr map register
    +            CPU_INTR_FROM_CPU_0_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_intr_from_cpu_0_map
    +                CPU_INTR_FROM_CPU_0_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  cpu from cpu 0 intr map register
    +            CPU_INTR_FROM_CPU_1_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_intr_from_cpu_1_map
    +                CPU_INTR_FROM_CPU_1_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  cpu from cpu 1 intr map register
    +            CPU_INTR_FROM_CPU_2_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_intr_from_cpu_2_map
    +                CPU_INTR_FROM_CPU_2_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  cpu from cpu 3 intr map register
    +            CPU_INTR_FROM_CPU_3_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_intr_from_cpu_3_map
    +                CPU_INTR_FROM_CPU_3_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  assist debug intr map register
    +            ASSIST_DEBUG_INTR_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_assist_debug_intr_map
    +                ASSIST_DEBUG_INTR_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  dma pms violatile intr map register
    +            DMA_APBPERI_PMS_MONITOR_VIOLATE_INTR_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_dma_apbperi_pms_monitor_violate_intr_map
    +                DMA_APBPERI_PMS_MONITOR_VIOLATE_INTR_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  iram0 pms violatile intr map register
    +            CORE_0_IRAM0_PMS_MONITOR_VIOLATE_INTR_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_core_0_iram0_pms_monitor_violate_intr_map
    +                CORE_0_IRAM0_PMS_MONITOR_VIOLATE_INTR_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  mac intr map register
    +            CORE_0_DRAM0_PMS_MONITOR_VIOLATE_INTR_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_core_0_dram0_pms_monitor_violate_intr_map
    +                CORE_0_DRAM0_PMS_MONITOR_VIOLATE_INTR_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  mac intr map register
    +            CORE_0_PIF_PMS_MONITOR_VIOLATE_INTR_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_core_0_pif_pms_monitor_violate_intr_map
    +                CORE_0_PIF_PMS_MONITOR_VIOLATE_INTR_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  mac intr map register
    +            CORE_0_PIF_PMS_MONITOR_VIOLATE_SIZE_INTR_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_core_0_pif_pms_monitor_violate_size_intr_map
    +                CORE_0_PIF_PMS_MONITOR_VIOLATE_SIZE_INTR_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  mac intr map register
    +            BACKUP_PMS_VIOLATE_INTR_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_backup_pms_violate_intr_map
    +                BACKUP_PMS_VIOLATE_INTR_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  mac intr map register
    +            CACHE_CORE0_ACS_INT_MAP: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cache_core0_acs_int_map
    +                CACHE_CORE0_ACS_INT_MAP: u5,
    +                padding: u27,
    +            }),
    +            ///  mac intr map register
    +            INTR_STATUS_REG_0: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_intr_status_0
    +                INTR_STATUS_0: u32,
    +            }),
    +            ///  mac intr map register
    +            INTR_STATUS_REG_1: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_intr_status_1
    +                INTR_STATUS_1: u32,
    +            }),
    +            ///  mac intr map register
    +            CLOCK_GATE: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_reg_clk_en
    +                REG_CLK_EN: u1,
    +                padding: u31,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_ENABLE: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_int_enable
    +                CPU_INT_ENABLE: u32,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_TYPE: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_int_type
    +                CPU_INT_TYPE: u32,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_CLEAR: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_int_clear
    +                CPU_INT_CLEAR: u32,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_EIP_STATUS: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_int_eip_status
    +                CPU_INT_EIP_STATUS: u32,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_0: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_0_map
    +                CPU_PRI_0_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_1: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_1_map
    +                CPU_PRI_1_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_2: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_2_map
    +                CPU_PRI_2_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_3: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_3_map
    +                CPU_PRI_3_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_4: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_4_map
    +                CPU_PRI_4_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_5: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_5_map
    +                CPU_PRI_5_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_6: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_6_map
    +                CPU_PRI_6_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_7: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_7_map
    +                CPU_PRI_7_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_8: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_8_map
    +                CPU_PRI_8_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_9: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_9_map
    +                CPU_PRI_9_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_10: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_10_map
    +                CPU_PRI_10_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_11: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_11_map
    +                CPU_PRI_11_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_12: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_12_map
    +                CPU_PRI_12_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_13: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_13_map
    +                CPU_PRI_13_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_14: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_14_map
    +                CPU_PRI_14_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_15: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_15_map
    +                CPU_PRI_15_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_16: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_16_map
    +                CPU_PRI_16_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_17: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_17_map
    +                CPU_PRI_17_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_18: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_18_map
    +                CPU_PRI_18_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_19: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_19_map
    +                CPU_PRI_19_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_20: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_20_map
    +                CPU_PRI_20_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_21: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_21_map
    +                CPU_PRI_21_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_22: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_22_map
    +                CPU_PRI_22_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_23: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_23_map
    +                CPU_PRI_23_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_24: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_24_map
    +                CPU_PRI_24_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_25: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_25_map
    +                CPU_PRI_25_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_26: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_26_map
    +                CPU_PRI_26_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_27: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_27_map
    +                CPU_PRI_27_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_28: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_28_map
    +                CPU_PRI_28_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_29: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_29_map
    +                CPU_PRI_29_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_30: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_30_map
    +                CPU_PRI_30_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_PRI_31: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_pri_31_map
    +                CPU_PRI_31_MAP: u4,
    +                padding: u28,
    +            }),
    +            ///  mac intr map register
    +            CPU_INT_THRESH: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_cpu_int_thresh
    +                CPU_INT_THRESH: u4,
    +                padding: u28,
    +            }),
    +            reserved2044: [1636]u8,
    +            ///  mac intr map register
    +            INTERRUPT_REG_DATE: mmio.Mmio(packed struct(u32) {
    +                ///  reg_core0_interrupt_reg_date
    +                INTERRUPT_REG_DATE: u28,
    +                padding: u4,
    +            }),
    +        };
    +
    +        ///  Input/Output Multiplexer
    +        pub const IO_MUX = extern struct {
    +            ///  Clock Output Configuration Register
    +            PIN_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  If you want to output clock for I2S to CLK_OUT_out1, set this register to 0x0. CLK_OUT_out1 can be found in peripheral output signals.
    +                CLK_OUT1: u4,
    +                ///  If you want to output clock for I2S to CLK_OUT_out2, set this register to 0x0. CLK_OUT_out2 can be found in peripheral output signals.
    +                CLK_OUT2: u4,
    +                ///  If you want to output clock for I2S to CLK_OUT_out3, set this register to 0x0. CLK_OUT_out3 can be found in peripheral output signals.
    +                CLK_OUT3: u4,
    +                padding: u20,
    +            }),
    +            ///  IO MUX Configure Register for pad XTAL_32K_P
    +            GPIO: [22]mmio.Mmio(packed struct(u32) {
    +                ///  Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    +                MCU_OE: u1,
    +                ///  Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    +                SLP_SEL: u1,
    +                ///  Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0: internal pull-down disabled.
    +                MCU_WPD: u1,
    +                ///  Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0: internal pull-up disabled.
    +                MCU_WPU: u1,
    +                ///  Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    +                MCU_IE: u1,
    +                reserved7: u2,
    +                ///  Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal pull-down disabled.
    +                FUN_WPD: u1,
    +                ///  Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up disabled.
    +                FUN_WPU: u1,
    +                ///  Input enable of the pad. 1: input enabled; 0: input disabled.
    +                FUN_IE: u1,
    +                ///  Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    +                FUN_DRV: u2,
    +                ///  Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function 2; etc.
    +                MCU_SEL: u3,
    +                ///  Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    +                FILTER_EN: u1,
    +                padding: u16,
    +            }),
    +            reserved252: [160]u8,
    +            ///  IO MUX Version Control Register
    +            DATE: mmio.Mmio(packed struct(u32) {
    +                ///  Version control register
    +                REG_DATE: u28,
    +                padding: u4,
    +            }),
    +        };
    +
    +        ///  LED Control PWM (Pulse Width Modulation)
    +        pub const LEDC = extern struct {
    +            ///  LEDC_LSCH0_CONF0.
    +            LSCH0_CONF0: mmio.Mmio(packed struct(u32) {
    +                ///  reg_timer_sel_lsch0.
    +                TIMER_SEL_LSCH0: u2,
    +                ///  reg_sig_out_en_lsch0.
    +                SIG_OUT_EN_LSCH0: u1,
    +                ///  reg_idle_lv_lsch0.
    +                IDLE_LV_LSCH0: u1,
    +                ///  reg_para_up_lsch0.
    +                PARA_UP_LSCH0: u1,
    +                ///  reg_ovf_num_lsch0.
    +                OVF_NUM_LSCH0: u10,
    +                ///  reg_ovf_cnt_en_lsch0.
    +                OVF_CNT_EN_LSCH0: u1,
    +                ///  reg_ovf_cnt_reset_lsch0.
    +                OVF_CNT_RESET_LSCH0: u1,
    +                padding: u15,
    +            }),
    +            ///  LEDC_LSCH0_HPOINT.
    +            LSCH0_HPOINT: mmio.Mmio(packed struct(u32) {
    +                ///  reg_hpoint_lsch0.
    +                HPOINT_LSCH0: u14,
    +                padding: u18,
    +            }),
    +            ///  LEDC_LSCH0_DUTY.
    +            LSCH0_DUTY: mmio.Mmio(packed struct(u32) {
    +                ///  reg_duty_lsch0.
    +                DUTY_LSCH0: u19,
    +                padding: u13,
    +            }),
    +            ///  LEDC_LSCH0_CONF1.
    +            LSCH0_CONF1: mmio.Mmio(packed struct(u32) {
    +                ///  reg_duty_scale_lsch0.
    +                DUTY_SCALE_LSCH0: u10,
    +                ///  reg_duty_cycle_lsch0.
    +                DUTY_CYCLE_LSCH0: u10,
    +                ///  reg_duty_num_lsch0.
    +                DUTY_NUM_LSCH0: u10,
    +                ///  reg_duty_inc_lsch0.
    +                DUTY_INC_LSCH0: u1,
    +                ///  reg_duty_start_lsch0.
    +                DUTY_START_LSCH0: u1,
    +            }),
    +            ///  LEDC_LSCH0_DUTY_R.
    +            LSCH0_DUTY_R: mmio.Mmio(packed struct(u32) {
    +                ///  reg_duty_lsch0_r.
    +                DUTY_LSCH0_R: u19,
    +                padding: u13,
    +            }),
    +            ///  LEDC_LSCH1_CONF0.
    +            LSCH1_CONF0: mmio.Mmio(packed struct(u32) {
    +                ///  reg_timer_sel_lsch1.
    +                TIMER_SEL_LSCH1: u2,
    +                ///  reg_sig_out_en_lsch1.
    +                SIG_OUT_EN_LSCH1: u1,
    +                ///  reg_idle_lv_lsch1.
    +                IDLE_LV_LSCH1: u1,
    +                ///  reg_para_up_lsch1.
    +                PARA_UP_LSCH1: u1,
    +                ///  reg_ovf_num_lsch1.
    +                OVF_NUM_LSCH1: u10,
    +                ///  reg_ovf_cnt_en_lsch1.
    +                OVF_CNT_EN_LSCH1: u1,
    +                ///  reg_ovf_cnt_reset_lsch1.
    +                OVF_CNT_RESET_LSCH1: u1,
    +                padding: u15,
    +            }),
    +            ///  LEDC_LSCH1_HPOINT.
    +            LSCH1_HPOINT: mmio.Mmio(packed struct(u32) {
    +                ///  reg_hpoint_lsch1.
    +                HPOINT_LSCH1: u14,
    +                padding: u18,
    +            }),
    +            ///  LEDC_LSCH1_DUTY.
    +            LSCH1_DUTY: mmio.Mmio(packed struct(u32) {
    +                ///  reg_duty_lsch1.
    +                DUTY_LSCH1: u19,
    +                padding: u13,
    +            }),
    +            ///  LEDC_LSCH1_CONF1.
    +            LSCH1_CONF1: mmio.Mmio(packed struct(u32) {
    +                ///  reg_duty_scale_lsch1.
    +                DUTY_SCALE_LSCH1: u10,
    +                ///  reg_duty_cycle_lsch1.
    +                DUTY_CYCLE_LSCH1: u10,
    +                ///  reg_duty_num_lsch1.
    +                DUTY_NUM_LSCH1: u10,
    +                ///  reg_duty_inc_lsch1.
    +                DUTY_INC_LSCH1: u1,
    +                ///  reg_duty_start_lsch1.
    +                DUTY_START_LSCH1: u1,
    +            }),
    +            ///  LEDC_LSCH1_DUTY_R.
    +            LSCH1_DUTY_R: mmio.Mmio(packed struct(u32) {
    +                ///  reg_duty_lsch1_r.
    +                DUTY_LSCH1_R: u19,
    +                padding: u13,
    +            }),
    +            ///  LEDC_LSCH2_CONF0.
    +            LSCH2_CONF0: mmio.Mmio(packed struct(u32) {
    +                ///  reg_timer_sel_lsch2.
    +                TIMER_SEL_LSCH2: u2,
    +                ///  reg_sig_out_en_lsch2.
    +                SIG_OUT_EN_LSCH2: u1,
    +                ///  reg_idle_lv_lsch2.
    +                IDLE_LV_LSCH2: u1,
    +                ///  reg_para_up_lsch2.
    +                PARA_UP_LSCH2: u1,
    +                ///  reg_ovf_num_lsch2.
    +                OVF_NUM_LSCH2: u10,
    +                ///  reg_ovf_cnt_en_lsch2.
    +                OVF_CNT_EN_LSCH2: u1,
    +                ///  reg_ovf_cnt_reset_lsch2.
    +                OVF_CNT_RESET_LSCH2: u1,
    +                padding: u15,
    +            }),
    +            ///  LEDC_LSCH2_HPOINT.
    +            LSCH2_HPOINT: mmio.Mmio(packed struct(u32) {
    +                ///  reg_hpoint_lsch2.
    +                HPOINT_LSCH2: u14,
    +                padding: u18,
    +            }),
    +            ///  LEDC_LSCH2_DUTY.
    +            LSCH2_DUTY: mmio.Mmio(packed struct(u32) {
    +                ///  reg_duty_lsch2.
    +                DUTY_LSCH2: u19,
    +                padding: u13,
    +            }),
    +            ///  LEDC_LSCH2_CONF1.
    +            LSCH2_CONF1: mmio.Mmio(packed struct(u32) {
    +                ///  reg_duty_scale_lsch2.
    +                DUTY_SCALE_LSCH2: u10,
    +                ///  reg_duty_cycle_lsch2.
    +                DUTY_CYCLE_LSCH2: u10,
    +                ///  reg_duty_num_lsch2.
    +                DUTY_NUM_LSCH2: u10,
    +                ///  reg_duty_inc_lsch2.
    +                DUTY_INC_LSCH2: u1,
    +                ///  reg_duty_start_lsch2.
    +                DUTY_START_LSCH2: u1,
    +            }),
    +            ///  LEDC_LSCH2_DUTY_R.
    +            LSCH2_DUTY_R: mmio.Mmio(packed struct(u32) {
    +                ///  reg_duty_lsch2_r.
    +                DUTY_LSCH2_R: u19,
    +                padding: u13,
    +            }),
    +            ///  LEDC_LSCH3_CONF0.
    +            LSCH3_CONF0: mmio.Mmio(packed struct(u32) {
    +                ///  reg_timer_sel_lsch3.
    +                TIMER_SEL_LSCH3: u2,
    +                ///  reg_sig_out_en_lsch3.
    +                SIG_OUT_EN_LSCH3: u1,
    +                ///  reg_idle_lv_lsch3.
    +                IDLE_LV_LSCH3: u1,
    +                ///  reg_para_up_lsch3.
    +                PARA_UP_LSCH3: u1,
    +                ///  reg_ovf_num_lsch3.
    +                OVF_NUM_LSCH3: u10,
    +                ///  reg_ovf_cnt_en_lsch3.
    +                OVF_CNT_EN_LSCH3: u1,
    +                ///  reg_ovf_cnt_reset_lsch3.
    +                OVF_CNT_RESET_LSCH3: u1,
    +                padding: u15,
    +            }),
    +            ///  LEDC_LSCH3_HPOINT.
    +            LSCH3_HPOINT: mmio.Mmio(packed struct(u32) {
    +                ///  reg_hpoint_lsch3.
    +                HPOINT_LSCH3: u14,
    +                padding: u18,
    +            }),
    +            ///  LEDC_LSCH3_DUTY.
    +            LSCH3_DUTY: mmio.Mmio(packed struct(u32) {
    +                ///  reg_duty_lsch3.
    +                DUTY_LSCH3: u19,
    +                padding: u13,
    +            }),
    +            ///  LEDC_LSCH3_CONF1.
    +            LSCH3_CONF1: mmio.Mmio(packed struct(u32) {
    +                ///  reg_duty_scale_lsch3.
    +                DUTY_SCALE_LSCH3: u10,
    +                ///  reg_duty_cycle_lsch3.
    +                DUTY_CYCLE_LSCH3: u10,
    +                ///  reg_duty_num_lsch3.
    +                DUTY_NUM_LSCH3: u10,
    +                ///  reg_duty_inc_lsch3.
    +                DUTY_INC_LSCH3: u1,
    +                ///  reg_duty_start_lsch3.
    +                DUTY_START_LSCH3: u1,
    +            }),
    +            ///  LEDC_LSCH3_DUTY_R.
    +            LSCH3_DUTY_R: mmio.Mmio(packed struct(u32) {
    +                ///  reg_duty_lsch3_r.
    +                DUTY_LSCH3_R: u19,
    +                padding: u13,
    +            }),
    +            ///  LEDC_LSCH4_CONF0.
    +            LSCH4_CONF0: mmio.Mmio(packed struct(u32) {
    +                ///  reg_timer_sel_lsch4.
    +                TIMER_SEL_LSCH4: u2,
    +                ///  reg_sig_out_en_lsch4.
    +                SIG_OUT_EN_LSCH4: u1,
    +                ///  reg_idle_lv_lsch4.
    +                IDLE_LV_LSCH4: u1,
    +                ///  reg_para_up_lsch4.
    +                PARA_UP_LSCH4: u1,
    +                ///  reg_ovf_num_lsch4.
    +                OVF_NUM_LSCH4: u10,
    +                ///  reg_ovf_cnt_en_lsch4.
    +                OVF_CNT_EN_LSCH4: u1,
    +                ///  reg_ovf_cnt_reset_lsch4.
    +                OVF_CNT_RESET_LSCH4: u1,
    +                padding: u15,
    +            }),
    +            ///  LEDC_LSCH4_HPOINT.
    +            LSCH4_HPOINT: mmio.Mmio(packed struct(u32) {
    +                ///  reg_hpoint_lsch4.
    +                HPOINT_LSCH4: u14,
    +                padding: u18,
    +            }),
    +            ///  LEDC_LSCH4_DUTY.
    +            LSCH4_DUTY: mmio.Mmio(packed struct(u32) {
    +                ///  reg_duty_lsch4.
    +                DUTY_LSCH4: u19,
    +                padding: u13,
    +            }),
    +            ///  LEDC_LSCH4_CONF1.
    +            LSCH4_CONF1: mmio.Mmio(packed struct(u32) {
    +                ///  reg_duty_scale_lsch4.
    +                DUTY_SCALE_LSCH4: u10,
    +                ///  reg_duty_cycle_lsch4.
    +                DUTY_CYCLE_LSCH4: u10,
    +                ///  reg_duty_num_lsch4.
    +                DUTY_NUM_LSCH4: u10,
    +                ///  reg_duty_inc_lsch4.
    +                DUTY_INC_LSCH4: u1,
    +                ///  reg_duty_start_lsch4.
    +                DUTY_START_LSCH4: u1,
    +            }),
    +            ///  LEDC_LSCH4_DUTY_R.
    +            LSCH4_DUTY_R: mmio.Mmio(packed struct(u32) {
    +                ///  reg_duty_lsch4_r.
    +                DUTY_LSCH4_R: u19,
    +                padding: u13,
    +            }),
    +            ///  LEDC_LSCH5_CONF0.
    +            LSCH5_CONF0: mmio.Mmio(packed struct(u32) {
    +                ///  reg_timer_sel_lsch5.
    +                TIMER_SEL_LSCH5: u2,
    +                ///  reg_sig_out_en_lsch5.
    +                SIG_OUT_EN_LSCH5: u1,
    +                ///  reg_idle_lv_lsch5.
    +                IDLE_LV_LSCH5: u1,
    +                ///  reg_para_up_lsch5.
    +                PARA_UP_LSCH5: u1,
    +                ///  reg_ovf_num_lsch5.
    +                OVF_NUM_LSCH5: u10,
    +                ///  reg_ovf_cnt_en_lsch5.
    +                OVF_CNT_EN_LSCH5: u1,
    +                ///  reg_ovf_cnt_reset_lsch5.
    +                OVF_CNT_RESET_LSCH5: u1,
    +                padding: u15,
    +            }),
    +            ///  LEDC_LSCH5_HPOINT.
    +            LSCH5_HPOINT: mmio.Mmio(packed struct(u32) {
    +                ///  reg_hpoint_lsch5.
    +                HPOINT_LSCH5: u14,
    +                padding: u18,
    +            }),
    +            ///  LEDC_LSCH5_DUTY.
    +            LSCH5_DUTY: mmio.Mmio(packed struct(u32) {
    +                ///  reg_duty_lsch5.
    +                DUTY_LSCH5: u19,
    +                padding: u13,
    +            }),
    +            ///  LEDC_LSCH5_CONF1.
    +            LSCH5_CONF1: mmio.Mmio(packed struct(u32) {
    +                ///  reg_duty_scale_lsch5.
    +                DUTY_SCALE_LSCH5: u10,
    +                ///  reg_duty_cycle_lsch5.
    +                DUTY_CYCLE_LSCH5: u10,
    +                ///  reg_duty_num_lsch5.
    +                DUTY_NUM_LSCH5: u10,
    +                ///  reg_duty_inc_lsch5.
    +                DUTY_INC_LSCH5: u1,
    +                ///  reg_duty_start_lsch5.
    +                DUTY_START_LSCH5: u1,
    +            }),
    +            ///  LEDC_LSCH5_DUTY_R.
    +            LSCH5_DUTY_R: mmio.Mmio(packed struct(u32) {
    +                ///  reg_duty_lsch5_r.
    +                DUTY_LSCH5_R: u19,
    +                padding: u13,
    +            }),
    +            reserved160: [40]u8,
    +            ///  LEDC_LSTIMER0_CONF.
    +            LSTIMER0_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  reg_lstimer0_duty_res.
    +                LSTIMER0_DUTY_RES: u4,
    +                ///  reg_clk_div_lstimer0.
    +                CLK_DIV_LSTIMER0: u18,
    +                ///  reg_lstimer0_pause.
    +                LSTIMER0_PAUSE: u1,
    +                ///  reg_lstimer0_rst.
    +                LSTIMER0_RST: u1,
    +                ///  reg_tick_sel_lstimer0.
    +                TICK_SEL_LSTIMER0: u1,
    +                ///  reg_lstimer0_para_up.
    +                LSTIMER0_PARA_UP: u1,
    +                padding: u6,
    +            }),
    +            ///  LEDC_LSTIMER0_VALUE.
    +            LSTIMER0_VALUE: mmio.Mmio(packed struct(u32) {
    +                ///  reg_lstimer0_cnt.
    +                LSTIMER0_CNT: u14,
    +                padding: u18,
    +            }),
    +            ///  LEDC_LSTIMER1_CONF.
    +            LSTIMER1_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  reg_lstimer1_duty_res.
    +                LSTIMER1_DUTY_RES: u4,
    +                ///  reg_clk_div_lstimer1.
    +                CLK_DIV_LSTIMER1: u18,
    +                ///  reg_lstimer1_pause.
    +                LSTIMER1_PAUSE: u1,
    +                ///  reg_lstimer1_rst.
    +                LSTIMER1_RST: u1,
    +                ///  reg_tick_sel_lstimer1.
    +                TICK_SEL_LSTIMER1: u1,
    +                ///  reg_lstimer1_para_up.
    +                LSTIMER1_PARA_UP: u1,
    +                padding: u6,
    +            }),
    +            ///  LEDC_LSTIMER1_VALUE.
    +            LSTIMER1_VALUE: mmio.Mmio(packed struct(u32) {
    +                ///  reg_lstimer1_cnt.
    +                LSTIMER1_CNT: u14,
    +                padding: u18,
    +            }),
    +            ///  LEDC_LSTIMER2_CONF.
    +            LSTIMER2_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  reg_lstimer2_duty_res.
    +                LSTIMER2_DUTY_RES: u4,
    +                ///  reg_clk_div_lstimer2.
    +                CLK_DIV_LSTIMER2: u18,
    +                ///  reg_lstimer2_pause.
    +                LSTIMER2_PAUSE: u1,
    +                ///  reg_lstimer2_rst.
    +                LSTIMER2_RST: u1,
    +                ///  reg_tick_sel_lstimer2.
    +                TICK_SEL_LSTIMER2: u1,
    +                ///  reg_lstimer2_para_up.
    +                LSTIMER2_PARA_UP: u1,
    +                padding: u6,
    +            }),
    +            ///  LEDC_LSTIMER2_VALUE.
    +            LSTIMER2_VALUE: mmio.Mmio(packed struct(u32) {
    +                ///  reg_lstimer2_cnt.
    +                LSTIMER2_CNT: u14,
    +                padding: u18,
    +            }),
    +            ///  LEDC_LSTIMER3_CONF.
    +            LSTIMER3_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  reg_lstimer3_duty_res.
    +                LSTIMER3_DUTY_RES: u4,
    +                ///  reg_clk_div_lstimer3.
    +                CLK_DIV_LSTIMER3: u18,
    +                ///  reg_lstimer3_pause.
    +                LSTIMER3_PAUSE: u1,
    +                ///  reg_lstimer3_rst.
    +                LSTIMER3_RST: u1,
    +                ///  reg_tick_sel_lstimer3.
    +                TICK_SEL_LSTIMER3: u1,
    +                ///  reg_lstimer3_para_up.
    +                LSTIMER3_PARA_UP: u1,
    +                padding: u6,
    +            }),
    +            ///  LEDC_LSTIMER3_VALUE.
    +            LSTIMER3_VALUE: mmio.Mmio(packed struct(u32) {
    +                ///  reg_lstimer3_cnt.
    +                LSTIMER3_CNT: u14,
    +                padding: u18,
    +            }),
    +            ///  LEDC_INT_RAW.
    +            INT_RAW: mmio.Mmio(packed struct(u32) {
    +                ///  reg_lstimer0_ovf_int_raw.
    +                LSTIMER0_OVF_INT_RAW: u1,
    +                ///  reg_lstimer1_ovf_int_raw.
    +                LSTIMER1_OVF_INT_RAW: u1,
    +                ///  reg_lstimer2_ovf_int_raw.
    +                LSTIMER2_OVF_INT_RAW: u1,
    +                ///  reg_lstimer3_ovf_int_raw.
    +                LSTIMER3_OVF_INT_RAW: u1,
    +                ///  reg_duty_chng_end_lsch0_int_raw.
    +                DUTY_CHNG_END_LSCH0_INT_RAW: u1,
    +                ///  reg_duty_chng_end_lsch1_int_raw.
    +                DUTY_CHNG_END_LSCH1_INT_RAW: u1,
    +                ///  reg_duty_chng_end_lsch2_int_raw.
    +                DUTY_CHNG_END_LSCH2_INT_RAW: u1,
    +                ///  reg_duty_chng_end_lsch3_int_raw.
    +                DUTY_CHNG_END_LSCH3_INT_RAW: u1,
    +                ///  reg_duty_chng_end_lsch4_int_raw.
    +                DUTY_CHNG_END_LSCH4_INT_RAW: u1,
    +                ///  reg_duty_chng_end_lsch5_int_raw.
    +                DUTY_CHNG_END_LSCH5_INT_RAW: u1,
    +                ///  reg_ovf_cnt_lsch0_int_raw.
    +                OVF_CNT_LSCH0_INT_RAW: u1,
    +                ///  reg_ovf_cnt_lsch1_int_raw.
    +                OVF_CNT_LSCH1_INT_RAW: u1,
    +                ///  reg_ovf_cnt_lsch2_int_raw.
    +                OVF_CNT_LSCH2_INT_RAW: u1,
    +                ///  reg_ovf_cnt_lsch3_int_raw.
    +                OVF_CNT_LSCH3_INT_RAW: u1,
    +                ///  reg_ovf_cnt_lsch4_int_raw.
    +                OVF_CNT_LSCH4_INT_RAW: u1,
    +                ///  reg_ovf_cnt_lsch5_int_raw.
    +                OVF_CNT_LSCH5_INT_RAW: u1,
    +                padding: u16,
    +            }),
    +            ///  LEDC_INT_ST.
    +            INT_ST: mmio.Mmio(packed struct(u32) {
    +                ///  reg_lstimer0_ovf_int_st.
    +                LSTIMER0_OVF_INT_ST: u1,
    +                ///  reg_lstimer1_ovf_int_st.
    +                LSTIMER1_OVF_INT_ST: u1,
    +                ///  reg_lstimer2_ovf_int_st.
    +                LSTIMER2_OVF_INT_ST: u1,
    +                ///  reg_lstimer3_ovf_int_st.
    +                LSTIMER3_OVF_INT_ST: u1,
    +                ///  reg_duty_chng_end_lsch0_int_st.
    +                DUTY_CHNG_END_LSCH0_INT_ST: u1,
    +                ///  reg_duty_chng_end_lsch1_int_st.
    +                DUTY_CHNG_END_LSCH1_INT_ST: u1,
    +                ///  reg_duty_chng_end_lsch2_int_st.
    +                DUTY_CHNG_END_LSCH2_INT_ST: u1,
    +                ///  reg_duty_chng_end_lsch3_int_st.
    +                DUTY_CHNG_END_LSCH3_INT_ST: u1,
    +                ///  reg_duty_chng_end_lsch4_int_st.
    +                DUTY_CHNG_END_LSCH4_INT_ST: u1,
    +                ///  reg_duty_chng_end_lsch5_int_st.
    +                DUTY_CHNG_END_LSCH5_INT_ST: u1,
    +                ///  reg_ovf_cnt_lsch0_int_st.
    +                OVF_CNT_LSCH0_INT_ST: u1,
    +                ///  reg_ovf_cnt_lsch1_int_st.
    +                OVF_CNT_LSCH1_INT_ST: u1,
    +                ///  reg_ovf_cnt_lsch2_int_st.
    +                OVF_CNT_LSCH2_INT_ST: u1,
    +                ///  reg_ovf_cnt_lsch3_int_st.
    +                OVF_CNT_LSCH3_INT_ST: u1,
    +                ///  reg_ovf_cnt_lsch4_int_st.
    +                OVF_CNT_LSCH4_INT_ST: u1,
    +                ///  reg_ovf_cnt_lsch5_int_st.
    +                OVF_CNT_LSCH5_INT_ST: u1,
    +                padding: u16,
    +            }),
    +            ///  LEDC_INT_ENA.
    +            INT_ENA: mmio.Mmio(packed struct(u32) {
    +                ///  reg_lstimer0_ovf_int_ena.
    +                LSTIMER0_OVF_INT_ENA: u1,
    +                ///  reg_lstimer1_ovf_int_ena.
    +                LSTIMER1_OVF_INT_ENA: u1,
    +                ///  reg_lstimer2_ovf_int_ena.
    +                LSTIMER2_OVF_INT_ENA: u1,
    +                ///  reg_lstimer3_ovf_int_ena.
    +                LSTIMER3_OVF_INT_ENA: u1,
    +                ///  reg_duty_chng_end_lsch0_int_ena.
    +                DUTY_CHNG_END_LSCH0_INT_ENA: u1,
    +                ///  reg_duty_chng_end_lsch1_int_ena.
    +                DUTY_CHNG_END_LSCH1_INT_ENA: u1,
    +                ///  reg_duty_chng_end_lsch2_int_ena.
    +                DUTY_CHNG_END_LSCH2_INT_ENA: u1,
    +                ///  reg_duty_chng_end_lsch3_int_ena.
    +                DUTY_CHNG_END_LSCH3_INT_ENA: u1,
    +                ///  reg_duty_chng_end_lsch4_int_ena.
    +                DUTY_CHNG_END_LSCH4_INT_ENA: u1,
    +                ///  reg_duty_chng_end_lsch5_int_ena.
    +                DUTY_CHNG_END_LSCH5_INT_ENA: u1,
    +                ///  reg_ovf_cnt_lsch0_int_ena.
    +                OVF_CNT_LSCH0_INT_ENA: u1,
    +                ///  reg_ovf_cnt_lsch1_int_ena.
    +                OVF_CNT_LSCH1_INT_ENA: u1,
    +                ///  reg_ovf_cnt_lsch2_int_ena.
    +                OVF_CNT_LSCH2_INT_ENA: u1,
    +                ///  reg_ovf_cnt_lsch3_int_ena.
    +                OVF_CNT_LSCH3_INT_ENA: u1,
    +                ///  reg_ovf_cnt_lsch4_int_ena.
    +                OVF_CNT_LSCH4_INT_ENA: u1,
    +                ///  reg_ovf_cnt_lsch5_int_ena.
    +                OVF_CNT_LSCH5_INT_ENA: u1,
    +                padding: u16,
    +            }),
    +            ///  LEDC_INT_CLR.
    +            INT_CLR: mmio.Mmio(packed struct(u32) {
    +                ///  reg_lstimer0_ovf_int_clr.
    +                LSTIMER0_OVF_INT_CLR: u1,
    +                ///  reg_lstimer1_ovf_int_clr.
    +                LSTIMER1_OVF_INT_CLR: u1,
    +                ///  reg_lstimer2_ovf_int_clr.
    +                LSTIMER2_OVF_INT_CLR: u1,
    +                ///  reg_lstimer3_ovf_int_clr.
    +                LSTIMER3_OVF_INT_CLR: u1,
    +                ///  reg_duty_chng_end_lsch0_int_clr.
    +                DUTY_CHNG_END_LSCH0_INT_CLR: u1,
    +                ///  reg_duty_chng_end_lsch1_int_clr.
    +                DUTY_CHNG_END_LSCH1_INT_CLR: u1,
    +                ///  reg_duty_chng_end_lsch2_int_clr.
    +                DUTY_CHNG_END_LSCH2_INT_CLR: u1,
    +                ///  reg_duty_chng_end_lsch3_int_clr.
    +                DUTY_CHNG_END_LSCH3_INT_CLR: u1,
    +                ///  reg_duty_chng_end_lsch4_int_clr.
    +                DUTY_CHNG_END_LSCH4_INT_CLR: u1,
    +                ///  reg_duty_chng_end_lsch5_int_clr.
    +                DUTY_CHNG_END_LSCH5_INT_CLR: u1,
    +                ///  reg_ovf_cnt_lsch0_int_clr.
    +                OVF_CNT_LSCH0_INT_CLR: u1,
    +                ///  reg_ovf_cnt_lsch1_int_clr.
    +                OVF_CNT_LSCH1_INT_CLR: u1,
    +                ///  reg_ovf_cnt_lsch2_int_clr.
    +                OVF_CNT_LSCH2_INT_CLR: u1,
    +                ///  reg_ovf_cnt_lsch3_int_clr.
    +                OVF_CNT_LSCH3_INT_CLR: u1,
    +                ///  reg_ovf_cnt_lsch4_int_clr.
    +                OVF_CNT_LSCH4_INT_CLR: u1,
    +                ///  reg_ovf_cnt_lsch5_int_clr.
    +                OVF_CNT_LSCH5_INT_CLR: u1,
    +                padding: u16,
    +            }),
    +            ///  LEDC_CONF.
    +            CONF: mmio.Mmio(packed struct(u32) {
    +                ///  reg_apb_clk_sel.
    +                APB_CLK_SEL: u2,
    +                reserved31: u29,
    +                ///  reg_clk_en.
    +                CLK_EN: u1,
    +            }),
    +            reserved252: [40]u8,
    +            ///  LEDC_DATE.
    +            DATE: mmio.Mmio(packed struct(u32) {
    +                ///  reg_ledc_date.
    +                LEDC_DATE: u32,
    +            }),
    +        };
    +
    +        ///  Remote Control Peripheral
    +        pub const RMT = extern struct {
    +            ///  RMT_CH0DATA_REG.
    +            CH0DATA: mmio.Mmio(packed struct(u32) {
    +                ///  Reserved.
    +                DATA: u32,
    +            }),
    +            ///  RMT_CH1DATA_REG.
    +            CH1DATA: mmio.Mmio(packed struct(u32) {
    +                ///  Reserved.
    +                DATA: u32,
    +            }),
    +            ///  RMT_CH2DATA_REG.
    +            CH2DATA: mmio.Mmio(packed struct(u32) {
    +                ///  Reserved.
    +                DATA: u32,
    +            }),
    +            ///  RMT_CH3DATA_REG.
    +            CH3DATA: mmio.Mmio(packed struct(u32) {
    +                ///  Reserved.
    +                DATA: u32,
    +            }),
    +            reserved28: [12]u8,
    +            ///  RMT_CH2CONF1_REG.
    +            CH2CONF1: mmio.Mmio(packed struct(u32) {
    +                ///  reg_rx_en_ch2.
    +                RX_EN: u1,
    +                ///  reg_mem_wr_rst_ch2.
    +                MEM_WR_RST: u1,
    +                ///  reg_apb_mem_rst_ch2.
    +                APB_MEM_RST: u1,
    +                ///  reg_mem_owner_ch2.
    +                MEM_OWNER: u1,
    +                ///  reg_rx_filter_en_ch2.
    +                RX_FILTER_EN: u1,
    +                ///  reg_rx_filter_thres_ch2.
    +                RX_FILTER_THRES: u8,
    +                ///  reg_mem_rx_wrap_en_ch2.
    +                MEM_RX_WRAP_EN: u1,
    +                ///  reg_afifo_rst_ch2.
    +                AFIFO_RST: u1,
    +                ///  reg_conf_update_ch2.
    +                CONF_UPDATE: u1,
    +                padding: u16,
    +            }),
    +            reserved36: [4]u8,
    +            ///  RMT_CH3CONF1_REG.
    +            CH3CONF1: mmio.Mmio(packed struct(u32) {
    +                ///  reg_rx_en_ch3.
    +                RX_EN: u1,
    +                ///  reg_mem_wr_rst_ch3.
    +                MEM_WR_RST: u1,
    +                ///  reg_apb_mem_rst_ch3.
    +                APB_MEM_RST: u1,
    +                ///  reg_mem_owner_ch3.
    +                MEM_OWNER: u1,
    +                ///  reg_rx_filter_en_ch3.
    +                RX_FILTER_EN: u1,
    +                ///  reg_rx_filter_thres_ch3.
    +                RX_FILTER_THRES: u8,
    +                ///  reg_mem_rx_wrap_en_ch3.
    +                MEM_RX_WRAP_EN: u1,
    +                ///  reg_afifo_rst_ch3.
    +                AFIFO_RST: u1,
    +                ///  reg_conf_update_ch3.
    +                CONF_UPDATE: u1,
    +                padding: u16,
    +            }),
    +            ///  RMT_CH0STATUS_REG.
    +            CH0STATUS: mmio.Mmio(packed struct(u32) {
    +                ///  reg_mem_raddr_ex_ch0.
    +                MEM_RADDR_EX: u9,
    +                ///  reg_state_ch0.
    +                STATE: u3,
    +                ///  reg_apb_mem_waddr_ch0.
    +                APB_MEM_WADDR: u9,
    +                ///  reg_apb_mem_rd_err_ch0.
    +                APB_MEM_RD_ERR: u1,
    +                ///  reg_mem_empty_ch0.
    +                MEM_EMPTY: u1,
    +                ///  reg_apb_mem_wr_err_ch0.
    +                APB_MEM_WR_ERR: u1,
    +                ///  reg_apb_mem_raddr_ch0.
    +                APB_MEM_RADDR: u8,
    +            }),
    +            ///  RMT_CH1STATUS_REG.
    +            CH1STATUS: mmio.Mmio(packed struct(u32) {
    +                ///  reg_mem_raddr_ex_ch1.
    +                MEM_RADDR_EX: u9,
    +                ///  reg_state_ch1.
    +                STATE: u3,
    +                ///  reg_apb_mem_waddr_ch1.
    +                APB_MEM_WADDR: u9,
    +                ///  reg_apb_mem_rd_err_ch1.
    +                APB_MEM_RD_ERR: u1,
    +                ///  reg_mem_empty_ch1.
    +                MEM_EMPTY: u1,
    +                ///  reg_apb_mem_wr_err_ch1.
    +                APB_MEM_WR_ERR: u1,
    +                ///  reg_apb_mem_raddr_ch1.
    +                APB_MEM_RADDR: u8,
    +            }),
    +            ///  RMT_CH2STATUS_REG.
    +            CH2STATUS: mmio.Mmio(packed struct(u32) {
    +                ///  reg_mem_waddr_ex_ch2.
    +                MEM_WADDR_EX: u9,
    +                reserved12: u3,
    +                ///  reg_apb_mem_raddr_ch2.
    +                APB_MEM_RADDR: u9,
    +                reserved22: u1,
    +                ///  reg_state_ch2.
    +                STATE: u3,
    +                ///  reg_mem_owner_err_ch2.
    +                MEM_OWNER_ERR: u1,
    +                ///  reg_mem_full_ch2.
    +                MEM_FULL: u1,
    +                ///  reg_apb_mem_rd_err_ch2.
    +                APB_MEM_RD_ERR: u1,
    +                padding: u4,
    +            }),
    +            ///  RMT_CH3STATUS_REG.
    +            CH3STATUS: mmio.Mmio(packed struct(u32) {
    +                ///  reg_mem_waddr_ex_ch3.
    +                MEM_WADDR_EX: u9,
    +                reserved12: u3,
    +                ///  reg_apb_mem_raddr_ch3.
    +                APB_MEM_RADDR: u9,
    +                reserved22: u1,
    +                ///  reg_state_ch3.
    +                STATE: u3,
    +                ///  reg_mem_owner_err_ch3.
    +                MEM_OWNER_ERR: u1,
    +                ///  reg_mem_full_ch3.
    +                MEM_FULL: u1,
    +                ///  reg_apb_mem_rd_err_ch3.
    +                APB_MEM_RD_ERR: u1,
    +                padding: u4,
    +            }),
    +            ///  RMT_INT_RAW_REG.
    +            INT_RAW: mmio.Mmio(packed struct(u32) {
    +                reserved10: u10,
    +                ///  reg_ch2_rx_thr_event_int_raw.
    +                CH2_RX_THR_EVENT_INT_RAW: u1,
    +                ///  reg_ch3_rx_thr_event_int_raw.
    +                CH3_RX_THR_EVENT_INT_RAW: u1,
    +                padding: u20,
    +            }),
    +            ///  RMT_INT_ST_REG.
    +            INT_ST: mmio.Mmio(packed struct(u32) {
    +                reserved10: u10,
    +                ///  reg_ch2_rx_thr_event_int_st.
    +                CH2_RX_THR_EVENT_INT_ST: u1,
    +                ///  reg_ch3_rx_thr_event_int_st.
    +                CH3_RX_THR_EVENT_INT_ST: u1,
    +                padding: u20,
    +            }),
    +            ///  RMT_INT_ENA_REG.
    +            INT_ENA: mmio.Mmio(packed struct(u32) {
    +                reserved10: u10,
    +                ///  reg_ch2_rx_thr_event_int_ena.
    +                CH2_RX_THR_EVENT_INT_ENA: u1,
    +                ///  reg_ch3_rx_thr_event_int_ena.
    +                CH3_RX_THR_EVENT_INT_ENA: u1,
    +                padding: u20,
    +            }),
    +            ///  RMT_INT_CLR_REG.
    +            INT_CLR: mmio.Mmio(packed struct(u32) {
    +                reserved10: u10,
    +                ///  reg_ch2_rx_thr_event_int_clr.
    +                CH2_RX_THR_EVENT_INT_CLR: u1,
    +                ///  reg_ch3_rx_thr_event_int_clr.
    +                CH3_RX_THR_EVENT_INT_CLR: u1,
    +                padding: u20,
    +            }),
    +            ///  RMT_CH0CARRIER_DUTY_REG.
    +            CH0CARRIER_DUTY: mmio.Mmio(packed struct(u32) {
    +                ///  reg_carrier_low_ch0.
    +                CARRIER_LOW: u16,
    +                ///  reg_carrier_high_ch0.
    +                CARRIER_HIGH: u16,
    +            }),
    +            ///  RMT_CH1CARRIER_DUTY_REG.
    +            CH1CARRIER_DUTY: mmio.Mmio(packed struct(u32) {
    +                ///  reg_carrier_low_ch1.
    +                CARRIER_LOW: u16,
    +                ///  reg_carrier_high_ch1.
    +                CARRIER_HIGH: u16,
    +            }),
    +            ///  RMT_CH2_RX_CARRIER_RM_REG.
    +            CH2_RX_CARRIER_RM: mmio.Mmio(packed struct(u32) {
    +                ///  reg_carrier_low_thres_ch2.
    +                CARRIER_LOW_THRES: u16,
    +                ///  reg_carrier_high_thres_ch2.
    +                CARRIER_HIGH_THRES: u16,
    +            }),
    +            ///  RMT_CH3_RX_CARRIER_RM_REG.
    +            CH3_RX_CARRIER_RM: mmio.Mmio(packed struct(u32) {
    +                ///  reg_carrier_low_thres_ch3.
    +                CARRIER_LOW_THRES: u16,
    +                ///  reg_carrier_high_thres_ch3.
    +                CARRIER_HIGH_THRES: u16,
    +            }),
    +            reserved104: [16]u8,
    +            ///  RMT_SYS_CONF_REG.
    +            SYS_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  reg_apb_fifo_mask.
    +                APB_FIFO_MASK: u1,
    +                ///  reg_mem_clk_force_on.
    +                MEM_CLK_FORCE_ON: u1,
    +                ///  reg_rmt_mem_force_pd.
    +                MEM_FORCE_PD: u1,
    +                ///  reg_rmt_mem_force_pu.
    +                MEM_FORCE_PU: u1,
    +                ///  reg_rmt_sclk_div_num.
    +                SCLK_DIV_NUM: u8,
    +                ///  reg_rmt_sclk_div_a.
    +                SCLK_DIV_A: u6,
    +                ///  reg_rmt_sclk_div_b.
    +                SCLK_DIV_B: u6,
    +                ///  reg_rmt_sclk_sel.
    +                SCLK_SEL: u2,
    +                ///  reg_rmt_sclk_active.
    +                SCLK_ACTIVE: u1,
    +                reserved31: u4,
    +                ///  reg_clk_en.
    +                CLK_EN: u1,
    +            }),
    +            ///  RMT_TX_SIM_REG.
    +            TX_SIM: mmio.Mmio(packed struct(u32) {
    +                ///  reg_rmt_tx_sim_ch0.
    +                TX_SIM_CH0: u1,
    +                ///  reg_rmt_tx_sim_ch1.
    +                TX_SIM_CH1: u1,
    +                ///  reg_rmt_tx_sim_en.
    +                TX_SIM_EN: u1,
    +                padding: u29,
    +            }),
    +            ///  RMT_REF_CNT_RST_REG.
    +            REF_CNT_RST: mmio.Mmio(packed struct(u32) {
    +                ///  reg_ref_cnt_rst_ch0.
    +                CH0: u1,
    +                ///  reg_ref_cnt_rst_ch1.
    +                CH1: u1,
    +                ///  reg_ref_cnt_rst_ch2.
    +                CH2: u1,
    +                ///  reg_ref_cnt_rst_ch3.
    +                CH3: u1,
    +                padding: u28,
    +            }),
    +            reserved204: [88]u8,
    +            ///  RMT_DATE_REG.
    +            DATE: mmio.Mmio(packed struct(u32) {
    +                ///  reg_rmt_date.
    +                DATE: u28,
    +                padding: u4,
    +            }),
    +        };
    +
    +        ///  Hardware random number generator
    +        pub const RNG = extern struct {
    +            reserved176: [176]u8,
    +            ///  Random number data
    +            DATA: u32,
    +        };
    +
    +        ///  RSA (Rivest Shamir Adleman) Accelerator
    +        pub const RSA = extern struct {
    +            ///  The memory that stores M
    +            M_MEM: [16]u8,
    +            reserved512: [496]u8,
    +            ///  The memory that stores Z
    +            Z_MEM: [16]u8,
    +            reserved1024: [496]u8,
    +            ///  The memory that stores Y
    +            Y_MEM: [16]u8,
    +            reserved1536: [496]u8,
    +            ///  The memory that stores X
    +            X_MEM: [16]u8,
    +            reserved2048: [496]u8,
    +            ///  RSA M_prime register
    +            M_PRIME: mmio.Mmio(packed struct(u32) {
    +                ///  Those bits stores m'
    +                M_PRIME: u32,
    +            }),
    +            ///  RSA mode register
    +            MODE: mmio.Mmio(packed struct(u32) {
    +                ///  rsa mode (rsa length).
    +                MODE: u7,
    +                padding: u25,
    +            }),
    +            ///  RSA query clean register
    +            QUERY_CLEAN: mmio.Mmio(packed struct(u32) {
    +                ///  query clean
    +                QUERY_CLEAN: u1,
    +                padding: u31,
    +            }),
    +            ///  RSA modular exponentiation trigger register.
    +            SET_START_MODEXP: mmio.Mmio(packed struct(u32) {
    +                ///  start modular exponentiation
    +                SET_START_MODEXP: u1,
    +                padding: u31,
    +            }),
    +            ///  RSA modular multiplication trigger register.
    +            SET_START_MODMULT: mmio.Mmio(packed struct(u32) {
    +                ///  start modular multiplication
    +                SET_START_MODMULT: u1,
    +                padding: u31,
    +            }),
    +            ///  RSA normal multiplication trigger register.
    +            SET_START_MULT: mmio.Mmio(packed struct(u32) {
    +                ///  start multiplicaiton
    +                SET_START_MULT: u1,
    +                padding: u31,
    +            }),
    +            ///  RSA query idle register
    +            QUERY_IDLE: mmio.Mmio(packed struct(u32) {
    +                ///  query rsa idle. 1'b0: busy, 1'b1: idle
    +                QUERY_IDLE: u1,
    +                padding: u31,
    +            }),
    +            ///  RSA interrupt clear register
    +            INT_CLR: mmio.Mmio(packed struct(u32) {
    +                ///  set this bit to clear RSA interrupt.
    +                CLEAR_INTERRUPT: u1,
    +                padding: u31,
    +            }),
    +            ///  RSA constant time option register
    +            CONSTANT_TIME: mmio.Mmio(packed struct(u32) {
    +                ///  Configure this bit to 0 for acceleration. 0: with acceleration, 1: without acceleration(defalut).
    +                CONSTANT_TIME: u1,
    +                padding: u31,
    +            }),
    +            ///  RSA search option
    +            SEARCH_ENABLE: mmio.Mmio(packed struct(u32) {
    +                ///  Configure this bit to 1 for acceleration. 1: with acceleration, 0: without acceleration(default). This option should be used together with RSA_SEARCH_POS.
    +                SEARCH_ENABLE: u1,
    +                padding: u31,
    +            }),
    +            ///  RSA search position configure register
    +            SEARCH_POS: mmio.Mmio(packed struct(u32) {
    +                ///  Configure this field to set search position. This field should be used together with RSA_SEARCH_ENABLE. The field is only meaningful when RSA_SEARCH_ENABLE is high.
    +                SEARCH_POS: u12,
    +                padding: u20,
    +            }),
    +            ///  RSA interrupt enable register
    +            INT_ENA: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to enable interrupt that occurs when rsa calculation is done. 1'b0: disable, 1'b1: enable(default).
    +                INT_ENA: u1,
    +                padding: u31,
    +            }),
    +            ///  RSA version control register
    +            DATE: mmio.Mmio(packed struct(u32) {
    +                ///  rsa version information
    +                DATE: u30,
    +                padding: u2,
    +            }),
    +        };
    +
    +        ///  Real-Time Clock Control
    +        pub const RTC_CNTL = extern struct {
    +            ///  rtc configure register
    +            OPTIONS0: mmio.Mmio(packed struct(u32) {
    +                ///  {reg_sw_stall_appcpu_c1[5:0], reg_sw_stall_appcpu_c0[1:0]} == 0x86 will stall APP CPU
    +                SW_STALL_APPCPU_C0: u2,
    +                ///  {reg_sw_stall_procpu_c1[5:0], reg_sw_stall_procpu_c0[1:0]} == 0x86 will stall PRO CPU
    +                SW_STALL_PROCPU_C0: u2,
    +                ///  APP CPU SW reset
    +                SW_APPCPU_RST: u1,
    +                ///  PRO CPU SW reset
    +                SW_PROCPU_RST: u1,
    +                ///  BB_I2C force power down
    +                BB_I2C_FORCE_PD: u1,
    +                ///  BB_I2C force power up
    +                BB_I2C_FORCE_PU: u1,
    +                ///  BB_PLL _I2C force power down
    +                BBPLL_I2C_FORCE_PD: u1,
    +                ///  BB_PLL_I2C force power up
    +                BBPLL_I2C_FORCE_PU: u1,
    +                ///  BB_PLL force power down
    +                BBPLL_FORCE_PD: u1,
    +                ///  BB_PLL force power up
    +                BBPLL_FORCE_PU: u1,
    +                ///  crystall force power down
    +                XTL_FORCE_PD: u1,
    +                ///  crystall force power up
    +                XTL_FORCE_PU: u1,
    +                ///  wait bias_sleep and current source wakeup
    +                XTL_EN_WAIT: u4,
    +                reserved20: u2,
    +                ///  analog configure
    +                XTL_EXT_CTR_SEL: u3,
    +                ///  analog configure
    +                XTL_FORCE_ISO: u1,
    +                ///  analog configure
    +                PLL_FORCE_ISO: u1,
    +                ///  analog configure
    +                ANALOG_FORCE_ISO: u1,
    +                ///  analog configure
    +                XTL_FORCE_NOISO: u1,
    +                ///  analog configure
    +                PLL_FORCE_NOISO: u1,
    +                ///  analog configure
    +                ANALOG_FORCE_NOISO: u1,
    +                ///  digital wrap force reset in deep sleep
    +                DG_WRAP_FORCE_RST: u1,
    +                ///  digital core force no reset in deep sleep
    +                DG_WRAP_FORCE_NORST: u1,
    +                ///  SW system reset
    +                SW_SYS_RST: u1,
    +            }),
    +            ///  rtc configure register
    +            SLP_TIMER0: mmio.Mmio(packed struct(u32) {
    +                ///  configure the sleep time
    +                SLP_VAL_LO: u32,
    +            }),
    +            ///  rtc configure register
    +            SLP_TIMER1: mmio.Mmio(packed struct(u32) {
    +                ///  RTC sleep timer high 16 bits
    +                SLP_VAL_HI: u16,
    +                ///  timer alarm enable bit
    +                RTC_MAIN_TIMER_ALARM_EN: u1,
    +                padding: u15,
    +            }),
    +            ///  rtc configure register
    +            TIME_UPDATE: mmio.Mmio(packed struct(u32) {
    +                reserved27: u27,
    +                ///  Enable to record system stall time
    +                TIMER_SYS_STALL: u1,
    +                ///  Enable to record 40M XTAL OFF time
    +                TIMER_XTL_OFF: u1,
    +                ///  enable to record system reset time
    +                TIMER_SYS_RST: u1,
    +                reserved31: u1,
    +                ///  Set 1: to update register with RTC timer
    +                RTC_TIME_UPDATE: u1,
    +            }),
    +            ///  rtc configure register
    +            TIME_LOW0: mmio.Mmio(packed struct(u32) {
    +                ///  RTC timer low 32 bits
    +                RTC_TIMER_VALUE0_LOW: u32,
    +            }),
    +            ///  rtc configure register
    +            TIME_HIGH0: mmio.Mmio(packed struct(u32) {
    +                ///  RTC timer high 16 bits
    +                RTC_TIMER_VALUE0_HIGH: u16,
    +                padding: u16,
    +            }),
    +            ///  rtc configure register
    +            STATE0: mmio.Mmio(packed struct(u32) {
    +                ///  rtc software interrupt to main cpu
    +                RTC_SW_CPU_INT: u1,
    +                ///  clear rtc sleep reject cause
    +                RTC_SLP_REJECT_CAUSE_CLR: u1,
    +                reserved22: u20,
    +                ///  1: APB to RTC using bridge
    +                APB2RTC_BRIDGE_SEL: u1,
    +                reserved28: u5,
    +                ///  SDIO active indication
    +                SDIO_ACTIVE_IND: u1,
    +                ///  leep wakeup bit
    +                SLP_WAKEUP: u1,
    +                ///  leep reject bit
    +                SLP_REJECT: u1,
    +                ///  sleep enable bit
    +                SLEEP_EN: u1,
    +            }),
    +            ///  rtc configure register
    +            TIMER1: mmio.Mmio(packed struct(u32) {
    +                ///  CPU stall enable bit
    +                CPU_STALL_EN: u1,
    +                ///  CPU stall wait cycles in fast_clk_rtc
    +                CPU_STALL_WAIT: u5,
    +                ///  CK8M wait cycles in slow_clk_rtc
    +                CK8M_WAIT: u8,
    +                ///  XTAL wait cycles in slow_clk_rtc
    +                XTL_BUF_WAIT: u10,
    +                ///  PLL wait cycles in slow_clk_rtc
    +                PLL_BUF_WAIT: u8,
    +            }),
    +            ///  rtc configure register
    +            TIMER2: mmio.Mmio(packed struct(u32) {
    +                reserved24: u24,
    +                ///  minimal cycles in slow_clk_rtc for CK8M in power down state
    +                MIN_TIME_CK8M_OFF: u8,
    +            }),
    +            ///  rtc configure register
    +            TIMER3: mmio.Mmio(packed struct(u32) {
    +                ///  wifi power domain wakeup time
    +                WIFI_WAIT_TIMER: u9,
    +                ///  wifi power domain power on time
    +                WIFI_POWERUP_TIMER: u7,
    +                ///  bt power domain wakeup time
    +                BT_WAIT_TIMER: u9,
    +                ///  bt power domain power on time
    +                BT_POWERUP_TIMER: u7,
    +            }),
    +            ///  rtc configure register
    +            TIMER4: mmio.Mmio(packed struct(u32) {
    +                ///  cpu top power domain wakeup time
    +                CPU_TOP_WAIT_TIMER: u9,
    +                ///  cpu top power domain power on time
    +                CPU_TOP_POWERUP_TIMER: u7,
    +                ///  digital wrap power domain wakeup time
    +                DG_WRAP_WAIT_TIMER: u9,
    +                ///  digital wrap power domain power on time
    +                DG_WRAP_POWERUP_TIMER: u7,
    +            }),
    +            ///  rtc configure register
    +            TIMER5: mmio.Mmio(packed struct(u32) {
    +                reserved8: u8,
    +                ///  minimal sleep cycles in slow_clk_rtc
    +                MIN_SLP_VAL: u8,
    +                padding: u16,
    +            }),
    +            ///  rtc configure register
    +            TIMER6: mmio.Mmio(packed struct(u32) {
    +                reserved16: u16,
    +                ///  digital peri power domain wakeup time
    +                DG_PERI_WAIT_TIMER: u9,
    +                ///  digital peri power domain power on time
    +                DG_PERI_POWERUP_TIMER: u7,
    +            }),
    +            ///  rtc configure register
    +            ANA_CONF: mmio.Mmio(packed struct(u32) {
    +                reserved18: u18,
    +                ///  force no bypass i2c power on reset
    +                RESET_POR_FORCE_PD: u1,
    +                ///  force bypass i2c power on reset
    +                RESET_POR_FORCE_PU: u1,
    +                ///  enable glitch reset
    +                GLITCH_RST_EN: u1,
    +                reserved22: u1,
    +                ///  PLLA force power up
    +                SAR_I2C_PU: u1,
    +                ///  PLLA force power down
    +                PLLA_FORCE_PD: u1,
    +                ///  PLLA force power up
    +                PLLA_FORCE_PU: u1,
    +                ///  start BBPLL calibration during sleep
    +                BBPLL_CAL_SLP_START: u1,
    +                ///  1: PVTMON power up
    +                PVTMON_PU: u1,
    +                ///  1: TXRF_I2C power up
    +                TXRF_I2C_PU: u1,
    +                ///  1: RFRX_PBUS power up
    +                RFRX_PBUS_PU: u1,
    +                reserved30: u1,
    +                ///  1: CKGEN_I2C power up
    +                CKGEN_I2C_PU: u1,
    +                ///  power up pll i2c
    +                PLL_I2C_PU: u1,
    +            }),
    +            ///  rtc configure register
    +            RESET_STATE: mmio.Mmio(packed struct(u32) {
    +                ///  reset cause of PRO CPU
    +                RESET_CAUSE_PROCPU: u6,
    +                ///  reset cause of APP CPU
    +                RESET_CAUSE_APPCPU: u6,
    +                ///  APP CPU state vector sel
    +                STAT_VECTOR_SEL_APPCPU: u1,
    +                ///  PRO CPU state vector sel
    +                STAT_VECTOR_SEL_PROCPU: u1,
    +                ///  PRO CPU reset_flag
    +                ALL_RESET_FLAG_PROCPU: u1,
    +                ///  APP CPU reset flag
    +                ALL_RESET_FLAG_APPCPU: u1,
    +                ///  clear PRO CPU reset_flag
    +                ALL_RESET_FLAG_CLR_PROCPU: u1,
    +                ///  clear APP CPU reset flag
    +                ALL_RESET_FLAG_CLR_APPCPU: u1,
    +                ///  APPCPU OcdHaltOnReset
    +                OCD_HALT_ON_RESET_APPCPU: u1,
    +                ///  PROCPU OcdHaltOnReset
    +                OCD_HALT_ON_RESET_PROCPU: u1,
    +                ///  configure jtag reset configure
    +                JTAG_RESET_FLAG_PROCPU: u1,
    +                ///  configure jtag reset configure
    +                JTAG_RESET_FLAG_APPCPU: u1,
    +                ///  configure jtag reset configure
    +                JTAG_RESET_FLAG_CLR_PROCPU: u1,
    +                ///  configure jtag reset configure
    +                JTAG_RESET_FLAG_CLR_APPCPU: u1,
    +                ///  configure dreset configure
    +                RTC_DRESET_MASK_APPCPU: u1,
    +                ///  configure dreset configure
    +                RTC_DRESET_MASK_PROCPU: u1,
    +                padding: u6,
    +            }),
    +            ///  rtc configure register
    +            WAKEUP_STATE: mmio.Mmio(packed struct(u32) {
    +                reserved15: u15,
    +                ///  wakeup enable bitmap
    +                RTC_WAKEUP_ENA: u17,
    +            }),
    +            ///  rtc configure register
    +            INT_ENA_RTC: mmio.Mmio(packed struct(u32) {
    +                ///  enable sleep wakeup interrupt
    +                SLP_WAKEUP_INT_ENA: u1,
    +                ///  enable sleep reject interrupt
    +                SLP_REJECT_INT_ENA: u1,
    +                reserved3: u1,
    +                ///  enable RTC WDT interrupt
    +                RTC_WDT_INT_ENA: u1,
    +                reserved9: u5,
    +                ///  enable brown out interrupt
    +                RTC_BROWN_OUT_INT_ENA: u1,
    +                ///  enable RTC main timer interrupt
    +                RTC_MAIN_TIMER_INT_ENA: u1,
    +                reserved15: u4,
    +                ///  enable super watch dog interrupt
    +                RTC_SWD_INT_ENA: u1,
    +                ///  enable xtal32k_dead interrupt
    +                RTC_XTAL32K_DEAD_INT_ENA: u1,
    +                reserved19: u2,
    +                ///  enbale gitch det interrupt
    +                RTC_GLITCH_DET_INT_ENA: u1,
    +                ///  enbale bbpll cal end interrupt
    +                RTC_BBPLL_CAL_INT_ENA: u1,
    +                padding: u11,
    +            }),
    +            ///  rtc configure register
    +            INT_RAW_RTC: mmio.Mmio(packed struct(u32) {
    +                ///  sleep wakeup interrupt raw
    +                SLP_WAKEUP_INT_RAW: u1,
    +                ///  sleep reject interrupt raw
    +                SLP_REJECT_INT_RAW: u1,
    +                reserved3: u1,
    +                ///  RTC WDT interrupt raw
    +                RTC_WDT_INT_RAW: u1,
    +                reserved9: u5,
    +                ///  brown out interrupt raw
    +                RTC_BROWN_OUT_INT_RAW: u1,
    +                ///  RTC main timer interrupt raw
    +                RTC_MAIN_TIMER_INT_RAW: u1,
    +                reserved15: u4,
    +                ///  super watch dog interrupt raw
    +                RTC_SWD_INT_RAW: u1,
    +                ///  xtal32k dead detection interrupt raw
    +                RTC_XTAL32K_DEAD_INT_RAW: u1,
    +                reserved19: u2,
    +                ///  glitch_det_interrupt_raw
    +                RTC_GLITCH_DET_INT_RAW: u1,
    +                ///  bbpll cal end interrupt state
    +                RTC_BBPLL_CAL_INT_RAW: u1,
    +                padding: u11,
    +            }),
    +            ///  rtc configure register
    +            INT_ST_RTC: mmio.Mmio(packed struct(u32) {
    +                ///  sleep wakeup interrupt state
    +                SLP_WAKEUP_INT_ST: u1,
    +                ///  sleep reject interrupt state
    +                SLP_REJECT_INT_ST: u1,
    +                reserved3: u1,
    +                ///  RTC WDT interrupt state
    +                RTC_WDT_INT_ST: u1,
    +                reserved9: u5,
    +                ///  brown out interrupt state
    +                RTC_BROWN_OUT_INT_ST: u1,
    +                ///  RTC main timer interrupt state
    +                RTC_MAIN_TIMER_INT_ST: u1,
    +                reserved15: u4,
    +                ///  super watch dog interrupt state
    +                RTC_SWD_INT_ST: u1,
    +                ///  xtal32k dead detection interrupt state
    +                RTC_XTAL32K_DEAD_INT_ST: u1,
    +                reserved19: u2,
    +                ///  glitch_det_interrupt state
    +                RTC_GLITCH_DET_INT_ST: u1,
    +                ///  bbpll cal end interrupt state
    +                RTC_BBPLL_CAL_INT_ST: u1,
    +                padding: u11,
    +            }),
    +            ///  rtc configure register
    +            INT_CLR_RTC: mmio.Mmio(packed struct(u32) {
    +                ///  Clear sleep wakeup interrupt state
    +                SLP_WAKEUP_INT_CLR: u1,
    +                ///  Clear sleep reject interrupt state
    +                SLP_REJECT_INT_CLR: u1,
    +                reserved3: u1,
    +                ///  Clear RTC WDT interrupt state
    +                RTC_WDT_INT_CLR: u1,
    +                reserved9: u5,
    +                ///  Clear brown out interrupt state
    +                RTC_BROWN_OUT_INT_CLR: u1,
    +                ///  Clear RTC main timer interrupt state
    +                RTC_MAIN_TIMER_INT_CLR: u1,
    +                reserved15: u4,
    +                ///  Clear super watch dog interrupt state
    +                RTC_SWD_INT_CLR: u1,
    +                ///  Clear RTC WDT interrupt state
    +                RTC_XTAL32K_DEAD_INT_CLR: u1,
    +                reserved19: u2,
    +                ///  Clear glitch det interrupt state
    +                RTC_GLITCH_DET_INT_CLR: u1,
    +                ///  clear bbpll cal end interrupt state
    +                RTC_BBPLL_CAL_INT_CLR: u1,
    +                padding: u11,
    +            }),
    +            ///  rtc configure register
    +            STORE0: mmio.Mmio(packed struct(u32) {
    +                ///  reserved register
    +                RTC_SCRATCH0: u32,
    +            }),
    +            ///  rtc configure register
    +            STORE1: mmio.Mmio(packed struct(u32) {
    +                ///  reserved register
    +                RTC_SCRATCH1: u32,
    +            }),
    +            ///  rtc configure register
    +            STORE2: mmio.Mmio(packed struct(u32) {
    +                ///  reserved register
    +                RTC_SCRATCH2: u32,
    +            }),
    +            ///  rtc configure register
    +            STORE3: mmio.Mmio(packed struct(u32) {
    +                ///  reserved register
    +                RTC_SCRATCH3: u32,
    +            }),
    +            ///  rtc configure register
    +            EXT_XTL_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  xtal 32k watch dog enable
    +                XTAL32K_WDT_EN: u1,
    +                ///  xtal 32k watch dog clock force on
    +                XTAL32K_WDT_CLK_FO: u1,
    +                ///  xtal 32k watch dog sw reset
    +                XTAL32K_WDT_RESET: u1,
    +                ///  xtal 32k external xtal clock force on
    +                XTAL32K_EXT_CLK_FO: u1,
    +                ///  xtal 32k switch to back up clock when xtal is dead
    +                XTAL32K_AUTO_BACKUP: u1,
    +                ///  xtal 32k restart xtal when xtal is dead
    +                XTAL32K_AUTO_RESTART: u1,
    +                ///  xtal 32k switch back xtal when xtal is restarted
    +                XTAL32K_AUTO_RETURN: u1,
    +                ///  Xtal 32k xpd control by sw or fsm
    +                XTAL32K_XPD_FORCE: u1,
    +                ///  apply an internal clock to help xtal 32k to start
    +                ENCKINIT_XTAL_32K: u1,
    +                ///  0: single-end buffer 1: differential buffer
    +                DBUF_XTAL_32K: u1,
    +                ///  xtal_32k gm control
    +                DGM_XTAL_32K: u3,
    +                ///  DRES_XTAL_32K
    +                DRES_XTAL_32K: u3,
    +                ///  XPD_XTAL_32K
    +                XPD_XTAL_32K: u1,
    +                ///  DAC_XTAL_32K
    +                DAC_XTAL_32K: u3,
    +                ///  state of 32k_wdt
    +                RTC_WDT_STATE: u3,
    +                ///  XTAL_32K sel. 0: external XTAL_32K
    +                RTC_XTAL32K_GPIO_SEL: u1,
    +                reserved30: u6,
    +                ///  0: power down XTAL at high level
    +                XTL_EXT_CTR_LV: u1,
    +                ///  enable gpio configure xtal power on
    +                XTL_EXT_CTR_EN: u1,
    +            }),
    +            ///  rtc configure register
    +            EXT_WAKEUP_CONF: mmio.Mmio(packed struct(u32) {
    +                reserved31: u31,
    +                ///  enable filter for gpio wakeup event
    +                GPIO_WAKEUP_FILTER: u1,
    +            }),
    +            ///  rtc configure register
    +            SLP_REJECT_CONF: mmio.Mmio(packed struct(u32) {
    +                reserved12: u12,
    +                ///  sleep reject enable
    +                RTC_SLEEP_REJECT_ENA: u18,
    +                ///  enable reject for light sleep
    +                LIGHT_SLP_REJECT_EN: u1,
    +                ///  enable reject for deep sleep
    +                DEEP_SLP_REJECT_EN: u1,
    +            }),
    +            ///  rtc configure register
    +            CPU_PERIOD_CONF: mmio.Mmio(packed struct(u32) {
    +                reserved29: u29,
    +                ///  CPU sel option
    +                RTC_CPUSEL_CONF: u1,
    +                ///  CPU clk sel option
    +                RTC_CPUPERIOD_SEL: u2,
    +            }),
    +            ///  rtc configure register
    +            CLK_CONF: mmio.Mmio(packed struct(u32) {
    +                reserved1: u1,
    +                ///  efuse_clk_force_gating
    +                EFUSE_CLK_FORCE_GATING: u1,
    +                ///  efuse_clk_force_nogating
    +                EFUSE_CLK_FORCE_NOGATING: u1,
    +                ///  used to sync reg_ck8m_div_sel bus. Clear vld before set reg_ck8m_div_sel
    +                CK8M_DIV_SEL_VLD: u1,
    +                ///  CK8M_D256_OUT divider. 00: div128
    +                CK8M_DIV: u2,
    +                ///  disable CK8M and CK8M_D256_OUT
    +                ENB_CK8M: u1,
    +                ///  1: CK8M_D256_OUT is actually CK8M
    +                ENB_CK8M_DIV: u1,
    +                ///  enable CK_XTAL_32K for digital core (no relationship with RTC core)
    +                DIG_XTAL32K_EN: u1,
    +                ///  enable CK8M_D256_OUT for digital core (no relationship with RTC core)
    +                DIG_CLK8M_D256_EN: u1,
    +                ///  enable CK8M for digital core (no relationship with RTC core)
    +                DIG_CLK8M_EN: u1,
    +                reserved12: u1,
    +                ///  divider = reg_ck8m_div_sel + 1
    +                CK8M_DIV_SEL: u3,
    +                ///  XTAL force no gating during sleep
    +                XTAL_FORCE_NOGATING: u1,
    +                ///  CK8M force no gating during sleep
    +                CK8M_FORCE_NOGATING: u1,
    +                ///  CK8M_DFREQ
    +                CK8M_DFREQ: u8,
    +                ///  CK8M force power down
    +                CK8M_FORCE_PD: u1,
    +                ///  CK8M force power up
    +                CK8M_FORCE_PU: u1,
    +                ///  force enable xtal clk gating
    +                XTAL_GLOBAL_FORCE_GATING: u1,
    +                ///  force bypass xtal clk gating
    +                XTAL_GLOBAL_FORCE_NOGATING: u1,
    +                ///  fast_clk_rtc sel. 0: XTAL div 4
    +                FAST_CLK_RTC_SEL: u1,
    +                ///  slelect rtc slow clk
    +                ANA_CLK_RTC_SEL: u2,
    +            }),
    +            ///  rtc configure register
    +            SLOW_CLK_CONF: mmio.Mmio(packed struct(u32) {
    +                reserved22: u22,
    +                ///  used to sync div bus. clear vld before set reg_rtc_ana_clk_div
    +                RTC_ANA_CLK_DIV_VLD: u1,
    +                ///  the clk divider num of RTC_CLK
    +                RTC_ANA_CLK_DIV: u8,
    +                ///  flag rtc_slow_clk_next_edge
    +                RTC_SLOW_CLK_NEXT_EDGE: u1,
    +            }),
    +            ///  rtc configure register
    +            SDIO_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  timer count to apply reg_sdio_dcap after sdio power on
    +                SDIO_TIMER_TARGET: u8,
    +                reserved9: u1,
    +                ///  Tieh = 1 mode drive ability. Initially set to 0 to limit charge current
    +                SDIO_DTHDRV: u2,
    +                ///  ability to prevent LDO from overshoot
    +                SDIO_DCAP: u2,
    +                ///  add resistor from ldo output to ground. 0: no res
    +                SDIO_INITI: u2,
    +                ///  0 to set init[1:0]=0
    +                SDIO_EN_INITI: u1,
    +                ///  tune current limit threshold when tieh = 0. About 800mA/(8+d)
    +                SDIO_DCURLIM: u3,
    +                ///  select current limit mode
    +                SDIO_MODECURLIM: u1,
    +                ///  enable current limit
    +                SDIO_ENCURLIM: u1,
    +                ///  power down SDIO_REG in sleep. Only active when reg_sdio_force = 0
    +                SDIO_REG_PD_EN: u1,
    +                ///  1: use SW option to control SDIO_REG
    +                SDIO_FORCE: u1,
    +                ///  SW option for SDIO_TIEH. Only active when reg_sdio_force = 1
    +                SDIO_TIEH: u1,
    +                ///  read only register for REG1P8_READY
    +                _1P8_READY: u1,
    +                ///  SW option for DREFL_SDIO. Only active when reg_sdio_force = 1
    +                DREFL_SDIO: u2,
    +                ///  SW option for DREFM_SDIO. Only active when reg_sdio_force = 1
    +                DREFM_SDIO: u2,
    +                ///  SW option for DREFH_SDIO. Only active when reg_sdio_force = 1
    +                DREFH_SDIO: u2,
    +                XPD_SDIO: u1,
    +            }),
    +            ///  rtc configure register
    +            BIAS_CONF: mmio.Mmio(packed struct(u32) {
    +                DG_VDD_DRV_B_SLP: u8,
    +                DG_VDD_DRV_B_SLP_EN: u1,
    +                reserved10: u1,
    +                ///  bias buf when rtc in normal work state
    +                BIAS_BUF_IDLE: u1,
    +                ///  bias buf when rtc in wakeup state
    +                BIAS_BUF_WAKE: u1,
    +                ///  bias buf when rtc in sleep state
    +                BIAS_BUF_DEEP_SLP: u1,
    +                ///  bias buf when rtc in monitor state
    +                BIAS_BUF_MONITOR: u1,
    +                ///  xpd cur when rtc in sleep_state
    +                PD_CUR_DEEP_SLP: u1,
    +                ///  xpd cur when rtc in monitor state
    +                PD_CUR_MONITOR: u1,
    +                ///  bias_sleep when rtc in sleep_state
    +                BIAS_SLEEP_DEEP_SLP: u1,
    +                ///  bias_sleep when rtc in monitor state
    +                BIAS_SLEEP_MONITOR: u1,
    +                ///  DBG_ATTEN when rtc in sleep state
    +                DBG_ATTEN_DEEP_SLP: u4,
    +                ///  DBG_ATTEN when rtc in monitor state
    +                DBG_ATTEN_MONITOR: u4,
    +                padding: u6,
    +            }),
    +            ///  rtc configure register
    +            RTC_CNTL: mmio.Mmio(packed struct(u32) {
    +                reserved7: u7,
    +                ///  software enable digital regulator cali
    +                DIG_REG_CAL_EN: u1,
    +                reserved14: u6,
    +                ///  SCK_DCAP
    +                SCK_DCAP: u8,
    +                reserved28: u6,
    +                ///  RTC_DBOOST force power down
    +                DBOOST_FORCE_PD: u1,
    +                ///  RTC_DBOOST force power up
    +                DBOOST_FORCE_PU: u1,
    +                ///  RTC_REG force power down (for RTC_REG power down means decrease the voltage to 0.8v or lower )
    +                REGULATOR_FORCE_PD: u1,
    +                ///  RTC_REG force power up
    +                REGULATOR_FORCE_PU: u1,
    +            }),
    +            ///  rtc configure register
    +            PWC: mmio.Mmio(packed struct(u32) {
    +                reserved21: u21,
    +                ///  rtc pad force hold
    +                RTC_PAD_FORCE_HOLD: u1,
    +                padding: u10,
    +            }),
    +            ///  rtc configure register
    +            DIG_PWC: mmio.Mmio(packed struct(u32) {
    +                ///  vdd_spi drv's software value
    +                VDD_SPI_PWR_DRV: u2,
    +                ///  vdd_spi drv use software value
    +                VDD_SPI_PWR_FORCE: u1,
    +                ///  memories in digital core force PD in sleep
    +                LSLP_MEM_FORCE_PD: u1,
    +                ///  memories in digital core force PU in sleep
    +                LSLP_MEM_FORCE_PU: u1,
    +                reserved11: u6,
    +                ///  bt force power down
    +                BT_FORCE_PD: u1,
    +                ///  bt force power up
    +                BT_FORCE_PU: u1,
    +                ///  digital peri force power down
    +                DG_PERI_FORCE_PD: u1,
    +                ///  digital peri force power up
    +                DG_PERI_FORCE_PU: u1,
    +                ///  fastmemory retention mode in sleep
    +                RTC_FASTMEM_FORCE_LPD: u1,
    +                ///  fastmemory donlt entry retention mode in sleep
    +                RTC_FASTMEM_FORCE_LPU: u1,
    +                ///  wifi force power down
    +                WIFI_FORCE_PD: u1,
    +                ///  wifi force power up
    +                WIFI_FORCE_PU: u1,
    +                ///  digital core force power down
    +                DG_WRAP_FORCE_PD: u1,
    +                ///  digital core force power up
    +                DG_WRAP_FORCE_PU: u1,
    +                ///  cpu core force power down
    +                CPU_TOP_FORCE_PD: u1,
    +                ///  cpu force power up
    +                CPU_TOP_FORCE_PU: u1,
    +                reserved27: u4,
    +                ///  enable power down bt in sleep
    +                BT_PD_EN: u1,
    +                ///  enable power down digital peri in sleep
    +                DG_PERI_PD_EN: u1,
    +                ///  enable power down cpu in sleep
    +                CPU_TOP_PD_EN: u1,
    +                ///  enable power down wifi in sleep
    +                WIFI_PD_EN: u1,
    +                ///  enable power down digital wrap in sleep
    +                DG_WRAP_PD_EN: u1,
    +            }),
    +            ///  rtc configure register
    +            DIG_ISO: mmio.Mmio(packed struct(u32) {
    +                reserved7: u7,
    +                ///  DIG_ISO force off
    +                FORCE_OFF: u1,
    +                ///  DIG_ISO force on
    +                FORCE_ON: u1,
    +                ///  read only register to indicate digital pad auto-hold status
    +                DG_PAD_AUTOHOLD: u1,
    +                ///  wtite only register to clear digital pad auto-hold
    +                CLR_DG_PAD_AUTOHOLD: u1,
    +                ///  digital pad enable auto-hold
    +                DG_PAD_AUTOHOLD_EN: u1,
    +                ///  digital pad force no ISO
    +                DG_PAD_FORCE_NOISO: u1,
    +                ///  digital pad force ISO
    +                DG_PAD_FORCE_ISO: u1,
    +                ///  digital pad force un-hold
    +                DG_PAD_FORCE_UNHOLD: u1,
    +                ///  digital pad force hold
    +                DG_PAD_FORCE_HOLD: u1,
    +                reserved22: u6,
    +                ///  bt force ISO
    +                BT_FORCE_ISO: u1,
    +                ///  bt force no ISO
    +                BT_FORCE_NOISO: u1,
    +                ///  Digital peri force ISO
    +                DG_PERI_FORCE_ISO: u1,
    +                ///  digital peri force no ISO
    +                DG_PERI_FORCE_NOISO: u1,
    +                ///  cpu force ISO
    +                CPU_TOP_FORCE_ISO: u1,
    +                ///  cpu force no ISO
    +                CPU_TOP_FORCE_NOISO: u1,
    +                ///  wifi force ISO
    +                WIFI_FORCE_ISO: u1,
    +                ///  wifi force no ISO
    +                WIFI_FORCE_NOISO: u1,
    +                ///  digital core force ISO
    +                DG_WRAP_FORCE_ISO: u1,
    +                ///  digital core force no ISO
    +                DG_WRAP_FORCE_NOISO: u1,
    +            }),
    +            ///  rtc configure register
    +            WDTCONFIG0: mmio.Mmio(packed struct(u32) {
    +                ///  chip reset siginal pulse width
    +                WDT_CHIP_RESET_WIDTH: u8,
    +                ///  wdt reset whole chip enable
    +                WDT_CHIP_RESET_EN: u1,
    +                ///  pause WDT in sleep
    +                WDT_PAUSE_IN_SLP: u1,
    +                ///  enable WDT reset APP CPU
    +                WDT_APPCPU_RESET_EN: u1,
    +                ///  enable WDT reset PRO CPU
    +                WDT_PROCPU_RESET_EN: u1,
    +                ///  enable WDT in flash boot
    +                WDT_FLASHBOOT_MOD_EN: u1,
    +                ///  system reset counter length
    +                WDT_SYS_RESET_LENGTH: u3,
    +                ///  CPU reset counter length
    +                WDT_CPU_RESET_LENGTH: u3,
    +                ///  1: interrupt stage en
    +                WDT_STG3: u3,
    +                ///  1: interrupt stage en
    +                WDT_STG2: u3,
    +                ///  1: interrupt stage en
    +                WDT_STG1: u3,
    +                ///  1: interrupt stage en
    +                WDT_STG0: u3,
    +                ///  enable rtc wdt
    +                WDT_EN: u1,
    +            }),
    +            ///  rtc configure register
    +            WDTCONFIG1: mmio.Mmio(packed struct(u32) {
    +                ///  the hold time of stage0
    +                WDT_STG0_HOLD: u32,
    +            }),
    +            ///  rtc configure register
    +            WDTCONFIG2: mmio.Mmio(packed struct(u32) {
    +                ///  the hold time of stage1
    +                WDT_STG1_HOLD: u32,
    +            }),
    +            ///  rtc configure register
    +            WDTCONFIG3: mmio.Mmio(packed struct(u32) {
    +                ///  the hold time of stage2
    +                WDT_STG2_HOLD: u32,
    +            }),
    +            ///  rtc configure register
    +            WDTCONFIG4: mmio.Mmio(packed struct(u32) {
    +                ///  the hold time of stage3
    +                WDT_STG3_HOLD: u32,
    +            }),
    +            ///  rtc configure register
    +            WDTFEED: mmio.Mmio(packed struct(u32) {
    +                reserved31: u31,
    +                ///  sw feed rtc wdt
    +                RTC_WDT_FEED: u1,
    +            }),
    +            ///  rtc configure register
    +            WDTWPROTECT: mmio.Mmio(packed struct(u32) {
    +                ///  the key of rtc wdt
    +                WDT_WKEY: u32,
    +            }),
    +            ///  rtc configure register
    +            SWD_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  swd reset flag
    +                SWD_RESET_FLAG: u1,
    +                ///  swd interrupt for feeding
    +                SWD_FEED_INT: u1,
    +                reserved17: u15,
    +                ///  Bypass swd rst
    +                SWD_BYPASS_RST: u1,
    +                ///  adjust signal width send to swd
    +                SWD_SIGNAL_WIDTH: u10,
    +                ///  reset swd reset flag
    +                SWD_RST_FLAG_CLR: u1,
    +                ///  Sw feed swd
    +                SWD_FEED: u1,
    +                ///  disabel SWD
    +                SWD_DISABLE: u1,
    +                ///  automatically feed swd when int comes
    +                SWD_AUTO_FEED_EN: u1,
    +            }),
    +            ///  rtc configure register
    +            SWD_WPROTECT: mmio.Mmio(packed struct(u32) {
    +                ///  the key of super wdt
    +                SWD_WKEY: u32,
    +            }),
    +            ///  rtc configure register
    +            SW_CPU_STALL: mmio.Mmio(packed struct(u32) {
    +                reserved20: u20,
    +                ///  {reg_sw_stall_appcpu_c1[5:0]
    +                SW_STALL_APPCPU_C1: u6,
    +                ///  stall cpu by software
    +                SW_STALL_PROCPU_C1: u6,
    +            }),
    +            ///  rtc configure register
    +            STORE4: mmio.Mmio(packed struct(u32) {
    +                ///  reserved register
    +                RTC_SCRATCH4: u32,
    +            }),
    +            ///  rtc configure register
    +            STORE5: mmio.Mmio(packed struct(u32) {
    +                ///  reserved register
    +                RTC_SCRATCH5: u32,
    +            }),
    +            ///  rtc configure register
    +            STORE6: mmio.Mmio(packed struct(u32) {
    +                ///  reserved register
    +                RTC_SCRATCH6: u32,
    +            }),
    +            ///  rtc configure register
    +            STORE7: mmio.Mmio(packed struct(u32) {
    +                ///  reserved register
    +                RTC_SCRATCH7: u32,
    +            }),
    +            ///  rtc configure register
    +            LOW_POWER_ST: mmio.Mmio(packed struct(u32) {
    +                ///  rom0 power down
    +                XPD_ROM0: u1,
    +                reserved2: u1,
    +                ///  External DCDC power down
    +                XPD_DIG_DCDC: u1,
    +                ///  rtc peripheral iso
    +                RTC_PERI_ISO: u1,
    +                ///  rtc peripheral power down
    +                XPD_RTC_PERI: u1,
    +                ///  wifi iso
    +                WIFI_ISO: u1,
    +                ///  wifi wrap power down
    +                XPD_WIFI: u1,
    +                ///  digital wrap iso
    +                DIG_ISO: u1,
    +                ///  digital wrap power down
    +                XPD_DIG: u1,
    +                ///  touch should start to work
    +                RTC_TOUCH_STATE_START: u1,
    +                ///  touch is about to working. Switch rtc main state
    +                RTC_TOUCH_STATE_SWITCH: u1,
    +                ///  touch is in sleep state
    +                RTC_TOUCH_STATE_SLP: u1,
    +                ///  touch is done
    +                RTC_TOUCH_STATE_DONE: u1,
    +                ///  ulp/cocpu should start to work
    +                RTC_COCPU_STATE_START: u1,
    +                ///  ulp/cocpu is about to working. Switch rtc main state
    +                RTC_COCPU_STATE_SWITCH: u1,
    +                ///  ulp/cocpu is in sleep state
    +                RTC_COCPU_STATE_SLP: u1,
    +                ///  ulp/cocpu is done
    +                RTC_COCPU_STATE_DONE: u1,
    +                ///  no use any more
    +                RTC_MAIN_STATE_XTAL_ISO: u1,
    +                ///  rtc main state machine is in states that pll should be running
    +                RTC_MAIN_STATE_PLL_ON: u1,
    +                ///  rtc is ready to receive wake up trigger from wake up source
    +                RTC_RDY_FOR_WAKEUP: u1,
    +                ///  rtc main state machine has been waited for some cycles
    +                RTC_MAIN_STATE_WAIT_END: u1,
    +                ///  rtc main state machine is in the states of wakeup process
    +                RTC_IN_WAKEUP_STATE: u1,
    +                ///  rtc main state machine is in the states of low power
    +                RTC_IN_LOW_POWER_STATE: u1,
    +                ///  rtc main state machine is in wait 8m state
    +                RTC_MAIN_STATE_IN_WAIT_8M: u1,
    +                ///  rtc main state machine is in wait pll state
    +                RTC_MAIN_STATE_IN_WAIT_PLL: u1,
    +                ///  rtc main state machine is in wait xtal state
    +                RTC_MAIN_STATE_IN_WAIT_XTL: u1,
    +                ///  rtc main state machine is in sleep state
    +                RTC_MAIN_STATE_IN_SLP: u1,
    +                ///  rtc main state machine is in idle state
    +                RTC_MAIN_STATE_IN_IDLE: u1,
    +                ///  rtc main state machine status
    +                RTC_MAIN_STATE: u4,
    +            }),
    +            ///  rtc configure register
    +            DIAG0: mmio.Mmio(packed struct(u32) {
    +                RTC_LOW_POWER_DIAG1: u32,
    +            }),
    +            ///  rtc configure register
    +            PAD_HOLD: mmio.Mmio(packed struct(u32) {
    +                ///  the hold configure of rtc gpio0
    +                RTC_GPIO_PIN0_HOLD: u1,
    +                ///  the hold configure of rtc gpio1
    +                RTC_GPIO_PIN1_HOLD: u1,
    +                ///  the hold configure of rtc gpio2
    +                RTC_GPIO_PIN2_HOLD: u1,
    +                ///  the hold configure of rtc gpio3
    +                RTC_GPIO_PIN3_HOLD: u1,
    +                ///  the hold configure of rtc gpio4
    +                RTC_GPIO_PIN4_HOLD: u1,
    +                ///  the hold configure of rtc gpio5
    +                RTC_GPIO_PIN5_HOLD: u1,
    +                padding: u26,
    +            }),
    +            ///  rtc configure register
    +            DIG_PAD_HOLD: mmio.Mmio(packed struct(u32) {
    +                ///  the configure of digital pad
    +                DIG_PAD_HOLD: u32,
    +            }),
    +            ///  rtc configure register
    +            BROWN_OUT: mmio.Mmio(packed struct(u32) {
    +                reserved4: u4,
    +                ///  brown out interrupt wait cycles
    +                INT_WAIT: u10,
    +                ///  enable close flash when brown out happens
    +                CLOSE_FLASH_ENA: u1,
    +                ///  enable power down RF when brown out happens
    +                PD_RF_ENA: u1,
    +                ///  brown out reset wait cycles
    +                RST_WAIT: u10,
    +                ///  enable brown out reset
    +                RST_ENA: u1,
    +                ///  1: 4-pos reset
    +                RST_SEL: u1,
    +                ///  brown_out origin reset enable
    +                ANA_RST_EN: u1,
    +                ///  clear brown out counter
    +                CNT_CLR: u1,
    +                ///  enable brown out
    +                ENA: u1,
    +                ///  the flag of brown det from analog
    +                DET: u1,
    +            }),
    +            ///  rtc configure register
    +            TIME_LOW1: mmio.Mmio(packed struct(u32) {
    +                ///  RTC timer low 32 bits
    +                RTC_TIMER_VALUE1_LOW: u32,
    +            }),
    +            ///  rtc configure register
    +            TIME_HIGH1: mmio.Mmio(packed struct(u32) {
    +                ///  RTC timer high 16 bits
    +                RTC_TIMER_VALUE1_HIGH: u16,
    +                padding: u16,
    +            }),
    +            ///  rtc configure register
    +            XTAL32K_CLK_FACTOR: mmio.Mmio(packed struct(u32) {
    +                ///  xtal 32k watch dog backup clock factor
    +                XTAL32K_CLK_FACTOR: u32,
    +            }),
    +            ///  rtc configure register
    +            XTAL32K_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  cycles to wait to return noral xtal 32k
    +                XTAL32K_RETURN_WAIT: u4,
    +                ///  cycles to wait to repower on xtal 32k
    +                XTAL32K_RESTART_WAIT: u16,
    +                ///  If no clock detected for this amount of time
    +                XTAL32K_WDT_TIMEOUT: u8,
    +                ///  if restarted xtal32k period is smaller than this
    +                XTAL32K_STABLE_THRES: u4,
    +            }),
    +            ///  rtc configure register
    +            USB_CONF: mmio.Mmio(packed struct(u32) {
    +                reserved18: u18,
    +                ///  disable io_mux reset
    +                IO_MUX_RESET_DISABLE: u1,
    +                padding: u13,
    +            }),
    +            ///  RTC_CNTL_RTC_SLP_REJECT_CAUSE_REG
    +            SLP_REJECT_CAUSE: mmio.Mmio(packed struct(u32) {
    +                ///  sleep reject cause
    +                REJECT_CAUSE: u18,
    +                padding: u14,
    +            }),
    +            ///  rtc configure register
    +            OPTION1: mmio.Mmio(packed struct(u32) {
    +                ///  force chip entry download mode
    +                FORCE_DOWNLOAD_BOOT: u1,
    +                padding: u31,
    +            }),
    +            ///  RTC_CNTL_RTC_SLP_WAKEUP_CAUSE_REG
    +            SLP_WAKEUP_CAUSE: mmio.Mmio(packed struct(u32) {
    +                ///  sleep wakeup cause
    +                WAKEUP_CAUSE: u17,
    +                padding: u15,
    +            }),
    +            ///  rtc configure register
    +            ULP_CP_TIMER_1: mmio.Mmio(packed struct(u32) {
    +                reserved8: u8,
    +                ///  sleep cycles for ULP-coprocessor timer
    +                ULP_CP_TIMER_SLP_CYCLE: u24,
    +            }),
    +            ///  rtc configure register
    +            INT_ENA_RTC_W1TS: mmio.Mmio(packed struct(u32) {
    +                ///  enable sleep wakeup interrupt
    +                SLP_WAKEUP_INT_ENA_W1TS: u1,
    +                ///  enable sleep reject interrupt
    +                SLP_REJECT_INT_ENA_W1TS: u1,
    +                reserved3: u1,
    +                ///  enable RTC WDT interrupt
    +                RTC_WDT_INT_ENA_W1TS: u1,
    +                reserved9: u5,
    +                ///  enable brown out interrupt
    +                RTC_BROWN_OUT_INT_ENA_W1TS: u1,
    +                ///  enable RTC main timer interrupt
    +                RTC_MAIN_TIMER_INT_ENA_W1TS: u1,
    +                reserved15: u4,
    +                ///  enable super watch dog interrupt
    +                RTC_SWD_INT_ENA_W1TS: u1,
    +                ///  enable xtal32k_dead interrupt
    +                RTC_XTAL32K_DEAD_INT_ENA_W1TS: u1,
    +                reserved19: u2,
    +                ///  enbale gitch det interrupt
    +                RTC_GLITCH_DET_INT_ENA_W1TS: u1,
    +                ///  enbale bbpll cal interrupt
    +                RTC_BBPLL_CAL_INT_ENA_W1TS: u1,
    +                padding: u11,
    +            }),
    +            ///  rtc configure register
    +            INT_ENA_RTC_W1TC: mmio.Mmio(packed struct(u32) {
    +                ///  clear sleep wakeup interrupt enable
    +                SLP_WAKEUP_INT_ENA_W1TC: u1,
    +                ///  clear sleep reject interrupt enable
    +                SLP_REJECT_INT_ENA_W1TC: u1,
    +                reserved3: u1,
    +                ///  clear RTC WDT interrupt enable
    +                RTC_WDT_INT_ENA_W1TC: u1,
    +                reserved9: u5,
    +                ///  clear brown out interrupt enable
    +                RTC_BROWN_OUT_INT_ENA_W1TC: u1,
    +                ///  Clear RTC main timer interrupt enable
    +                RTC_MAIN_TIMER_INT_ENA_W1TC: u1,
    +                reserved15: u4,
    +                ///  clear super watch dog interrupt enable
    +                RTC_SWD_INT_ENA_W1TC: u1,
    +                ///  clear xtal32k_dead interrupt enable
    +                RTC_XTAL32K_DEAD_INT_ENA_W1TC: u1,
    +                reserved19: u2,
    +                ///  clear gitch det interrupt enable
    +                RTC_GLITCH_DET_INT_ENA_W1TC: u1,
    +                ///  clear bbpll cal interrupt enable
    +                RTC_BBPLL_CAL_INT_ENA_W1TC: u1,
    +                padding: u11,
    +            }),
    +            ///  rtc configure register
    +            RETENTION_CTRL: mmio.Mmio(packed struct(u32) {
    +                reserved18: u18,
    +                ///  Retention clk sel
    +                RETENTION_CLK_SEL: u1,
    +                ///  Retention done wait time
    +                RETENTION_DONE_WAIT: u3,
    +                ///  Retention clkoff wait time
    +                RETENTION_CLKOFF_WAIT: u4,
    +                ///  enable cpu retention when light sleep
    +                RETENTION_EN: u1,
    +                ///  wait cycles for rention operation
    +                RETENTION_WAIT: u5,
    +            }),
    +            ///  rtc configure register
    +            FIB_SEL: mmio.Mmio(packed struct(u32) {
    +                ///  select use analog fib signal
    +                RTC_FIB_SEL: u3,
    +                padding: u29,
    +            }),
    +            ///  rtc configure register
    +            GPIO_WAKEUP: mmio.Mmio(packed struct(u32) {
    +                ///  rtc gpio wakeup flag
    +                RTC_GPIO_WAKEUP_STATUS: u6,
    +                ///  clear rtc gpio wakeup flag
    +                RTC_GPIO_WAKEUP_STATUS_CLR: u1,
    +                ///  enable rtc io clk gate
    +                RTC_GPIO_PIN_CLK_GATE: u1,
    +                ///  configure gpio wakeup type
    +                RTC_GPIO_PIN5_INT_TYPE: u3,
    +                ///  configure gpio wakeup type
    +                RTC_GPIO_PIN4_INT_TYPE: u3,
    +                ///  configure gpio wakeup type
    +                RTC_GPIO_PIN3_INT_TYPE: u3,
    +                ///  configure gpio wakeup type
    +                RTC_GPIO_PIN2_INT_TYPE: u3,
    +                ///  configure gpio wakeup type
    +                RTC_GPIO_PIN1_INT_TYPE: u3,
    +                ///  configure gpio wakeup type
    +                RTC_GPIO_PIN0_INT_TYPE: u3,
    +                ///  enable wakeup from rtc gpio5
    +                RTC_GPIO_PIN5_WAKEUP_ENABLE: u1,
    +                ///  enable wakeup from rtc gpio4
    +                RTC_GPIO_PIN4_WAKEUP_ENABLE: u1,
    +                ///  enable wakeup from rtc gpio3
    +                RTC_GPIO_PIN3_WAKEUP_ENABLE: u1,
    +                ///  enable wakeup from rtc gpio2
    +                RTC_GPIO_PIN2_WAKEUP_ENABLE: u1,
    +                ///  enable wakeup from rtc gpio1
    +                RTC_GPIO_PIN1_WAKEUP_ENABLE: u1,
    +                ///  enable wakeup from rtc gpio0
    +                RTC_GPIO_PIN0_WAKEUP_ENABLE: u1,
    +            }),
    +            ///  rtc configure register
    +            DBG_SEL: mmio.Mmio(packed struct(u32) {
    +                reserved1: u1,
    +                ///  use for debug
    +                RTC_DEBUG_12M_NO_GATING: u1,
    +                ///  use for debug
    +                RTC_DEBUG_BIT_SEL: u5,
    +                ///  use for debug
    +                RTC_DEBUG_SEL0: u5,
    +                ///  use for debug
    +                RTC_DEBUG_SEL1: u5,
    +                ///  use for debug
    +                RTC_DEBUG_SEL2: u5,
    +                ///  use for debug
    +                RTC_DEBUG_SEL3: u5,
    +                ///  use for debug
    +                RTC_DEBUG_SEL4: u5,
    +            }),
    +            ///  rtc configure register
    +            DBG_MAP: mmio.Mmio(packed struct(u32) {
    +                reserved2: u2,
    +                ///  use for debug
    +                RTC_GPIO_PIN5_MUX_SEL: u1,
    +                ///  use for debug
    +                RTC_GPIO_PIN4_MUX_SEL: u1,
    +                ///  use for debug
    +                RTC_GPIO_PIN3_MUX_SEL: u1,
    +                ///  use for debug
    +                RTC_GPIO_PIN2_MUX_SEL: u1,
    +                ///  use for debug
    +                RTC_GPIO_PIN1_MUX_SEL: u1,
    +                ///  use for debug
    +                RTC_GPIO_PIN0_MUX_SEL: u1,
    +                ///  use for debug
    +                RTC_GPIO_PIN5_FUN_SEL: u4,
    +                ///  use for debug
    +                RTC_GPIO_PIN4_FUN_SEL: u4,
    +                ///  use for debug
    +                RTC_GPIO_PIN3_FUN_SEL: u4,
    +                ///  use for debug
    +                RTC_GPIO_PIN2_FUN_SEL: u4,
    +                ///  use for debug
    +                RTC_GPIO_PIN1_FUN_SEL: u4,
    +                ///  use for debug
    +                RTC_GPIO_PIN0_FUN_SEL: u4,
    +            }),
    +            ///  rtc configure register
    +            SENSOR_CTRL: mmio.Mmio(packed struct(u32) {
    +                reserved27: u27,
    +                ///  reg_sar2_pwdet_cct
    +                SAR2_PWDET_CCT: u3,
    +                ///  force power up SAR
    +                FORCE_XPD_SAR: u2,
    +            }),
    +            ///  rtc configure register
    +            DBG_SAR_SEL: mmio.Mmio(packed struct(u32) {
    +                reserved27: u27,
    +                ///  use for debug
    +                SAR_DEBUG_SEL: u5,
    +            }),
    +            ///  rtc configure register
    +            PG_CTRL: mmio.Mmio(packed struct(u32) {
    +                reserved26: u26,
    +                ///  power glitch desense
    +                POWER_GLITCH_DSENSE: u2,
    +                ///  force disable power glitch
    +                POWER_GLITCH_FORCE_PD: u1,
    +                ///  force enable power glitch
    +                POWER_GLITCH_FORCE_PU: u1,
    +                ///  use efuse value control power glitch enable
    +                POWER_GLITCH_EFUSE_SEL: u1,
    +                ///  enable power glitch
    +                POWER_GLITCH_EN: u1,
    +            }),
    +            reserved508: [212]u8,
    +            ///  rtc configure register
    +            DATE: mmio.Mmio(packed struct(u32) {
    +                ///  verision
    +                RTC_CNTL_DATE: u28,
    +                padding: u4,
    +            }),
    +        };
    +
    +        ///  Sensitive
    +        pub const SENSITIVE = extern struct {
    +            ///  SENSITIVE_ROM_TABLE_LOCK_REG
    +            ROM_TABLE_LOCK: mmio.Mmio(packed struct(u32) {
    +                ///  rom_table_lock
    +                ROM_TABLE_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_ROM_TABLE_REG
    +            ROM_TABLE: mmio.Mmio(packed struct(u32) {
    +                ///  rom_table
    +                ROM_TABLE: u32,
    +            }),
    +            ///  SENSITIVE_PRIVILEGE_MODE_SEL_LOCK_REG
    +            PRIVILEGE_MODE_SEL_LOCK: mmio.Mmio(packed struct(u32) {
    +                ///  privilege_mode_sel_lock
    +                PRIVILEGE_MODE_SEL_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_PRIVILEGE_MODE_SEL_REG
    +            PRIVILEGE_MODE_SEL: mmio.Mmio(packed struct(u32) {
    +                ///  privilege_mode_sel
    +                PRIVILEGE_MODE_SEL: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_APB_PERIPHERAL_ACCESS_0_REG
    +            APB_PERIPHERAL_ACCESS_0: mmio.Mmio(packed struct(u32) {
    +                ///  apb_peripheral_access_lock
    +                APB_PERIPHERAL_ACCESS_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_APB_PERIPHERAL_ACCESS_1_REG
    +            APB_PERIPHERAL_ACCESS_1: mmio.Mmio(packed struct(u32) {
    +                ///  apb_peripheral_access_split_burst
    +                APB_PERIPHERAL_ACCESS_SPLIT_BURST: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_INTERNAL_SRAM_USAGE_0_REG
    +            INTERNAL_SRAM_USAGE_0: mmio.Mmio(packed struct(u32) {
    +                ///  internal_sram_usage_lock
    +                INTERNAL_SRAM_USAGE_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_INTERNAL_SRAM_USAGE_1_REG
    +            INTERNAL_SRAM_USAGE_1: mmio.Mmio(packed struct(u32) {
    +                ///  internal_sram_usage_cpu_cache
    +                INTERNAL_SRAM_USAGE_CPU_CACHE: u1,
    +                ///  internal_sram_usage_cpu_sram
    +                INTERNAL_SRAM_USAGE_CPU_SRAM: u3,
    +                padding: u28,
    +            }),
    +            ///  SENSITIVE_INTERNAL_SRAM_USAGE_3_REG
    +            INTERNAL_SRAM_USAGE_3: mmio.Mmio(packed struct(u32) {
    +                ///  internal_sram_usage_mac_dump_sram
    +                INTERNAL_SRAM_USAGE_MAC_DUMP_SRAM: u3,
    +                ///  internal_sram_alloc_mac_dump
    +                INTERNAL_SRAM_ALLOC_MAC_DUMP: u1,
    +                padding: u28,
    +            }),
    +            ///  SENSITIVE_INTERNAL_SRAM_USAGE_4_REG
    +            INTERNAL_SRAM_USAGE_4: mmio.Mmio(packed struct(u32) {
    +                ///  internal_sram_usage_log_sram
    +                INTERNAL_SRAM_USAGE_LOG_SRAM: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_CACHE_TAG_ACCESS_0_REG
    +            CACHE_TAG_ACCESS_0: mmio.Mmio(packed struct(u32) {
    +                ///  cache_tag_access_lock
    +                CACHE_TAG_ACCESS_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_CACHE_TAG_ACCESS_1_REG
    +            CACHE_TAG_ACCESS_1: mmio.Mmio(packed struct(u32) {
    +                ///  pro_i_tag_rd_acs
    +                PRO_I_TAG_RD_ACS: u1,
    +                ///  pro_i_tag_wr_acs
    +                PRO_I_TAG_WR_ACS: u1,
    +                ///  pro_d_tag_rd_acs
    +                PRO_D_TAG_RD_ACS: u1,
    +                ///  pro_d_tag_wr_acs
    +                PRO_D_TAG_WR_ACS: u1,
    +                padding: u28,
    +            }),
    +            ///  SENSITIVE_CACHE_MMU_ACCESS_0_REG
    +            CACHE_MMU_ACCESS_0: mmio.Mmio(packed struct(u32) {
    +                ///  cache_mmu_access_lock
    +                CACHE_MMU_ACCESS_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_CACHE_MMU_ACCESS_1_REG
    +            CACHE_MMU_ACCESS_1: mmio.Mmio(packed struct(u32) {
    +                ///  pro_mmu_rd_acs
    +                PRO_MMU_RD_ACS: u1,
    +                ///  pro_mmu_wr_acs
    +                PRO_MMU_WR_ACS: u1,
    +                padding: u30,
    +            }),
    +            ///  SENSITIVE_DMA_APBPERI_SPI2_PMS_CONSTRAIN_0_REG
    +            DMA_APBPERI_SPI2_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    +                ///  dma_apbperi_spi2_pms_constrain_lock
    +                DMA_APBPERI_SPI2_PMS_CONSTRAIN_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_DMA_APBPERI_SPI2_PMS_CONSTRAIN_1_REG
    +            DMA_APBPERI_SPI2_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    +                ///  dma_apbperi_spi2_pms_constrain_sram_world_0_pms_0
    +                DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    +                ///  dma_apbperi_spi2_pms_constrain_sram_world_0_pms_1
    +                DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    +                ///  dma_apbperi_spi2_pms_constrain_sram_world_0_pms_2
    +                DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    +                ///  dma_apbperi_spi2_pms_constrain_sram_world_0_pms_3
    +                DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    +                reserved12: u4,
    +                ///  dma_apbperi_spi2_pms_constrain_sram_world_1_pms_0
    +                DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    +                ///  dma_apbperi_spi2_pms_constrain_sram_world_1_pms_1
    +                DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    +                ///  dma_apbperi_spi2_pms_constrain_sram_world_1_pms_2
    +                DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    +                ///  dma_apbperi_spi2_pms_constrain_sram_world_1_pms_3
    +                DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    +                padding: u12,
    +            }),
    +            ///  SENSITIVE_DMA_APBPERI_UCHI0_PMS_CONSTRAIN_0_REG
    +            DMA_APBPERI_UCHI0_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    +                ///  dma_apbperi_uchi0_pms_constrain_lock
    +                DMA_APBPERI_UCHI0_PMS_CONSTRAIN_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_DMA_APBPERI_UCHI0_PMS_CONSTRAIN_1_REG
    +            DMA_APBPERI_UCHI0_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    +                ///  dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_0
    +                DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    +                ///  dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_1
    +                DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    +                ///  dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_2
    +                DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    +                ///  dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_3
    +                DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    +                reserved12: u4,
    +                ///  dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_0
    +                DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    +                ///  dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_1
    +                DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    +                ///  dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_2
    +                DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    +                ///  dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_3
    +                DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    +                padding: u12,
    +            }),
    +            ///  SENSITIVE_DMA_APBPERI_I2S0_PMS_CONSTRAIN_0_REG
    +            DMA_APBPERI_I2S0_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    +                ///  dma_apbperi_i2s0_pms_constrain_lock
    +                DMA_APBPERI_I2S0_PMS_CONSTRAIN_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_DMA_APBPERI_I2S0_PMS_CONSTRAIN_1_REG
    +            DMA_APBPERI_I2S0_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    +                ///  dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_0
    +                DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    +                ///  dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_1
    +                DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    +                ///  dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_2
    +                DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    +                ///  dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_3
    +                DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    +                reserved12: u4,
    +                ///  dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_0
    +                DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    +                ///  dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_1
    +                DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    +                ///  dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_2
    +                DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    +                ///  dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_3
    +                DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    +                padding: u12,
    +            }),
    +            ///  SENSITIVE_DMA_APBPERI_MAC_PMS_CONSTRAIN_0_REG
    +            DMA_APBPERI_MAC_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    +                ///  dma_apbperi_mac_pms_constrain_lock
    +                DMA_APBPERI_MAC_PMS_CONSTRAIN_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_DMA_APBPERI_MAC_PMS_CONSTRAIN_1_REG
    +            DMA_APBPERI_MAC_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    +                ///  dma_apbperi_mac_pms_constrain_sram_world_0_pms_0
    +                DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    +                ///  dma_apbperi_mac_pms_constrain_sram_world_0_pms_1
    +                DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    +                ///  dma_apbperi_mac_pms_constrain_sram_world_0_pms_2
    +                DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    +                ///  dma_apbperi_mac_pms_constrain_sram_world_0_pms_3
    +                DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    +                reserved12: u4,
    +                ///  dma_apbperi_mac_pms_constrain_sram_world_1_pms_0
    +                DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    +                ///  dma_apbperi_mac_pms_constrain_sram_world_1_pms_1
    +                DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    +                ///  dma_apbperi_mac_pms_constrain_sram_world_1_pms_2
    +                DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    +                ///  dma_apbperi_mac_pms_constrain_sram_world_1_pms_3
    +                DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    +                padding: u12,
    +            }),
    +            ///  SENSITIVE_DMA_APBPERI_BACKUP_PMS_CONSTRAIN_0_REG
    +            DMA_APBPERI_BACKUP_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    +                ///  dma_apbperi_backup_pms_constrain_lock
    +                DMA_APBPERI_BACKUP_PMS_CONSTRAIN_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_DMA_APBPERI_BACKUP_PMS_CONSTRAIN_1_REG
    +            DMA_APBPERI_BACKUP_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    +                ///  dma_apbperi_backup_pms_constrain_sram_world_0_pms_0
    +                DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    +                ///  dma_apbperi_backup_pms_constrain_sram_world_0_pms_1
    +                DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    +                ///  dma_apbperi_backup_pms_constrain_sram_world_0_pms_2
    +                DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    +                ///  dma_apbperi_backup_pms_constrain_sram_world_0_pms_3
    +                DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    +                reserved12: u4,
    +                ///  dma_apbperi_backup_pms_constrain_sram_world_1_pms_0
    +                DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    +                ///  dma_apbperi_backup_pms_constrain_sram_world_1_pms_1
    +                DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    +                ///  dma_apbperi_backup_pms_constrain_sram_world_1_pms_2
    +                DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    +                ///  dma_apbperi_backup_pms_constrain_sram_world_1_pms_3
    +                DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    +                padding: u12,
    +            }),
    +            ///  SENSITIVE_DMA_APBPERI_LC_PMS_CONSTRAIN_0_REG
    +            DMA_APBPERI_LC_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    +                ///  dma_apbperi_lc_pms_constrain_lock
    +                DMA_APBPERI_LC_PMS_CONSTRAIN_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_DMA_APBPERI_LC_PMS_CONSTRAIN_1_REG
    +            DMA_APBPERI_LC_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    +                ///  dma_apbperi_lc_pms_constrain_sram_world_0_pms_0
    +                DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    +                ///  dma_apbperi_lc_pms_constrain_sram_world_0_pms_1
    +                DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    +                ///  dma_apbperi_lc_pms_constrain_sram_world_0_pms_2
    +                DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    +                ///  dma_apbperi_lc_pms_constrain_sram_world_0_pms_3
    +                DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    +                reserved12: u4,
    +                ///  dma_apbperi_lc_pms_constrain_sram_world_1_pms_0
    +                DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    +                ///  dma_apbperi_lc_pms_constrain_sram_world_1_pms_1
    +                DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    +                ///  dma_apbperi_lc_pms_constrain_sram_world_1_pms_2
    +                DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    +                ///  dma_apbperi_lc_pms_constrain_sram_world_1_pms_3
    +                DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    +                padding: u12,
    +            }),
    +            ///  SENSITIVE_DMA_APBPERI_AES_PMS_CONSTRAIN_0_REG
    +            DMA_APBPERI_AES_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    +                ///  dma_apbperi_aes_pms_constrain_lock
    +                DMA_APBPERI_AES_PMS_CONSTRAIN_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_DMA_APBPERI_AES_PMS_CONSTRAIN_1_REG
    +            DMA_APBPERI_AES_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    +                ///  dma_apbperi_aes_pms_constrain_sram_world_0_pms_0
    +                DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    +                ///  dma_apbperi_aes_pms_constrain_sram_world_0_pms_1
    +                DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    +                ///  dma_apbperi_aes_pms_constrain_sram_world_0_pms_2
    +                DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    +                ///  dma_apbperi_aes_pms_constrain_sram_world_0_pms_3
    +                DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    +                reserved12: u4,
    +                ///  dma_apbperi_aes_pms_constrain_sram_world_1_pms_0
    +                DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    +                ///  dma_apbperi_aes_pms_constrain_sram_world_1_pms_1
    +                DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    +                ///  dma_apbperi_aes_pms_constrain_sram_world_1_pms_2
    +                DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    +                ///  dma_apbperi_aes_pms_constrain_sram_world_1_pms_3
    +                DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    +                padding: u12,
    +            }),
    +            ///  SENSITIVE_DMA_APBPERI_SHA_PMS_CONSTRAIN_0_REG
    +            DMA_APBPERI_SHA_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    +                ///  dma_apbperi_sha_pms_constrain_lock
    +                DMA_APBPERI_SHA_PMS_CONSTRAIN_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_DMA_APBPERI_SHA_PMS_CONSTRAIN_1_REG
    +            DMA_APBPERI_SHA_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    +                ///  dma_apbperi_sha_pms_constrain_sram_world_0_pms_0
    +                DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    +                ///  dma_apbperi_sha_pms_constrain_sram_world_0_pms_1
    +                DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    +                ///  dma_apbperi_sha_pms_constrain_sram_world_0_pms_2
    +                DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    +                ///  dma_apbperi_sha_pms_constrain_sram_world_0_pms_3
    +                DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    +                reserved12: u4,
    +                ///  dma_apbperi_sha_pms_constrain_sram_world_1_pms_0
    +                DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    +                ///  dma_apbperi_sha_pms_constrain_sram_world_1_pms_1
    +                DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    +                ///  dma_apbperi_sha_pms_constrain_sram_world_1_pms_2
    +                DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    +                ///  dma_apbperi_sha_pms_constrain_sram_world_1_pms_3
    +                DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    +                padding: u12,
    +            }),
    +            ///  SENSITIVE_DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_0_REG
    +            DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    +                ///  dma_apbperi_adc_dac_pms_constrain_lock
    +                DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_1_REG
    +            DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    +                ///  dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_0
    +                DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    +                ///  dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_1
    +                DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    +                ///  dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_2
    +                DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    +                ///  dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_3
    +                DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    +                reserved12: u4,
    +                ///  dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_0
    +                DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    +                ///  dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_1
    +                DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    +                ///  dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_2
    +                DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    +                ///  dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_3
    +                DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    +                padding: u12,
    +            }),
    +            ///  SENSITIVE_DMA_APBPERI_PMS_MONITOR_0_REG
    +            DMA_APBPERI_PMS_MONITOR_0: mmio.Mmio(packed struct(u32) {
    +                ///  dma_apbperi_pms_monitor_lock
    +                DMA_APBPERI_PMS_MONITOR_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_DMA_APBPERI_PMS_MONITOR_1_REG
    +            DMA_APBPERI_PMS_MONITOR_1: mmio.Mmio(packed struct(u32) {
    +                ///  dma_apbperi_pms_monitor_violate_clr
    +                DMA_APBPERI_PMS_MONITOR_VIOLATE_CLR: u1,
    +                ///  dma_apbperi_pms_monitor_violate_en
    +                DMA_APBPERI_PMS_MONITOR_VIOLATE_EN: u1,
    +                padding: u30,
    +            }),
    +            ///  SENSITIVE_DMA_APBPERI_PMS_MONITOR_2_REG
    +            DMA_APBPERI_PMS_MONITOR_2: mmio.Mmio(packed struct(u32) {
    +                ///  dma_apbperi_pms_monitor_violate_intr
    +                DMA_APBPERI_PMS_MONITOR_VIOLATE_INTR: u1,
    +                ///  dma_apbperi_pms_monitor_violate_status_world
    +                DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_WORLD: u2,
    +                ///  dma_apbperi_pms_monitor_violate_status_addr
    +                DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_ADDR: u24,
    +                padding: u5,
    +            }),
    +            ///  SENSITIVE_DMA_APBPERI_PMS_MONITOR_3_REG
    +            DMA_APBPERI_PMS_MONITOR_3: mmio.Mmio(packed struct(u32) {
    +                ///  dma_apbperi_pms_monitor_violate_status_wr
    +                DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_WR: u1,
    +                ///  dma_apbperi_pms_monitor_violate_status_byteen
    +                DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_BYTEEN: u4,
    +                padding: u27,
    +            }),
    +            ///  SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_0_REG
    +            CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    +                ///  core_x_iram0_dram0_dma_split_line_constrain_lock
    +                CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_1_REG
    +            CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    +                ///  core_x_iram0_dram0_dma_sram_category_0
    +                CORE_X_IRAM0_DRAM0_DMA_SRAM_CATEGORY_0: u2,
    +                ///  core_x_iram0_dram0_dma_sram_category_1
    +                CORE_X_IRAM0_DRAM0_DMA_SRAM_CATEGORY_1: u2,
    +                ///  core_x_iram0_dram0_dma_sram_category_2
    +                CORE_X_IRAM0_DRAM0_DMA_SRAM_CATEGORY_2: u2,
    +                reserved14: u8,
    +                ///  core_x_iram0_dram0_dma_sram_splitaddr
    +                CORE_X_IRAM0_DRAM0_DMA_SRAM_SPLITADDR: u8,
    +                padding: u10,
    +            }),
    +            ///  SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_2_REG
    +            CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_2: mmio.Mmio(packed struct(u32) {
    +                ///  core_x_iram0_sram_line_0_category_0
    +                CORE_X_IRAM0_SRAM_LINE_0_CATEGORY_0: u2,
    +                ///  core_x_iram0_sram_line_0_category_1
    +                CORE_X_IRAM0_SRAM_LINE_0_CATEGORY_1: u2,
    +                ///  core_x_iram0_sram_line_0_category_2
    +                CORE_X_IRAM0_SRAM_LINE_0_CATEGORY_2: u2,
    +                reserved14: u8,
    +                ///  core_x_iram0_sram_line_0_splitaddr
    +                CORE_X_IRAM0_SRAM_LINE_0_SPLITADDR: u8,
    +                padding: u10,
    +            }),
    +            ///  SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_3_REG
    +            CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_3: mmio.Mmio(packed struct(u32) {
    +                ///  core_x_iram0_sram_line_1_category_0
    +                CORE_X_IRAM0_SRAM_LINE_1_CATEGORY_0: u2,
    +                ///  core_x_iram0_sram_line_1_category_1
    +                CORE_X_IRAM0_SRAM_LINE_1_CATEGORY_1: u2,
    +                ///  core_x_iram0_sram_line_1_category_2
    +                CORE_X_IRAM0_SRAM_LINE_1_CATEGORY_2: u2,
    +                reserved14: u8,
    +                ///  core_x_iram0_sram_line_1_splitaddr
    +                CORE_X_IRAM0_SRAM_LINE_1_SPLITADDR: u8,
    +                padding: u10,
    +            }),
    +            ///  SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_4_REG
    +            CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_4: mmio.Mmio(packed struct(u32) {
    +                ///  core_x_dram0_dma_sram_line_0_category_0
    +                CORE_X_DRAM0_DMA_SRAM_LINE_0_CATEGORY_0: u2,
    +                ///  core_x_dram0_dma_sram_line_0_category_1
    +                CORE_X_DRAM0_DMA_SRAM_LINE_0_CATEGORY_1: u2,
    +                ///  core_x_dram0_dma_sram_line_0_category_2
    +                CORE_X_DRAM0_DMA_SRAM_LINE_0_CATEGORY_2: u2,
    +                reserved14: u8,
    +                ///  core_x_dram0_dma_sram_line_0_splitaddr
    +                CORE_X_DRAM0_DMA_SRAM_LINE_0_SPLITADDR: u8,
    +                padding: u10,
    +            }),
    +            ///  SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_5_REG
    +            CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_5: mmio.Mmio(packed struct(u32) {
    +                ///  core_x_dram0_dma_sram_line_1_category_0
    +                CORE_X_DRAM0_DMA_SRAM_LINE_1_CATEGORY_0: u2,
    +                ///  core_x_dram0_dma_sram_line_1_category_1
    +                CORE_X_DRAM0_DMA_SRAM_LINE_1_CATEGORY_1: u2,
    +                ///  core_x_dram0_dma_sram_line_1_category_2
    +                CORE_X_DRAM0_DMA_SRAM_LINE_1_CATEGORY_2: u2,
    +                reserved14: u8,
    +                ///  core_x_dram0_dma_sram_line_1_splitaddr
    +                CORE_X_DRAM0_DMA_SRAM_LINE_1_SPLITADDR: u8,
    +                padding: u10,
    +            }),
    +            ///  SENSITIVE_CORE_X_IRAM0_PMS_CONSTRAIN_0_REG
    +            CORE_X_IRAM0_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    +                ///  core_x_iram0_pms_constrain_lock
    +                CORE_X_IRAM0_PMS_CONSTRAIN_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_CORE_X_IRAM0_PMS_CONSTRAIN_1_REG
    +            CORE_X_IRAM0_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    +                ///  core_x_iram0_pms_constrain_sram_world_1_pms_0
    +                CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u3,
    +                ///  core_x_iram0_pms_constrain_sram_world_1_pms_1
    +                CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u3,
    +                ///  core_x_iram0_pms_constrain_sram_world_1_pms_2
    +                CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u3,
    +                ///  core_x_iram0_pms_constrain_sram_world_1_pms_3
    +                CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u3,
    +                ///  core_x_iram0_pms_constrain_sram_world_1_cachedataarray_pms_0
    +                CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_CACHEDATAARRAY_PMS_0: u3,
    +                reserved18: u3,
    +                ///  core_x_iram0_pms_constrain_rom_world_1_pms
    +                CORE_X_IRAM0_PMS_CONSTRAIN_ROM_WORLD_1_PMS: u3,
    +                padding: u11,
    +            }),
    +            ///  SENSITIVE_CORE_X_IRAM0_PMS_CONSTRAIN_2_REG
    +            CORE_X_IRAM0_PMS_CONSTRAIN_2: mmio.Mmio(packed struct(u32) {
    +                ///  core_x_iram0_pms_constrain_sram_world_0_pms_0
    +                CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u3,
    +                ///  core_x_iram0_pms_constrain_sram_world_0_pms_1
    +                CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u3,
    +                ///  core_x_iram0_pms_constrain_sram_world_0_pms_2
    +                CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u3,
    +                ///  core_x_iram0_pms_constrain_sram_world_0_pms_3
    +                CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u3,
    +                ///  core_x_iram0_pms_constrain_sram_world_0_cachedataarray_pms_0
    +                CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_CACHEDATAARRAY_PMS_0: u3,
    +                reserved18: u3,
    +                ///  core_x_iram0_pms_constrain_rom_world_0_pms
    +                CORE_X_IRAM0_PMS_CONSTRAIN_ROM_WORLD_0_PMS: u3,
    +                padding: u11,
    +            }),
    +            ///  SENSITIVE_CORE_0_IRAM0_PMS_MONITOR_0_REG
    +            CORE_0_IRAM0_PMS_MONITOR_0: mmio.Mmio(packed struct(u32) {
    +                ///  core_0_iram0_pms_monitor_lock
    +                CORE_0_IRAM0_PMS_MONITOR_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_CORE_0_IRAM0_PMS_MONITOR_1_REG
    +            CORE_0_IRAM0_PMS_MONITOR_1: mmio.Mmio(packed struct(u32) {
    +                ///  core_0_iram0_pms_monitor_violate_clr
    +                CORE_0_IRAM0_PMS_MONITOR_VIOLATE_CLR: u1,
    +                ///  core_0_iram0_pms_monitor_violate_en
    +                CORE_0_IRAM0_PMS_MONITOR_VIOLATE_EN: u1,
    +                padding: u30,
    +            }),
    +            ///  SENSITIVE_CORE_0_IRAM0_PMS_MONITOR_2_REG
    +            CORE_0_IRAM0_PMS_MONITOR_2: mmio.Mmio(packed struct(u32) {
    +                ///  core_0_iram0_pms_monitor_violate_intr
    +                CORE_0_IRAM0_PMS_MONITOR_VIOLATE_INTR: u1,
    +                ///  core_0_iram0_pms_monitor_violate_status_wr
    +                CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_WR: u1,
    +                ///  core_0_iram0_pms_monitor_violate_status_loadstore
    +                CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_LOADSTORE: u1,
    +                ///  core_0_iram0_pms_monitor_violate_status_world
    +                CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_WORLD: u2,
    +                ///  core_0_iram0_pms_monitor_violate_status_addr
    +                CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_ADDR: u24,
    +                padding: u3,
    +            }),
    +            ///  SENSITIVE_CORE_X_DRAM0_PMS_CONSTRAIN_0_REG
    +            CORE_X_DRAM0_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    +                ///  core_x_dram0_pms_constrain_lock
    +                CORE_X_DRAM0_PMS_CONSTRAIN_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_CORE_X_DRAM0_PMS_CONSTRAIN_1_REG
    +            CORE_X_DRAM0_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    +                ///  core_x_dram0_pms_constrain_sram_world_0_pms_0
    +                CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    +                ///  core_x_dram0_pms_constrain_sram_world_0_pms_1
    +                CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    +                ///  core_x_dram0_pms_constrain_sram_world_0_pms_2
    +                CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    +                ///  core_x_dram0_pms_constrain_sram_world_0_pms_3
    +                CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    +                reserved12: u4,
    +                ///  core_x_dram0_pms_constrain_sram_world_1_pms_0
    +                CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    +                ///  core_x_dram0_pms_constrain_sram_world_1_pms_1
    +                CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    +                ///  core_x_dram0_pms_constrain_sram_world_1_pms_2
    +                CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    +                ///  core_x_dram0_pms_constrain_sram_world_1_pms_3
    +                CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    +                reserved24: u4,
    +                ///  core_x_dram0_pms_constrain_rom_world_0_pms
    +                CORE_X_DRAM0_PMS_CONSTRAIN_ROM_WORLD_0_PMS: u2,
    +                ///  core_x_dram0_pms_constrain_rom_world_1_pms
    +                CORE_X_DRAM0_PMS_CONSTRAIN_ROM_WORLD_1_PMS: u2,
    +                padding: u4,
    +            }),
    +            ///  SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_0_REG
    +            CORE_0_DRAM0_PMS_MONITOR_0: mmio.Mmio(packed struct(u32) {
    +                ///  core_0_dram0_pms_monitor_lock
    +                CORE_0_DRAM0_PMS_MONITOR_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_1_REG
    +            CORE_0_DRAM0_PMS_MONITOR_1: mmio.Mmio(packed struct(u32) {
    +                ///  core_0_dram0_pms_monitor_violate_clr
    +                CORE_0_DRAM0_PMS_MONITOR_VIOLATE_CLR: u1,
    +                ///  core_0_dram0_pms_monitor_violate_en
    +                CORE_0_DRAM0_PMS_MONITOR_VIOLATE_EN: u1,
    +                padding: u30,
    +            }),
    +            ///  SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_2_REG
    +            CORE_0_DRAM0_PMS_MONITOR_2: mmio.Mmio(packed struct(u32) {
    +                ///  core_0_dram0_pms_monitor_violate_intr
    +                CORE_0_DRAM0_PMS_MONITOR_VIOLATE_INTR: u1,
    +                ///  core_0_dram0_pms_monitor_violate_status_lock
    +                CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_LOCK: u1,
    +                ///  core_0_dram0_pms_monitor_violate_status_world
    +                CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_WORLD: u2,
    +                ///  core_0_dram0_pms_monitor_violate_status_addr
    +                CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_ADDR: u24,
    +                padding: u4,
    +            }),
    +            ///  SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_3_REG
    +            CORE_0_DRAM0_PMS_MONITOR_3: mmio.Mmio(packed struct(u32) {
    +                ///  core_0_dram0_pms_monitor_violate_status_wr
    +                CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_WR: u1,
    +                ///  core_0_dram0_pms_monitor_violate_status_byteen
    +                CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_BYTEEN: u4,
    +                padding: u27,
    +            }),
    +            ///  SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_0_REG
    +            CORE_0_PIF_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    +                ///  core_0_pif_pms_constrain_lock
    +                CORE_0_PIF_PMS_CONSTRAIN_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_1_REG
    +            CORE_0_PIF_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    +                ///  core_0_pif_pms_constrain_world_0_uart
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_UART: u2,
    +                ///  core_0_pif_pms_constrain_world_0_g0spi_1
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_G0SPI_1: u2,
    +                ///  core_0_pif_pms_constrain_world_0_g0spi_0
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_G0SPI_0: u2,
    +                ///  core_0_pif_pms_constrain_world_0_gpio
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_GPIO: u2,
    +                ///  core_0_pif_pms_constrain_world_0_fe2
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_FE2: u2,
    +                ///  core_0_pif_pms_constrain_world_0_fe
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_FE: u2,
    +                ///  core_0_pif_pms_constrain_world_0_timer
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_TIMER: u2,
    +                ///  core_0_pif_pms_constrain_world_0_rtc
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_RTC: u2,
    +                ///  core_0_pif_pms_constrain_world_0_io_mux
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_IO_MUX: u2,
    +                ///  core_0_pif_pms_constrain_world_0_wdg
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_WDG: u2,
    +                reserved24: u4,
    +                ///  core_0_pif_pms_constrain_world_0_misc
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_MISC: u2,
    +                ///  core_0_pif_pms_constrain_world_0_i2c
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_I2C: u2,
    +                reserved30: u2,
    +                ///  core_0_pif_pms_constrain_world_0_uart1
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_UART1: u2,
    +            }),
    +            ///  SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_2_REG
    +            CORE_0_PIF_PMS_CONSTRAIN_2: mmio.Mmio(packed struct(u32) {
    +                ///  core_0_pif_pms_constrain_world_0_bt
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_BT: u2,
    +                reserved4: u2,
    +                ///  core_0_pif_pms_constrain_world_0_i2c_ext0
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_I2C_EXT0: u2,
    +                ///  core_0_pif_pms_constrain_world_0_uhci0
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_UHCI0: u2,
    +                reserved10: u2,
    +                ///  core_0_pif_pms_constrain_world_0_rmt
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_RMT: u2,
    +                reserved16: u4,
    +                ///  core_0_pif_pms_constrain_world_0_ledc
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_LEDC: u2,
    +                reserved22: u4,
    +                ///  core_0_pif_pms_constrain_world_0_bb
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_BB: u2,
    +                reserved26: u2,
    +                ///  core_0_pif_pms_constrain_world_0_timergroup
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_TIMERGROUP: u2,
    +                ///  core_0_pif_pms_constrain_world_0_timergroup1
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_TIMERGROUP1: u2,
    +                ///  core_0_pif_pms_constrain_world_0_systimer
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SYSTIMER: u2,
    +            }),
    +            ///  SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_3_REG
    +            CORE_0_PIF_PMS_CONSTRAIN_3: mmio.Mmio(packed struct(u32) {
    +                ///  core_0_pif_pms_constrain_world_0_spi_2
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SPI_2: u2,
    +                reserved4: u2,
    +                ///  core_0_pif_pms_constrain_world_0_apb_ctrl
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_APB_CTRL: u2,
    +                reserved10: u4,
    +                ///  core_0_pif_pms_constrain_world_0_can
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CAN: u2,
    +                reserved14: u2,
    +                ///  core_0_pif_pms_constrain_world_0_i2s1
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_I2S1: u2,
    +                reserved22: u6,
    +                ///  core_0_pif_pms_constrain_world_0_rwbt
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_RWBT: u2,
    +                reserved26: u2,
    +                ///  core_0_pif_pms_constrain_world_0_wifimac
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_WIFIMAC: u2,
    +                ///  core_0_pif_pms_constrain_world_0_pwr
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_PWR: u2,
    +                padding: u2,
    +            }),
    +            ///  SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_4_REG
    +            CORE_0_PIF_PMS_CONSTRAIN_4: mmio.Mmio(packed struct(u32) {
    +                reserved2: u2,
    +                ///  core_0_pif_pms_constrain_world_0_usb_wrap
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_USB_WRAP: u2,
    +                ///  core_0_pif_pms_constrain_world_0_crypto_peri
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CRYPTO_PERI: u2,
    +                ///  core_0_pif_pms_constrain_world_0_crypto_dma
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CRYPTO_DMA: u2,
    +                ///  core_0_pif_pms_constrain_world_0_apb_adc
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_APB_ADC: u2,
    +                reserved12: u2,
    +                ///  core_0_pif_pms_constrain_world_0_bt_pwr
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_BT_PWR: u2,
    +                ///  core_0_pif_pms_constrain_world_0_usb_device
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_USB_DEVICE: u2,
    +                ///  core_0_pif_pms_constrain_world_0_system
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SYSTEM: u2,
    +                ///  core_0_pif_pms_constrain_world_0_sensitive
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SENSITIVE: u2,
    +                ///  core_0_pif_pms_constrain_world_0_interrupt
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_INTERRUPT: u2,
    +                ///  core_0_pif_pms_constrain_world_0_dma_copy
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_DMA_COPY: u2,
    +                ///  core_0_pif_pms_constrain_world_0_cache_config
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CACHE_CONFIG: u2,
    +                ///  core_0_pif_pms_constrain_world_0_ad
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_AD: u2,
    +                ///  core_0_pif_pms_constrain_world_0_dio
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_DIO: u2,
    +                ///  core_0_pif_pms_constrain_world_0_world_controller
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_WORLD_CONTROLLER: u2,
    +            }),
    +            ///  SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_5_REG
    +            CORE_0_PIF_PMS_CONSTRAIN_5: mmio.Mmio(packed struct(u32) {
    +                ///  core_0_pif_pms_constrain_world_1_uart
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_UART: u2,
    +                ///  core_0_pif_pms_constrain_world_1_g0spi_1
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_G0SPI_1: u2,
    +                ///  core_0_pif_pms_constrain_world_1_g0spi_0
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_G0SPI_0: u2,
    +                ///  core_0_pif_pms_constrain_world_1_gpio
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_GPIO: u2,
    +                ///  core_0_pif_pms_constrain_world_1_fe2
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_FE2: u2,
    +                ///  core_0_pif_pms_constrain_world_1_fe
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_FE: u2,
    +                ///  core_0_pif_pms_constrain_world_1_timer
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_TIMER: u2,
    +                ///  core_0_pif_pms_constrain_world_1_rtc
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_RTC: u2,
    +                ///  core_0_pif_pms_constrain_world_1_io_mux
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_IO_MUX: u2,
    +                ///  core_0_pif_pms_constrain_world_1_wdg
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_WDG: u2,
    +                reserved24: u4,
    +                ///  core_0_pif_pms_constrain_world_1_misc
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_MISC: u2,
    +                ///  core_0_pif_pms_constrain_world_1_i2c
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_I2C: u2,
    +                reserved30: u2,
    +                ///  core_0_pif_pms_constrain_world_1_uart1
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_UART1: u2,
    +            }),
    +            ///  SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_6_REG
    +            CORE_0_PIF_PMS_CONSTRAIN_6: mmio.Mmio(packed struct(u32) {
    +                ///  core_0_pif_pms_constrain_world_1_bt
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_BT: u2,
    +                reserved4: u2,
    +                ///  core_0_pif_pms_constrain_world_1_i2c_ext0
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_I2C_EXT0: u2,
    +                ///  core_0_pif_pms_constrain_world_1_uhci0
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_UHCI0: u2,
    +                reserved10: u2,
    +                ///  core_0_pif_pms_constrain_world_1_rmt
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_RMT: u2,
    +                reserved16: u4,
    +                ///  core_0_pif_pms_constrain_world_1_ledc
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_LEDC: u2,
    +                reserved22: u4,
    +                ///  core_0_pif_pms_constrain_world_1_bb
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_BB: u2,
    +                reserved26: u2,
    +                ///  core_0_pif_pms_constrain_world_1_timergroup
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_TIMERGROUP: u2,
    +                ///  core_0_pif_pms_constrain_world_1_timergroup1
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_TIMERGROUP1: u2,
    +                ///  core_0_pif_pms_constrain_world_1_systimer
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SYSTIMER: u2,
    +            }),
    +            ///  SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_7_REG
    +            CORE_0_PIF_PMS_CONSTRAIN_7: mmio.Mmio(packed struct(u32) {
    +                ///  core_0_pif_pms_constrain_world_1_spi_2
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SPI_2: u2,
    +                reserved4: u2,
    +                ///  core_0_pif_pms_constrain_world_1_apb_ctrl
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_APB_CTRL: u2,
    +                reserved10: u4,
    +                ///  core_0_pif_pms_constrain_world_1_can
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CAN: u2,
    +                reserved14: u2,
    +                ///  core_0_pif_pms_constrain_world_1_i2s1
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_I2S1: u2,
    +                reserved22: u6,
    +                ///  core_0_pif_pms_constrain_world_1_rwbt
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_RWBT: u2,
    +                reserved26: u2,
    +                ///  core_0_pif_pms_constrain_world_1_wifimac
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_WIFIMAC: u2,
    +                ///  core_0_pif_pms_constrain_world_1_pwr
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_PWR: u2,
    +                padding: u2,
    +            }),
    +            ///  SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_8_REG
    +            CORE_0_PIF_PMS_CONSTRAIN_8: mmio.Mmio(packed struct(u32) {
    +                reserved2: u2,
    +                ///  core_0_pif_pms_constrain_world_1_usb_wrap
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_USB_WRAP: u2,
    +                ///  core_0_pif_pms_constrain_world_1_crypto_peri
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CRYPTO_PERI: u2,
    +                ///  core_0_pif_pms_constrain_world_1_crypto_dma
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CRYPTO_DMA: u2,
    +                ///  core_0_pif_pms_constrain_world_1_apb_adc
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_APB_ADC: u2,
    +                reserved12: u2,
    +                ///  core_0_pif_pms_constrain_world_1_bt_pwr
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_BT_PWR: u2,
    +                ///  core_0_pif_pms_constrain_world_1_usb_device
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_USB_DEVICE: u2,
    +                ///  core_0_pif_pms_constrain_world_1_system
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SYSTEM: u2,
    +                ///  core_0_pif_pms_constrain_world_1_sensitive
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SENSITIVE: u2,
    +                ///  core_0_pif_pms_constrain_world_1_interrupt
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_INTERRUPT: u2,
    +                ///  core_0_pif_pms_constrain_world_1_dma_copy
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_DMA_COPY: u2,
    +                ///  core_0_pif_pms_constrain_world_1_cache_config
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CACHE_CONFIG: u2,
    +                ///  core_0_pif_pms_constrain_world_1_ad
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_AD: u2,
    +                ///  core_0_pif_pms_constrain_world_1_dio
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_DIO: u2,
    +                ///  core_0_pif_pms_constrain_world_1_world_controller
    +                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_WORLD_CONTROLLER: u2,
    +            }),
    +            ///  SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_9_REG
    +            CORE_0_PIF_PMS_CONSTRAIN_9: mmio.Mmio(packed struct(u32) {
    +                ///  core_0_pif_pms_constrain_rtcfast_spltaddr_world_0
    +                CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_SPLTADDR_WORLD_0: u11,
    +                ///  core_0_pif_pms_constrain_rtcfast_spltaddr_world_1
    +                CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_SPLTADDR_WORLD_1: u11,
    +                padding: u10,
    +            }),
    +            ///  SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_10_REG
    +            CORE_0_PIF_PMS_CONSTRAIN_10: mmio.Mmio(packed struct(u32) {
    +                ///  core_0_pif_pms_constrain_rtcfast_world_0_l
    +                CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_0_L: u3,
    +                ///  core_0_pif_pms_constrain_rtcfast_world_0_h
    +                CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_0_H: u3,
    +                ///  core_0_pif_pms_constrain_rtcfast_world_1_l
    +                CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_1_L: u3,
    +                ///  core_0_pif_pms_constrain_rtcfast_world_1_h
    +                CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_1_H: u3,
    +                padding: u20,
    +            }),
    +            ///  SENSITIVE_REGION_PMS_CONSTRAIN_0_REG
    +            REGION_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    +                ///  region_pms_constrain_lock
    +                REGION_PMS_CONSTRAIN_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_REGION_PMS_CONSTRAIN_1_REG
    +            REGION_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    +                ///  region_pms_constrain_world_0_area_0
    +                REGION_PMS_CONSTRAIN_WORLD_0_AREA_0: u2,
    +                ///  region_pms_constrain_world_0_area_1
    +                REGION_PMS_CONSTRAIN_WORLD_0_AREA_1: u2,
    +                ///  region_pms_constrain_world_0_area_2
    +                REGION_PMS_CONSTRAIN_WORLD_0_AREA_2: u2,
    +                ///  region_pms_constrain_world_0_area_3
    +                REGION_PMS_CONSTRAIN_WORLD_0_AREA_3: u2,
    +                ///  region_pms_constrain_world_0_area_4
    +                REGION_PMS_CONSTRAIN_WORLD_0_AREA_4: u2,
    +                ///  region_pms_constrain_world_0_area_5
    +                REGION_PMS_CONSTRAIN_WORLD_0_AREA_5: u2,
    +                ///  region_pms_constrain_world_0_area_6
    +                REGION_PMS_CONSTRAIN_WORLD_0_AREA_6: u2,
    +                padding: u18,
    +            }),
    +            ///  SENSITIVE_REGION_PMS_CONSTRAIN_2_REG
    +            REGION_PMS_CONSTRAIN_2: mmio.Mmio(packed struct(u32) {
    +                ///  region_pms_constrain_world_1_area_0
    +                REGION_PMS_CONSTRAIN_WORLD_1_AREA_0: u2,
    +                ///  region_pms_constrain_world_1_area_1
    +                REGION_PMS_CONSTRAIN_WORLD_1_AREA_1: u2,
    +                ///  region_pms_constrain_world_1_area_2
    +                REGION_PMS_CONSTRAIN_WORLD_1_AREA_2: u2,
    +                ///  region_pms_constrain_world_1_area_3
    +                REGION_PMS_CONSTRAIN_WORLD_1_AREA_3: u2,
    +                ///  region_pms_constrain_world_1_area_4
    +                REGION_PMS_CONSTRAIN_WORLD_1_AREA_4: u2,
    +                ///  region_pms_constrain_world_1_area_5
    +                REGION_PMS_CONSTRAIN_WORLD_1_AREA_5: u2,
    +                ///  region_pms_constrain_world_1_area_6
    +                REGION_PMS_CONSTRAIN_WORLD_1_AREA_6: u2,
    +                padding: u18,
    +            }),
    +            ///  SENSITIVE_REGION_PMS_CONSTRAIN_3_REG
    +            REGION_PMS_CONSTRAIN_3: mmio.Mmio(packed struct(u32) {
    +                ///  region_pms_constrain_addr_0
    +                REGION_PMS_CONSTRAIN_ADDR_0: u30,
    +                padding: u2,
    +            }),
    +            ///  SENSITIVE_REGION_PMS_CONSTRAIN_4_REG
    +            REGION_PMS_CONSTRAIN_4: mmio.Mmio(packed struct(u32) {
    +                ///  region_pms_constrain_addr_1
    +                REGION_PMS_CONSTRAIN_ADDR_1: u30,
    +                padding: u2,
    +            }),
    +            ///  SENSITIVE_REGION_PMS_CONSTRAIN_5_REG
    +            REGION_PMS_CONSTRAIN_5: mmio.Mmio(packed struct(u32) {
    +                ///  region_pms_constrain_addr_2
    +                REGION_PMS_CONSTRAIN_ADDR_2: u30,
    +                padding: u2,
    +            }),
    +            ///  SENSITIVE_REGION_PMS_CONSTRAIN_6_REG
    +            REGION_PMS_CONSTRAIN_6: mmio.Mmio(packed struct(u32) {
    +                ///  region_pms_constrain_addr_3
    +                REGION_PMS_CONSTRAIN_ADDR_3: u30,
    +                padding: u2,
    +            }),
    +            ///  SENSITIVE_REGION_PMS_CONSTRAIN_7_REG
    +            REGION_PMS_CONSTRAIN_7: mmio.Mmio(packed struct(u32) {
    +                ///  region_pms_constrain_addr_4
    +                REGION_PMS_CONSTRAIN_ADDR_4: u30,
    +                padding: u2,
    +            }),
    +            ///  SENSITIVE_REGION_PMS_CONSTRAIN_8_REG
    +            REGION_PMS_CONSTRAIN_8: mmio.Mmio(packed struct(u32) {
    +                ///  region_pms_constrain_addr_5
    +                REGION_PMS_CONSTRAIN_ADDR_5: u30,
    +                padding: u2,
    +            }),
    +            ///  SENSITIVE_REGION_PMS_CONSTRAIN_9_REG
    +            REGION_PMS_CONSTRAIN_9: mmio.Mmio(packed struct(u32) {
    +                ///  region_pms_constrain_addr_6
    +                REGION_PMS_CONSTRAIN_ADDR_6: u30,
    +                padding: u2,
    +            }),
    +            ///  SENSITIVE_REGION_PMS_CONSTRAIN_10_REG
    +            REGION_PMS_CONSTRAIN_10: mmio.Mmio(packed struct(u32) {
    +                ///  region_pms_constrain_addr_7
    +                REGION_PMS_CONSTRAIN_ADDR_7: u30,
    +                padding: u2,
    +            }),
    +            ///  SENSITIVE_CORE_0_PIF_PMS_MONITOR_0_REG
    +            CORE_0_PIF_PMS_MONITOR_0: mmio.Mmio(packed struct(u32) {
    +                ///  core_0_pif_pms_monitor_lock
    +                CORE_0_PIF_PMS_MONITOR_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_CORE_0_PIF_PMS_MONITOR_1_REG
    +            CORE_0_PIF_PMS_MONITOR_1: mmio.Mmio(packed struct(u32) {
    +                ///  core_0_pif_pms_monitor_violate_clr
    +                CORE_0_PIF_PMS_MONITOR_VIOLATE_CLR: u1,
    +                ///  core_0_pif_pms_monitor_violate_en
    +                CORE_0_PIF_PMS_MONITOR_VIOLATE_EN: u1,
    +                padding: u30,
    +            }),
    +            ///  SENSITIVE_CORE_0_PIF_PMS_MONITOR_2_REG
    +            CORE_0_PIF_PMS_MONITOR_2: mmio.Mmio(packed struct(u32) {
    +                ///  core_0_pif_pms_monitor_violate_intr
    +                CORE_0_PIF_PMS_MONITOR_VIOLATE_INTR: u1,
    +                ///  core_0_pif_pms_monitor_violate_status_hport_0
    +                CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HPORT_0: u1,
    +                ///  core_0_pif_pms_monitor_violate_status_hsize
    +                CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HSIZE: u3,
    +                ///  core_0_pif_pms_monitor_violate_status_hwrite
    +                CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HWRITE: u1,
    +                ///  core_0_pif_pms_monitor_violate_status_hworld
    +                CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HWORLD: u2,
    +                padding: u24,
    +            }),
    +            ///  SENSITIVE_CORE_0_PIF_PMS_MONITOR_3_REG
    +            CORE_0_PIF_PMS_MONITOR_3: mmio.Mmio(packed struct(u32) {
    +                ///  core_0_pif_pms_monitor_violate_status_haddr
    +                CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HADDR: u32,
    +            }),
    +            ///  SENSITIVE_CORE_0_PIF_PMS_MONITOR_4_REG
    +            CORE_0_PIF_PMS_MONITOR_4: mmio.Mmio(packed struct(u32) {
    +                ///  core_0_pif_pms_monitor_nonword_violate_clr
    +                CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_CLR: u1,
    +                ///  core_0_pif_pms_monitor_nonword_violate_en
    +                CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_EN: u1,
    +                padding: u30,
    +            }),
    +            ///  SENSITIVE_CORE_0_PIF_PMS_MONITOR_5_REG
    +            CORE_0_PIF_PMS_MONITOR_5: mmio.Mmio(packed struct(u32) {
    +                ///  core_0_pif_pms_monitor_nonword_violate_intr
    +                CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_INTR: u1,
    +                ///  core_0_pif_pms_monitor_nonword_violate_status_hsize
    +                CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_STATUS_HSIZE: u2,
    +                ///  core_0_pif_pms_monitor_nonword_violate_status_hworld
    +                CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_STATUS_HWORLD: u2,
    +                padding: u27,
    +            }),
    +            ///  SENSITIVE_CORE_0_PIF_PMS_MONITOR_6_REG
    +            CORE_0_PIF_PMS_MONITOR_6: mmio.Mmio(packed struct(u32) {
    +                ///  core_0_pif_pms_monitor_nonword_violate_status_haddr
    +                CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_STATUS_HADDR: u32,
    +            }),
    +            ///  SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_0_REG
    +            BACKUP_BUS_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    +                ///  backup_bus_pms_constrain_lock
    +                BACKUP_BUS_PMS_CONSTRAIN_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_1_REG
    +            BACKUP_BUS_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    +                ///  backup_bus_pms_constrain_uart
    +                BACKUP_BUS_PMS_CONSTRAIN_UART: u2,
    +                ///  backup_bus_pms_constrain_g0spi_1
    +                BACKUP_BUS_PMS_CONSTRAIN_G0SPI_1: u2,
    +                ///  backup_bus_pms_constrain_g0spi_0
    +                BACKUP_BUS_PMS_CONSTRAIN_G0SPI_0: u2,
    +                ///  backup_bus_pms_constrain_gpio
    +                BACKUP_BUS_PMS_CONSTRAIN_GPIO: u2,
    +                ///  backup_bus_pms_constrain_fe2
    +                BACKUP_BUS_PMS_CONSTRAIN_FE2: u2,
    +                ///  backup_bus_pms_constrain_fe
    +                BACKUP_BUS_PMS_CONSTRAIN_FE: u2,
    +                ///  backup_bus_pms_constrain_timer
    +                BACKUP_BUS_PMS_CONSTRAIN_TIMER: u2,
    +                ///  backup_bus_pms_constrain_rtc
    +                BACKUP_BUS_PMS_CONSTRAIN_RTC: u2,
    +                ///  backup_bus_pms_constrain_io_mux
    +                BACKUP_BUS_PMS_CONSTRAIN_IO_MUX: u2,
    +                ///  backup_bus_pms_constrain_wdg
    +                BACKUP_BUS_PMS_CONSTRAIN_WDG: u2,
    +                reserved24: u4,
    +                ///  backup_bus_pms_constrain_misc
    +                BACKUP_BUS_PMS_CONSTRAIN_MISC: u2,
    +                ///  backup_bus_pms_constrain_i2c
    +                BACKUP_BUS_PMS_CONSTRAIN_I2C: u2,
    +                reserved30: u2,
    +                ///  backup_bus_pms_constrain_uart1
    +                BACKUP_BUS_PMS_CONSTRAIN_UART1: u2,
    +            }),
    +            ///  SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_2_REG
    +            BACKUP_BUS_PMS_CONSTRAIN_2: mmio.Mmio(packed struct(u32) {
    +                ///  backup_bus_pms_constrain_bt
    +                BACKUP_BUS_PMS_CONSTRAIN_BT: u2,
    +                reserved4: u2,
    +                ///  backup_bus_pms_constrain_i2c_ext0
    +                BACKUP_BUS_PMS_CONSTRAIN_I2C_EXT0: u2,
    +                ///  backup_bus_pms_constrain_uhci0
    +                BACKUP_BUS_PMS_CONSTRAIN_UHCI0: u2,
    +                reserved10: u2,
    +                ///  backup_bus_pms_constrain_rmt
    +                BACKUP_BUS_PMS_CONSTRAIN_RMT: u2,
    +                reserved16: u4,
    +                ///  backup_bus_pms_constrain_ledc
    +                BACKUP_BUS_PMS_CONSTRAIN_LEDC: u2,
    +                reserved22: u4,
    +                ///  backup_bus_pms_constrain_bb
    +                BACKUP_BUS_PMS_CONSTRAIN_BB: u2,
    +                reserved26: u2,
    +                ///  backup_bus_pms_constrain_timergroup
    +                BACKUP_BUS_PMS_CONSTRAIN_TIMERGROUP: u2,
    +                ///  backup_bus_pms_constrain_timergroup1
    +                BACKUP_BUS_PMS_CONSTRAIN_TIMERGROUP1: u2,
    +                ///  backup_bus_pms_constrain_systimer
    +                BACKUP_BUS_PMS_CONSTRAIN_SYSTIMER: u2,
    +            }),
    +            ///  SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_3_REG
    +            BACKUP_BUS_PMS_CONSTRAIN_3: mmio.Mmio(packed struct(u32) {
    +                ///  backup_bus_pms_constrain_spi_2
    +                BACKUP_BUS_PMS_CONSTRAIN_SPI_2: u2,
    +                reserved4: u2,
    +                ///  backup_bus_pms_constrain_apb_ctrl
    +                BACKUP_BUS_PMS_CONSTRAIN_APB_CTRL: u2,
    +                reserved10: u4,
    +                ///  backup_bus_pms_constrain_can
    +                BACKUP_BUS_PMS_CONSTRAIN_CAN: u2,
    +                reserved14: u2,
    +                ///  backup_bus_pms_constrain_i2s1
    +                BACKUP_BUS_PMS_CONSTRAIN_I2S1: u2,
    +                reserved22: u6,
    +                ///  backup_bus_pms_constrain_rwbt
    +                BACKUP_BUS_PMS_CONSTRAIN_RWBT: u2,
    +                reserved26: u2,
    +                ///  backup_bus_pms_constrain_wifimac
    +                BACKUP_BUS_PMS_CONSTRAIN_WIFIMAC: u2,
    +                ///  backup_bus_pms_constrain_pwr
    +                BACKUP_BUS_PMS_CONSTRAIN_PWR: u2,
    +                padding: u2,
    +            }),
    +            ///  SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_4_REG
    +            BACKUP_BUS_PMS_CONSTRAIN_4: mmio.Mmio(packed struct(u32) {
    +                reserved2: u2,
    +                ///  backup_bus_pms_constrain_usb_wrap
    +                BACKUP_BUS_PMS_CONSTRAIN_USB_WRAP: u2,
    +                ///  backup_bus_pms_constrain_crypto_peri
    +                BACKUP_BUS_PMS_CONSTRAIN_CRYPTO_PERI: u2,
    +                ///  backup_bus_pms_constrain_crypto_dma
    +                BACKUP_BUS_PMS_CONSTRAIN_CRYPTO_DMA: u2,
    +                ///  backup_bus_pms_constrain_apb_adc
    +                BACKUP_BUS_PMS_CONSTRAIN_APB_ADC: u2,
    +                reserved12: u2,
    +                ///  backup_bus_pms_constrain_bt_pwr
    +                BACKUP_BUS_PMS_CONSTRAIN_BT_PWR: u2,
    +                ///  backup_bus_pms_constrain_usb_device
    +                BACKUP_BUS_PMS_CONSTRAIN_USB_DEVICE: u2,
    +                padding: u16,
    +            }),
    +            ///  SENSITIVE_BACKUP_BUS_PMS_MONITOR_0_REG
    +            BACKUP_BUS_PMS_MONITOR_0: mmio.Mmio(packed struct(u32) {
    +                ///  backup_bus_pms_monitor_lock
    +                BACKUP_BUS_PMS_MONITOR_LOCK: u1,
    +                padding: u31,
    +            }),
    +            ///  SENSITIVE_BACKUP_BUS_PMS_MONITOR_1_REG
    +            BACKUP_BUS_PMS_MONITOR_1: mmio.Mmio(packed struct(u32) {
    +                ///  backup_bus_pms_monitor_violate_clr
    +                BACKUP_BUS_PMS_MONITOR_VIOLATE_CLR: u1,
    +                ///  backup_bus_pms_monitor_violate_en
    +                BACKUP_BUS_PMS_MONITOR_VIOLATE_EN: u1,
    +                padding: u30,
    +            }),
    +            ///  SENSITIVE_BACKUP_BUS_PMS_MONITOR_2_REG
    +            BACKUP_BUS_PMS_MONITOR_2: mmio.Mmio(packed struct(u32) {
    +                ///  backup_bus_pms_monitor_violate_intr
    +                BACKUP_BUS_PMS_MONITOR_VIOLATE_INTR: u1,
    +                ///  backup_bus_pms_monitor_violate_status_htrans
    +                BACKUP_BUS_PMS_MONITOR_VIOLATE_STATUS_HTRANS: u2,
    +                ///  backup_bus_pms_monitor_violate_status_hsize
    +                BACKUP_BUS_PMS_MONITOR_VIOLATE_STATUS_HSIZE: u3,
    +                ///  backup_bus_pms_monitor_violate_status_hwrite
    +                BACKUP_BUS_PMS_MONITOR_VIOLATE_STATUS_HWRITE: u1,
    +                padding: u25,
    +            }),
    +            ///  SENSITIVE_BACKUP_BUS_PMS_MONITOR_3_REG
    +            BACKUP_BUS_PMS_MONITOR_3: mmio.Mmio(packed struct(u32) {
    +                ///  backup_bus_pms_monitor_violate_haddr
    +                BACKUP_BUS_PMS_MONITOR_VIOLATE_HADDR: u32,
    +            }),
    +            ///  SENSITIVE_CLOCK_GATE_REG
    +            CLOCK_GATE: mmio.Mmio(packed struct(u32) {
    +                ///  clk_en
    +                CLK_EN: u1,
    +                padding: u31,
    +            }),
    +            reserved4092: [3720]u8,
    +            ///  SENSITIVE_DATE_REG
    +            DATE: mmio.Mmio(packed struct(u32) {
    +                ///  reg_date
    +                DATE: u28,
    +                padding: u4,
    +            }),
    +        };
    +
    +        ///  SHA (Secure Hash Algorithm) Accelerator
    +        pub const SHA = extern struct {
    +            ///  Initial configuration register.
    +            MODE: mmio.Mmio(packed struct(u32) {
    +                ///  Sha mode.
    +                MODE: u3,
    +                padding: u29,
    +            }),
    +            ///  SHA 512/t configuration register 0.
    +            T_STRING: mmio.Mmio(packed struct(u32) {
    +                ///  Sha t_string (used if and only if mode == SHA_512/t).
    +                T_STRING: u32,
    +            }),
    +            ///  SHA 512/t configuration register 1.
    +            T_LENGTH: mmio.Mmio(packed struct(u32) {
    +                ///  Sha t_length (used if and only if mode == SHA_512/t).
    +                T_LENGTH: u6,
    +                padding: u26,
    +            }),
    +            ///  DMA configuration register 0.
    +            DMA_BLOCK_NUM: mmio.Mmio(packed struct(u32) {
    +                ///  Dma-sha block number.
    +                DMA_BLOCK_NUM: u6,
    +                padding: u26,
    +            }),
    +            ///  Typical SHA configuration register 0.
    +            START: mmio.Mmio(packed struct(u32) {
    +                reserved1: u1,
    +                ///  Reserved.
    +                START: u31,
    +            }),
    +            ///  Typical SHA configuration register 1.
    +            CONTINUE: mmio.Mmio(packed struct(u32) {
    +                reserved1: u1,
    +                ///  Reserved.
    +                CONTINUE: u31,
    +            }),
    +            ///  Busy register.
    +            BUSY: mmio.Mmio(packed struct(u32) {
    +                ///  Sha busy state. 1'b0: idle. 1'b1: busy.
    +                STATE: u1,
    +                padding: u31,
    +            }),
    +            ///  DMA configuration register 1.
    +            DMA_START: mmio.Mmio(packed struct(u32) {
    +                ///  Start dma-sha.
    +                DMA_START: u1,
    +                padding: u31,
    +            }),
    +            ///  DMA configuration register 2.
    +            DMA_CONTINUE: mmio.Mmio(packed struct(u32) {
    +                ///  Continue dma-sha.
    +                DMA_CONTINUE: u1,
    +                padding: u31,
    +            }),
    +            ///  Interrupt clear register.
    +            CLEAR_IRQ: mmio.Mmio(packed struct(u32) {
    +                ///  Clear sha interrupt.
    +                CLEAR_INTERRUPT: u1,
    +                padding: u31,
    +            }),
    +            ///  Interrupt enable register.
    +            IRQ_ENA: mmio.Mmio(packed struct(u32) {
    +                ///  Sha interrupt enable register. 1'b0: disable(default). 1'b1: enable.
    +                INTERRUPT_ENA: u1,
    +                padding: u31,
    +            }),
    +            ///  Date register.
    +            DATE: mmio.Mmio(packed struct(u32) {
    +                ///  Sha date information/ sha version information.
    +                DATE: u30,
    +                padding: u2,
    +            }),
    +            reserved64: [16]u8,
    +            ///  Sha H memory which contains intermediate hash or finial hash.
    +            H_MEM: [64]u8,
    +            ///  Sha M memory which contains message.
    +            M_MEM: [64]u8,
    +        };
    +
    +        ///  SPI (Serial Peripheral Interface) Controller
    +        pub const SPI0 = extern struct {
    +            reserved8: [8]u8,
    +            ///  SPI0 control register.
    +            CTRL: mmio.Mmio(packed struct(u32) {
    +                reserved3: u3,
    +                ///  In the dummy phase the signal level of spi is output by the spi controller.
    +                FDUMMY_OUT: u1,
    +                reserved7: u3,
    +                ///  Apply 2 signals during command phase 1:enable 0: disable
    +                FCMD_DUAL: u1,
    +                ///  Apply 4 signals during command phase 1:enable 0: disable
    +                FCMD_QUAD: u1,
    +                reserved13: u4,
    +                ///  This bit enable the bits: spi_mem_fread_qio, spi_mem_fread_dio, spi_mem_fread_qout and spi_mem_fread_dout. 1: enable 0: disable.
    +                FASTRD_MODE: u1,
    +                ///  In the read operations, read-data phase apply 2 signals. 1: enable 0: disable.
    +                FREAD_DUAL: u1,
    +                reserved18: u3,
    +                ///  The bit is used to set MISO line polarity, 1: high 0, low
    +                Q_POL: u1,
    +                ///  The bit is used to set MOSI line polarity, 1: high 0, low
    +                D_POL: u1,
    +                ///  In the read operations read-data phase apply 4 signals. 1: enable 0: disable.
    +                FREAD_QUAD: u1,
    +                ///  Write protect signal output when SPI is idle. 1: output high, 0: output low.
    +                WP: u1,
    +                reserved23: u1,
    +                ///  In the read operations address phase and read-data phase apply 2 signals. 1: enable 0: disable.
    +                FREAD_DIO: u1,
    +                ///  In the read operations address phase and read-data phase apply 4 signals. 1: enable 0: disable.
    +                FREAD_QIO: u1,
    +                padding: u7,
    +            }),
    +            ///  SPI0 control1 register.
    +            CTRL1: mmio.Mmio(packed struct(u32) {
    +                ///  SPI clock mode bits. 0: SPI clock is off when CS inactive 1: SPI clock is delayed one cycle after CS inactive 2: SPI clock is delayed two cycles after CS inactive 3: SPI clock is alwasy on.
    +                CLK_MODE: u2,
    +                reserved30: u28,
    +                ///  SPI0 RX FIFO reset signal.
    +                RXFIFO_RST: u1,
    +                padding: u1,
    +            }),
    +            ///  SPI0 control2 register.
    +            CTRL2: mmio.Mmio(packed struct(u32) {
    +                ///  (cycles-1) of prepare phase by spi clock this bits are combined with spi_mem_cs_setup bit.
    +                CS_SETUP_TIME: u5,
    +                ///  Spi cs signal is delayed to inactive by spi clock this bits are combined with spi_mem_cs_hold bit.
    +                CS_HOLD_TIME: u5,
    +                reserved25: u15,
    +                ///  These bits are used to set the minimum CS high time tSHSL between SPI burst transfer when accesses to flash. tSHSL is (SPI_MEM_CS_HOLD_DELAY[5:0] + 1) MSPI core clock cycles.
    +                CS_HOLD_DELAY: u6,
    +                ///  The FSM will be reset.
    +                SYNC_RESET: u1,
    +            }),
    +            ///  SPI clock division control register.
    +            CLOCK: mmio.Mmio(packed struct(u32) {
    +                ///  In the master mode it must be equal to spi_mem_clkcnt_N.
    +                CLKCNT_L: u8,
    +                ///  In the master mode it must be floor((spi_mem_clkcnt_N+1)/2-1).
    +                CLKCNT_H: u8,
    +                ///  In the master mode it is the divider of spi_mem_clk. So spi_mem_clk frequency is system/(spi_mem_clkcnt_N+1)
    +                CLKCNT_N: u8,
    +                reserved31: u7,
    +                ///  Set this bit in 1-division mode.
    +                CLK_EQU_SYSCLK: u1,
    +            }),
    +            ///  SPI0 user register.
    +            USER: mmio.Mmio(packed struct(u32) {
    +                reserved6: u6,
    +                ///  spi cs keep low when spi is in done phase. 1: enable 0: disable.
    +                CS_HOLD: u1,
    +                ///  spi cs is enable when spi is in prepare phase. 1: enable 0: disable.
    +                CS_SETUP: u1,
    +                reserved9: u1,
    +                ///  the bit combined with spi_mem_mosi_delay_mode bits to set mosi signal delay mode.
    +                CK_OUT_EDGE: u1,
    +                reserved26: u16,
    +                ///  spi clock is disable in dummy phase when the bit is enable.
    +                USR_DUMMY_IDLE: u1,
    +                reserved29: u2,
    +                ///  This bit enable the dummy phase of an operation.
    +                USR_DUMMY: u1,
    +                padding: u2,
    +            }),
    +            ///  SPI0 user1 register.
    +            USER1: mmio.Mmio(packed struct(u32) {
    +                ///  The length in spi_mem_clk cycles of dummy phase. The register value shall be (cycle_num-1).
    +                USR_DUMMY_CYCLELEN: u6,
    +                reserved26: u20,
    +                ///  The length in bits of address phase. The register value shall be (bit_num-1).
    +                USR_ADDR_BITLEN: u6,
    +            }),
    +            ///  SPI0 user2 register.
    +            USER2: mmio.Mmio(packed struct(u32) {
    +                ///  The value of command.
    +                USR_COMMAND_VALUE: u16,
    +                reserved28: u12,
    +                ///  The length in bits of command phase. The register value shall be (bit_num-1)
    +                USR_COMMAND_BITLEN: u4,
    +            }),
    +            reserved44: [8]u8,
    +            ///  SPI0 read control register.
    +            RD_STATUS: mmio.Mmio(packed struct(u32) {
    +                reserved16: u16,
    +                ///  Mode bits in the flash fast read mode it is combined with spi_mem_fastrd_mode bit.
    +                WB_MODE: u8,
    +                padding: u8,
    +            }),
    +            reserved52: [4]u8,
    +            ///  SPI0 misc register
    +            MISC: mmio.Mmio(packed struct(u32) {
    +                reserved3: u3,
    +                ///  The bit is used to indicate the spi0_mst_st controlled transmitting is done.
    +                TRANS_END: u1,
    +                ///  The bit is used to enable the interrupt of spi0_mst_st controlled transmitting is done.
    +                TRANS_END_INT_ENA: u1,
    +                ///  The bit is used to indicate the spi0_slv_st controlled transmitting is done.
    +                CSPI_ST_TRANS_END: u1,
    +                ///  The bit is used to enable the interrupt of spi0_slv_st controlled transmitting is done.
    +                CSPI_ST_TRANS_END_INT_ENA: u1,
    +                reserved9: u2,
    +                ///  1: spi clk line is high when idle 0: spi clk line is low when idle
    +                CK_IDLE_EDGE: u1,
    +                ///  spi cs line keep low when the bit is set.
    +                CS_KEEP_ACTIVE: u1,
    +                padding: u21,
    +            }),
    +            reserved60: [4]u8,
    +            ///  SPI0 bit mode control register.
    +            CACHE_FCTRL: mmio.Mmio(packed struct(u32) {
    +                ///  For SPI0, Cache access enable, 1: enable, 0:disable.
    +                CACHE_REQ_EN: u1,
    +                ///  For SPI0, cache read flash with 4 bytes address, 1: enable, 0:disable.
    +                CACHE_USR_ADDR_4BYTE: u1,
    +                ///  For SPI0, cache read flash for user define command, 1: enable, 0:disable.
    +                CACHE_FLASH_USR_CMD: u1,
    +                ///  For SPI0 flash, din phase apply 2 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_dio.
    +                FDIN_DUAL: u1,
    +                ///  For SPI0 flash, dout phase apply 2 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_dio.
    +                FDOUT_DUAL: u1,
    +                ///  For SPI0 flash, address phase apply 2 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_dio.
    +                FADDR_DUAL: u1,
    +                ///  For SPI0 flash, din phase apply 4 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_qio.
    +                FDIN_QUAD: u1,
    +                ///  For SPI0 flash, dout phase apply 4 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_qio.
    +                FDOUT_QUAD: u1,
    +                ///  For SPI0 flash, address phase apply 4 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_qio.
    +                FADDR_QUAD: u1,
    +                padding: u23,
    +            }),
    +            reserved84: [20]u8,
    +            ///  SPI0 FSM status register
    +            FSM: mmio.Mmio(packed struct(u32) {
    +                ///  The current status of SPI0 slave FSM: spi0_slv_st. 0: idle state, 1: preparation state, 2: send command state, 3: send address state, 4: wait state, 5: read data state, 6:write data state, 7: done state, 8: read data end state.
    +                CSPI_ST: u4,
    +                ///  The current status of SPI0 master FSM: spi0_mst_st. 0: idle state, 1:EM_CACHE_GRANT , 2: program/erase suspend state, 3: SPI0 read data state, 4: wait cache/EDMA sent data is stored in SPI0 TX FIFO, 5: SPI0 write data state.
    +                EM_ST: u3,
    +                ///  The lock delay time of SPI0/1 arbiter by spi0_slv_st, after PER is sent by SPI1.
    +                CSPI_LOCK_DELAY_TIME: u5,
    +                padding: u20,
    +            }),
    +            reserved168: [80]u8,
    +            ///  SPI0 timing calibration register
    +            TIMING_CALI: mmio.Mmio(packed struct(u32) {
    +                ///  The bit is used to enable timing adjust clock for all reading operations.
    +                TIMING_CLK_ENA: u1,
    +                ///  The bit is used to enable timing auto-calibration for all reading operations.
    +                TIMING_CALI: u1,
    +                ///  add extra dummy spi clock cycle length for spi clock calibration.
    +                EXTRA_DUMMY_CYCLELEN: u3,
    +                padding: u27,
    +            }),
    +            ///  SPI0 input delay mode control register
    +            DIN_MODE: mmio.Mmio(packed struct(u32) {
    +                ///  the input signals are delayed by system clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input with the spi_clk high edge, 6: input with the spi_clk low edge
    +                DIN0_MODE: u2,
    +                ///  the input signals are delayed by system clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input with the spi_clk high edge, 6: input with the spi_clk low edge
    +                DIN1_MODE: u2,
    +                ///  the input signals are delayed by system clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input with the spi_clk high edge, 6: input with the spi_clk low edge
    +                DIN2_MODE: u2,
    +                ///  the input signals are delayed by system clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input with the spi_clk high edge, 6: input with the spi_clk low edge
    +                DIN3_MODE: u2,
    +                padding: u24,
    +            }),
    +            ///  SPI0 input delay number control register
    +            DIN_NUM: mmio.Mmio(packed struct(u32) {
    +                ///  the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...
    +                DIN0_NUM: u2,
    +                ///  the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...
    +                DIN1_NUM: u2,
    +                ///  the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...
    +                DIN2_NUM: u2,
    +                ///  the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...
    +                DIN3_NUM: u2,
    +                padding: u24,
    +            }),
    +            ///  SPI0 output delay mode control register
    +            DOUT_MODE: mmio.Mmio(packed struct(u32) {
    +                ///  the output signals are delayed by system clock cycles, 0: output without delayed, 1: output with the posedge of clk_apb,2 output with the negedge of clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low edge
    +                DOUT0_MODE: u1,
    +                ///  the output signals are delayed by system clock cycles, 0: output without delayed, 1: output with the posedge of clk_apb,2 output with the negedge of clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low edge
    +                DOUT1_MODE: u1,
    +                ///  the output signals are delayed by system clock cycles, 0: output without delayed, 1: output with the posedge of clk_apb,2 output with the negedge of clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low edge
    +                DOUT2_MODE: u1,
    +                ///  the output signals are delayed by system clock cycles, 0: output without delayed, 1: output with the posedge of clk_apb,2 output with the negedge of clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low edge
    +                DOUT3_MODE: u1,
    +                padding: u28,
    +            }),
    +            reserved220: [36]u8,
    +            ///  SPI0 clk_gate register
    +            CLOCK_GATE: mmio.Mmio(packed struct(u32) {
    +                ///  Register clock gate enable signal. 1: Enable. 0: Disable.
    +                CLK_EN: u1,
    +                padding: u31,
    +            }),
    +            ///  SPI0 module clock select register
    +            CORE_CLK_SEL: mmio.Mmio(packed struct(u32) {
    +                ///  When the digital system clock selects PLL clock and the frequency of PLL clock is 480MHz, the value of reg_spi01_clk_sel: 0: SPI0/1 module clock (clk) is 80MHz. 1: SPI0/1 module clock (clk) is 120MHz. 2: SPI0/1 module clock (clk) 160MHz. 3: Not used. When the digital system clock selects PLL clock and the frequency of PLL clock is 320MHz, the value of reg_spi01_clk_sel: 0: SPI0/1 module clock (clk) is 80MHz. 1: SPI0/1 module clock (clk) is 80MHz. 2: SPI0/1 module clock (clk) 160MHz. 3: Not used.
    +                SPI01_CLK_SEL: u2,
    +                padding: u30,
    +            }),
    +            reserved1020: [792]u8,
    +            ///  Version control register
    +            DATE: mmio.Mmio(packed struct(u32) {
    +                ///  SPI register version.
    +                DATE: u28,
    +                padding: u4,
    +            }),
    +        };
    +
    +        ///  SPI (Serial Peripheral Interface) Controller
    +        pub const SPI1 = extern struct {
    +            ///  SPI1 memory command register
    +            CMD: mmio.Mmio(packed struct(u32) {
    +                ///  The current status of SPI1 master FSM.
    +                SPI1_MST_ST: u4,
    +                ///  The current status of SPI1 slave FSM: mspi_st. 0: idle state, 1: preparation state, 2: send command state, 3: send address state, 4: wait state, 5: read data state, 6:write data state, 7: done state, 8: read data end state.
    +                MSPI_ST: u4,
    +                reserved17: u9,
    +                ///  In user mode, it is set to indicate that program/erase operation will be triggered. The bit is combined with spi_mem_usr bit. The bit will be cleared once the operation done.1: enable 0: disable.
    +                FLASH_PE: u1,
    +                ///  User define command enable. An operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    +                USR: u1,
    +                ///  Drive Flash into high performance mode. The bit will be cleared once the operation done.1: enable 0: disable.
    +                FLASH_HPM: u1,
    +                ///  This bit combined with reg_resandres bit releases Flash from the power-down state or high performance mode and obtains the devices ID. The bit will be cleared once the operation done.1: enable 0: disable.
    +                FLASH_RES: u1,
    +                ///  Drive Flash into power down. An operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    +                FLASH_DP: u1,
    +                ///  Chip erase enable. Chip erase operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    +                FLASH_CE: u1,
    +                ///  Block erase enable(32KB) . Block erase operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    +                FLASH_BE: u1,
    +                ///  Sector erase enable(4KB). Sector erase operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    +                FLASH_SE: u1,
    +                ///  Page program enable(1 byte ~256 bytes data to be programmed). Page program operation will be triggered when the bit is set. The bit will be cleared once the operation done .1: enable 0: disable.
    +                FLASH_PP: u1,
    +                ///  Write status register enable. Write status operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    +                FLASH_WRSR: u1,
    +                ///  Read status register-1. Read status operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    +                FLASH_RDSR: u1,
    +                ///  Read JEDEC ID . Read ID command will be sent when the bit is set. The bit will be cleared once the operation done. 1: enable 0: disable.
    +                FLASH_RDID: u1,
    +                ///  Write flash disable. Write disable command will be sent when the bit is set. The bit will be cleared once the operation done. 1: enable 0: disable.
    +                FLASH_WRDI: u1,
    +                ///  Write flash enable. Write enable command will be sent when the bit is set. The bit will be cleared once the operation done. 1: enable 0: disable.
    +                FLASH_WREN: u1,
    +                ///  Read flash enable. Read flash operation will be triggered when the bit is set. The bit will be cleared once the operation done. 1: enable 0: disable.
    +                FLASH_READ: u1,
    +            }),
    +            ///  SPI1 address register
    +            ADDR: mmio.Mmio(packed struct(u32) {
    +                ///  In user mode, it is the memory address. other then the bit0-bit23 is the memory address, the bit24-bit31 are the byte length of a transfer.
    +                USR_ADDR_VALUE: u32,
    +            }),
    +            ///  SPI1 control register.
    +            CTRL: mmio.Mmio(packed struct(u32) {
    +                reserved3: u3,
    +                ///  In the dummy phase the signal level of spi is output by the spi controller.
    +                FDUMMY_OUT: u1,
    +                reserved7: u3,
    +                ///  Apply 2 signals during command phase 1:enable 0: disable
    +                FCMD_DUAL: u1,
    +                ///  Apply 4 signals during command phase 1:enable 0: disable
    +                FCMD_QUAD: u1,
    +                reserved10: u1,
    +                ///  For SPI1, initialize crc32 module before writing encrypted data to flash. Active low.
    +                FCS_CRC_EN: u1,
    +                ///  For SPI1, enable crc32 when writing encrypted data to flash. 1: enable 0:disable
    +                TX_CRC_EN: u1,
    +                reserved13: u1,
    +                ///  This bit enable the bits: spi_mem_fread_qio, spi_mem_fread_dio, spi_mem_fread_qout and spi_mem_fread_dout. 1: enable 0: disable.
    +                FASTRD_MODE: u1,
    +                ///  In the read operations, read-data phase apply 2 signals. 1: enable 0: disable.
    +                FREAD_DUAL: u1,
    +                ///  The Device ID is read out to SPI_MEM_RD_STATUS register, this bit combine with spi_mem_flash_res bit. 1: enable 0: disable.
    +                RESANDRES: u1,
    +                reserved18: u2,
    +                ///  The bit is used to set MISO line polarity, 1: high 0, low
    +                Q_POL: u1,
    +                ///  The bit is used to set MOSI line polarity, 1: high 0, low
    +                D_POL: u1,
    +                ///  In the read operations read-data phase apply 4 signals. 1: enable 0: disable.
    +                FREAD_QUAD: u1,
    +                ///  Write protect signal output when SPI is idle. 1: output high, 0: output low.
    +                WP: u1,
    +                ///  two bytes data will be written to status register when it is set. 1: enable 0: disable.
    +                WRSR_2B: u1,
    +                ///  In the read operations address phase and read-data phase apply 2 signals. 1: enable 0: disable.
    +                FREAD_DIO: u1,
    +                ///  In the read operations address phase and read-data phase apply 4 signals. 1: enable 0: disable.
    +                FREAD_QIO: u1,
    +                padding: u7,
    +            }),
    +            ///  SPI1 control1 register.
    +            CTRL1: mmio.Mmio(packed struct(u32) {
    +                ///  SPI clock mode bits. 0: SPI clock is off when CS inactive 1: SPI clock is delayed one cycle after CS inactive 2: SPI clock is delayed two cycles after CS inactive 3: SPI clock is alwasy on.
    +                CLK_MODE: u2,
    +                ///  After RES/DP/HPM command is sent, SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 512) SPI_CLK cycles.
    +                CS_HOLD_DLY_RES: u10,
    +                padding: u20,
    +            }),
    +            ///  SPI1 control2 register.
    +            CTRL2: mmio.Mmio(packed struct(u32) {
    +                reserved31: u31,
    +                ///  The FSM will be reset.
    +                SYNC_RESET: u1,
    +            }),
    +            ///  SPI1 clock division control register.
    +            CLOCK: mmio.Mmio(packed struct(u32) {
    +                ///  In the master mode it must be equal to spi_mem_clkcnt_N.
    +                CLKCNT_L: u8,
    +                ///  In the master mode it must be floor((spi_mem_clkcnt_N+1)/2-1).
    +                CLKCNT_H: u8,
    +                ///  In the master mode it is the divider of spi_mem_clk. So spi_mem_clk frequency is system/(spi_mem_clkcnt_N+1)
    +                CLKCNT_N: u8,
    +                reserved31: u7,
    +                ///  reserved
    +                CLK_EQU_SYSCLK: u1,
    +            }),
    +            ///  SPI1 user register.
    +            USER: mmio.Mmio(packed struct(u32) {
    +                reserved9: u9,
    +                ///  the bit combined with spi_mem_mosi_delay_mode bits to set mosi signal delay mode.
    +                CK_OUT_EDGE: u1,
    +                reserved12: u2,
    +                ///  In the write operations read-data phase apply 2 signals
    +                FWRITE_DUAL: u1,
    +                ///  In the write operations read-data phase apply 4 signals
    +                FWRITE_QUAD: u1,
    +                ///  In the write operations address phase and read-data phase apply 2 signals.
    +                FWRITE_DIO: u1,
    +                ///  In the write operations address phase and read-data phase apply 4 signals.
    +                FWRITE_QIO: u1,
    +                reserved24: u8,
    +                ///  read-data phase only access to high-part of the buffer spi_mem_w8~spi_mem_w15. 1: enable 0: disable.
    +                USR_MISO_HIGHPART: u1,
    +                ///  write-data phase only access to high-part of the buffer spi_mem_w8~spi_mem_w15. 1: enable 0: disable.
    +                USR_MOSI_HIGHPART: u1,
    +                ///  SPI clock is disable in dummy phase when the bit is enable.
    +                USR_DUMMY_IDLE: u1,
    +                ///  This bit enable the write-data phase of an operation.
    +                USR_MOSI: u1,
    +                ///  This bit enable the read-data phase of an operation.
    +                USR_MISO: u1,
    +                ///  This bit enable the dummy phase of an operation.
    +                USR_DUMMY: u1,
    +                ///  This bit enable the address phase of an operation.
    +                USR_ADDR: u1,
    +                ///  This bit enable the command phase of an operation.
    +                USR_COMMAND: u1,
    +            }),
    +            ///  SPI1 user1 register.
    +            USER1: mmio.Mmio(packed struct(u32) {
    +                ///  The length in spi_mem_clk cycles of dummy phase. The register value shall be (cycle_num-1).
    +                USR_DUMMY_CYCLELEN: u6,
    +                reserved26: u20,
    +                ///  The length in bits of address phase. The register value shall be (bit_num-1).
    +                USR_ADDR_BITLEN: u6,
    +            }),
    +            ///  SPI1 user2 register.
    +            USER2: mmio.Mmio(packed struct(u32) {
    +                ///  The value of command.
    +                USR_COMMAND_VALUE: u16,
    +                reserved28: u12,
    +                ///  The length in bits of command phase. The register value shall be (bit_num-1)
    +                USR_COMMAND_BITLEN: u4,
    +            }),
    +            ///  SPI1 send data bit length control register.
    +            MOSI_DLEN: mmio.Mmio(packed struct(u32) {
    +                ///  The length in bits of write-data. The register value shall be (bit_num-1).
    +                USR_MOSI_DBITLEN: u10,
    +                padding: u22,
    +            }),
    +            ///  SPI1 receive data bit length control register.
    +            MISO_DLEN: mmio.Mmio(packed struct(u32) {
    +                ///  The length in bits of read-data. The register value shall be (bit_num-1).
    +                USR_MISO_DBITLEN: u10,
    +                padding: u22,
    +            }),
    +            ///  SPI1 status register.
    +            RD_STATUS: mmio.Mmio(packed struct(u32) {
    +                ///  The value is stored when set spi_mem_flash_rdsr bit and spi_mem_flash_res bit.
    +                STATUS: u16,
    +                ///  Mode bits in the flash fast read mode it is combined with spi_mem_fastrd_mode bit.
    +                WB_MODE: u8,
    +                padding: u8,
    +            }),
    +            reserved52: [4]u8,
    +            ///  SPI1 misc register
    +            MISC: mmio.Mmio(packed struct(u32) {
    +                ///  SPI_CS0 pin enable, 1: disable SPI_CS0, 0: SPI_CS0 pin is active to select SPI device, such as flash, external RAM and so on.
    +                CS0_DIS: u1,
    +                ///  SPI_CS1 pin enable, 1: disable SPI_CS1, 0: SPI_CS1 pin is active to select SPI device, such as flash, external RAM and so on.
    +                CS1_DIS: u1,
    +                reserved9: u7,
    +                ///  1: spi clk line is high when idle 0: spi clk line is low when idle
    +                CK_IDLE_EDGE: u1,
    +                ///  spi cs line keep low when the bit is set.
    +                CS_KEEP_ACTIVE: u1,
    +                padding: u21,
    +            }),
    +            ///  SPI1 TX CRC data register.
    +            TX_CRC: mmio.Mmio(packed struct(u32) {
    +                ///  For SPI1, the value of crc32.
    +                DATA: u32,
    +            }),
    +            ///  SPI1 bit mode control register.
    +            CACHE_FCTRL: mmio.Mmio(packed struct(u32) {
    +                reserved1: u1,
    +                ///  For SPI1, cache read flash with 4 bytes address, 1: enable, 0:disable.
    +                CACHE_USR_ADDR_4BYTE: u1,
    +                reserved3: u1,
    +                ///  For SPI1, din phase apply 2 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_dio.
    +                FDIN_DUAL: u1,
    +                ///  For SPI1, dout phase apply 2 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_dio.
    +                FDOUT_DUAL: u1,
    +                ///  For SPI1, address phase apply 2 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_dio.
    +                FADDR_DUAL: u1,
    +                ///  For SPI1, din phase apply 4 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_qio.
    +                FDIN_QUAD: u1,
    +                ///  For SPI1, dout phase apply 4 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_qio.
    +                FDOUT_QUAD: u1,
    +                ///  For SPI1, address phase apply 4 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_qio.
    +                FADDR_QUAD: u1,
    +                padding: u23,
    +            }),
    +            reserved88: [24]u8,
    +            ///  SPI1 memory data buffer0
    +            W0: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF0: u32,
    +            }),
    +            ///  SPI1 memory data buffer1
    +            W1: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF1: u32,
    +            }),
    +            ///  SPI1 memory data buffer2
    +            W2: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF2: u32,
    +            }),
    +            ///  SPI1 memory data buffer3
    +            W3: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF3: u32,
    +            }),
    +            ///  SPI1 memory data buffer4
    +            W4: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF4: u32,
    +            }),
    +            ///  SPI1 memory data buffer5
    +            W5: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF5: u32,
    +            }),
    +            ///  SPI1 memory data buffer6
    +            W6: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF6: u32,
    +            }),
    +            ///  SPI1 memory data buffer7
    +            W7: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF7: u32,
    +            }),
    +            ///  SPI1 memory data buffer8
    +            W8: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF8: u32,
    +            }),
    +            ///  SPI1 memory data buffer9
    +            W9: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF9: u32,
    +            }),
    +            ///  SPI1 memory data buffer10
    +            W10: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF10: u32,
    +            }),
    +            ///  SPI1 memory data buffer11
    +            W11: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF11: u32,
    +            }),
    +            ///  SPI1 memory data buffer12
    +            W12: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF12: u32,
    +            }),
    +            ///  SPI1 memory data buffer13
    +            W13: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF13: u32,
    +            }),
    +            ///  SPI1 memory data buffer14
    +            W14: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF14: u32,
    +            }),
    +            ///  SPI1 memory data buffer15
    +            W15: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF15: u32,
    +            }),
    +            ///  SPI1 wait idle control register
    +            FLASH_WAITI_CTRL: mmio.Mmio(packed struct(u32) {
    +                reserved1: u1,
    +                ///  The dummy phase enable when wait flash idle (RDSR)
    +                WAITI_DUMMY: u1,
    +                ///  The command to wait flash idle(RDSR).
    +                WAITI_CMD: u8,
    +                ///  The dummy cycle length when wait flash idle(RDSR).
    +                WAITI_DUMMY_CYCLELEN: u6,
    +                padding: u16,
    +            }),
    +            ///  SPI1 flash suspend control register
    +            FLASH_SUS_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  program erase resume bit, program erase suspend operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    +                FLASH_PER: u1,
    +                ///  program erase suspend bit, program erase suspend operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    +                FLASH_PES: u1,
    +                ///  1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4 or *128) SPI_CLK cycles after program erase resume command is sent. 0: SPI1 does not wait after program erase resume command is sent.
    +                FLASH_PER_WAIT_EN: u1,
    +                ///  1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4 or *128) SPI_CLK cycles after program erase suspend command is sent. 0: SPI1 does not wait after program erase suspend command is sent.
    +                FLASH_PES_WAIT_EN: u1,
    +                ///  Set this bit to enable PES end triggers PER transfer option. If this bit is 0, application should send PER after PES is done.
    +                PES_PER_EN: u1,
    +                ///  Set this bit to enable Auto-suspending function.
    +                FLASH_PES_EN: u1,
    +                ///  The mask value when check SUS/SUS1/SUS2 status bit. If the read status value is status_in[15:0](only status_in[7:0] is valid when only one byte of data is read out, status_in[15:0] is valid when two bytes of data are read out), SUS/SUS1/SUS2 = status_in[15:0]^ SPI_MEM_PESR_END_MSK[15:0].
    +                PESR_END_MSK: u16,
    +                ///  1: Read two bytes when check flash SUS/SUS1/SUS2 status bit. 0: Read one byte when check flash SUS/SUS1/SUS2 status bit
    +                RD_SUS_2B: u1,
    +                ///  1: Both WIP and SUS/SUS1/SUS2 bits should be checked to insure the resume status of flash. 0: Only need to check WIP is 0.
    +                PER_END_EN: u1,
    +                ///  1: Both WIP and SUS/SUS1/SUS2 bits should be checked to insure the suspend status of flash. 0: Only need to check WIP is 0.
    +                PES_END_EN: u1,
    +                ///  When SPI1 checks SUS/SUS1/SUS2 bits fail for SPI_MEM_SUS_TIMEOUT_CNT[6:0] times, it will be treated as check pass.
    +                SUS_TIMEOUT_CNT: u7,
    +            }),
    +            ///  SPI1 flash suspend command register
    +            FLASH_SUS_CMD: mmio.Mmio(packed struct(u32) {
    +                ///  Program/Erase resume command.
    +                FLASH_PER_COMMAND: u8,
    +                ///  Program/Erase suspend command.
    +                FLASH_PES_COMMAND: u8,
    +                ///  Flash SUS/SUS1/SUS2 status bit read command. The command should be sent when SUS/SUS1/SUS2 bit should be checked to insure the suspend or resume status of flash.
    +                WAIT_PESR_COMMAND: u16,
    +            }),
    +            ///  SPI1 flash suspend status register
    +            SUS_STATUS: mmio.Mmio(packed struct(u32) {
    +                ///  The status of flash suspend, only used in SPI1.
    +                FLASH_SUS: u1,
    +                ///  1: SPI1 sends out SPI_MEM_WAIT_PESR_COMMAND[15:0] to check SUS/SUS1/SUS2 bit. 0: SPI1 sends out SPI_MEM_WAIT_PESR_COMMAND[7:0] to check SUS/SUS1/SUS2 bit.
    +                WAIT_PESR_CMD_2B: u1,
    +                ///  1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after HPM command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after HPM command is sent.
    +                FLASH_HPM_DLY_128: u1,
    +                ///  1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after RES command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after RES command is sent.
    +                FLASH_RES_DLY_128: u1,
    +                ///  1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after DP command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after DP command is sent.
    +                FLASH_DP_DLY_128: u1,
    +                ///  Valid when SPI_MEM_FLASH_PER_WAIT_EN is 1. 1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after PER command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after PER command is sent.
    +                FLASH_PER_DLY_128: u1,
    +                ///  Valid when SPI_MEM_FLASH_PES_WAIT_EN is 1. 1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after PES command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after PES command is sent.
    +                FLASH_PES_DLY_128: u1,
    +                ///  1: Enable SPI0 lock SPI0/1 arbiter option. 0: Disable it.
    +                SPI0_LOCK_EN: u1,
    +                padding: u24,
    +            }),
    +            ///  SPI1 timing control register
    +            TIMING_CALI: mmio.Mmio(packed struct(u32) {
    +                reserved1: u1,
    +                ///  The bit is used to enable timing auto-calibration for all reading operations.
    +                TIMING_CALI: u1,
    +                ///  add extra dummy spi clock cycle length for spi clock calibration.
    +                EXTRA_DUMMY_CYCLELEN: u3,
    +                padding: u27,
    +            }),
    +            reserved192: [20]u8,
    +            ///  SPI1 interrupt enable register
    +            INT_ENA: mmio.Mmio(packed struct(u32) {
    +                ///  The enable bit for SPI_MEM_PER_END_INT interrupt.
    +                PER_END_INT_ENA: u1,
    +                ///  The enable bit for SPI_MEM_PES_END_INT interrupt.
    +                PES_END_INT_ENA: u1,
    +                ///  The enable bit for SPI_MEM_WPE_END_INT interrupt.
    +                WPE_END_INT_ENA: u1,
    +                ///  The enable bit for SPI_MEM_SLV_ST_END_INT interrupt.
    +                SLV_ST_END_INT_ENA: u1,
    +                ///  The enable bit for SPI_MEM_MST_ST_END_INT interrupt.
    +                MST_ST_END_INT_ENA: u1,
    +                padding: u27,
    +            }),
    +            ///  SPI1 interrupt clear register
    +            INT_CLR: mmio.Mmio(packed struct(u32) {
    +                ///  The clear bit for SPI_MEM_PER_END_INT interrupt.
    +                PER_END_INT_CLR: u1,
    +                ///  The clear bit for SPI_MEM_PES_END_INT interrupt.
    +                PES_END_INT_CLR: u1,
    +                ///  The clear bit for SPI_MEM_WPE_END_INT interrupt.
    +                WPE_END_INT_CLR: u1,
    +                ///  The clear bit for SPI_MEM_SLV_ST_END_INT interrupt.
    +                SLV_ST_END_INT_CLR: u1,
    +                ///  The clear bit for SPI_MEM_MST_ST_END_INT interrupt.
    +                MST_ST_END_INT_CLR: u1,
    +                padding: u27,
    +            }),
    +            ///  SPI1 interrupt raw register
    +            INT_RAW: mmio.Mmio(packed struct(u32) {
    +                ///  The raw bit for SPI_MEM_PER_END_INT interrupt. 1: Triggered when Auto Resume command (0x7A) is sent and flash is resumed. 0: Others.
    +                PER_END_INT_RAW: u1,
    +                ///  The raw bit for SPI_MEM_PES_END_INT interrupt.1: Triggered when Auto Suspend command (0x75) is sent and flash is suspended. 0: Others.
    +                PES_END_INT_RAW: u1,
    +                ///  The raw bit for SPI_MEM_WPE_END_INT interrupt. 1: Triggered when WRSR/PP/SE/BE/CE is sent and flash is already idle. 0: Others.
    +                WPE_END_INT_RAW: u1,
    +                ///  The raw bit for SPI_MEM_SLV_ST_END_INT interrupt. 1: Triggered when spi1_slv_st is changed from non idle state to idle state. It means that SPI_CS raises high. 0: Others
    +                SLV_ST_END_INT_RAW: u1,
    +                ///  The raw bit for SPI_MEM_MST_ST_END_INT interrupt. 1: Triggered when spi1_mst_st is changed from non idle state to idle state. 0: Others.
    +                MST_ST_END_INT_RAW: u1,
    +                padding: u27,
    +            }),
    +            ///  SPI1 interrupt status register
    +            INT_ST: mmio.Mmio(packed struct(u32) {
    +                ///  The status bit for SPI_MEM_PER_END_INT interrupt.
    +                PER_END_INT_ST: u1,
    +                ///  The status bit for SPI_MEM_PES_END_INT interrupt.
    +                PES_END_INT_ST: u1,
    +                ///  The status bit for SPI_MEM_WPE_END_INT interrupt.
    +                WPE_END_INT_ST: u1,
    +                ///  The status bit for SPI_MEM_SLV_ST_END_INT interrupt.
    +                SLV_ST_END_INT_ST: u1,
    +                ///  The status bit for SPI_MEM_MST_ST_END_INT interrupt.
    +                MST_ST_END_INT_ST: u1,
    +                padding: u27,
    +            }),
    +            reserved220: [12]u8,
    +            ///  SPI1 clk_gate register
    +            CLOCK_GATE: mmio.Mmio(packed struct(u32) {
    +                ///  Register clock gate enable signal. 1: Enable. 0: Disable.
    +                CLK_EN: u1,
    +                padding: u31,
    +            }),
    +            reserved1020: [796]u8,
    +            ///  Version control register
    +            DATE: mmio.Mmio(packed struct(u32) {
    +                ///  Version control register
    +                DATE: u28,
    +                padding: u4,
    +            }),
    +        };
    +
    +        ///  SPI (Serial Peripheral Interface) Controller
    +        pub const SPI2 = extern struct {
    +            ///  Command control register
    +            CMD: mmio.Mmio(packed struct(u32) {
    +                ///  Define the APB cycles of SPI_CONF state. Can be configured in CONF state.
    +                CONF_BITLEN: u18,
    +                reserved23: u5,
    +                ///  Set this bit to synchronize SPI registers from APB clock domain into SPI module clock domain, which is only used in SPI master mode.
    +                UPDATE: u1,
    +                ///  User define command enable. An operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable. Can not be changed by CONF_buf.
    +                USR: u1,
    +                padding: u7,
    +            }),
    +            ///  Address value register
    +            ADDR: mmio.Mmio(packed struct(u32) {
    +                ///  Address to slave. Can be configured in CONF state.
    +                USR_ADDR_VALUE: u32,
    +            }),
    +            ///  SPI control register
    +            CTRL: mmio.Mmio(packed struct(u32) {
    +                reserved3: u3,
    +                ///  In the dummy phase the signal level of spi is output by the spi controller. Can be configured in CONF state.
    +                DUMMY_OUT: u1,
    +                reserved5: u1,
    +                ///  Apply 2 signals during addr phase 1:enable 0: disable. Can be configured in CONF state.
    +                FADDR_DUAL: u1,
    +                ///  Apply 4 signals during addr phase 1:enable 0: disable. Can be configured in CONF state.
    +                FADDR_QUAD: u1,
    +                reserved8: u1,
    +                ///  Apply 2 signals during command phase 1:enable 0: disable. Can be configured in CONF state.
    +                FCMD_DUAL: u1,
    +                ///  Apply 4 signals during command phase 1:enable 0: disable. Can be configured in CONF state.
    +                FCMD_QUAD: u1,
    +                reserved14: u4,
    +                ///  In the read operations, read-data phase apply 2 signals. 1: enable 0: disable. Can be configured in CONF state.
    +                FREAD_DUAL: u1,
    +                ///  In the read operations read-data phase apply 4 signals. 1: enable 0: disable. Can be configured in CONF state.
    +                FREAD_QUAD: u1,
    +                reserved18: u2,
    +                ///  The bit is used to set MISO line polarity, 1: high 0, low. Can be configured in CONF state.
    +                Q_POL: u1,
    +                ///  The bit is used to set MOSI line polarity, 1: high 0, low. Can be configured in CONF state.
    +                D_POL: u1,
    +                ///  SPI_HOLD output value when SPI is idle. 1: output high, 0: output low. Can be configured in CONF state.
    +                HOLD_POL: u1,
    +                ///  Write protect signal output when SPI is idle. 1: output high, 0: output low. Can be configured in CONF state.
    +                WP_POL: u1,
    +                reserved25: u3,
    +                ///  In read-data (MISO) phase 1: LSB first 0: MSB first. Can be configured in CONF state.
    +                RD_BIT_ORDER: u1,
    +                ///  In command address write-data (MOSI) phases 1: LSB firs 0: MSB first. Can be configured in CONF state.
    +                WR_BIT_ORDER: u1,
    +                padding: u5,
    +            }),
    +            ///  SPI clock control register
    +            CLOCK: mmio.Mmio(packed struct(u32) {
    +                ///  In the master mode it must be equal to spi_clkcnt_N. In the slave mode it must be 0. Can be configured in CONF state.
    +                CLKCNT_L: u6,
    +                ///  In the master mode it must be floor((spi_clkcnt_N+1)/2-1). In the slave mode it must be 0. Can be configured in CONF state.
    +                CLKCNT_H: u6,
    +                ///  In the master mode it is the divider of spi_clk. So spi_clk frequency is system/(spi_clkdiv_pre+1)/(spi_clkcnt_N+1). Can be configured in CONF state.
    +                CLKCNT_N: u6,
    +                ///  In the master mode it is pre-divider of spi_clk. Can be configured in CONF state.
    +                CLKDIV_PRE: u4,
    +                reserved31: u9,
    +                ///  In the master mode 1: spi_clk is eqaul to system 0: spi_clk is divided from system clock. Can be configured in CONF state.
    +                CLK_EQU_SYSCLK: u1,
    +            }),
    +            ///  SPI USER control register
    +            USER: mmio.Mmio(packed struct(u32) {
    +                ///  Set the bit to enable full duplex communication. 1: enable 0: disable. Can be configured in CONF state.
    +                DOUTDIN: u1,
    +                reserved3: u2,
    +                ///  Both for master mode and slave mode. 1: spi controller is in QPI mode. 0: others. Can be configured in CONF state.
    +                QPI_MODE: u1,
    +                reserved5: u1,
    +                ///  In the slave mode, this bit can be used to change the polarity of tsck. 0: tsck = spi_ck_i. 1:tsck = !spi_ck_i.
    +                TSCK_I_EDGE: u1,
    +                ///  spi cs keep low when spi is in done phase. 1: enable 0: disable. Can be configured in CONF state.
    +                CS_HOLD: u1,
    +                ///  spi cs is enable when spi is in prepare phase. 1: enable 0: disable. Can be configured in CONF state.
    +                CS_SETUP: u1,
    +                ///  In the slave mode, this bit can be used to change the polarity of rsck. 0: rsck = !spi_ck_i. 1:rsck = spi_ck_i.
    +                RSCK_I_EDGE: u1,
    +                ///  the bit combined with spi_mosi_delay_mode bits to set mosi signal delay mode. Can be configured in CONF state.
    +                CK_OUT_EDGE: u1,
    +                reserved12: u2,
    +                ///  In the write operations read-data phase apply 2 signals. Can be configured in CONF state.
    +                FWRITE_DUAL: u1,
    +                ///  In the write operations read-data phase apply 4 signals. Can be configured in CONF state.
    +                FWRITE_QUAD: u1,
    +                reserved15: u1,
    +                ///  1: Enable the DMA CONF phase of next seg-trans operation, which means seg-trans will continue. 0: The seg-trans will end after the current SPI seg-trans or this is not seg-trans mode. Can be configured in CONF state.
    +                USR_CONF_NXT: u1,
    +                reserved17: u1,
    +                ///  Set the bit to enable 3-line half duplex communication mosi and miso signals share the same pin. 1: enable 0: disable. Can be configured in CONF state.
    +                SIO: u1,
    +                reserved24: u6,
    +                ///  read-data phase only access to high-part of the buffer spi_w8~spi_w15. 1: enable 0: disable. Can be configured in CONF state.
    +                USR_MISO_HIGHPART: u1,
    +                ///  write-data phase only access to high-part of the buffer spi_w8~spi_w15. 1: enable 0: disable. Can be configured in CONF state.
    +                USR_MOSI_HIGHPART: u1,
    +                ///  spi clock is disable in dummy phase when the bit is enable. Can be configured in CONF state.
    +                USR_DUMMY_IDLE: u1,
    +                ///  This bit enable the write-data phase of an operation. Can be configured in CONF state.
    +                USR_MOSI: u1,
    +                ///  This bit enable the read-data phase of an operation. Can be configured in CONF state.
    +                USR_MISO: u1,
    +                ///  This bit enable the dummy phase of an operation. Can be configured in CONF state.
    +                USR_DUMMY: u1,
    +                ///  This bit enable the address phase of an operation. Can be configured in CONF state.
    +                USR_ADDR: u1,
    +                ///  This bit enable the command phase of an operation. Can be configured in CONF state.
    +                USR_COMMAND: u1,
    +            }),
    +            ///  SPI USER control register 1
    +            USER1: mmio.Mmio(packed struct(u32) {
    +                ///  The length in spi_clk cycles of dummy phase. The register value shall be (cycle_num-1). Can be configured in CONF state.
    +                USR_DUMMY_CYCLELEN: u8,
    +                reserved16: u8,
    +                ///  1: SPI transfer is ended when SPI RX AFIFO wfull error is valid in GP-SPI master FD/HD-mode. 0: SPI transfer is not ended when SPI RX AFIFO wfull error is valid in GP-SPI master FD/HD-mode.
    +                MST_WFULL_ERR_END_EN: u1,
    +                ///  (cycles+1) of prepare phase by spi clock this bits are combined with spi_cs_setup bit. Can be configured in CONF state.
    +                CS_SETUP_TIME: u5,
    +                ///  delay cycles of cs pin by spi clock this bits are combined with spi_cs_hold bit. Can be configured in CONF state.
    +                CS_HOLD_TIME: u5,
    +                ///  The length in bits of address phase. The register value shall be (bit_num-1). Can be configured in CONF state.
    +                USR_ADDR_BITLEN: u5,
    +            }),
    +            ///  SPI USER control register 2
    +            USER2: mmio.Mmio(packed struct(u32) {
    +                ///  The value of command. Can be configured in CONF state.
    +                USR_COMMAND_VALUE: u16,
    +                reserved27: u11,
    +                ///  1: SPI transfer is ended when SPI TX AFIFO read empty error is valid in GP-SPI master FD/HD-mode. 0: SPI transfer is not ended when SPI TX AFIFO read empty error is valid in GP-SPI master FD/HD-mode.
    +                MST_REMPTY_ERR_END_EN: u1,
    +                ///  The length in bits of command phase. The register value shall be (bit_num-1). Can be configured in CONF state.
    +                USR_COMMAND_BITLEN: u4,
    +            }),
    +            ///  SPI data bit length control register
    +            MS_DLEN: mmio.Mmio(packed struct(u32) {
    +                ///  The value of these bits is the configured SPI transmission data bit length in master mode DMA controlled transfer or CPU controlled transfer. The value is also the configured bit length in slave mode DMA RX controlled transfer. The register value shall be (bit_num-1). Can be configured in CONF state.
    +                MS_DATA_BITLEN: u18,
    +                padding: u14,
    +            }),
    +            ///  SPI misc register
    +            MISC: mmio.Mmio(packed struct(u32) {
    +                ///  SPI CS0 pin enable, 1: disable CS0, 0: spi_cs0 signal is from/to CS0 pin. Can be configured in CONF state.
    +                CS0_DIS: u1,
    +                ///  SPI CS1 pin enable, 1: disable CS1, 0: spi_cs1 signal is from/to CS1 pin. Can be configured in CONF state.
    +                CS1_DIS: u1,
    +                ///  SPI CS2 pin enable, 1: disable CS2, 0: spi_cs2 signal is from/to CS2 pin. Can be configured in CONF state.
    +                CS2_DIS: u1,
    +                ///  SPI CS3 pin enable, 1: disable CS3, 0: spi_cs3 signal is from/to CS3 pin. Can be configured in CONF state.
    +                CS3_DIS: u1,
    +                ///  SPI CS4 pin enable, 1: disable CS4, 0: spi_cs4 signal is from/to CS4 pin. Can be configured in CONF state.
    +                CS4_DIS: u1,
    +                ///  SPI CS5 pin enable, 1: disable CS5, 0: spi_cs5 signal is from/to CS5 pin. Can be configured in CONF state.
    +                CS5_DIS: u1,
    +                ///  1: spi clk out disable, 0: spi clk out enable. Can be configured in CONF state.
    +                CK_DIS: u1,
    +                ///  In the master mode the bits are the polarity of spi cs line, the value is equivalent to spi_cs ^ spi_master_cs_pol. Can be configured in CONF state.
    +                MASTER_CS_POL: u6,
    +                reserved23: u10,
    +                ///  spi slave input cs polarity select. 1: inv 0: not change. Can be configured in CONF state.
    +                SLAVE_CS_POL: u1,
    +                reserved29: u5,
    +                ///  1: spi clk line is high when idle 0: spi clk line is low when idle. Can be configured in CONF state.
    +                CK_IDLE_EDGE: u1,
    +                ///  spi cs line keep low when the bit is set. Can be configured in CONF state.
    +                CS_KEEP_ACTIVE: u1,
    +                ///  1: spi quad input swap enable 0: spi quad input swap disable. Can be configured in CONF state.
    +                QUAD_DIN_PIN_SWAP: u1,
    +            }),
    +            ///  SPI input delay mode configuration
    +            DIN_MODE: mmio.Mmio(packed struct(u32) {
    +                ///  the input signals are delayed by SPI module clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the spi_clk. Can be configured in CONF state.
    +                DIN0_MODE: u2,
    +                ///  the input signals are delayed by SPI module clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the spi_clk. Can be configured in CONF state.
    +                DIN1_MODE: u2,
    +                ///  the input signals are delayed by SPI module clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the spi_clk. Can be configured in CONF state.
    +                DIN2_MODE: u2,
    +                ///  the input signals are delayed by SPI module clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the spi_clk. Can be configured in CONF state.
    +                DIN3_MODE: u2,
    +                reserved16: u8,
    +                ///  1:enable hclk in SPI input timing module. 0: disable it. Can be configured in CONF state.
    +                TIMING_HCLK_ACTIVE: u1,
    +                padding: u15,
    +            }),
    +            ///  SPI input delay number configuration
    +            DIN_NUM: mmio.Mmio(packed struct(u32) {
    +                ///  the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,... Can be configured in CONF state.
    +                DIN0_NUM: u2,
    +                ///  the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,... Can be configured in CONF state.
    +                DIN1_NUM: u2,
    +                ///  the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,... Can be configured in CONF state.
    +                DIN2_NUM: u2,
    +                ///  the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,... Can be configured in CONF state.
    +                DIN3_NUM: u2,
    +                padding: u24,
    +            }),
    +            ///  SPI output delay mode configuration
    +            DOUT_MODE: mmio.Mmio(packed struct(u32) {
    +                ///  The output signal 0 is delayed by the SPI module clock, 0: output without delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can be configured in CONF state.
    +                DOUT0_MODE: u1,
    +                ///  The output signal 1 is delayed by the SPI module clock, 0: output without delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can be configured in CONF state.
    +                DOUT1_MODE: u1,
    +                ///  The output signal 2 is delayed by the SPI module clock, 0: output without delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can be configured in CONF state.
    +                DOUT2_MODE: u1,
    +                ///  The output signal 3 is delayed by the SPI module clock, 0: output without delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can be configured in CONF state.
    +                DOUT3_MODE: u1,
    +                padding: u28,
    +            }),
    +            ///  SPI DMA control register
    +            DMA_CONF: mmio.Mmio(packed struct(u32) {
    +                reserved18: u18,
    +                ///  Enable dma segment transfer in spi dma half slave mode. 1: enable. 0: disable.
    +                DMA_SLV_SEG_TRANS_EN: u1,
    +                ///  1: spi_dma_infifo_full_vld is cleared by spi slave cmd 5. 0: spi_dma_infifo_full_vld is cleared by spi_trans_done.
    +                SLV_RX_SEG_TRANS_CLR_EN: u1,
    +                ///  1: spi_dma_outfifo_empty_vld is cleared by spi slave cmd 6. 0: spi_dma_outfifo_empty_vld is cleared by spi_trans_done.
    +                SLV_TX_SEG_TRANS_CLR_EN: u1,
    +                ///  1: spi_dma_inlink_eof is set when the number of dma pushed data bytes is equal to the value of spi_slv/mst_dma_rd_bytelen[19:0] in spi dma transition. 0: spi_dma_inlink_eof is set by spi_trans_done in non-seg-trans or spi_dma_seg_trans_done in seg-trans.
    +                RX_EOF_EN: u1,
    +                reserved27: u5,
    +                ///  Set this bit to enable SPI DMA controlled receive data mode.
    +                DMA_RX_ENA: u1,
    +                ///  Set this bit to enable SPI DMA controlled send data mode.
    +                DMA_TX_ENA: u1,
    +                ///  Set this bit to reset RX AFIFO, which is used to receive data in SPI master and slave mode transfer.
    +                RX_AFIFO_RST: u1,
    +                ///  Set this bit to reset BUF TX AFIFO, which is used send data out in SPI slave CPU controlled mode transfer and master mode transfer.
    +                BUF_AFIFO_RST: u1,
    +                ///  Set this bit to reset DMA TX AFIFO, which is used to send data out in SPI slave DMA controlled mode transfer.
    +                DMA_AFIFO_RST: u1,
    +            }),
    +            ///  SPI DMA interrupt enable register
    +            DMA_INT_ENA: mmio.Mmio(packed struct(u32) {
    +                ///  The enable bit for SPI_DMA_INFIFO_FULL_ERR_INT interrupt.
    +                DMA_INFIFO_FULL_ERR_INT_ENA: u1,
    +                ///  The enable bit for SPI_DMA_OUTFIFO_EMPTY_ERR_INT interrupt.
    +                DMA_OUTFIFO_EMPTY_ERR_INT_ENA: u1,
    +                ///  The enable bit for SPI slave Ex_QPI interrupt.
    +                SLV_EX_QPI_INT_ENA: u1,
    +                ///  The enable bit for SPI slave En_QPI interrupt.
    +                SLV_EN_QPI_INT_ENA: u1,
    +                ///  The enable bit for SPI slave CMD7 interrupt.
    +                SLV_CMD7_INT_ENA: u1,
    +                ///  The enable bit for SPI slave CMD8 interrupt.
    +                SLV_CMD8_INT_ENA: u1,
    +                ///  The enable bit for SPI slave CMD9 interrupt.
    +                SLV_CMD9_INT_ENA: u1,
    +                ///  The enable bit for SPI slave CMDA interrupt.
    +                SLV_CMDA_INT_ENA: u1,
    +                ///  The enable bit for SPI_SLV_RD_DMA_DONE_INT interrupt.
    +                SLV_RD_DMA_DONE_INT_ENA: u1,
    +                ///  The enable bit for SPI_SLV_WR_DMA_DONE_INT interrupt.
    +                SLV_WR_DMA_DONE_INT_ENA: u1,
    +                ///  The enable bit for SPI_SLV_RD_BUF_DONE_INT interrupt.
    +                SLV_RD_BUF_DONE_INT_ENA: u1,
    +                ///  The enable bit for SPI_SLV_WR_BUF_DONE_INT interrupt.
    +                SLV_WR_BUF_DONE_INT_ENA: u1,
    +                ///  The enable bit for SPI_TRANS_DONE_INT interrupt.
    +                TRANS_DONE_INT_ENA: u1,
    +                ///  The enable bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt.
    +                DMA_SEG_TRANS_DONE_INT_ENA: u1,
    +                ///  The enable bit for SPI_SEG_MAGIC_ERR_INT interrupt.
    +                SEG_MAGIC_ERR_INT_ENA: u1,
    +                ///  The enable bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt.
    +                SLV_BUF_ADDR_ERR_INT_ENA: u1,
    +                ///  The enable bit for SPI_SLV_CMD_ERR_INT interrupt.
    +                SLV_CMD_ERR_INT_ENA: u1,
    +                ///  The enable bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt.
    +                MST_RX_AFIFO_WFULL_ERR_INT_ENA: u1,
    +                ///  The enable bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt.
    +                MST_TX_AFIFO_REMPTY_ERR_INT_ENA: u1,
    +                ///  The enable bit for SPI_APP2_INT interrupt.
    +                APP2_INT_ENA: u1,
    +                ///  The enable bit for SPI_APP1_INT interrupt.
    +                APP1_INT_ENA: u1,
    +                padding: u11,
    +            }),
    +            ///  SPI DMA interrupt clear register
    +            DMA_INT_CLR: mmio.Mmio(packed struct(u32) {
    +                ///  The clear bit for SPI_DMA_INFIFO_FULL_ERR_INT interrupt.
    +                DMA_INFIFO_FULL_ERR_INT_CLR: u1,
    +                ///  The clear bit for SPI_DMA_OUTFIFO_EMPTY_ERR_INT interrupt.
    +                DMA_OUTFIFO_EMPTY_ERR_INT_CLR: u1,
    +                ///  The clear bit for SPI slave Ex_QPI interrupt.
    +                SLV_EX_QPI_INT_CLR: u1,
    +                ///  The clear bit for SPI slave En_QPI interrupt.
    +                SLV_EN_QPI_INT_CLR: u1,
    +                ///  The clear bit for SPI slave CMD7 interrupt.
    +                SLV_CMD7_INT_CLR: u1,
    +                ///  The clear bit for SPI slave CMD8 interrupt.
    +                SLV_CMD8_INT_CLR: u1,
    +                ///  The clear bit for SPI slave CMD9 interrupt.
    +                SLV_CMD9_INT_CLR: u1,
    +                ///  The clear bit for SPI slave CMDA interrupt.
    +                SLV_CMDA_INT_CLR: u1,
    +                ///  The clear bit for SPI_SLV_RD_DMA_DONE_INT interrupt.
    +                SLV_RD_DMA_DONE_INT_CLR: u1,
    +                ///  The clear bit for SPI_SLV_WR_DMA_DONE_INT interrupt.
    +                SLV_WR_DMA_DONE_INT_CLR: u1,
    +                ///  The clear bit for SPI_SLV_RD_BUF_DONE_INT interrupt.
    +                SLV_RD_BUF_DONE_INT_CLR: u1,
    +                ///  The clear bit for SPI_SLV_WR_BUF_DONE_INT interrupt.
    +                SLV_WR_BUF_DONE_INT_CLR: u1,
    +                ///  The clear bit for SPI_TRANS_DONE_INT interrupt.
    +                TRANS_DONE_INT_CLR: u1,
    +                ///  The clear bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt.
    +                DMA_SEG_TRANS_DONE_INT_CLR: u1,
    +                ///  The clear bit for SPI_SEG_MAGIC_ERR_INT interrupt.
    +                SEG_MAGIC_ERR_INT_CLR: u1,
    +                ///  The clear bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt.
    +                SLV_BUF_ADDR_ERR_INT_CLR: u1,
    +                ///  The clear bit for SPI_SLV_CMD_ERR_INT interrupt.
    +                SLV_CMD_ERR_INT_CLR: u1,
    +                ///  The clear bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt.
    +                MST_RX_AFIFO_WFULL_ERR_INT_CLR: u1,
    +                ///  The clear bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt.
    +                MST_TX_AFIFO_REMPTY_ERR_INT_CLR: u1,
    +                ///  The clear bit for SPI_APP2_INT interrupt.
    +                APP2_INT_CLR: u1,
    +                ///  The clear bit for SPI_APP1_INT interrupt.
    +                APP1_INT_CLR: u1,
    +                padding: u11,
    +            }),
    +            ///  SPI DMA interrupt raw register
    +            DMA_INT_RAW: mmio.Mmio(packed struct(u32) {
    +                ///  1: The current data rate of DMA Rx is smaller than that of SPI, which will lose the receive data. 0: Others.
    +                DMA_INFIFO_FULL_ERR_INT_RAW: u1,
    +                ///  1: The current data rate of DMA TX is smaller than that of SPI. SPI will stop in master mode and send out all 0 in slave mode. 0: Others.
    +                DMA_OUTFIFO_EMPTY_ERR_INT_RAW: u1,
    +                ///  The raw bit for SPI slave Ex_QPI interrupt. 1: SPI slave mode Ex_QPI transmission is ended. 0: Others.
    +                SLV_EX_QPI_INT_RAW: u1,
    +                ///  The raw bit for SPI slave En_QPI interrupt. 1: SPI slave mode En_QPI transmission is ended. 0: Others.
    +                SLV_EN_QPI_INT_RAW: u1,
    +                ///  The raw bit for SPI slave CMD7 interrupt. 1: SPI slave mode CMD7 transmission is ended. 0: Others.
    +                SLV_CMD7_INT_RAW: u1,
    +                ///  The raw bit for SPI slave CMD8 interrupt. 1: SPI slave mode CMD8 transmission is ended. 0: Others.
    +                SLV_CMD8_INT_RAW: u1,
    +                ///  The raw bit for SPI slave CMD9 interrupt. 1: SPI slave mode CMD9 transmission is ended. 0: Others.
    +                SLV_CMD9_INT_RAW: u1,
    +                ///  The raw bit for SPI slave CMDA interrupt. 1: SPI slave mode CMDA transmission is ended. 0: Others.
    +                SLV_CMDA_INT_RAW: u1,
    +                ///  The raw bit for SPI_SLV_RD_DMA_DONE_INT interrupt. 1: SPI slave mode Rd_DMA transmission is ended. 0: Others.
    +                SLV_RD_DMA_DONE_INT_RAW: u1,
    +                ///  The raw bit for SPI_SLV_WR_DMA_DONE_INT interrupt. 1: SPI slave mode Wr_DMA transmission is ended. 0: Others.
    +                SLV_WR_DMA_DONE_INT_RAW: u1,
    +                ///  The raw bit for SPI_SLV_RD_BUF_DONE_INT interrupt. 1: SPI slave mode Rd_BUF transmission is ended. 0: Others.
    +                SLV_RD_BUF_DONE_INT_RAW: u1,
    +                ///  The raw bit for SPI_SLV_WR_BUF_DONE_INT interrupt. 1: SPI slave mode Wr_BUF transmission is ended. 0: Others.
    +                SLV_WR_BUF_DONE_INT_RAW: u1,
    +                ///  The raw bit for SPI_TRANS_DONE_INT interrupt. 1: SPI master mode transmission is ended. 0: others.
    +                TRANS_DONE_INT_RAW: u1,
    +                ///  The raw bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt. 1: spi master DMA full-duplex/half-duplex seg-conf-trans ends or slave half-duplex seg-trans ends. And data has been pushed to corresponding memory. 0: seg-conf-trans or seg-trans is not ended or not occurred.
    +                DMA_SEG_TRANS_DONE_INT_RAW: u1,
    +                ///  The raw bit for SPI_SEG_MAGIC_ERR_INT interrupt. 1: The magic value in CONF buffer is error in the DMA seg-conf-trans. 0: others.
    +                SEG_MAGIC_ERR_INT_RAW: u1,
    +                ///  The raw bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt. 1: The accessing data address of the current SPI slave mode CPU controlled FD, Wr_BUF or Rd_BUF transmission is bigger than 63. 0: Others.
    +                SLV_BUF_ADDR_ERR_INT_RAW: u1,
    +                ///  The raw bit for SPI_SLV_CMD_ERR_INT interrupt. 1: The slave command value in the current SPI slave HD mode transmission is not supported. 0: Others.
    +                SLV_CMD_ERR_INT_RAW: u1,
    +                ///  The raw bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt. 1: There is a RX AFIFO write-full error when SPI inputs data in master mode. 0: Others.
    +                MST_RX_AFIFO_WFULL_ERR_INT_RAW: u1,
    +                ///  The raw bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt. 1: There is a TX BUF AFIFO read-empty error when SPI outputs data in master mode. 0: Others.
    +                MST_TX_AFIFO_REMPTY_ERR_INT_RAW: u1,
    +                ///  The raw bit for SPI_APP2_INT interrupt. The value is only controlled by application.
    +                APP2_INT_RAW: u1,
    +                ///  The raw bit for SPI_APP1_INT interrupt. The value is only controlled by application.
    +                APP1_INT_RAW: u1,
    +                padding: u11,
    +            }),
    +            ///  SPI DMA interrupt status register
    +            DMA_INT_ST: mmio.Mmio(packed struct(u32) {
    +                ///  The status bit for SPI_DMA_INFIFO_FULL_ERR_INT interrupt.
    +                DMA_INFIFO_FULL_ERR_INT_ST: u1,
    +                ///  The status bit for SPI_DMA_OUTFIFO_EMPTY_ERR_INT interrupt.
    +                DMA_OUTFIFO_EMPTY_ERR_INT_ST: u1,
    +                ///  The status bit for SPI slave Ex_QPI interrupt.
    +                SLV_EX_QPI_INT_ST: u1,
    +                ///  The status bit for SPI slave En_QPI interrupt.
    +                SLV_EN_QPI_INT_ST: u1,
    +                ///  The status bit for SPI slave CMD7 interrupt.
    +                SLV_CMD7_INT_ST: u1,
    +                ///  The status bit for SPI slave CMD8 interrupt.
    +                SLV_CMD8_INT_ST: u1,
    +                ///  The status bit for SPI slave CMD9 interrupt.
    +                SLV_CMD9_INT_ST: u1,
    +                ///  The status bit for SPI slave CMDA interrupt.
    +                SLV_CMDA_INT_ST: u1,
    +                ///  The status bit for SPI_SLV_RD_DMA_DONE_INT interrupt.
    +                SLV_RD_DMA_DONE_INT_ST: u1,
    +                ///  The status bit for SPI_SLV_WR_DMA_DONE_INT interrupt.
    +                SLV_WR_DMA_DONE_INT_ST: u1,
    +                ///  The status bit for SPI_SLV_RD_BUF_DONE_INT interrupt.
    +                SLV_RD_BUF_DONE_INT_ST: u1,
    +                ///  The status bit for SPI_SLV_WR_BUF_DONE_INT interrupt.
    +                SLV_WR_BUF_DONE_INT_ST: u1,
    +                ///  The status bit for SPI_TRANS_DONE_INT interrupt.
    +                TRANS_DONE_INT_ST: u1,
    +                ///  The status bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt.
    +                DMA_SEG_TRANS_DONE_INT_ST: u1,
    +                ///  The status bit for SPI_SEG_MAGIC_ERR_INT interrupt.
    +                SEG_MAGIC_ERR_INT_ST: u1,
    +                ///  The status bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt.
    +                SLV_BUF_ADDR_ERR_INT_ST: u1,
    +                ///  The status bit for SPI_SLV_CMD_ERR_INT interrupt.
    +                SLV_CMD_ERR_INT_ST: u1,
    +                ///  The status bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt.
    +                MST_RX_AFIFO_WFULL_ERR_INT_ST: u1,
    +                ///  The status bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt.
    +                MST_TX_AFIFO_REMPTY_ERR_INT_ST: u1,
    +                ///  The status bit for SPI_APP2_INT interrupt.
    +                APP2_INT_ST: u1,
    +                ///  The status bit for SPI_APP1_INT interrupt.
    +                APP1_INT_ST: u1,
    +                padding: u11,
    +            }),
    +            reserved152: [84]u8,
    +            ///  SPI CPU-controlled buffer0
    +            W0: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF0: u32,
    +            }),
    +            ///  SPI CPU-controlled buffer1
    +            W1: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF1: u32,
    +            }),
    +            ///  SPI CPU-controlled buffer2
    +            W2: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF2: u32,
    +            }),
    +            ///  SPI CPU-controlled buffer3
    +            W3: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF3: u32,
    +            }),
    +            ///  SPI CPU-controlled buffer4
    +            W4: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF4: u32,
    +            }),
    +            ///  SPI CPU-controlled buffer5
    +            W5: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF5: u32,
    +            }),
    +            ///  SPI CPU-controlled buffer6
    +            W6: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF6: u32,
    +            }),
    +            ///  SPI CPU-controlled buffer7
    +            W7: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF7: u32,
    +            }),
    +            ///  SPI CPU-controlled buffer8
    +            W8: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF8: u32,
    +            }),
    +            ///  SPI CPU-controlled buffer9
    +            W9: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF9: u32,
    +            }),
    +            ///  SPI CPU-controlled buffer10
    +            W10: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF10: u32,
    +            }),
    +            ///  SPI CPU-controlled buffer11
    +            W11: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF11: u32,
    +            }),
    +            ///  SPI CPU-controlled buffer12
    +            W12: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF12: u32,
    +            }),
    +            ///  SPI CPU-controlled buffer13
    +            W13: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF13: u32,
    +            }),
    +            ///  SPI CPU-controlled buffer14
    +            W14: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF14: u32,
    +            }),
    +            ///  SPI CPU-controlled buffer15
    +            W15: mmio.Mmio(packed struct(u32) {
    +                ///  data buffer
    +                BUF15: u32,
    +            }),
    +            reserved224: [8]u8,
    +            ///  SPI slave control register
    +            SLAVE: mmio.Mmio(packed struct(u32) {
    +                ///  SPI clock mode bits. 0: SPI clock is off when CS inactive 1: SPI clock is delayed one cycle after CS inactive 2: SPI clock is delayed two cycles after CS inactive 3: SPI clock is alwasy on. Can be configured in CONF state.
    +                CLK_MODE: u2,
    +                ///  {CPOL, CPHA},1: support spi clk mode 1 and 3, first edge output data B[0]/B[7]. 0: support spi clk mode 0 and 2, first edge output data B[1]/B[6].
    +                CLK_MODE_13: u1,
    +                ///  It saves half a cycle when tsck is the same as rsck. 1: output data at rsck posedge 0: output data at tsck posedge
    +                RSCK_DATA_OUT: u1,
    +                reserved8: u4,
    +                ///  1: SPI_SLV_DATA_BITLEN stores data bit length of master-read-slave data length in DMA controlled mode(Rd_DMA). 0: others
    +                SLV_RDDMA_BITLEN_EN: u1,
    +                ///  1: SPI_SLV_DATA_BITLEN stores data bit length of master-write-to-slave data length in DMA controlled mode(Wr_DMA). 0: others
    +                SLV_WRDMA_BITLEN_EN: u1,
    +                ///  1: SPI_SLV_DATA_BITLEN stores data bit length of master-read-slave data length in CPU controlled mode(Rd_BUF). 0: others
    +                SLV_RDBUF_BITLEN_EN: u1,
    +                ///  1: SPI_SLV_DATA_BITLEN stores data bit length of master-write-to-slave data length in CPU controlled mode(Wr_BUF). 0: others
    +                SLV_WRBUF_BITLEN_EN: u1,
    +                reserved22: u10,
    +                ///  The magic value of BM table in master DMA seg-trans.
    +                DMA_SEG_MAGIC_VALUE: u4,
    +                ///  Set SPI work mode. 1: slave mode 0: master mode.
    +                MODE: u1,
    +                ///  Software reset enable, reset the spi clock line cs line and data lines. Can be configured in CONF state.
    +                SOFT_RESET: u1,
    +                ///  1: Enable the DMA CONF phase of current seg-trans operation, which means seg-trans will start. 0: This is not seg-trans mode.
    +                USR_CONF: u1,
    +                padding: u3,
    +            }),
    +            ///  SPI slave control register 1
    +            SLAVE1: mmio.Mmio(packed struct(u32) {
    +                ///  The transferred data bit length in SPI slave FD and HD mode.
    +                SLV_DATA_BITLEN: u18,
    +                ///  In the slave mode it is the value of command.
    +                SLV_LAST_COMMAND: u8,
    +                ///  In the slave mode it is the value of address.
    +                SLV_LAST_ADDR: u6,
    +            }),
    +            ///  SPI module clock and register clock control
    +            CLK_GATE: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to enable clk gate
    +                CLK_EN: u1,
    +                ///  Set this bit to power on the SPI module clock.
    +                MST_CLK_ACTIVE: u1,
    +                ///  This bit is used to select SPI module clock source in master mode. 1: PLL_CLK_80M. 0: XTAL CLK.
    +                MST_CLK_SEL: u1,
    +                padding: u29,
    +            }),
    +            reserved240: [4]u8,
    +            ///  Version control
    +            DATE: mmio.Mmio(packed struct(u32) {
    +                ///  SPI register version.
    +                DATE: u28,
    +                padding: u4,
    +            }),
    +        };
    +
    +        ///  System
    +        pub const SYSTEM = extern struct {
    +            ///  cpu_peripheral clock gating register
    +            CPU_PERI_CLK_EN: mmio.Mmio(packed struct(u32) {
    +                reserved6: u6,
    +                ///  reg_clk_en_assist_debug
    +                CLK_EN_ASSIST_DEBUG: u1,
    +                ///  reg_clk_en_dedicated_gpio
    +                CLK_EN_DEDICATED_GPIO: u1,
    +                padding: u24,
    +            }),
    +            ///  cpu_peripheral reset register
    +            CPU_PERI_RST_EN: mmio.Mmio(packed struct(u32) {
    +                reserved6: u6,
    +                ///  reg_rst_en_assist_debug
    +                RST_EN_ASSIST_DEBUG: u1,
    +                ///  reg_rst_en_dedicated_gpio
    +                RST_EN_DEDICATED_GPIO: u1,
    +                padding: u24,
    +            }),
    +            ///  cpu clock config register
    +            CPU_PER_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  reg_cpuperiod_sel
    +                CPUPERIOD_SEL: u2,
    +                ///  reg_pll_freq_sel
    +                PLL_FREQ_SEL: u1,
    +                ///  reg_cpu_wait_mode_force_on
    +                CPU_WAIT_MODE_FORCE_ON: u1,
    +                ///  reg_cpu_waiti_delay_num
    +                CPU_WAITI_DELAY_NUM: u4,
    +                padding: u24,
    +            }),
    +            ///  memory power down mask register
    +            MEM_PD_MASK: mmio.Mmio(packed struct(u32) {
    +                ///  reg_lslp_mem_pd_mask
    +                LSLP_MEM_PD_MASK: u1,
    +                padding: u31,
    +            }),
    +            ///  peripheral clock gating register
    +            PERIP_CLK_EN0: mmio.Mmio(packed struct(u32) {
    +                ///  reg_timers_clk_en
    +                TIMERS_CLK_EN: u1,
    +                ///  reg_spi01_clk_en
    +                SPI01_CLK_EN: u1,
    +                ///  reg_uart_clk_en
    +                UART_CLK_EN: u1,
    +                ///  reg_wdg_clk_en
    +                WDG_CLK_EN: u1,
    +                ///  reg_i2s0_clk_en
    +                I2S0_CLK_EN: u1,
    +                ///  reg_uart1_clk_en
    +                UART1_CLK_EN: u1,
    +                ///  reg_spi2_clk_en
    +                SPI2_CLK_EN: u1,
    +                ///  reg_ext0_clk_en
    +                I2C_EXT0_CLK_EN: u1,
    +                ///  reg_uhci0_clk_en
    +                UHCI0_CLK_EN: u1,
    +                ///  reg_rmt_clk_en
    +                RMT_CLK_EN: u1,
    +                ///  reg_pcnt_clk_en
    +                PCNT_CLK_EN: u1,
    +                ///  reg_ledc_clk_en
    +                LEDC_CLK_EN: u1,
    +                ///  reg_uhci1_clk_en
    +                UHCI1_CLK_EN: u1,
    +                ///  reg_timergroup_clk_en
    +                TIMERGROUP_CLK_EN: u1,
    +                ///  reg_efuse_clk_en
    +                EFUSE_CLK_EN: u1,
    +                ///  reg_timergroup1_clk_en
    +                TIMERGROUP1_CLK_EN: u1,
    +                ///  reg_spi3_clk_en
    +                SPI3_CLK_EN: u1,
    +                ///  reg_pwm0_clk_en
    +                PWM0_CLK_EN: u1,
    +                ///  reg_ext1_clk_en
    +                EXT1_CLK_EN: u1,
    +                ///  reg_can_clk_en
    +                CAN_CLK_EN: u1,
    +                ///  reg_pwm1_clk_en
    +                PWM1_CLK_EN: u1,
    +                ///  reg_i2s1_clk_en
    +                I2S1_CLK_EN: u1,
    +                ///  reg_spi2_dma_clk_en
    +                SPI2_DMA_CLK_EN: u1,
    +                ///  reg_usb_device_clk_en
    +                USB_DEVICE_CLK_EN: u1,
    +                ///  reg_uart_mem_clk_en
    +                UART_MEM_CLK_EN: u1,
    +                ///  reg_pwm2_clk_en
    +                PWM2_CLK_EN: u1,
    +                ///  reg_pwm3_clk_en
    +                PWM3_CLK_EN: u1,
    +                ///  reg_spi3_dma_clk_en
    +                SPI3_DMA_CLK_EN: u1,
    +                ///  reg_apb_saradc_clk_en
    +                APB_SARADC_CLK_EN: u1,
    +                ///  reg_systimer_clk_en
    +                SYSTIMER_CLK_EN: u1,
    +                ///  reg_adc2_arb_clk_en
    +                ADC2_ARB_CLK_EN: u1,
    +                ///  reg_spi4_clk_en
    +                SPI4_CLK_EN: u1,
    +            }),
    +            ///  peripheral clock gating register
    +            PERIP_CLK_EN1: mmio.Mmio(packed struct(u32) {
    +                reserved1: u1,
    +                ///  reg_crypto_aes_clk_en
    +                CRYPTO_AES_CLK_EN: u1,
    +                ///  reg_crypto_sha_clk_en
    +                CRYPTO_SHA_CLK_EN: u1,
    +                ///  reg_crypto_rsa_clk_en
    +                CRYPTO_RSA_CLK_EN: u1,
    +                ///  reg_crypto_ds_clk_en
    +                CRYPTO_DS_CLK_EN: u1,
    +                ///  reg_crypto_hmac_clk_en
    +                CRYPTO_HMAC_CLK_EN: u1,
    +                ///  reg_dma_clk_en
    +                DMA_CLK_EN: u1,
    +                ///  reg_sdio_host_clk_en
    +                SDIO_HOST_CLK_EN: u1,
    +                ///  reg_lcd_cam_clk_en
    +                LCD_CAM_CLK_EN: u1,
    +                ///  reg_uart2_clk_en
    +                UART2_CLK_EN: u1,
    +                ///  reg_tsens_clk_en
    +                TSENS_CLK_EN: u1,
    +                padding: u21,
    +            }),
    +            ///  reserved
    +            PERIP_RST_EN0: mmio.Mmio(packed struct(u32) {
    +                ///  reg_timers_rst
    +                TIMERS_RST: u1,
    +                ///  reg_spi01_rst
    +                SPI01_RST: u1,
    +                ///  reg_uart_rst
    +                UART_RST: u1,
    +                ///  reg_wdg_rst
    +                WDG_RST: u1,
    +                ///  reg_i2s0_rst
    +                I2S0_RST: u1,
    +                ///  reg_uart1_rst
    +                UART1_RST: u1,
    +                ///  reg_spi2_rst
    +                SPI2_RST: u1,
    +                ///  reg_ext0_rst
    +                I2C_EXT0_RST: u1,
    +                ///  reg_uhci0_rst
    +                UHCI0_RST: u1,
    +                ///  reg_rmt_rst
    +                RMT_RST: u1,
    +                ///  reg_pcnt_rst
    +                PCNT_RST: u1,
    +                ///  reg_ledc_rst
    +                LEDC_RST: u1,
    +                ///  reg_uhci1_rst
    +                UHCI1_RST: u1,
    +                ///  reg_timergroup_rst
    +                TIMERGROUP_RST: u1,
    +                ///  reg_efuse_rst
    +                EFUSE_RST: u1,
    +                ///  reg_timergroup1_rst
    +                TIMERGROUP1_RST: u1,
    +                ///  reg_spi3_rst
    +                SPI3_RST: u1,
    +                ///  reg_pwm0_rst
    +                PWM0_RST: u1,
    +                ///  reg_ext1_rst
    +                EXT1_RST: u1,
    +                ///  reg_can_rst
    +                CAN_RST: u1,
    +                ///  reg_pwm1_rst
    +                PWM1_RST: u1,
    +                ///  reg_i2s1_rst
    +                I2S1_RST: u1,
    +                ///  reg_spi2_dma_rst
    +                SPI2_DMA_RST: u1,
    +                ///  reg_usb_device_rst
    +                USB_DEVICE_RST: u1,
    +                ///  reg_uart_mem_rst
    +                UART_MEM_RST: u1,
    +                ///  reg_pwm2_rst
    +                PWM2_RST: u1,
    +                ///  reg_pwm3_rst
    +                PWM3_RST: u1,
    +                ///  reg_spi3_dma_rst
    +                SPI3_DMA_RST: u1,
    +                ///  reg_apb_saradc_rst
    +                APB_SARADC_RST: u1,
    +                ///  reg_systimer_rst
    +                SYSTIMER_RST: u1,
    +                ///  reg_adc2_arb_rst
    +                ADC2_ARB_RST: u1,
    +                ///  reg_spi4_rst
    +                SPI4_RST: u1,
    +            }),
    +            ///  peripheral reset register
    +            PERIP_RST_EN1: mmio.Mmio(packed struct(u32) {
    +                reserved1: u1,
    +                ///  reg_crypto_aes_rst
    +                CRYPTO_AES_RST: u1,
    +                ///  reg_crypto_sha_rst
    +                CRYPTO_SHA_RST: u1,
    +                ///  reg_crypto_rsa_rst
    +                CRYPTO_RSA_RST: u1,
    +                ///  reg_crypto_ds_rst
    +                CRYPTO_DS_RST: u1,
    +                ///  reg_crypto_hmac_rst
    +                CRYPTO_HMAC_RST: u1,
    +                ///  reg_dma_rst
    +                DMA_RST: u1,
    +                ///  reg_sdio_host_rst
    +                SDIO_HOST_RST: u1,
    +                ///  reg_lcd_cam_rst
    +                LCD_CAM_RST: u1,
    +                ///  reg_uart2_rst
    +                UART2_RST: u1,
    +                ///  reg_tsens_rst
    +                TSENS_RST: u1,
    +                padding: u21,
    +            }),
    +            ///  clock config register
    +            BT_LPCK_DIV_INT: mmio.Mmio(packed struct(u32) {
    +                ///  reg_bt_lpck_div_num
    +                BT_LPCK_DIV_NUM: u12,
    +                padding: u20,
    +            }),
    +            ///  clock config register
    +            BT_LPCK_DIV_FRAC: mmio.Mmio(packed struct(u32) {
    +                ///  reg_bt_lpck_div_b
    +                BT_LPCK_DIV_B: u12,
    +                ///  reg_bt_lpck_div_a
    +                BT_LPCK_DIV_A: u12,
    +                ///  reg_lpclk_sel_rtc_slow
    +                LPCLK_SEL_RTC_SLOW: u1,
    +                ///  reg_lpclk_sel_8m
    +                LPCLK_SEL_8M: u1,
    +                ///  reg_lpclk_sel_xtal
    +                LPCLK_SEL_XTAL: u1,
    +                ///  reg_lpclk_sel_xtal32k
    +                LPCLK_SEL_XTAL32K: u1,
    +                ///  reg_lpclk_rtc_en
    +                LPCLK_RTC_EN: u1,
    +                padding: u3,
    +            }),
    +            ///  interrupt generate register
    +            CPU_INTR_FROM_CPU_0: mmio.Mmio(packed struct(u32) {
    +                ///  reg_cpu_intr_from_cpu_0
    +                CPU_INTR_FROM_CPU_0: u1,
    +                padding: u31,
    +            }),
    +            ///  interrupt generate register
    +            CPU_INTR_FROM_CPU_1: mmio.Mmio(packed struct(u32) {
    +                ///  reg_cpu_intr_from_cpu_1
    +                CPU_INTR_FROM_CPU_1: u1,
    +                padding: u31,
    +            }),
    +            ///  interrupt generate register
    +            CPU_INTR_FROM_CPU_2: mmio.Mmio(packed struct(u32) {
    +                ///  reg_cpu_intr_from_cpu_2
    +                CPU_INTR_FROM_CPU_2: u1,
    +                padding: u31,
    +            }),
    +            ///  interrupt generate register
    +            CPU_INTR_FROM_CPU_3: mmio.Mmio(packed struct(u32) {
    +                ///  reg_cpu_intr_from_cpu_3
    +                CPU_INTR_FROM_CPU_3: u1,
    +                padding: u31,
    +            }),
    +            ///  rsa memory power control register
    +            RSA_PD_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  reg_rsa_mem_pd
    +                RSA_MEM_PD: u1,
    +                ///  reg_rsa_mem_force_pu
    +                RSA_MEM_FORCE_PU: u1,
    +                ///  reg_rsa_mem_force_pd
    +                RSA_MEM_FORCE_PD: u1,
    +                padding: u29,
    +            }),
    +            ///  edma clcok and reset register
    +            EDMA_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  reg_edma_clk_on
    +                EDMA_CLK_ON: u1,
    +                ///  reg_edma_reset
    +                EDMA_RESET: u1,
    +                padding: u30,
    +            }),
    +            ///  cache control register
    +            CACHE_CONTROL: mmio.Mmio(packed struct(u32) {
    +                ///  reg_icache_clk_on
    +                ICACHE_CLK_ON: u1,
    +                ///  reg_icache_reset
    +                ICACHE_RESET: u1,
    +                ///  reg_dcache_clk_on
    +                DCACHE_CLK_ON: u1,
    +                ///  reg_dcache_reset
    +                DCACHE_RESET: u1,
    +                padding: u28,
    +            }),
    +            ///  SYSTEM_EXTERNAL_DEVICE_ENCRYPT_DECRYPT_CONTROL_REG
    +            EXTERNAL_DEVICE_ENCRYPT_DECRYPT_CONTROL: mmio.Mmio(packed struct(u32) {
    +                ///  reg_enable_spi_manual_encrypt
    +                ENABLE_SPI_MANUAL_ENCRYPT: u1,
    +                ///  reg_enable_download_db_encrypt
    +                ENABLE_DOWNLOAD_DB_ENCRYPT: u1,
    +                ///  reg_enable_download_g0cb_decrypt
    +                ENABLE_DOWNLOAD_G0CB_DECRYPT: u1,
    +                ///  reg_enable_download_manual_encrypt
    +                ENABLE_DOWNLOAD_MANUAL_ENCRYPT: u1,
    +                padding: u28,
    +            }),
    +            ///  fast memory config register
    +            RTC_FASTMEM_CONFIG: mmio.Mmio(packed struct(u32) {
    +                reserved8: u8,
    +                ///  reg_rtc_mem_crc_start
    +                RTC_MEM_CRC_START: u1,
    +                ///  reg_rtc_mem_crc_addr
    +                RTC_MEM_CRC_ADDR: u11,
    +                ///  reg_rtc_mem_crc_len
    +                RTC_MEM_CRC_LEN: u11,
    +                ///  reg_rtc_mem_crc_finish
    +                RTC_MEM_CRC_FINISH: u1,
    +            }),
    +            ///  reserved
    +            RTC_FASTMEM_CRC: mmio.Mmio(packed struct(u32) {
    +                ///  reg_rtc_mem_crc_res
    +                RTC_MEM_CRC_RES: u32,
    +            }),
    +            ///  eco register
    +            REDUNDANT_ECO_CTRL: mmio.Mmio(packed struct(u32) {
    +                ///  reg_redundant_eco_drive
    +                REDUNDANT_ECO_DRIVE: u1,
    +                ///  reg_redundant_eco_result
    +                REDUNDANT_ECO_RESULT: u1,
    +                padding: u30,
    +            }),
    +            ///  clock gating register
    +            CLOCK_GATE: mmio.Mmio(packed struct(u32) {
    +                ///  reg_clk_en
    +                CLK_EN: u1,
    +                padding: u31,
    +            }),
    +            ///  system clock config register
    +            SYSCLK_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  reg_pre_div_cnt
    +                PRE_DIV_CNT: u10,
    +                ///  reg_soc_clk_sel
    +                SOC_CLK_SEL: u2,
    +                ///  reg_clk_xtal_freq
    +                CLK_XTAL_FREQ: u7,
    +                ///  reg_clk_div_en
    +                CLK_DIV_EN: u1,
    +                padding: u12,
    +            }),
    +            ///  mem pvt register
    +            MEM_PVT: mmio.Mmio(packed struct(u32) {
    +                ///  reg_mem_path_len
    +                MEM_PATH_LEN: u4,
    +                ///  reg_mem_err_cnt_clr
    +                MEM_ERR_CNT_CLR: u1,
    +                ///  reg_mem_pvt_monitor_en
    +                MONITOR_EN: u1,
    +                ///  reg_mem_timing_err_cnt
    +                MEM_TIMING_ERR_CNT: u16,
    +                ///  reg_mem_vt_sel
    +                MEM_VT_SEL: u2,
    +                padding: u8,
    +            }),
    +            ///  mem pvt register
    +            COMB_PVT_LVT_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  reg_comb_path_len_lvt
    +                COMB_PATH_LEN_LVT: u5,
    +                ///  reg_comb_err_cnt_clr_lvt
    +                COMB_ERR_CNT_CLR_LVT: u1,
    +                ///  reg_comb_pvt_monitor_en_lvt
    +                COMB_PVT_MONITOR_EN_LVT: u1,
    +                padding: u25,
    +            }),
    +            ///  mem pvt register
    +            COMB_PVT_NVT_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  reg_comb_path_len_nvt
    +                COMB_PATH_LEN_NVT: u5,
    +                ///  reg_comb_err_cnt_clr_nvt
    +                COMB_ERR_CNT_CLR_NVT: u1,
    +                ///  reg_comb_pvt_monitor_en_nvt
    +                COMB_PVT_MONITOR_EN_NVT: u1,
    +                padding: u25,
    +            }),
    +            ///  mem pvt register
    +            COMB_PVT_HVT_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  reg_comb_path_len_hvt
    +                COMB_PATH_LEN_HVT: u5,
    +                ///  reg_comb_err_cnt_clr_hvt
    +                COMB_ERR_CNT_CLR_HVT: u1,
    +                ///  reg_comb_pvt_monitor_en_hvt
    +                COMB_PVT_MONITOR_EN_HVT: u1,
    +                padding: u25,
    +            }),
    +            ///  mem pvt register
    +            COMB_PVT_ERR_LVT_SITE0: mmio.Mmio(packed struct(u32) {
    +                ///  reg_comb_timing_err_cnt_lvt_site0
    +                COMB_TIMING_ERR_CNT_LVT_SITE0: u16,
    +                padding: u16,
    +            }),
    +            ///  mem pvt register
    +            COMB_PVT_ERR_NVT_SITE0: mmio.Mmio(packed struct(u32) {
    +                ///  reg_comb_timing_err_cnt_nvt_site0
    +                COMB_TIMING_ERR_CNT_NVT_SITE0: u16,
    +                padding: u16,
    +            }),
    +            ///  mem pvt register
    +            COMB_PVT_ERR_HVT_SITE0: mmio.Mmio(packed struct(u32) {
    +                ///  reg_comb_timing_err_cnt_hvt_site0
    +                COMB_TIMING_ERR_CNT_HVT_SITE0: u16,
    +                padding: u16,
    +            }),
    +            ///  mem pvt register
    +            COMB_PVT_ERR_LVT_SITE1: mmio.Mmio(packed struct(u32) {
    +                ///  reg_comb_timing_err_cnt_lvt_site1
    +                COMB_TIMING_ERR_CNT_LVT_SITE1: u16,
    +                padding: u16,
    +            }),
    +            ///  mem pvt register
    +            COMB_PVT_ERR_NVT_SITE1: mmio.Mmio(packed struct(u32) {
    +                ///  reg_comb_timing_err_cnt_nvt_site1
    +                COMB_TIMING_ERR_CNT_NVT_SITE1: u16,
    +                padding: u16,
    +            }),
    +            ///  mem pvt register
    +            COMB_PVT_ERR_HVT_SITE1: mmio.Mmio(packed struct(u32) {
    +                ///  reg_comb_timing_err_cnt_hvt_site1
    +                COMB_TIMING_ERR_CNT_HVT_SITE1: u16,
    +                padding: u16,
    +            }),
    +            ///  mem pvt register
    +            COMB_PVT_ERR_LVT_SITE2: mmio.Mmio(packed struct(u32) {
    +                ///  reg_comb_timing_err_cnt_lvt_site2
    +                COMB_TIMING_ERR_CNT_LVT_SITE2: u16,
    +                padding: u16,
    +            }),
    +            ///  mem pvt register
    +            COMB_PVT_ERR_NVT_SITE2: mmio.Mmio(packed struct(u32) {
    +                ///  reg_comb_timing_err_cnt_nvt_site2
    +                COMB_TIMING_ERR_CNT_NVT_SITE2: u16,
    +                padding: u16,
    +            }),
    +            ///  mem pvt register
    +            COMB_PVT_ERR_HVT_SITE2: mmio.Mmio(packed struct(u32) {
    +                ///  reg_comb_timing_err_cnt_hvt_site2
    +                COMB_TIMING_ERR_CNT_HVT_SITE2: u16,
    +                padding: u16,
    +            }),
    +            ///  mem pvt register
    +            COMB_PVT_ERR_LVT_SITE3: mmio.Mmio(packed struct(u32) {
    +                ///  reg_comb_timing_err_cnt_lvt_site3
    +                COMB_TIMING_ERR_CNT_LVT_SITE3: u16,
    +                padding: u16,
    +            }),
    +            ///  mem pvt register
    +            COMB_PVT_ERR_NVT_SITE3: mmio.Mmio(packed struct(u32) {
    +                ///  reg_comb_timing_err_cnt_nvt_site3
    +                COMB_TIMING_ERR_CNT_NVT_SITE3: u16,
    +                padding: u16,
    +            }),
    +            ///  mem pvt register
    +            COMB_PVT_ERR_HVT_SITE3: mmio.Mmio(packed struct(u32) {
    +                ///  reg_comb_timing_err_cnt_hvt_site3
    +                COMB_TIMING_ERR_CNT_HVT_SITE3: u16,
    +                padding: u16,
    +            }),
    +            reserved4092: [3936]u8,
    +            ///  Version register
    +            SYSTEM_REG_DATE: mmio.Mmio(packed struct(u32) {
    +                ///  reg_system_reg_date
    +                SYSTEM_REG_DATE: u28,
    +                padding: u4,
    +            }),
    +        };
    +
    +        ///  System Timer
    +        pub const SYSTIMER = extern struct {
    +            ///  SYSTIMER_CONF.
    +            CONF: mmio.Mmio(packed struct(u32) {
    +                ///  systimer clock force on
    +                SYSTIMER_CLK_FO: u1,
    +                reserved22: u21,
    +                ///  target2 work enable
    +                TARGET2_WORK_EN: u1,
    +                ///  target1 work enable
    +                TARGET1_WORK_EN: u1,
    +                ///  target0 work enable
    +                TARGET0_WORK_EN: u1,
    +                ///  If timer unit1 is stalled when core1 stalled
    +                TIMER_UNIT1_CORE1_STALL_EN: u1,
    +                ///  If timer unit1 is stalled when core0 stalled
    +                TIMER_UNIT1_CORE0_STALL_EN: u1,
    +                ///  If timer unit0 is stalled when core1 stalled
    +                TIMER_UNIT0_CORE1_STALL_EN: u1,
    +                ///  If timer unit0 is stalled when core0 stalled
    +                TIMER_UNIT0_CORE0_STALL_EN: u1,
    +                ///  timer unit1 work enable
    +                TIMER_UNIT1_WORK_EN: u1,
    +                ///  timer unit0 work enable
    +                TIMER_UNIT0_WORK_EN: u1,
    +                ///  register file clk gating
    +                CLK_EN: u1,
    +            }),
    +            ///  SYSTIMER_UNIT0_OP.
    +            UNIT0_OP: mmio.Mmio(packed struct(u32) {
    +                reserved29: u29,
    +                ///  reg_timer_unit0_value_valid
    +                TIMER_UNIT0_VALUE_VALID: u1,
    +                ///  update timer_unit0
    +                TIMER_UNIT0_UPDATE: u1,
    +                padding: u1,
    +            }),
    +            ///  SYSTIMER_UNIT1_OP.
    +            UNIT1_OP: mmio.Mmio(packed struct(u32) {
    +                reserved29: u29,
    +                ///  timer value is sync and valid
    +                TIMER_UNIT1_VALUE_VALID: u1,
    +                ///  update timer unit1
    +                TIMER_UNIT1_UPDATE: u1,
    +                padding: u1,
    +            }),
    +            ///  SYSTIMER_UNIT0_LOAD_HI.
    +            UNIT0_LOAD_HI: mmio.Mmio(packed struct(u32) {
    +                ///  timer unit0 load high 32 bit
    +                TIMER_UNIT0_LOAD_HI: u20,
    +                padding: u12,
    +            }),
    +            ///  SYSTIMER_UNIT0_LOAD_LO.
    +            UNIT0_LOAD_LO: mmio.Mmio(packed struct(u32) {
    +                ///  timer unit0 load low 32 bit
    +                TIMER_UNIT0_LOAD_LO: u32,
    +            }),
    +            ///  SYSTIMER_UNIT1_LOAD_HI.
    +            UNIT1_LOAD_HI: mmio.Mmio(packed struct(u32) {
    +                ///  timer unit1 load high 32 bit
    +                TIMER_UNIT1_LOAD_HI: u20,
    +                padding: u12,
    +            }),
    +            ///  SYSTIMER_UNIT1_LOAD_LO.
    +            UNIT1_LOAD_LO: mmio.Mmio(packed struct(u32) {
    +                ///  timer unit1 load low 32 bit
    +                TIMER_UNIT1_LOAD_LO: u32,
    +            }),
    +            ///  SYSTIMER_TARGET0_HI.
    +            TARGET0_HI: mmio.Mmio(packed struct(u32) {
    +                ///  timer taget0 high 32 bit
    +                TIMER_TARGET0_HI: u20,
    +                padding: u12,
    +            }),
    +            ///  SYSTIMER_TARGET0_LO.
    +            TARGET0_LO: mmio.Mmio(packed struct(u32) {
    +                ///  timer taget0 low 32 bit
    +                TIMER_TARGET0_LO: u32,
    +            }),
    +            ///  SYSTIMER_TARGET1_HI.
    +            TARGET1_HI: mmio.Mmio(packed struct(u32) {
    +                ///  timer taget1 high 32 bit
    +                TIMER_TARGET1_HI: u20,
    +                padding: u12,
    +            }),
    +            ///  SYSTIMER_TARGET1_LO.
    +            TARGET1_LO: mmio.Mmio(packed struct(u32) {
    +                ///  timer taget1 low 32 bit
    +                TIMER_TARGET1_LO: u32,
    +            }),
    +            ///  SYSTIMER_TARGET2_HI.
    +            TARGET2_HI: mmio.Mmio(packed struct(u32) {
    +                ///  timer taget2 high 32 bit
    +                TIMER_TARGET2_HI: u20,
    +                padding: u12,
    +            }),
    +            ///  SYSTIMER_TARGET2_LO.
    +            TARGET2_LO: mmio.Mmio(packed struct(u32) {
    +                ///  timer taget2 low 32 bit
    +                TIMER_TARGET2_LO: u32,
    +            }),
    +            ///  SYSTIMER_TARGET0_CONF.
    +            TARGET0_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  target0 period
    +                TARGET0_PERIOD: u26,
    +                reserved30: u4,
    +                ///  Set target0 to period mode
    +                TARGET0_PERIOD_MODE: u1,
    +                ///  select which unit to compare
    +                TARGET0_TIMER_UNIT_SEL: u1,
    +            }),
    +            ///  SYSTIMER_TARGET1_CONF.
    +            TARGET1_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  target1 period
    +                TARGET1_PERIOD: u26,
    +                reserved30: u4,
    +                ///  Set target1 to period mode
    +                TARGET1_PERIOD_MODE: u1,
    +                ///  select which unit to compare
    +                TARGET1_TIMER_UNIT_SEL: u1,
    +            }),
    +            ///  SYSTIMER_TARGET2_CONF.
    +            TARGET2_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  target2 period
    +                TARGET2_PERIOD: u26,
    +                reserved30: u4,
    +                ///  Set target2 to period mode
    +                TARGET2_PERIOD_MODE: u1,
    +                ///  select which unit to compare
    +                TARGET2_TIMER_UNIT_SEL: u1,
    +            }),
    +            ///  SYSTIMER_UNIT0_VALUE_HI.
    +            UNIT0_VALUE_HI: mmio.Mmio(packed struct(u32) {
    +                ///  timer read value high 32bit
    +                TIMER_UNIT0_VALUE_HI: u20,
    +                padding: u12,
    +            }),
    +            ///  SYSTIMER_UNIT0_VALUE_LO.
    +            UNIT0_VALUE_LO: mmio.Mmio(packed struct(u32) {
    +                ///  timer read value low 32bit
    +                TIMER_UNIT0_VALUE_LO: u32,
    +            }),
    +            ///  SYSTIMER_UNIT1_VALUE_HI.
    +            UNIT1_VALUE_HI: mmio.Mmio(packed struct(u32) {
    +                ///  timer read value high 32bit
    +                TIMER_UNIT1_VALUE_HI: u20,
    +                padding: u12,
    +            }),
    +            ///  SYSTIMER_UNIT1_VALUE_LO.
    +            UNIT1_VALUE_LO: mmio.Mmio(packed struct(u32) {
    +                ///  timer read value low 32bit
    +                TIMER_UNIT1_VALUE_LO: u32,
    +            }),
    +            ///  SYSTIMER_COMP0_LOAD.
    +            COMP0_LOAD: mmio.Mmio(packed struct(u32) {
    +                ///  timer comp0 load value
    +                TIMER_COMP0_LOAD: u1,
    +                padding: u31,
    +            }),
    +            ///  SYSTIMER_COMP1_LOAD.
    +            COMP1_LOAD: mmio.Mmio(packed struct(u32) {
    +                ///  timer comp1 load value
    +                TIMER_COMP1_LOAD: u1,
    +                padding: u31,
    +            }),
    +            ///  SYSTIMER_COMP2_LOAD.
    +            COMP2_LOAD: mmio.Mmio(packed struct(u32) {
    +                ///  timer comp2 load value
    +                TIMER_COMP2_LOAD: u1,
    +                padding: u31,
    +            }),
    +            ///  SYSTIMER_UNIT0_LOAD.
    +            UNIT0_LOAD: mmio.Mmio(packed struct(u32) {
    +                ///  timer unit0 load value
    +                TIMER_UNIT0_LOAD: u1,
    +                padding: u31,
    +            }),
    +            ///  SYSTIMER_UNIT1_LOAD.
    +            UNIT1_LOAD: mmio.Mmio(packed struct(u32) {
    +                ///  timer unit1 load value
    +                TIMER_UNIT1_LOAD: u1,
    +                padding: u31,
    +            }),
    +            ///  SYSTIMER_INT_ENA.
    +            INT_ENA: mmio.Mmio(packed struct(u32) {
    +                ///  interupt0 enable
    +                TARGET0_INT_ENA: u1,
    +                ///  interupt1 enable
    +                TARGET1_INT_ENA: u1,
    +                ///  interupt2 enable
    +                TARGET2_INT_ENA: u1,
    +                padding: u29,
    +            }),
    +            ///  SYSTIMER_INT_RAW.
    +            INT_RAW: mmio.Mmio(packed struct(u32) {
    +                ///  interupt0 raw
    +                TARGET0_INT_RAW: u1,
    +                ///  interupt1 raw
    +                TARGET1_INT_RAW: u1,
    +                ///  interupt2 raw
    +                TARGET2_INT_RAW: u1,
    +                padding: u29,
    +            }),
    +            ///  SYSTIMER_INT_CLR.
    +            INT_CLR: mmio.Mmio(packed struct(u32) {
    +                ///  interupt0 clear
    +                TARGET0_INT_CLR: u1,
    +                ///  interupt1 clear
    +                TARGET1_INT_CLR: u1,
    +                ///  interupt2 clear
    +                TARGET2_INT_CLR: u1,
    +                padding: u29,
    +            }),
    +            ///  SYSTIMER_INT_ST.
    +            INT_ST: mmio.Mmio(packed struct(u32) {
    +                ///  reg_target0_int_st
    +                TARGET0_INT_ST: u1,
    +                ///  reg_target1_int_st
    +                TARGET1_INT_ST: u1,
    +                ///  reg_target2_int_st
    +                TARGET2_INT_ST: u1,
    +                padding: u29,
    +            }),
    +            reserved252: [136]u8,
    +            ///  SYSTIMER_DATE.
    +            DATE: mmio.Mmio(packed struct(u32) {
    +                ///  reg_date
    +                DATE: u32,
    +            }),
    +        };
    +
    +        ///  Timer Group
    +        pub const TIMG0 = extern struct {
    +            ///  TIMG_T0CONFIG_REG.
    +            T0CONFIG: mmio.Mmio(packed struct(u32) {
    +                reserved9: u9,
    +                ///  reg_t0_use_xtal.
    +                T0_USE_XTAL: u1,
    +                ///  reg_t0_alarm_en.
    +                T0_ALARM_EN: u1,
    +                reserved12: u1,
    +                ///  reg_t0_divcnt_rst.
    +                T0_DIVCNT_RST: u1,
    +                ///  reg_t0_divider.
    +                T0_DIVIDER: u16,
    +                ///  reg_t0_autoreload.
    +                T0_AUTORELOAD: u1,
    +                ///  reg_t0_increase.
    +                T0_INCREASE: u1,
    +                ///  reg_t0_en.
    +                T0_EN: u1,
    +            }),
    +            ///  TIMG_T0LO_REG.
    +            T0LO: mmio.Mmio(packed struct(u32) {
    +                ///  t0_lo
    +                T0_LO: u32,
    +            }),
    +            ///  TIMG_T0HI_REG.
    +            T0HI: mmio.Mmio(packed struct(u32) {
    +                ///  t0_hi
    +                T0_HI: u22,
    +                padding: u10,
    +            }),
    +            ///  TIMG_T0UPDATE_REG.
    +            T0UPDATE: mmio.Mmio(packed struct(u32) {
    +                reserved31: u31,
    +                ///  t0_update
    +                T0_UPDATE: u1,
    +            }),
    +            ///  TIMG_T0ALARMLO_REG.
    +            T0ALARMLO: mmio.Mmio(packed struct(u32) {
    +                ///  reg_t0_alarm_lo.
    +                T0_ALARM_LO: u32,
    +            }),
    +            ///  TIMG_T0ALARMHI_REG.
    +            T0ALARMHI: mmio.Mmio(packed struct(u32) {
    +                ///  reg_t0_alarm_hi.
    +                T0_ALARM_HI: u22,
    +                padding: u10,
    +            }),
    +            ///  TIMG_T0LOADLO_REG.
    +            T0LOADLO: mmio.Mmio(packed struct(u32) {
    +                ///  reg_t0_load_lo.
    +                T0_LOAD_LO: u32,
    +            }),
    +            ///  TIMG_T0LOADHI_REG.
    +            T0LOADHI: mmio.Mmio(packed struct(u32) {
    +                ///  reg_t0_load_hi.
    +                T0_LOAD_HI: u22,
    +                padding: u10,
    +            }),
    +            ///  TIMG_T0LOAD_REG.
    +            T0LOAD: mmio.Mmio(packed struct(u32) {
    +                ///  t0_load
    +                T0_LOAD: u32,
    +            }),
    +            reserved72: [36]u8,
    +            ///  TIMG_WDTCONFIG0_REG.
    +            WDTCONFIG0: mmio.Mmio(packed struct(u32) {
    +                reserved12: u12,
    +                ///  reg_wdt_appcpu_reset_en.
    +                WDT_APPCPU_RESET_EN: u1,
    +                ///  reg_wdt_procpu_reset_en.
    +                WDT_PROCPU_RESET_EN: u1,
    +                ///  reg_wdt_flashboot_mod_en.
    +                WDT_FLASHBOOT_MOD_EN: u1,
    +                ///  reg_wdt_sys_reset_length.
    +                WDT_SYS_RESET_LENGTH: u3,
    +                ///  reg_wdt_cpu_reset_length.
    +                WDT_CPU_RESET_LENGTH: u3,
    +                ///  reg_wdt_use_xtal.
    +                WDT_USE_XTAL: u1,
    +                ///  reg_wdt_conf_update_en.
    +                WDT_CONF_UPDATE_EN: u1,
    +                ///  reg_wdt_stg3.
    +                WDT_STG3: u2,
    +                ///  reg_wdt_stg2.
    +                WDT_STG2: u2,
    +                ///  reg_wdt_stg1.
    +                WDT_STG1: u2,
    +                ///  reg_wdt_stg0.
    +                WDT_STG0: u2,
    +                ///  reg_wdt_en.
    +                WDT_EN: u1,
    +            }),
    +            ///  TIMG_WDTCONFIG1_REG.
    +            WDTCONFIG1: mmio.Mmio(packed struct(u32) {
    +                ///  reg_wdt_divcnt_rst.
    +                WDT_DIVCNT_RST: u1,
    +                reserved16: u15,
    +                ///  reg_wdt_clk_prescale.
    +                WDT_CLK_PRESCALE: u16,
    +            }),
    +            ///  TIMG_WDTCONFIG2_REG.
    +            WDTCONFIG2: mmio.Mmio(packed struct(u32) {
    +                ///  reg_wdt_stg0_hold.
    +                WDT_STG0_HOLD: u32,
    +            }),
    +            ///  TIMG_WDTCONFIG3_REG.
    +            WDTCONFIG3: mmio.Mmio(packed struct(u32) {
    +                ///  reg_wdt_stg1_hold.
    +                WDT_STG1_HOLD: u32,
    +            }),
    +            ///  TIMG_WDTCONFIG4_REG.
    +            WDTCONFIG4: mmio.Mmio(packed struct(u32) {
    +                ///  reg_wdt_stg2_hold.
    +                WDT_STG2_HOLD: u32,
    +            }),
    +            ///  TIMG_WDTCONFIG5_REG.
    +            WDTCONFIG5: mmio.Mmio(packed struct(u32) {
    +                ///  reg_wdt_stg3_hold.
    +                WDT_STG3_HOLD: u32,
    +            }),
    +            ///  TIMG_WDTFEED_REG.
    +            WDTFEED: mmio.Mmio(packed struct(u32) {
    +                ///  wdt_feed
    +                WDT_FEED: u32,
    +            }),
    +            ///  TIMG_WDTWPROTECT_REG.
    +            WDTWPROTECT: mmio.Mmio(packed struct(u32) {
    +                ///  reg_wdt_wkey.
    +                WDT_WKEY: u32,
    +            }),
    +            ///  TIMG_RTCCALICFG_REG.
    +            RTCCALICFG: mmio.Mmio(packed struct(u32) {
    +                reserved12: u12,
    +                ///  reg_rtc_cali_start_cycling.
    +                RTC_CALI_START_CYCLING: u1,
    +                ///  reg_rtc_cali_clk_sel.0:rtcslowclock.1:clk_80m.2:xtal_32k
    +                RTC_CALI_CLK_SEL: u2,
    +                ///  rtc_cali_rdy
    +                RTC_CALI_RDY: u1,
    +                ///  reg_rtc_cali_max.
    +                RTC_CALI_MAX: u15,
    +                ///  reg_rtc_cali_start.
    +                RTC_CALI_START: u1,
    +            }),
    +            ///  TIMG_RTCCALICFG1_REG.
    +            RTCCALICFG1: mmio.Mmio(packed struct(u32) {
    +                ///  rtc_cali_cycling_data_vld
    +                RTC_CALI_CYCLING_DATA_VLD: u1,
    +                reserved7: u6,
    +                ///  rtc_cali_value
    +                RTC_CALI_VALUE: u25,
    +            }),
    +            ///  INT_ENA_TIMG_REG
    +            INT_ENA_TIMERS: mmio.Mmio(packed struct(u32) {
    +                ///  t0_int_ena
    +                T0_INT_ENA: u1,
    +                ///  wdt_int_ena
    +                WDT_INT_ENA: u1,
    +                padding: u30,
    +            }),
    +            ///  INT_RAW_TIMG_REG
    +            INT_RAW_TIMERS: mmio.Mmio(packed struct(u32) {
    +                ///  t0_int_raw
    +                T0_INT_RAW: u1,
    +                ///  wdt_int_raw
    +                WDT_INT_RAW: u1,
    +                padding: u30,
    +            }),
    +            ///  INT_ST_TIMG_REG
    +            INT_ST_TIMERS: mmio.Mmio(packed struct(u32) {
    +                ///  t0_int_st
    +                T0_INT_ST: u1,
    +                ///  wdt_int_st
    +                WDT_INT_ST: u1,
    +                padding: u30,
    +            }),
    +            ///  INT_CLR_TIMG_REG
    +            INT_CLR_TIMERS: mmio.Mmio(packed struct(u32) {
    +                ///  t0_int_clr
    +                T0_INT_CLR: u1,
    +                ///  wdt_int_clr
    +                WDT_INT_CLR: u1,
    +                padding: u30,
    +            }),
    +            ///  TIMG_RTCCALICFG2_REG.
    +            RTCCALICFG2: mmio.Mmio(packed struct(u32) {
    +                ///  timeoutindicator
    +                RTC_CALI_TIMEOUT: u1,
    +                reserved3: u2,
    +                ///  reg_rtc_cali_timeout_rst_cnt.Cyclesthatreleasecalibrationtimeoutreset
    +                RTC_CALI_TIMEOUT_RST_CNT: u4,
    +                ///  reg_rtc_cali_timeout_thres.timeoutifcalivaluecountsoverthreshold
    +                RTC_CALI_TIMEOUT_THRES: u25,
    +            }),
    +            reserved248: [116]u8,
    +            ///  TIMG_NTIMG_DATE_REG.
    +            NTIMG_DATE: mmio.Mmio(packed struct(u32) {
    +                ///  reg_ntimers_date.
    +                NTIMGS_DATE: u28,
    +                padding: u4,
    +            }),
    +            ///  TIMG_REGCLK_REG.
    +            REGCLK: mmio.Mmio(packed struct(u32) {
    +                reserved29: u29,
    +                ///  reg_wdt_clk_is_active.
    +                WDT_CLK_IS_ACTIVE: u1,
    +                ///  reg_timer_clk_is_active.
    +                TIMER_CLK_IS_ACTIVE: u1,
    +                ///  reg_clk_en.
    +                CLK_EN: u1,
    +            }),
    +        };
    +
    +        ///  XTS-AES-128 Flash Encryption
    +        pub const XTS_AES = extern struct {
    +            ///  The memory that stores plaintext
    +            PLAIN_MEM: [16]u8,
    +            reserved64: [48]u8,
    +            ///  XTS-AES line-size register
    +            LINESIZE: mmio.Mmio(packed struct(u32) {
    +                ///  This bit stores the line size parameter. 0: 16Byte, 1: 32Byte.
    +                LINESIZE: u1,
    +                padding: u31,
    +            }),
    +            ///  XTS-AES destination register
    +            DESTINATION: mmio.Mmio(packed struct(u32) {
    +                ///  This bit stores the destination. 0: flash(default). 1: reserved.
    +                DESTINATION: u1,
    +                padding: u31,
    +            }),
    +            ///  XTS-AES physical address register
    +            PHYSICAL_ADDRESS: mmio.Mmio(packed struct(u32) {
    +                ///  Those bits stores the physical address. If linesize is 16-byte, the physical address should be aligned of 16 bytes. If linesize is 32-byte, the physical address should be aligned of 32 bytes.
    +                PHYSICAL_ADDRESS: u30,
    +                padding: u2,
    +            }),
    +            ///  XTS-AES trigger register
    +            TRIGGER: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to start manual encryption calculation
    +                TRIGGER: u1,
    +                padding: u31,
    +            }),
    +            ///  XTS-AES release register
    +            RELEASE: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to release the manual encrypted result, after that the result will be visible to spi
    +                RELEASE: u1,
    +                padding: u31,
    +            }),
    +            ///  XTS-AES destroy register
    +            DESTROY: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to destroy XTS-AES result.
    +                DESTROY: u1,
    +                padding: u31,
    +            }),
    +            ///  XTS-AES status register
    +            STATE: mmio.Mmio(packed struct(u32) {
    +                ///  Those bits shows XTS-AES status. 0=IDLE, 1=WORK, 2=RELEASE, 3=USE. IDLE means that XTS-AES is idle. WORK means that XTS-AES is busy with calculation. RELEASE means the encrypted result is generated but not visible to mspi. USE means that the encrypted result is visible to mspi.
    +                STATE: u2,
    +                padding: u30,
    +            }),
    +            ///  XTS-AES version control register
    +            DATE: mmio.Mmio(packed struct(u32) {
    +                ///  Those bits stores the version information of XTS-AES.
    +                DATE: u30,
    +                padding: u2,
    +            }),
    +        };
    +
    +        ///  Two-Wire Automotive Interface
    +        pub const TWAI = extern struct {
    +            ///  Mode Register
    +            MODE: mmio.Mmio(packed struct(u32) {
    +                ///  This bit is used to configure the operating mode of the TWAI Controller. 1: Reset mode; 0: Operating mode.
    +                RESET_MODE: u1,
    +                ///  1: Listen only mode. In this mode the nodes will only receive messages from the bus, without generating the acknowledge signal nor updating the RX error counter.
    +                LISTEN_ONLY_MODE: u1,
    +                ///  1: Self test mode. In this mode the TX nodes can perform a successful transmission without receiving the acknowledge signal. This mode is often used to test a single node with the self reception request command.
    +                SELF_TEST_MODE: u1,
    +                ///  This bit is used to configure the filter mode. 0: Dual filter mode; 1: Single filter mode.
    +                RX_FILTER_MODE: u1,
    +                padding: u28,
    +            }),
    +            ///  Command Register
    +            CMD: mmio.Mmio(packed struct(u32) {
    +                ///  Set the bit to 1 to allow the driving nodes start transmission.
    +                TX_REQ: u1,
    +                ///  Set the bit to 1 to cancel a pending transmission request.
    +                ABORT_TX: u1,
    +                ///  Set the bit to 1 to release the RX buffer.
    +                RELEASE_BUF: u1,
    +                ///  Set the bit to 1 to clear the data overrun status bit.
    +                CLR_OVERRUN: u1,
    +                ///  Self reception request command. Set the bit to 1 to allow a message be transmitted and received simultaneously.
    +                SELF_RX_REQ: u1,
    +                padding: u27,
    +            }),
    +            ///  Status register
    +            STATUS: mmio.Mmio(packed struct(u32) {
    +                ///  1: The data in the RX buffer is not empty, with at least one received data packet.
    +                RX_BUF_ST: u1,
    +                ///  1: The RX FIFO is full and data overrun has occurred.
    +                OVERRUN_ST: u1,
    +                ///  1: The TX buffer is empty, the CPU may write a message into it.
    +                TX_BUF_ST: u1,
    +                ///  1: The TWAI controller has successfully received a packet from the bus.
    +                TX_COMPLETE: u1,
    +                ///  1: The TWAI Controller is receiving a message from the bus.
    +                RX_ST: u1,
    +                ///  1: The TWAI Controller is transmitting a message to the bus.
    +                TX_ST: u1,
    +                ///  1: At least one of the RX/TX error counter has reached or exceeded the value set in register TWAI_ERR_WARNING_LIMIT_REG.
    +                ERR_ST: u1,
    +                ///  1: In bus-off status, the TWAI Controller is no longer involved in bus activities.
    +                BUS_OFF_ST: u1,
    +                ///  This bit reflects whether the data packet in the RX FIFO is complete. 1: The current packet is missing; 0: The current packet is complete
    +                MISS_ST: u1,
    +                padding: u23,
    +            }),
    +            ///  Interrupt Register
    +            INT_RAW: mmio.Mmio(packed struct(u32) {
    +                ///  Receive interrupt. If this bit is set to 1, it indicates there are messages to be handled in the RX FIFO.
    +                RX_INT_ST: u1,
    +                ///  Transmit interrupt. If this bit is set to 1, it indicates the message transmitting mis- sion is finished and a new transmission is able to execute.
    +                TX_INT_ST: u1,
    +                ///  Error warning interrupt. If this bit is set to 1, it indicates the error status signal and the bus-off status signal of Status register have changed (e.g., switched from 0 to 1 or from 1 to 0).
    +                ERR_WARN_INT_ST: u1,
    +                ///  Data overrun interrupt. If this bit is set to 1, it indicates a data overrun interrupt is generated in the RX FIFO.
    +                OVERRUN_INT_ST: u1,
    +                reserved5: u1,
    +                ///  Error passive interrupt. If this bit is set to 1, it indicates the TWAI Controller is switched between error active status and error passive status due to the change of error counters.
    +                ERR_PASSIVE_INT_ST: u1,
    +                ///  Arbitration lost interrupt. If this bit is set to 1, it indicates an arbitration lost interrupt is generated.
    +                ARB_LOST_INT_ST: u1,
    +                ///  Error interrupt. If this bit is set to 1, it indicates an error is detected on the bus.
    +                BUS_ERR_INT_ST: u1,
    +                padding: u24,
    +            }),
    +            ///  Interrupt Enable Register
    +            INT_ENA: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to 1 to enable receive interrupt.
    +                RX_INT_ENA: u1,
    +                ///  Set this bit to 1 to enable transmit interrupt.
    +                TX_INT_ENA: u1,
    +                ///  Set this bit to 1 to enable error warning interrupt.
    +                ERR_WARN_INT_ENA: u1,
    +                ///  Set this bit to 1 to enable data overrun interrupt.
    +                OVERRUN_INT_ENA: u1,
    +                reserved5: u1,
    +                ///  Set this bit to 1 to enable error passive interrupt.
    +                ERR_PASSIVE_INT_ENA: u1,
    +                ///  Set this bit to 1 to enable arbitration lost interrupt.
    +                ARB_LOST_INT_ENA: u1,
    +                ///  Set this bit to 1 to enable error interrupt.
    +                BUS_ERR_INT_ENA: u1,
    +                padding: u24,
    +            }),
    +            reserved24: [4]u8,
    +            ///  Bus Timing Register 0
    +            BUS_TIMING_0: mmio.Mmio(packed struct(u32) {
    +                ///  Baud Rate Prescaler, determines the frequency dividing ratio.
    +                BAUD_PRESC: u13,
    +                reserved14: u1,
    +                ///  Synchronization Jump Width (SJW), 1 \verb+~+ 14 Tq wide.
    +                SYNC_JUMP_WIDTH: u2,
    +                padding: u16,
    +            }),
    +            ///  Bus Timing Register 1
    +            BUS_TIMING_1: mmio.Mmio(packed struct(u32) {
    +                ///  The width of PBS1.
    +                TIME_SEG1: u4,
    +                ///  The width of PBS2.
    +                TIME_SEG2: u3,
    +                ///  The number of sample points. 0: the bus is sampled once; 1: the bus is sampled three times
    +                TIME_SAMP: u1,
    +                padding: u24,
    +            }),
    +            reserved44: [12]u8,
    +            ///  Arbitration Lost Capture Register
    +            ARB_LOST_CAP: mmio.Mmio(packed struct(u32) {
    +                ///  This register contains information about the bit position of lost arbitration.
    +                ARB_LOST_CAP: u5,
    +                padding: u27,
    +            }),
    +            ///  Error Code Capture Register
    +            ERR_CODE_CAP: mmio.Mmio(packed struct(u32) {
    +                ///  This register contains information about the location of errors, see Table 181 for details.
    +                ECC_SEGMENT: u5,
    +                ///  This register contains information about transmission direction of the node when error occurs. 1: Error occurs when receiving a message; 0: Error occurs when transmitting a message
    +                ECC_DIRECTION: u1,
    +                ///  This register contains information about error types: 00: bit error; 01: form error; 10: stuff error; 11: other type of error
    +                ECC_TYPE: u2,
    +                padding: u24,
    +            }),
    +            ///  Error Warning Limit Register
    +            ERR_WARNING_LIMIT: mmio.Mmio(packed struct(u32) {
    +                ///  Error warning threshold. In the case when any of a error counter value exceeds the threshold, or all the error counter values are below the threshold, an error warning interrupt will be triggered (given the enable signal is valid).
    +                ERR_WARNING_LIMIT: u8,
    +                padding: u24,
    +            }),
    +            ///  Receive Error Counter Register
    +            RX_ERR_CNT: mmio.Mmio(packed struct(u32) {
    +                ///  The RX error counter register, reflects value changes under reception status.
    +                RX_ERR_CNT: u8,
    +                padding: u24,
    +            }),
    +            ///  Transmit Error Counter Register
    +            TX_ERR_CNT: mmio.Mmio(packed struct(u32) {
    +                ///  The TX error counter register, reflects value changes under transmission status.
    +                TX_ERR_CNT: u8,
    +                padding: u24,
    +            }),
    +            ///  Data register 0
    +            DATA_0: mmio.Mmio(packed struct(u32) {
    +                ///  In reset mode, it is acceptance code register 0 with R/W Permission. In operation mode, it stores the 0th byte information of the data to be transmitted under operating mode.
    +                TX_BYTE_0: u8,
    +                padding: u24,
    +            }),
    +            ///  Data register 1
    +            DATA_1: mmio.Mmio(packed struct(u32) {
    +                ///  In reset mode, it is acceptance code register 1 with R/W Permission. In operation mode, it stores the 1st byte information of the data to be transmitted under operating mode.
    +                TX_BYTE_1: u8,
    +                padding: u24,
    +            }),
    +            ///  Data register 2
    +            DATA_2: mmio.Mmio(packed struct(u32) {
    +                ///  In reset mode, it is acceptance code register 2 with R/W Permission. In operation mode, it stores the 2nd byte information of the data to be transmitted under operating mode.
    +                TX_BYTE_2: u8,
    +                padding: u24,
    +            }),
    +            ///  Data register 3
    +            DATA_3: mmio.Mmio(packed struct(u32) {
    +                ///  In reset mode, it is acceptance code register 3 with R/W Permission. In operation mode, it stores the 3rd byte information of the data to be transmitted under operating mode.
    +                TX_BYTE_3: u8,
    +                padding: u24,
    +            }),
    +            ///  Data register 4
    +            DATA_4: mmio.Mmio(packed struct(u32) {
    +                ///  In reset mode, it is acceptance mask register 0 with R/W Permission. In operation mode, it stores the 4th byte information of the data to be transmitted under operating mode.
    +                TX_BYTE_4: u8,
    +                padding: u24,
    +            }),
    +            ///  Data register 5
    +            DATA_5: mmio.Mmio(packed struct(u32) {
    +                ///  In reset mode, it is acceptance mask register 1 with R/W Permission. In operation mode, it stores the 5th byte information of the data to be transmitted under operating mode.
    +                TX_BYTE_5: u8,
    +                padding: u24,
    +            }),
    +            ///  Data register 6
    +            DATA_6: mmio.Mmio(packed struct(u32) {
    +                ///  In reset mode, it is acceptance mask register 2 with R/W Permission. In operation mode, it stores the 6th byte information of the data to be transmitted under operating mode.
    +                TX_BYTE_6: u8,
    +                padding: u24,
    +            }),
    +            ///  Data register 7
    +            DATA_7: mmio.Mmio(packed struct(u32) {
    +                ///  In reset mode, it is acceptance mask register 3 with R/W Permission. In operation mode, it stores the 7th byte information of the data to be transmitted under operating mode.
    +                TX_BYTE_7: u8,
    +                padding: u24,
    +            }),
    +            ///  Data register 8
    +            DATA_8: mmio.Mmio(packed struct(u32) {
    +                ///  Stored the 8th byte information of the data to be transmitted under operating mode.
    +                TX_BYTE_8: u8,
    +                padding: u24,
    +            }),
    +            ///  Data register 9
    +            DATA_9: mmio.Mmio(packed struct(u32) {
    +                ///  Stored the 9th byte information of the data to be transmitted under operating mode.
    +                TX_BYTE_9: u8,
    +                padding: u24,
    +            }),
    +            ///  Data register 10
    +            DATA_10: mmio.Mmio(packed struct(u32) {
    +                ///  Stored the 10th byte information of the data to be transmitted under operating mode.
    +                TX_BYTE_10: u8,
    +                padding: u24,
    +            }),
    +            ///  Data register 11
    +            DATA_11: mmio.Mmio(packed struct(u32) {
    +                ///  Stored the 11th byte information of the data to be transmitted under operating mode.
    +                TX_BYTE_11: u8,
    +                padding: u24,
    +            }),
    +            ///  Data register 12
    +            DATA_12: mmio.Mmio(packed struct(u32) {
    +                ///  Stored the 12th byte information of the data to be transmitted under operating mode.
    +                TX_BYTE_12: u8,
    +                padding: u24,
    +            }),
    +            ///  Receive Message Counter Register
    +            RX_MESSAGE_CNT: mmio.Mmio(packed struct(u32) {
    +                ///  This register reflects the number of messages available within the RX FIFO.
    +                RX_MESSAGE_COUNTER: u7,
    +                padding: u25,
    +            }),
    +            reserved124: [4]u8,
    +            ///  Clock Divider register
    +            CLOCK_DIVIDER: mmio.Mmio(packed struct(u32) {
    +                ///  These bits are used to configure frequency dividing coefficients of the external CLKOUT pin.
    +                CD: u8,
    +                ///  This bit can be configured under reset mode. 1: Disable the external CLKOUT pin; 0: Enable the external CLKOUT pin
    +                CLOCK_OFF: u1,
    +                padding: u23,
    +            }),
    +        };
    +
    +        ///  UART (Universal Asynchronous Receiver-Transmitter) Controller
    +        pub const UART0 = extern struct {
    +            ///  FIFO data register
    +            FIFO: mmio.Mmio(packed struct(u32) {
    +                ///  UART 0 accesses FIFO via this register.
    +                RXFIFO_RD_BYTE: u8,
    +                padding: u24,
    +            }),
    +            ///  Raw interrupt status
    +            INT_RAW: mmio.Mmio(packed struct(u32) {
    +                ///  This interrupt raw bit turns to high level when receiver receives more data than what rxfifo_full_thrhd specifies.
    +                RXFIFO_FULL_INT_RAW: u1,
    +                ///  This interrupt raw bit turns to high level when the amount of data in Tx-FIFO is less than what txfifo_empty_thrhd specifies .
    +                TXFIFO_EMPTY_INT_RAW: u1,
    +                ///  This interrupt raw bit turns to high level when receiver detects a parity error in the data.
    +                PARITY_ERR_INT_RAW: u1,
    +                ///  This interrupt raw bit turns to high level when receiver detects a data frame error .
    +                FRM_ERR_INT_RAW: u1,
    +                ///  This interrupt raw bit turns to high level when receiver receives more data than the FIFO can store.
    +                RXFIFO_OVF_INT_RAW: u1,
    +                ///  This interrupt raw bit turns to high level when receiver detects the edge change of DSRn signal.
    +                DSR_CHG_INT_RAW: u1,
    +                ///  This interrupt raw bit turns to high level when receiver detects the edge change of CTSn signal.
    +                CTS_CHG_INT_RAW: u1,
    +                ///  This interrupt raw bit turns to high level when receiver detects a 0 after the stop bit.
    +                BRK_DET_INT_RAW: u1,
    +                ///  This interrupt raw bit turns to high level when receiver takes more time than rx_tout_thrhd to receive a byte.
    +                RXFIFO_TOUT_INT_RAW: u1,
    +                ///  This interrupt raw bit turns to high level when receiver recevies Xon char when uart_sw_flow_con_en is set to 1.
    +                SW_XON_INT_RAW: u1,
    +                ///  This interrupt raw bit turns to high level when receiver receives Xoff char when uart_sw_flow_con_en is set to 1.
    +                SW_XOFF_INT_RAW: u1,
    +                ///  This interrupt raw bit turns to high level when receiver detects a glitch in the middle of a start bit.
    +                GLITCH_DET_INT_RAW: u1,
    +                ///  This interrupt raw bit turns to high level when transmitter completes sending NULL characters, after all data in Tx-FIFO are sent.
    +                TX_BRK_DONE_INT_RAW: u1,
    +                ///  This interrupt raw bit turns to high level when transmitter has kept the shortest duration after sending the last data.
    +                TX_BRK_IDLE_DONE_INT_RAW: u1,
    +                ///  This interrupt raw bit turns to high level when transmitter has send out all data in FIFO.
    +                TX_DONE_INT_RAW: u1,
    +                ///  This interrupt raw bit turns to high level when receiver detects a parity error from the echo of transmitter in rs485 mode.
    +                RS485_PARITY_ERR_INT_RAW: u1,
    +                ///  This interrupt raw bit turns to high level when receiver detects a data frame error from the echo of transmitter in rs485 mode.
    +                RS485_FRM_ERR_INT_RAW: u1,
    +                ///  This interrupt raw bit turns to high level when detects a clash between transmitter and receiver in rs485 mode.
    +                RS485_CLASH_INT_RAW: u1,
    +                ///  This interrupt raw bit turns to high level when receiver detects the configured at_cmd char.
    +                AT_CMD_CHAR_DET_INT_RAW: u1,
    +                ///  This interrupt raw bit turns to high level when input rxd edge changes more times than what reg_active_threshold specifies in light sleeping mode.
    +                WAKEUP_INT_RAW: u1,
    +                padding: u12,
    +            }),
    +            ///  Masked interrupt status
    +            INT_ST: mmio.Mmio(packed struct(u32) {
    +                ///  This is the status bit for rxfifo_full_int_raw when rxfifo_full_int_ena is set to 1.
    +                RXFIFO_FULL_INT_ST: u1,
    +                ///  This is the status bit for txfifo_empty_int_raw when txfifo_empty_int_ena is set to 1.
    +                TXFIFO_EMPTY_INT_ST: u1,
    +                ///  This is the status bit for parity_err_int_raw when parity_err_int_ena is set to 1.
    +                PARITY_ERR_INT_ST: u1,
    +                ///  This is the status bit for frm_err_int_raw when frm_err_int_ena is set to 1.
    +                FRM_ERR_INT_ST: u1,
    +                ///  This is the status bit for rxfifo_ovf_int_raw when rxfifo_ovf_int_ena is set to 1.
    +                RXFIFO_OVF_INT_ST: u1,
    +                ///  This is the status bit for dsr_chg_int_raw when dsr_chg_int_ena is set to 1.
    +                DSR_CHG_INT_ST: u1,
    +                ///  This is the status bit for cts_chg_int_raw when cts_chg_int_ena is set to 1.
    +                CTS_CHG_INT_ST: u1,
    +                ///  This is the status bit for brk_det_int_raw when brk_det_int_ena is set to 1.
    +                BRK_DET_INT_ST: u1,
    +                ///  This is the status bit for rxfifo_tout_int_raw when rxfifo_tout_int_ena is set to 1.
    +                RXFIFO_TOUT_INT_ST: u1,
    +                ///  This is the status bit for sw_xon_int_raw when sw_xon_int_ena is set to 1.
    +                SW_XON_INT_ST: u1,
    +                ///  This is the status bit for sw_xoff_int_raw when sw_xoff_int_ena is set to 1.
    +                SW_XOFF_INT_ST: u1,
    +                ///  This is the status bit for glitch_det_int_raw when glitch_det_int_ena is set to 1.
    +                GLITCH_DET_INT_ST: u1,
    +                ///  This is the status bit for tx_brk_done_int_raw when tx_brk_done_int_ena is set to 1.
    +                TX_BRK_DONE_INT_ST: u1,
    +                ///  This is the stauts bit for tx_brk_idle_done_int_raw when tx_brk_idle_done_int_ena is set to 1.
    +                TX_BRK_IDLE_DONE_INT_ST: u1,
    +                ///  This is the status bit for tx_done_int_raw when tx_done_int_ena is set to 1.
    +                TX_DONE_INT_ST: u1,
    +                ///  This is the status bit for rs485_parity_err_int_raw when rs485_parity_int_ena is set to 1.
    +                RS485_PARITY_ERR_INT_ST: u1,
    +                ///  This is the status bit for rs485_frm_err_int_raw when rs485_fm_err_int_ena is set to 1.
    +                RS485_FRM_ERR_INT_ST: u1,
    +                ///  This is the status bit for rs485_clash_int_raw when rs485_clash_int_ena is set to 1.
    +                RS485_CLASH_INT_ST: u1,
    +                ///  This is the status bit for at_cmd_det_int_raw when at_cmd_char_det_int_ena is set to 1.
    +                AT_CMD_CHAR_DET_INT_ST: u1,
    +                ///  This is the status bit for uart_wakeup_int_raw when uart_wakeup_int_ena is set to 1.
    +                WAKEUP_INT_ST: u1,
    +                padding: u12,
    +            }),
    +            ///  Interrupt enable bits
    +            INT_ENA: mmio.Mmio(packed struct(u32) {
    +                ///  This is the enable bit for rxfifo_full_int_st register.
    +                RXFIFO_FULL_INT_ENA: u1,
    +                ///  This is the enable bit for txfifo_empty_int_st register.
    +                TXFIFO_EMPTY_INT_ENA: u1,
    +                ///  This is the enable bit for parity_err_int_st register.
    +                PARITY_ERR_INT_ENA: u1,
    +                ///  This is the enable bit for frm_err_int_st register.
    +                FRM_ERR_INT_ENA: u1,
    +                ///  This is the enable bit for rxfifo_ovf_int_st register.
    +                RXFIFO_OVF_INT_ENA: u1,
    +                ///  This is the enable bit for dsr_chg_int_st register.
    +                DSR_CHG_INT_ENA: u1,
    +                ///  This is the enable bit for cts_chg_int_st register.
    +                CTS_CHG_INT_ENA: u1,
    +                ///  This is the enable bit for brk_det_int_st register.
    +                BRK_DET_INT_ENA: u1,
    +                ///  This is the enable bit for rxfifo_tout_int_st register.
    +                RXFIFO_TOUT_INT_ENA: u1,
    +                ///  This is the enable bit for sw_xon_int_st register.
    +                SW_XON_INT_ENA: u1,
    +                ///  This is the enable bit for sw_xoff_int_st register.
    +                SW_XOFF_INT_ENA: u1,
    +                ///  This is the enable bit for glitch_det_int_st register.
    +                GLITCH_DET_INT_ENA: u1,
    +                ///  This is the enable bit for tx_brk_done_int_st register.
    +                TX_BRK_DONE_INT_ENA: u1,
    +                ///  This is the enable bit for tx_brk_idle_done_int_st register.
    +                TX_BRK_IDLE_DONE_INT_ENA: u1,
    +                ///  This is the enable bit for tx_done_int_st register.
    +                TX_DONE_INT_ENA: u1,
    +                ///  This is the enable bit for rs485_parity_err_int_st register.
    +                RS485_PARITY_ERR_INT_ENA: u1,
    +                ///  This is the enable bit for rs485_parity_err_int_st register.
    +                RS485_FRM_ERR_INT_ENA: u1,
    +                ///  This is the enable bit for rs485_clash_int_st register.
    +                RS485_CLASH_INT_ENA: u1,
    +                ///  This is the enable bit for at_cmd_char_det_int_st register.
    +                AT_CMD_CHAR_DET_INT_ENA: u1,
    +                ///  This is the enable bit for uart_wakeup_int_st register.
    +                WAKEUP_INT_ENA: u1,
    +                padding: u12,
    +            }),
    +            ///  Interrupt clear bits
    +            INT_CLR: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to clear the rxfifo_full_int_raw interrupt.
    +                RXFIFO_FULL_INT_CLR: u1,
    +                ///  Set this bit to clear txfifo_empty_int_raw interrupt.
    +                TXFIFO_EMPTY_INT_CLR: u1,
    +                ///  Set this bit to clear parity_err_int_raw interrupt.
    +                PARITY_ERR_INT_CLR: u1,
    +                ///  Set this bit to clear frm_err_int_raw interrupt.
    +                FRM_ERR_INT_CLR: u1,
    +                ///  Set this bit to clear rxfifo_ovf_int_raw interrupt.
    +                RXFIFO_OVF_INT_CLR: u1,
    +                ///  Set this bit to clear the dsr_chg_int_raw interrupt.
    +                DSR_CHG_INT_CLR: u1,
    +                ///  Set this bit to clear the cts_chg_int_raw interrupt.
    +                CTS_CHG_INT_CLR: u1,
    +                ///  Set this bit to clear the brk_det_int_raw interrupt.
    +                BRK_DET_INT_CLR: u1,
    +                ///  Set this bit to clear the rxfifo_tout_int_raw interrupt.
    +                RXFIFO_TOUT_INT_CLR: u1,
    +                ///  Set this bit to clear the sw_xon_int_raw interrupt.
    +                SW_XON_INT_CLR: u1,
    +                ///  Set this bit to clear the sw_xoff_int_raw interrupt.
    +                SW_XOFF_INT_CLR: u1,
    +                ///  Set this bit to clear the glitch_det_int_raw interrupt.
    +                GLITCH_DET_INT_CLR: u1,
    +                ///  Set this bit to clear the tx_brk_done_int_raw interrupt..
    +                TX_BRK_DONE_INT_CLR: u1,
    +                ///  Set this bit to clear the tx_brk_idle_done_int_raw interrupt.
    +                TX_BRK_IDLE_DONE_INT_CLR: u1,
    +                ///  Set this bit to clear the tx_done_int_raw interrupt.
    +                TX_DONE_INT_CLR: u1,
    +                ///  Set this bit to clear the rs485_parity_err_int_raw interrupt.
    +                RS485_PARITY_ERR_INT_CLR: u1,
    +                ///  Set this bit to clear the rs485_frm_err_int_raw interrupt.
    +                RS485_FRM_ERR_INT_CLR: u1,
    +                ///  Set this bit to clear the rs485_clash_int_raw interrupt.
    +                RS485_CLASH_INT_CLR: u1,
    +                ///  Set this bit to clear the at_cmd_char_det_int_raw interrupt.
    +                AT_CMD_CHAR_DET_INT_CLR: u1,
    +                ///  Set this bit to clear the uart_wakeup_int_raw interrupt.
    +                WAKEUP_INT_CLR: u1,
    +                padding: u12,
    +            }),
    +            ///  Clock divider configuration
    +            CLKDIV: mmio.Mmio(packed struct(u32) {
    +                ///  The integral part of the frequency divider factor.
    +                CLKDIV: u12,
    +                reserved20: u8,
    +                ///  The decimal part of the frequency divider factor.
    +                FRAG: u4,
    +                padding: u8,
    +            }),
    +            ///  Rx Filter configuration
    +            RX_FILT: mmio.Mmio(packed struct(u32) {
    +                ///  when input pulse width is lower than this value, the pulse is ignored.
    +                GLITCH_FILT: u8,
    +                ///  Set this bit to enable Rx signal filter.
    +                GLITCH_FILT_EN: u1,
    +                padding: u23,
    +            }),
    +            ///  UART status register
    +            STATUS: mmio.Mmio(packed struct(u32) {
    +                ///  Stores the byte number of valid data in Rx-FIFO.
    +                RXFIFO_CNT: u10,
    +                reserved13: u3,
    +                ///  The register represent the level value of the internal uart dsr signal.
    +                DSRN: u1,
    +                ///  This register represent the level value of the internal uart cts signal.
    +                CTSN: u1,
    +                ///  This register represent the level value of the internal uart rxd signal.
    +                RXD: u1,
    +                ///  Stores the byte number of data in Tx-FIFO.
    +                TXFIFO_CNT: u10,
    +                reserved29: u3,
    +                ///  This bit represents the level of the internal uart dtr signal.
    +                DTRN: u1,
    +                ///  This bit represents the level of the internal uart rts signal.
    +                RTSN: u1,
    +                ///  This bit represents the level of the internal uart txd signal.
    +                TXD: u1,
    +            }),
    +            ///  a
    +            CONF0: mmio.Mmio(packed struct(u32) {
    +                ///  This register is used to configure the parity check mode.
    +                PARITY: u1,
    +                ///  Set this bit to enable uart parity check.
    +                PARITY_EN: u1,
    +                ///  This register is used to set the length of data.
    +                BIT_NUM: u2,
    +                ///  This register is used to set the length of stop bit.
    +                STOP_BIT_NUM: u2,
    +                ///  This register is used to configure the software rts signal which is used in software flow control.
    +                SW_RTS: u1,
    +                ///  This register is used to configure the software dtr signal which is used in software flow control.
    +                SW_DTR: u1,
    +                ///  Set this bit to enbale transmitter to send NULL when the process of sending data is done.
    +                TXD_BRK: u1,
    +                ///  Set this bit to enable IrDA loopback mode.
    +                IRDA_DPLX: u1,
    +                ///  This is the start enable bit for IrDA transmitter.
    +                IRDA_TX_EN: u1,
    +                ///  1'h1: The IrDA transmitter's 11th bit is the same as 10th bit. 1'h0: Set IrDA transmitter's 11th bit to 0.
    +                IRDA_WCTL: u1,
    +                ///  Set this bit to invert the level of IrDA transmitter.
    +                IRDA_TX_INV: u1,
    +                ///  Set this bit to invert the level of IrDA receiver.
    +                IRDA_RX_INV: u1,
    +                ///  Set this bit to enable uart loopback test mode.
    +                LOOPBACK: u1,
    +                ///  Set this bit to enable flow control function for transmitter.
    +                TX_FLOW_EN: u1,
    +                ///  Set this bit to enable IrDA protocol.
    +                IRDA_EN: u1,
    +                ///  Set this bit to reset the uart receive-FIFO.
    +                RXFIFO_RST: u1,
    +                ///  Set this bit to reset the uart transmit-FIFO.
    +                TXFIFO_RST: u1,
    +                ///  Set this bit to inverse the level value of uart rxd signal.
    +                RXD_INV: u1,
    +                ///  Set this bit to inverse the level value of uart cts signal.
    +                CTS_INV: u1,
    +                ///  Set this bit to inverse the level value of uart dsr signal.
    +                DSR_INV: u1,
    +                ///  Set this bit to inverse the level value of uart txd signal.
    +                TXD_INV: u1,
    +                ///  Set this bit to inverse the level value of uart rts signal.
    +                RTS_INV: u1,
    +                ///  Set this bit to inverse the level value of uart dtr signal.
    +                DTR_INV: u1,
    +                ///  1'h1: Force clock on for register. 1'h0: Support clock only when application writes registers.
    +                CLK_EN: u1,
    +                ///  1'h1: Receiver stops storing data into FIFO when data is wrong. 1'h0: Receiver stores the data even if the received data is wrong.
    +                ERR_WR_MASK: u1,
    +                ///  This is the enable bit for detecting baudrate.
    +                AUTOBAUD_EN: u1,
    +                ///  UART memory clock gate enable signal.
    +                MEM_CLK_EN: u1,
    +                padding: u3,
    +            }),
    +            ///  Configuration register 1
    +            CONF1: mmio.Mmio(packed struct(u32) {
    +                ///  It will produce rxfifo_full_int interrupt when receiver receives more data than this register value.
    +                RXFIFO_FULL_THRHD: u9,
    +                ///  It will produce txfifo_empty_int interrupt when the data amount in Tx-FIFO is less than this register value.
    +                TXFIFO_EMPTY_THRHD: u9,
    +                ///  Disable UART Rx data overflow detect.
    +                DIS_RX_DAT_OVF: u1,
    +                ///  Set this bit to stop accumulating idle_cnt when hardware flow control works.
    +                RX_TOUT_FLOW_DIS: u1,
    +                ///  This is the flow enable bit for UART receiver.
    +                RX_FLOW_EN: u1,
    +                ///  This is the enble bit for uart receiver's timeout function.
    +                RX_TOUT_EN: u1,
    +                padding: u10,
    +            }),
    +            ///  Autobaud minimum low pulse duration register
    +            LOWPULSE: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the value of the minimum duration time of the low level pulse. It is used in baud rate-detect process.
    +                MIN_CNT: u12,
    +                padding: u20,
    +            }),
    +            ///  Autobaud minimum high pulse duration register
    +            HIGHPULSE: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the value of the maxinum duration time for the high level pulse. It is used in baud rate-detect process.
    +                MIN_CNT: u12,
    +                padding: u20,
    +            }),
    +            ///  Autobaud edge change count register
    +            RXD_CNT: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the count of rxd edge change. It is used in baud rate-detect process.
    +                RXD_EDGE_CNT: u10,
    +                padding: u22,
    +            }),
    +            ///  Software flow-control configuration
    +            FLOW_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to enable software flow control. It is used with register sw_xon or sw_xoff.
    +                SW_FLOW_CON_EN: u1,
    +                ///  Set this bit to remove flow control char from the received data.
    +                XONOFF_DEL: u1,
    +                ///  Set this bit to enable the transmitter to go on sending data.
    +                FORCE_XON: u1,
    +                ///  Set this bit to stop the transmitter from sending data.
    +                FORCE_XOFF: u1,
    +                ///  Set this bit to send Xon char. It is cleared by hardware automatically.
    +                SEND_XON: u1,
    +                ///  Set this bit to send Xoff char. It is cleared by hardware automatically.
    +                SEND_XOFF: u1,
    +                padding: u26,
    +            }),
    +            ///  Sleep-mode configuration
    +            SLEEP_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  The uart is activated from light sleeping mode when the input rxd edge changes more times than this register value.
    +                ACTIVE_THRESHOLD: u10,
    +                padding: u22,
    +            }),
    +            ///  Software flow-control character configuration
    +            SWFC_CONF0: mmio.Mmio(packed struct(u32) {
    +                ///  When the data amount in Rx-FIFO is more than this register value with uart_sw_flow_con_en set to 1, it will send a Xoff char.
    +                XOFF_THRESHOLD: u9,
    +                ///  This register stores the Xoff flow control char.
    +                XOFF_CHAR: u8,
    +                padding: u15,
    +            }),
    +            ///  Software flow-control character configuration
    +            SWFC_CONF1: mmio.Mmio(packed struct(u32) {
    +                ///  When the data amount in Rx-FIFO is less than this register value with uart_sw_flow_con_en set to 1, it will send a Xon char.
    +                XON_THRESHOLD: u9,
    +                ///  This register stores the Xon flow control char.
    +                XON_CHAR: u8,
    +                padding: u15,
    +            }),
    +            ///  Tx Break character configuration
    +            TXBRK_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  This register is used to configure the number of 0 to be sent after the process of sending data is done. It is active when txd_brk is set to 1.
    +                TX_BRK_NUM: u8,
    +                padding: u24,
    +            }),
    +            ///  Frame-end idle configuration
    +            IDLE_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  It will produce frame end signal when receiver takes more time to receive one byte data than this register value.
    +                RX_IDLE_THRHD: u10,
    +                ///  This register is used to configure the duration time between transfers.
    +                TX_IDLE_NUM: u10,
    +                padding: u12,
    +            }),
    +            ///  RS485 mode configuration
    +            RS485_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to choose the rs485 mode.
    +                RS485_EN: u1,
    +                ///  Set this bit to delay the stop bit by 1 bit.
    +                DL0_EN: u1,
    +                ///  Set this bit to delay the stop bit by 1 bit.
    +                DL1_EN: u1,
    +                ///  Set this bit to enable receiver could receive data when the transmitter is transmitting data in rs485 mode.
    +                RS485TX_RX_EN: u1,
    +                ///  1'h1: enable rs485 transmitter to send data when rs485 receiver line is busy.
    +                RS485RXBY_TX_EN: u1,
    +                ///  This register is used to delay the receiver's internal data signal.
    +                RS485_RX_DLY_NUM: u1,
    +                ///  This register is used to delay the transmitter's internal data signal.
    +                RS485_TX_DLY_NUM: u4,
    +                padding: u22,
    +            }),
    +            ///  Pre-sequence timing configuration
    +            AT_CMD_PRECNT: mmio.Mmio(packed struct(u32) {
    +                ///  This register is used to configure the idle duration time before the first at_cmd is received by receiver.
    +                PRE_IDLE_NUM: u16,
    +                padding: u16,
    +            }),
    +            ///  Post-sequence timing configuration
    +            AT_CMD_POSTCNT: mmio.Mmio(packed struct(u32) {
    +                ///  This register is used to configure the duration time between the last at_cmd and the next data.
    +                POST_IDLE_NUM: u16,
    +                padding: u16,
    +            }),
    +            ///  Timeout configuration
    +            AT_CMD_GAPTOUT: mmio.Mmio(packed struct(u32) {
    +                ///  This register is used to configure the duration time between the at_cmd chars.
    +                RX_GAP_TOUT: u16,
    +                padding: u16,
    +            }),
    +            ///  AT escape sequence detection configuration
    +            AT_CMD_CHAR: mmio.Mmio(packed struct(u32) {
    +                ///  This register is used to configure the content of at_cmd char.
    +                AT_CMD_CHAR: u8,
    +                ///  This register is used to configure the num of continuous at_cmd chars received by receiver.
    +                CHAR_NUM: u8,
    +                padding: u16,
    +            }),
    +            ///  UART threshold and allocation configuration
    +            MEM_CONF: mmio.Mmio(packed struct(u32) {
    +                reserved1: u1,
    +                ///  This register is used to configure the amount of mem allocated for receive-FIFO. The default number is 128 bytes.
    +                RX_SIZE: u3,
    +                ///  This register is used to configure the amount of mem allocated for transmit-FIFO. The default number is 128 bytes.
    +                TX_SIZE: u3,
    +                ///  This register is used to configure the maximum amount of data that can be received when hardware flow control works.
    +                RX_FLOW_THRHD: u9,
    +                ///  This register is used to configure the threshold time that receiver takes to receive one byte. The rxfifo_tout_int interrupt will be trigger when the receiver takes more time to receive one byte with rx_tout_en set to 1.
    +                RX_TOUT_THRHD: u10,
    +                ///  Set this bit to force power down UART memory.
    +                MEM_FORCE_PD: u1,
    +                ///  Set this bit to force power up UART memory.
    +                MEM_FORCE_PU: u1,
    +                padding: u4,
    +            }),
    +            ///  Tx-FIFO write and read offset address.
    +            MEM_TX_STATUS: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the offset address in Tx-FIFO when software writes Tx-FIFO via APB.
    +                APB_TX_WADDR: u10,
    +                reserved11: u1,
    +                ///  This register stores the offset address in Tx-FIFO when Tx-FSM reads data via Tx-FIFO_Ctrl.
    +                TX_RADDR: u10,
    +                padding: u11,
    +            }),
    +            ///  Rx-FIFO write and read offset address.
    +            MEM_RX_STATUS: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the offset address in RX-FIFO when software reads data from Rx-FIFO via APB. UART0 is 10'h100. UART1 is 10'h180.
    +                APB_RX_RADDR: u10,
    +                reserved11: u1,
    +                ///  This register stores the offset address in Rx-FIFO when Rx-FIFO_Ctrl writes Rx-FIFO. UART0 is 10'h100. UART1 is 10'h180.
    +                RX_WADDR: u10,
    +                padding: u11,
    +            }),
    +            ///  UART transmit and receive status.
    +            FSM_STATUS: mmio.Mmio(packed struct(u32) {
    +                ///  This is the status register of receiver.
    +                ST_URX_OUT: u4,
    +                ///  This is the status register of transmitter.
    +                ST_UTX_OUT: u4,
    +                padding: u24,
    +            }),
    +            ///  Autobaud high pulse register
    +            POSPULSE: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the minimal input clock count between two positive edges. It is used in boudrate-detect process.
    +                POSEDGE_MIN_CNT: u12,
    +                padding: u20,
    +            }),
    +            ///  Autobaud low pulse register
    +            NEGPULSE: mmio.Mmio(packed struct(u32) {
    +                ///  This register stores the minimal input clock count between two negative edges. It is used in boudrate-detect process.
    +                NEGEDGE_MIN_CNT: u12,
    +                padding: u20,
    +            }),
    +            ///  UART core clock configuration
    +            CLK_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  The denominator of the frequency divider factor.
    +                SCLK_DIV_B: u6,
    +                ///  The numerator of the frequency divider factor.
    +                SCLK_DIV_A: u6,
    +                ///  The integral part of the frequency divider factor.
    +                SCLK_DIV_NUM: u8,
    +                ///  UART clock source select. 1: 80Mhz, 2: 8Mhz, 3: XTAL.
    +                SCLK_SEL: u2,
    +                ///  Set this bit to enable UART Tx/Rx clock.
    +                SCLK_EN: u1,
    +                ///  Write 1 then write 0 to this bit, reset UART Tx/Rx.
    +                RST_CORE: u1,
    +                ///  Set this bit to enable UART Tx clock.
    +                TX_SCLK_EN: u1,
    +                ///  Set this bit to enable UART Rx clock.
    +                RX_SCLK_EN: u1,
    +                ///  Write 1 then write 0 to this bit, reset UART Tx.
    +                TX_RST_CORE: u1,
    +                ///  Write 1 then write 0 to this bit, reset UART Rx.
    +                RX_RST_CORE: u1,
    +                padding: u4,
    +            }),
    +            ///  UART Version register
    +            DATE: mmio.Mmio(packed struct(u32) {
    +                ///  This is the version register.
    +                DATE: u32,
    +            }),
    +            ///  UART ID register
    +            ID: mmio.Mmio(packed struct(u32) {
    +                ///  This register is used to configure the uart_id.
    +                ID: u30,
    +                ///  This bit used to select synchronize mode. 1: Registers are auto synchronized into UART Core clock and UART core should be keep the same with APB clock. 0: After configure registers, software needs to write 1 to UART_REG_UPDATE to synchronize registers.
    +                HIGH_SPEED: u1,
    +                ///  Software write 1 would synchronize registers into UART Core clock domain and would be cleared by hardware after synchronization is done.
    +                REG_UPDATE: u1,
    +            }),
    +        };
    +
    +        ///  Full-speed USB Serial/JTAG Controller
    +        pub const USB_DEVICE = extern struct {
    +            ///  USB_DEVICE_EP1_REG.
    +            EP1: mmio.Mmio(packed struct(u32) {
    +                ///  Write and read byte data to/from UART Tx/Rx FIFO through this field. When USB_DEVICE_SERIAL_IN_EMPTY_INT is set, then user can write data (up to 64 bytes) into UART Tx FIFO. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is set, user can check USB_DEVICE_OUT_EP1_WR_ADDR USB_DEVICE_OUT_EP0_RD_ADDR to know how many data is received, then read data from UART Rx FIFO.
    +                RDWR_BYTE: u8,
    +                padding: u24,
    +            }),
    +            ///  USB_DEVICE_EP1_CONF_REG.
    +            EP1_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to indicate writing byte data to UART Tx FIFO is done.
    +                WR_DONE: u1,
    +                ///  1'b1: Indicate UART Tx FIFO is not full and can write data into in. After writing USB_DEVICE_WR_DONE, this bit would be 0 until data in UART Tx FIFO is read by USB Host.
    +                SERIAL_IN_EP_DATA_FREE: u1,
    +                ///  1'b1: Indicate there is data in UART Rx FIFO.
    +                SERIAL_OUT_EP_DATA_AVAIL: u1,
    +                padding: u29,
    +            }),
    +            ///  USB_DEVICE_INT_RAW_REG.
    +            INT_RAW: mmio.Mmio(packed struct(u32) {
    +                ///  The raw interrupt bit turns to high level when flush cmd is received for IN endpoint 2 of JTAG.
    +                JTAG_IN_FLUSH_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when SOF frame is received.
    +                SOF_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when Serial Port OUT Endpoint received one packet.
    +                SERIAL_OUT_RECV_PKT_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when Serial Port IN Endpoint is empty.
    +                SERIAL_IN_EMPTY_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when pid error is detected.
    +                PID_ERR_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when CRC5 error is detected.
    +                CRC5_ERR_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when CRC16 error is detected.
    +                CRC16_ERR_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when stuff error is detected.
    +                STUFF_ERR_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when IN token for IN endpoint 1 is received.
    +                IN_TOKEN_REC_IN_EP1_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when usb bus reset is detected.
    +                USB_BUS_RESET_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when OUT endpoint 1 received packet with zero palyload.
    +                OUT_EP1_ZERO_PAYLOAD_INT_RAW: u1,
    +                ///  The raw interrupt bit turns to high level when OUT endpoint 2 received packet with zero palyload.
    +                OUT_EP2_ZERO_PAYLOAD_INT_RAW: u1,
    +                padding: u20,
    +            }),
    +            ///  USB_DEVICE_INT_ST_REG.
    +            INT_ST: mmio.Mmio(packed struct(u32) {
    +                ///  The raw interrupt status bit for the USB_DEVICE_JTAG_IN_FLUSH_INT interrupt.
    +                JTAG_IN_FLUSH_INT_ST: u1,
    +                ///  The raw interrupt status bit for the USB_DEVICE_SOF_INT interrupt.
    +                SOF_INT_ST: u1,
    +                ///  The raw interrupt status bit for the USB_DEVICE_SERIAL_OUT_RECV_PKT_INT interrupt.
    +                SERIAL_OUT_RECV_PKT_INT_ST: u1,
    +                ///  The raw interrupt status bit for the USB_DEVICE_SERIAL_IN_EMPTY_INT interrupt.
    +                SERIAL_IN_EMPTY_INT_ST: u1,
    +                ///  The raw interrupt status bit for the USB_DEVICE_PID_ERR_INT interrupt.
    +                PID_ERR_INT_ST: u1,
    +                ///  The raw interrupt status bit for the USB_DEVICE_CRC5_ERR_INT interrupt.
    +                CRC5_ERR_INT_ST: u1,
    +                ///  The raw interrupt status bit for the USB_DEVICE_CRC16_ERR_INT interrupt.
    +                CRC16_ERR_INT_ST: u1,
    +                ///  The raw interrupt status bit for the USB_DEVICE_STUFF_ERR_INT interrupt.
    +                STUFF_ERR_INT_ST: u1,
    +                ///  The raw interrupt status bit for the USB_DEVICE_IN_TOKEN_REC_IN_EP1_INT interrupt.
    +                IN_TOKEN_REC_IN_EP1_INT_ST: u1,
    +                ///  The raw interrupt status bit for the USB_DEVICE_USB_BUS_RESET_INT interrupt.
    +                USB_BUS_RESET_INT_ST: u1,
    +                ///  The raw interrupt status bit for the USB_DEVICE_OUT_EP1_ZERO_PAYLOAD_INT interrupt.
    +                OUT_EP1_ZERO_PAYLOAD_INT_ST: u1,
    +                ///  The raw interrupt status bit for the USB_DEVICE_OUT_EP2_ZERO_PAYLOAD_INT interrupt.
    +                OUT_EP2_ZERO_PAYLOAD_INT_ST: u1,
    +                padding: u20,
    +            }),
    +            ///  USB_DEVICE_INT_ENA_REG.
    +            INT_ENA: mmio.Mmio(packed struct(u32) {
    +                ///  The interrupt enable bit for the USB_DEVICE_JTAG_IN_FLUSH_INT interrupt.
    +                JTAG_IN_FLUSH_INT_ENA: u1,
    +                ///  The interrupt enable bit for the USB_DEVICE_SOF_INT interrupt.
    +                SOF_INT_ENA: u1,
    +                ///  The interrupt enable bit for the USB_DEVICE_SERIAL_OUT_RECV_PKT_INT interrupt.
    +                SERIAL_OUT_RECV_PKT_INT_ENA: u1,
    +                ///  The interrupt enable bit for the USB_DEVICE_SERIAL_IN_EMPTY_INT interrupt.
    +                SERIAL_IN_EMPTY_INT_ENA: u1,
    +                ///  The interrupt enable bit for the USB_DEVICE_PID_ERR_INT interrupt.
    +                PID_ERR_INT_ENA: u1,
    +                ///  The interrupt enable bit for the USB_DEVICE_CRC5_ERR_INT interrupt.
    +                CRC5_ERR_INT_ENA: u1,
    +                ///  The interrupt enable bit for the USB_DEVICE_CRC16_ERR_INT interrupt.
    +                CRC16_ERR_INT_ENA: u1,
    +                ///  The interrupt enable bit for the USB_DEVICE_STUFF_ERR_INT interrupt.
    +                STUFF_ERR_INT_ENA: u1,
    +                ///  The interrupt enable bit for the USB_DEVICE_IN_TOKEN_REC_IN_EP1_INT interrupt.
    +                IN_TOKEN_REC_IN_EP1_INT_ENA: u1,
    +                ///  The interrupt enable bit for the USB_DEVICE_USB_BUS_RESET_INT interrupt.
    +                USB_BUS_RESET_INT_ENA: u1,
    +                ///  The interrupt enable bit for the USB_DEVICE_OUT_EP1_ZERO_PAYLOAD_INT interrupt.
    +                OUT_EP1_ZERO_PAYLOAD_INT_ENA: u1,
    +                ///  The interrupt enable bit for the USB_DEVICE_OUT_EP2_ZERO_PAYLOAD_INT interrupt.
    +                OUT_EP2_ZERO_PAYLOAD_INT_ENA: u1,
    +                padding: u20,
    +            }),
    +            ///  USB_DEVICE_INT_CLR_REG.
    +            INT_CLR: mmio.Mmio(packed struct(u32) {
    +                ///  Set this bit to clear the USB_DEVICE_JTAG_IN_FLUSH_INT interrupt.
    +                JTAG_IN_FLUSH_INT_CLR: u1,
    +                ///  Set this bit to clear the USB_DEVICE_JTAG_SOF_INT interrupt.
    +                SOF_INT_CLR: u1,
    +                ///  Set this bit to clear the USB_DEVICE_SERIAL_OUT_RECV_PKT_INT interrupt.
    +                SERIAL_OUT_RECV_PKT_INT_CLR: u1,
    +                ///  Set this bit to clear the USB_DEVICE_SERIAL_IN_EMPTY_INT interrupt.
    +                SERIAL_IN_EMPTY_INT_CLR: u1,
    +                ///  Set this bit to clear the USB_DEVICE_PID_ERR_INT interrupt.
    +                PID_ERR_INT_CLR: u1,
    +                ///  Set this bit to clear the USB_DEVICE_CRC5_ERR_INT interrupt.
    +                CRC5_ERR_INT_CLR: u1,
    +                ///  Set this bit to clear the USB_DEVICE_CRC16_ERR_INT interrupt.
    +                CRC16_ERR_INT_CLR: u1,
    +                ///  Set this bit to clear the USB_DEVICE_STUFF_ERR_INT interrupt.
    +                STUFF_ERR_INT_CLR: u1,
    +                ///  Set this bit to clear the USB_DEVICE_IN_TOKEN_IN_EP1_INT interrupt.
    +                IN_TOKEN_REC_IN_EP1_INT_CLR: u1,
    +                ///  Set this bit to clear the USB_DEVICE_USB_BUS_RESET_INT interrupt.
    +                USB_BUS_RESET_INT_CLR: u1,
    +                ///  Set this bit to clear the USB_DEVICE_OUT_EP1_ZERO_PAYLOAD_INT interrupt.
    +                OUT_EP1_ZERO_PAYLOAD_INT_CLR: u1,
    +                ///  Set this bit to clear the USB_DEVICE_OUT_EP2_ZERO_PAYLOAD_INT interrupt.
    +                OUT_EP2_ZERO_PAYLOAD_INT_CLR: u1,
    +                padding: u20,
    +            }),
    +            ///  USB_DEVICE_CONF0_REG.
    +            CONF0: mmio.Mmio(packed struct(u32) {
    +                ///  Select internal/external PHY
    +                PHY_SEL: u1,
    +                ///  Enable software control USB D+ D- exchange
    +                EXCHG_PINS_OVERRIDE: u1,
    +                ///  USB D+ D- exchange
    +                EXCHG_PINS: u1,
    +                ///  Control single-end input high threshold,1.76V to 2V, step 80mV
    +                VREFH: u2,
    +                ///  Control single-end input low threshold,0.8V to 1.04V, step 80mV
    +                VREFL: u2,
    +                ///  Enable software control input threshold
    +                VREF_OVERRIDE: u1,
    +                ///  Enable software control USB D+ D- pullup pulldown
    +                PAD_PULL_OVERRIDE: u1,
    +                ///  Control USB D+ pull up.
    +                DP_PULLUP: u1,
    +                ///  Control USB D+ pull down.
    +                DP_PULLDOWN: u1,
    +                ///  Control USB D- pull up.
    +                DM_PULLUP: u1,
    +                ///  Control USB D- pull down.
    +                DM_PULLDOWN: u1,
    +                ///  Control pull up value.
    +                PULLUP_VALUE: u1,
    +                ///  Enable USB pad function.
    +                USB_PAD_ENABLE: u1,
    +                padding: u17,
    +            }),
    +            ///  USB_DEVICE_TEST_REG.
    +            TEST: mmio.Mmio(packed struct(u32) {
    +                ///  Enable test of the USB pad
    +                ENABLE: u1,
    +                ///  USB pad oen in test
    +                USB_OE: u1,
    +                ///  USB D+ tx value in test
    +                TX_DP: u1,
    +                ///  USB D- tx value in test
    +                TX_DM: u1,
    +                padding: u28,
    +            }),
    +            ///  USB_DEVICE_JFIFO_ST_REG.
    +            JFIFO_ST: mmio.Mmio(packed struct(u32) {
    +                ///  JTAT in fifo counter.
    +                IN_FIFO_CNT: u2,
    +                ///  1: JTAG in fifo is empty.
    +                IN_FIFO_EMPTY: u1,
    +                ///  1: JTAG in fifo is full.
    +                IN_FIFO_FULL: u1,
    +                ///  JTAT out fifo counter.
    +                OUT_FIFO_CNT: u2,
    +                ///  1: JTAG out fifo is empty.
    +                OUT_FIFO_EMPTY: u1,
    +                ///  1: JTAG out fifo is full.
    +                OUT_FIFO_FULL: u1,
    +                ///  Write 1 to reset JTAG in fifo.
    +                IN_FIFO_RESET: u1,
    +                ///  Write 1 to reset JTAG out fifo.
    +                OUT_FIFO_RESET: u1,
    +                padding: u22,
    +            }),
    +            ///  USB_DEVICE_FRAM_NUM_REG.
    +            FRAM_NUM: mmio.Mmio(packed struct(u32) {
    +                ///  Frame index of received SOF frame.
    +                SOF_FRAME_INDEX: u11,
    +                padding: u21,
    +            }),
    +            ///  USB_DEVICE_IN_EP0_ST_REG.
    +            IN_EP0_ST: mmio.Mmio(packed struct(u32) {
    +                ///  State of IN Endpoint 0.
    +                IN_EP0_STATE: u2,
    +                ///  Write data address of IN endpoint 0.
    +                IN_EP0_WR_ADDR: u7,
    +                ///  Read data address of IN endpoint 0.
    +                IN_EP0_RD_ADDR: u7,
    +                padding: u16,
    +            }),
    +            ///  USB_DEVICE_IN_EP1_ST_REG.
    +            IN_EP1_ST: mmio.Mmio(packed struct(u32) {
    +                ///  State of IN Endpoint 1.
    +                IN_EP1_STATE: u2,
    +                ///  Write data address of IN endpoint 1.
    +                IN_EP1_WR_ADDR: u7,
    +                ///  Read data address of IN endpoint 1.
    +                IN_EP1_RD_ADDR: u7,
    +                padding: u16,
    +            }),
    +            ///  USB_DEVICE_IN_EP2_ST_REG.
    +            IN_EP2_ST: mmio.Mmio(packed struct(u32) {
    +                ///  State of IN Endpoint 2.
    +                IN_EP2_STATE: u2,
    +                ///  Write data address of IN endpoint 2.
    +                IN_EP2_WR_ADDR: u7,
    +                ///  Read data address of IN endpoint 2.
    +                IN_EP2_RD_ADDR: u7,
    +                padding: u16,
    +            }),
    +            ///  USB_DEVICE_IN_EP3_ST_REG.
    +            IN_EP3_ST: mmio.Mmio(packed struct(u32) {
    +                ///  State of IN Endpoint 3.
    +                IN_EP3_STATE: u2,
    +                ///  Write data address of IN endpoint 3.
    +                IN_EP3_WR_ADDR: u7,
    +                ///  Read data address of IN endpoint 3.
    +                IN_EP3_RD_ADDR: u7,
    +                padding: u16,
    +            }),
    +            ///  USB_DEVICE_OUT_EP0_ST_REG.
    +            OUT_EP0_ST: mmio.Mmio(packed struct(u32) {
    +                ///  State of OUT Endpoint 0.
    +                OUT_EP0_STATE: u2,
    +                ///  Write data address of OUT endpoint 0. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is detected, there are USB_DEVICE_OUT_EP0_WR_ADDR-2 bytes data in OUT EP0.
    +                OUT_EP0_WR_ADDR: u7,
    +                ///  Read data address of OUT endpoint 0.
    +                OUT_EP0_RD_ADDR: u7,
    +                padding: u16,
    +            }),
    +            ///  USB_DEVICE_OUT_EP1_ST_REG.
    +            OUT_EP1_ST: mmio.Mmio(packed struct(u32) {
    +                ///  State of OUT Endpoint 1.
    +                OUT_EP1_STATE: u2,
    +                ///  Write data address of OUT endpoint 1. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is detected, there are USB_DEVICE_OUT_EP1_WR_ADDR-2 bytes data in OUT EP1.
    +                OUT_EP1_WR_ADDR: u7,
    +                ///  Read data address of OUT endpoint 1.
    +                OUT_EP1_RD_ADDR: u7,
    +                ///  Data count in OUT endpoint 1 when one packet is received.
    +                OUT_EP1_REC_DATA_CNT: u7,
    +                padding: u9,
    +            }),
    +            ///  USB_DEVICE_OUT_EP2_ST_REG.
    +            OUT_EP2_ST: mmio.Mmio(packed struct(u32) {
    +                ///  State of OUT Endpoint 2.
    +                OUT_EP2_STATE: u2,
    +                ///  Write data address of OUT endpoint 2. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is detected, there are USB_DEVICE_OUT_EP2_WR_ADDR-2 bytes data in OUT EP2.
    +                OUT_EP2_WR_ADDR: u7,
    +                ///  Read data address of OUT endpoint 2.
    +                OUT_EP2_RD_ADDR: u7,
    +                padding: u16,
    +            }),
    +            ///  USB_DEVICE_MISC_CONF_REG.
    +            MISC_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  1'h1: Force clock on for register. 1'h0: Support clock only when application writes registers.
    +                CLK_EN: u1,
    +                padding: u31,
    +            }),
    +            ///  USB_DEVICE_MEM_CONF_REG.
    +            MEM_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  1: power down usb memory.
    +                USB_MEM_PD: u1,
    +                ///  1: Force clock on for usb memory.
    +                USB_MEM_CLK_EN: u1,
    +                padding: u30,
    +            }),
    +            reserved128: [52]u8,
    +            ///  USB_DEVICE_DATE_REG.
    +            DATE: mmio.Mmio(packed struct(u32) {
    +                ///  register version.
    +                DATE: u32,
    +            }),
    +        };
    +
    +        ///  Universal Host Controller Interface
    +        pub const UHCI0 = extern struct {
    +            ///  a
    +            CONF0: mmio.Mmio(packed struct(u32) {
    +                ///  Write 1, then write 0 to this bit to reset decode state machine.
    +                TX_RST: u1,
    +                ///  Write 1, then write 0 to this bit to reset encode state machine.
    +                RX_RST: u1,
    +                ///  Set this bit to link up HCI and UART0.
    +                UART0_CE: u1,
    +                ///  Set this bit to link up HCI and UART1.
    +                UART1_CE: u1,
    +                reserved5: u1,
    +                ///  Set this bit to separate the data frame using a special char.
    +                SEPER_EN: u1,
    +                ///  Set this bit to encode the data packet with a formatting header.
    +                HEAD_EN: u1,
    +                ///  Set this bit to enable UHCI to receive the 16 bit CRC.
    +                CRC_REC_EN: u1,
    +                ///  If this bit is set to 1, UHCI will end the payload receiving process when UART has been in idle state.
    +                UART_IDLE_EOF_EN: u1,
    +                ///  If this bit is set to 1, UHCI decoder receiving payload data is end when the receiving byte count has reached the specified value. The value is payload length indicated by UHCI packet header when UHCI_HEAD_EN is 1 or the value is configuration value when UHCI_HEAD_EN is 0. If this bit is set to 0, UHCI decoder receiving payload data is end when 0xc0 is received.
    +                LEN_EOF_EN: u1,
    +                ///  Set this bit to enable data integrity checking by appending a 16 bit CCITT-CRC to end of the payload.
    +                ENCODE_CRC_EN: u1,
    +                ///  1'b1: Force clock on for register. 1'b0: Support clock only when application writes registers.
    +                CLK_EN: u1,
    +                ///  If this bit is set to 1, UHCI will end payload receive process when NULL frame is received by UART.
    +                UART_RX_BRK_EOF_EN: u1,
    +                padding: u19,
    +            }),
    +            ///  a
    +            INT_RAW: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                RX_START_INT_RAW: u1,
    +                ///  a
    +                TX_START_INT_RAW: u1,
    +                ///  a
    +                RX_HUNG_INT_RAW: u1,
    +                ///  a
    +                TX_HUNG_INT_RAW: u1,
    +                ///  a
    +                SEND_S_REG_Q_INT_RAW: u1,
    +                ///  a
    +                SEND_A_REG_Q_INT_RAW: u1,
    +                ///  This is the interrupt raw bit. Triggered when there are some errors in EOF in the
    +                OUT_EOF_INT_RAW: u1,
    +                ///  Soft control int raw bit.
    +                APP_CTRL0_INT_RAW: u1,
    +                ///  Soft control int raw bit.
    +                APP_CTRL1_INT_RAW: u1,
    +                padding: u23,
    +            }),
    +            ///  a
    +            INT_ST: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                RX_START_INT_ST: u1,
    +                ///  a
    +                TX_START_INT_ST: u1,
    +                ///  a
    +                RX_HUNG_INT_ST: u1,
    +                ///  a
    +                TX_HUNG_INT_ST: u1,
    +                ///  a
    +                SEND_S_REG_Q_INT_ST: u1,
    +                ///  a
    +                SEND_A_REG_Q_INT_ST: u1,
    +                ///  a
    +                OUTLINK_EOF_ERR_INT_ST: u1,
    +                ///  a
    +                APP_CTRL0_INT_ST: u1,
    +                ///  a
    +                APP_CTRL1_INT_ST: u1,
    +                padding: u23,
    +            }),
    +            ///  a
    +            INT_ENA: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                RX_START_INT_ENA: u1,
    +                ///  a
    +                TX_START_INT_ENA: u1,
    +                ///  a
    +                RX_HUNG_INT_ENA: u1,
    +                ///  a
    +                TX_HUNG_INT_ENA: u1,
    +                ///  a
    +                SEND_S_REG_Q_INT_ENA: u1,
    +                ///  a
    +                SEND_A_REG_Q_INT_ENA: u1,
    +                ///  a
    +                OUTLINK_EOF_ERR_INT_ENA: u1,
    +                ///  a
    +                APP_CTRL0_INT_ENA: u1,
    +                ///  a
    +                APP_CTRL1_INT_ENA: u1,
    +                padding: u23,
    +            }),
    +            ///  a
    +            INT_CLR: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                RX_START_INT_CLR: u1,
    +                ///  a
    +                TX_START_INT_CLR: u1,
    +                ///  a
    +                RX_HUNG_INT_CLR: u1,
    +                ///  a
    +                TX_HUNG_INT_CLR: u1,
    +                ///  a
    +                SEND_S_REG_Q_INT_CLR: u1,
    +                ///  a
    +                SEND_A_REG_Q_INT_CLR: u1,
    +                ///  a
    +                OUTLINK_EOF_ERR_INT_CLR: u1,
    +                ///  a
    +                APP_CTRL0_INT_CLR: u1,
    +                ///  a
    +                APP_CTRL1_INT_CLR: u1,
    +                padding: u23,
    +            }),
    +            ///  a
    +            CONF1: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                CHECK_SUM_EN: u1,
    +                ///  a
    +                CHECK_SEQ_EN: u1,
    +                ///  a
    +                CRC_DISABLE: u1,
    +                ///  a
    +                SAVE_HEAD: u1,
    +                ///  a
    +                TX_CHECK_SUM_RE: u1,
    +                ///  a
    +                TX_ACK_NUM_RE: u1,
    +                reserved7: u1,
    +                ///  a
    +                WAIT_SW_START: u1,
    +                ///  a
    +                SW_START: u1,
    +                padding: u23,
    +            }),
    +            ///  a
    +            STATE0: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                RX_ERR_CAUSE: u3,
    +                ///  a
    +                DECODE_STATE: u3,
    +                padding: u26,
    +            }),
    +            ///  a
    +            STATE1: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                ENCODE_STATE: u3,
    +                padding: u29,
    +            }),
    +            ///  a
    +            ESCAPE_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                TX_C0_ESC_EN: u1,
    +                ///  a
    +                TX_DB_ESC_EN: u1,
    +                ///  a
    +                TX_11_ESC_EN: u1,
    +                ///  a
    +                TX_13_ESC_EN: u1,
    +                ///  a
    +                RX_C0_ESC_EN: u1,
    +                ///  a
    +                RX_DB_ESC_EN: u1,
    +                ///  a
    +                RX_11_ESC_EN: u1,
    +                ///  a
    +                RX_13_ESC_EN: u1,
    +                padding: u24,
    +            }),
    +            ///  a
    +            HUNG_CONF: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                TXFIFO_TIMEOUT: u8,
    +                ///  a
    +                TXFIFO_TIMEOUT_SHIFT: u3,
    +                ///  a
    +                TXFIFO_TIMEOUT_ENA: u1,
    +                ///  a
    +                RXFIFO_TIMEOUT: u8,
    +                ///  a
    +                RXFIFO_TIMEOUT_SHIFT: u3,
    +                ///  a
    +                RXFIFO_TIMEOUT_ENA: u1,
    +                padding: u8,
    +            }),
    +            ///  a
    +            ACK_NUM: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                ACK_NUM: u3,
    +                ///  a
    +                LOAD: u1,
    +                padding: u28,
    +            }),
    +            ///  a
    +            RX_HEAD: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                RX_HEAD: u32,
    +            }),
    +            ///  a
    +            QUICK_SENT: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                SINGLE_SEND_NUM: u3,
    +                ///  a
    +                SINGLE_SEND_EN: u1,
    +                ///  a
    +                ALWAYS_SEND_NUM: u3,
    +                ///  a
    +                ALWAYS_SEND_EN: u1,
    +                padding: u24,
    +            }),
    +            ///  a
    +            REG_Q0_WORD0: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                SEND_Q0_WORD0: u32,
    +            }),
    +            ///  a
    +            REG_Q0_WORD1: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                SEND_Q0_WORD1: u32,
    +            }),
    +            ///  a
    +            REG_Q1_WORD0: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                SEND_Q1_WORD0: u32,
    +            }),
    +            ///  a
    +            REG_Q1_WORD1: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                SEND_Q1_WORD1: u32,
    +            }),
    +            ///  a
    +            REG_Q2_WORD0: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                SEND_Q2_WORD0: u32,
    +            }),
    +            ///  a
    +            REG_Q2_WORD1: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                SEND_Q2_WORD1: u32,
    +            }),
    +            ///  a
    +            REG_Q3_WORD0: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                SEND_Q3_WORD0: u32,
    +            }),
    +            ///  a
    +            REG_Q3_WORD1: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                SEND_Q3_WORD1: u32,
    +            }),
    +            ///  a
    +            REG_Q4_WORD0: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                SEND_Q4_WORD0: u32,
    +            }),
    +            ///  a
    +            REG_Q4_WORD1: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                SEND_Q4_WORD1: u32,
    +            }),
    +            ///  a
    +            REG_Q5_WORD0: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                SEND_Q5_WORD0: u32,
    +            }),
    +            ///  a
    +            REG_Q5_WORD1: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                SEND_Q5_WORD1: u32,
    +            }),
    +            ///  a
    +            REG_Q6_WORD0: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                SEND_Q6_WORD0: u32,
    +            }),
    +            ///  a
    +            REG_Q6_WORD1: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                SEND_Q6_WORD1: u32,
    +            }),
    +            ///  a
    +            ESC_CONF0: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                SEPER_CHAR: u8,
    +                ///  a
    +                SEPER_ESC_CHAR0: u8,
    +                ///  a
    +                SEPER_ESC_CHAR1: u8,
    +                padding: u8,
    +            }),
    +            ///  a
    +            ESC_CONF1: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                ESC_SEQ0: u8,
    +                ///  a
    +                ESC_SEQ0_CHAR0: u8,
    +                ///  a
    +                ESC_SEQ0_CHAR1: u8,
    +                padding: u8,
    +            }),
    +            ///  a
    +            ESC_CONF2: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                ESC_SEQ1: u8,
    +                ///  a
    +                ESC_SEQ1_CHAR0: u8,
    +                ///  a
    +                ESC_SEQ1_CHAR1: u8,
    +                padding: u8,
    +            }),
    +            ///  a
    +            ESC_CONF3: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                ESC_SEQ2: u8,
    +                ///  a
    +                ESC_SEQ2_CHAR0: u8,
    +                ///  a
    +                ESC_SEQ2_CHAR1: u8,
    +                padding: u8,
    +            }),
    +            ///  a
    +            PKT_THRES: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                PKT_THRS: u13,
    +                padding: u19,
    +            }),
    +            ///  a
    +            DATE: mmio.Mmio(packed struct(u32) {
    +                ///  a
    +                DATE: u32,
    +            }),
    +        };
    +    };
    +};
    diff --git a/src/cpus.zig b/src/cpus.zig
    new file mode 100644
    index 0000000..b087d90
    --- /dev/null
    +++ b/src/cpus.zig
    @@ -0,0 +1,23 @@
    +const std = @import("std");
    +const microzig = @import("../deps/microzig/build.zig");
    +
    +fn root_dir() []const u8 {
    +    return std.fs.path.dirname(@src().file) orelse unreachable;
    +}
    +
    +pub const esp32_c3 = microzig.Cpu{
    +    .name = "Espressif RISC-V",
    +    .source = .{
    +        .path = root_dir() ++ "/cpus/espressif-riscv.zig",
    +    },
    +    .target = std.zig.CrossTarget{
    +        .cpu_arch = .riscv32,
    +        .cpu_model = .{ .explicit = &std.Target.riscv.cpu.generic_rv32 },
    +        .cpu_features_add = std.Target.riscv.featureSet(&.{
    +            std.Target.riscv.Feature.c,
    +            std.Target.riscv.Feature.m,
    +        }),
    +        .os_tag = .freestanding,
    +        .abi = .eabi,
    +    },
    +};
    diff --git a/src/package/esp32-c3.zig b/src/cpus/espressif-riscv.zig
    similarity index 72%
    rename from src/package/esp32-c3.zig
    rename to src/cpus/espressif-riscv.zig
    index 0ab4944..e20072d 100644
    --- a/src/package/esp32-c3.zig
    +++ b/src/cpus/espressif-riscv.zig
    @@ -1,7 +1,41 @@
     const std = @import("std");
     const microzig = @import("microzig");
    +const root = @import("root");
     
    -pub const registers = @import("registers.zig").registers;
    +pub const StatusRegister = enum(u8) {
    +    // machine information
    +    mvendorid,
    +    marchid,
    +    mimpid,
    +    mhartid,
    +
    +    // machine trap setup
    +    mstatus,
    +    misa,
    +    mtvec,
    +};
    +
    +pub inline fn setStatusBit(comptime reg: StatusRegister, bits: u32) void {
    +    asm volatile ("csrrs zero, " ++ @tagName(reg) ++ ", %[value]"
    +        :
    +        : [value] "r" (bits),
    +    );
    +}
    +
    +pub inline fn clearStatusBit(comptime reg: StatusRegister, bits: u32) void {
    +    asm volatile ("csrrc zero, " ++ @tagName(reg) ++ ", %[value]"
    +        :
    +        : [value] "r" (bits),
    +    );
    +}
    +
    +pub inline fn cli() void {
    +    clearStatusBit(.mstatus, 0x08);
    +}
    +
    +pub inline fn sei() void {
    +    setStatusBit(.mstatus, 0x08);
    +}
     
     pub const startup_logic = struct {
         comptime {
    @@ -35,7 +69,7 @@ pub const startup_logic = struct {
             );
             asm volatile ("la gp, __global_pointer$");
             microzig.cpu.setStatusBit(.mtvec, microzig.config.end_of_stack);
    -        microzig.initializeSystemMemories();
    +        root.initialize_system_memories();
             microzig_main();
         }
     
    diff --git a/src/example/blinky.zig b/src/example/blinky.zig
    index 0518c53..5ee1eef 100644
    --- a/src/example/blinky.zig
    +++ b/src/example/blinky.zig
    @@ -1,23 +1,28 @@
     const std = @import("std");
     const microzig = @import("microzig");
    +const peripherals = microzig.chip.peripherals;
    +const TIMG0 = peripherals.TIMG0;
    +const RTC_CNTL = peripherals.RTC_CNTL;
    +const INTERRUPT_CORE0 = peripherals.INTERRUPT_CORE0;
    +const GPIO = peripherals.GPIO;
     
     const dogfood: u32 = 0x50D83AA1;
     const super_dogfood: u32 = 0x8F1D312A;
     
     pub fn main() !void {
    -    microzig.chip.registers.TIMG0.WDTWPROTECT.raw = dogfood;
    -    microzig.chip.registers.TIMG0.WDTCONFIG0.raw = 0;
    -    microzig.chip.registers.TIMG0.WDTWPROTECT.raw = 0;
    +    TIMG0.WDTWPROTECT.raw = dogfood;
    +    TIMG0.WDTCONFIG0.raw = 0;
    +    TIMG0.WDTWPROTECT.raw = 0;
     
    -    microzig.chip.registers.RTC_CNTL.WDTWPROTECT.raw = dogfood;
    -    microzig.chip.registers.RTC_CNTL.WDTCONFIG0.raw = 0;
    -    microzig.chip.registers.RTC_CNTL.WDTWPROTECT.raw = 0;
    +    RTC_CNTL.WDTWPROTECT.raw = dogfood;
    +    RTC_CNTL.WDTCONFIG0.raw = 0;
    +    RTC_CNTL.WDTWPROTECT.raw = 0;
     
    -    microzig.chip.registers.RTC_CNTL.SWD_WPROTECT.raw = super_dogfood;
    -    microzig.chip.registers.RTC_CNTL.SWD_CONF.modify(.{ .SWD_DISABLE = 1 });
    -    microzig.chip.registers.RTC_CNTL.SWD_WPROTECT.raw = 0;
    +    RTC_CNTL.SWD_WPROTECT.raw = super_dogfood;
    +    RTC_CNTL.SWD_CONF.modify(.{ .SWD_DISABLE = 1 });
    +    RTC_CNTL.SWD_WPROTECT.raw = 0;
     
    -    microzig.chip.registers.INTERRUPT_CORE0.CPU_INT_ENABLE.* = 0;
    +    INTERRUPT_CORE0.CPU_INT_ENABLE.raw = 0;
     
         microzig.hal.gpio.init(LED_R_PIN, .{
             .direction = .output,
    @@ -35,15 +40,15 @@ pub fn main() !void {
         microzig.hal.uart.write(0, "Hello from Zig!\r\n");
     
         while (true) {
    -        microzig.chip.registers.GPIO.OUT.modify(.{ .DATA_ORIG = (1 << LED_R_PIN) });
    +        GPIO.OUT.modify(.{ .DATA_ORIG = (1 << LED_R_PIN) });
             microzig.hal.uart.write(0, "R");
    -        microzig.debug.busySleep(1_000_000);
    -        microzig.chip.registers.GPIO.OUT.modify(.{ .DATA_ORIG = (1 << LED_G_PIN) });
    +        microzig.core.experimental.debug.busy_sleep(1_000_000);
    +        GPIO.OUT.modify(.{ .DATA_ORIG = (1 << LED_G_PIN) });
             microzig.hal.uart.write(0, "G");
    -        microzig.debug.busySleep(1_000_000);
    -        microzig.chip.registers.GPIO.OUT.modify(.{ .DATA_ORIG = (1 << LED_B_PIN) });
    +        microzig.core.experimental.debug.busy_sleep(1_000_000);
    +        GPIO.OUT.modify(.{ .DATA_ORIG = (1 << LED_B_PIN) });
             microzig.hal.uart.write(0, "B");
    -        microzig.debug.busySleep(1_000_000);
    +        microzig.core.experimental.debug.busy_sleep(1_000_000);
         }
     }
     
    diff --git a/src/hal/root.zig b/src/hals/ESP32_C3.zig
    similarity index 57%
    rename from src/hal/root.zig
    rename to src/hals/ESP32_C3.zig
    index d87dab8..516ed15 100644
    --- a/src/hal/root.zig
    +++ b/src/hals/ESP32_C3.zig
    @@ -1,16 +1,9 @@
     const std = @import("std");
     const microzig = @import("microzig");
    -const regz = microzig.chip.registers;
    +const peripherals = microzig.chip.peripherals;
    +const GPIO = peripherals.GPIO;
     
     pub const gpio = struct {
    -    fn getRegNamed(comptime fld: []const u8) @TypeOf(@field(regz.GPIO, fld)) {
    -        return @field(regz.GPIO, fld);
    -    }
    -
    -    fn getReg(comptime template: []const u8, comptime pin: comptime_int) @TypeOf(@field(regz.GPIO, std.fmt.comptimePrint(template, .{pin}))) {
    -        return getRegNamed(comptime std.fmt.comptimePrint(template, .{pin}));
    -    }
    -
         fn assertRange(comptime p: comptime_int) void {
             if (p < 0 or p >= 21)
                 @compileError(std.fmt.comptimePrint("GPIO {} does not exist. GPIO pins can be between 0 and 21", .{p}));
    @@ -19,29 +12,29 @@ pub const gpio = struct {
         pub const Config = struct {
             function: u8 = 0x80,
             invert_function: bool = false,
    -        direction: microzig.gpio.Direction,
    +        direction: microzig.core.experimental.gpio.Direction,
             direct_io: bool = false,
             invert_direct_io: bool = false,
         };
     
         pub fn init(comptime pin: comptime_int, comptime config: Config) void {
             assertRange(pin);
    -        getReg("FUNC{}_OUT_SEL_CFG", pin).modify(.{
    +        GPIO.FUNC_OUT_SEL_CFG[pin].modify(.{
                 .OUT_SEL = config.function,
                 .INV_SEL = @boolToInt(config.invert_function),
                 .OEN_SEL = @boolToInt(config.direct_io),
                 .OEN_INV_SEL = @boolToInt(config.invert_direct_io),
             });
             switch (config.direction) {
    -            .input => microzig.chip.registers.GPIO.ENABLE.raw &= ~(@as(u32, 1) << pin),
    -            .output => microzig.chip.registers.GPIO.ENABLE.raw |= (@as(u32, 1) << pin),
    +            .input => GPIO.ENABLE.raw &= ~(@as(u32, 1) << pin),
    +            .output => GPIO.ENABLE.raw |= (@as(u32, 1) << pin),
             }
         }
     };
     
     pub const uart = struct {
    -    fn reg(comptime index: comptime_int) @TypeOf(@field(regz, std.fmt.comptimePrint("UART{}", .{index}))) {
    -        return @field(regz, std.fmt.comptimePrint("UART{}", .{index}));
    +    fn reg(comptime index: comptime_int) @TypeOf(@field(peripherals, std.fmt.comptimePrint("UART{}", .{index}))) {
    +        return @field(peripherals, std.fmt.comptimePrint("UART{}", .{index}));
         }
     
         pub fn write(comptime index: comptime_int, slice: []const u8) void {
    diff --git a/src/package/espressif-riscv.zig b/src/package/espressif-riscv.zig
    deleted file mode 100644
    index 06d7bc4..0000000
    --- a/src/package/espressif-riscv.zig
    +++ /dev/null
    @@ -1,39 +0,0 @@
    -const std = @import("std");
    -const microzig = @import("microzig");
    -
    -pub const StatusRegister = enum(u8) {
    -    // machine information
    -    mvendorid,
    -    marchid,
    -    mimpid,
    -    mhartid,
    -
    -    // machine trap setup
    -    mstatus,
    -    misa,
    -    mtvec,
    -};
    -
    -pub inline fn setStatusBit(comptime reg: StatusRegister, bits: u32) void {
    -    asm volatile ("csrrs zero, " ++ @tagName(reg) ++ ", %[value]"
    -        :
    -        : [value] "r" (bits),
    -    );
    -}
    -
    -pub inline fn clearStatusBit(comptime reg: StatusRegister, bits: u32) void {
    -    asm volatile ("csrrc zero, " ++ @tagName(reg) ++ ", %[value]"
    -        :
    -        : [value] "r" (bits),
    -    );
    -}
    -
    -pub inline fn cli() void {
    -    clearStatusBit(.mstatus, 0x08);
    -}
    -
    -pub inline fn sei() void {
    -    setStatusBit(.mstatus, 0x08);
    -}
    -
    -pub const startup_logic = microzig.chip.startup_logic;
    diff --git a/src/package/registers.zig b/src/package/registers.zig
    deleted file mode 100644
    index 77bed3f..0000000
    --- a/src/package/registers.zig
    +++ /dev/null
    @@ -1,37956 +0,0 @@
    -// this file was generated by regz: https://github.com/ZigEmbeddedGroup/regz
    -// commit: 62e33d0e2175e4c1621e1dbf9f6ac3ec18f6ba38
    -//
    -// vendor: ESPRESSIF SYSTEMS (SHANGHAI) CO., LTD.
    -// device: ESP32-C3
    -// cpu: RV32IMC
    -
    -pub const registers = struct {
    -    /// AES (Advanced Encryption Standard) Accelerator
    -    pub const AES = struct {
    -        pub const base_address = 0x6003a000;
    -
    -        /// address: 0x6003a000
    -        /// Key material key_0 configure register
    -        pub const KEY_0 = @intToPtr(*volatile u32, base_address + 0x0);
    -
    -        /// address: 0x6003a004
    -        /// Key material key_1 configure register
    -        pub const KEY_1 = @intToPtr(*volatile u32, base_address + 0x4);
    -
    -        /// address: 0x6003a008
    -        /// Key material key_2 configure register
    -        pub const KEY_2 = @intToPtr(*volatile u32, base_address + 0x8);
    -
    -        /// address: 0x6003a00c
    -        /// Key material key_3 configure register
    -        pub const KEY_3 = @intToPtr(*volatile u32, base_address + 0xc);
    -
    -        /// address: 0x6003a010
    -        /// Key material key_4 configure register
    -        pub const KEY_4 = @intToPtr(*volatile u32, base_address + 0x10);
    -
    -        /// address: 0x6003a014
    -        /// Key material key_5 configure register
    -        pub const KEY_5 = @intToPtr(*volatile u32, base_address + 0x14);
    -
    -        /// address: 0x6003a018
    -        /// Key material key_6 configure register
    -        pub const KEY_6 = @intToPtr(*volatile u32, base_address + 0x18);
    -
    -        /// address: 0x6003a01c
    -        /// Key material key_7 configure register
    -        pub const KEY_7 = @intToPtr(*volatile u32, base_address + 0x1c);
    -
    -        /// address: 0x6003a020
    -        /// source text material text_in_0 configure register
    -        pub const TEXT_IN_0 = @intToPtr(*volatile u32, base_address + 0x20);
    -
    -        /// address: 0x6003a024
    -        /// source text material text_in_1 configure register
    -        pub const TEXT_IN_1 = @intToPtr(*volatile u32, base_address + 0x24);
    -
    -        /// address: 0x6003a028
    -        /// source text material text_in_2 configure register
    -        pub const TEXT_IN_2 = @intToPtr(*volatile u32, base_address + 0x28);
    -
    -        /// address: 0x6003a02c
    -        /// source text material text_in_3 configure register
    -        pub const TEXT_IN_3 = @intToPtr(*volatile u32, base_address + 0x2c);
    -
    -        /// address: 0x6003a030
    -        /// result text material text_out_0 configure register
    -        pub const TEXT_OUT_0 = @intToPtr(*volatile u32, base_address + 0x30);
    -
    -        /// address: 0x6003a034
    -        /// result text material text_out_1 configure register
    -        pub const TEXT_OUT_1 = @intToPtr(*volatile u32, base_address + 0x34);
    -
    -        /// address: 0x6003a038
    -        /// result text material text_out_2 configure register
    -        pub const TEXT_OUT_2 = @intToPtr(*volatile u32, base_address + 0x38);
    -
    -        /// address: 0x6003a03c
    -        /// result text material text_out_3 configure register
    -        pub const TEXT_OUT_3 = @intToPtr(*volatile u32, base_address + 0x3c);
    -
    -        /// address: 0x6003a040
    -        /// AES Mode register
    -        pub const MODE = @intToPtr(*volatile MmioInt(32, u3), base_address + 0x40);
    -
    -        /// address: 0x6003a044
    -        /// AES Endian configure register
    -        pub const ENDIAN = @intToPtr(*volatile MmioInt(32, u6), base_address + 0x44);
    -
    -        /// address: 0x6003a048
    -        /// AES trigger register
    -        pub const TRIGGER = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x48);
    -
    -        /// address: 0x6003a04c
    -        /// AES state register
    -        pub const STATE = @intToPtr(*volatile MmioInt(32, u2), base_address + 0x4c);
    -
    -        /// address: 0x6003a050
    -        /// The memory that stores initialization vector
    -        pub const IV_MEM = @intToPtr(*volatile [16]u8, base_address + 0x50);
    -
    -        /// address: 0x6003a060
    -        /// The memory that stores GCM hash subkey
    -        pub const H_MEM = @intToPtr(*volatile [16]u8, base_address + 0x60);
    -
    -        /// address: 0x6003a070
    -        /// The memory that stores J0
    -        pub const J0_MEM = @intToPtr(*volatile [16]u8, base_address + 0x70);
    -
    -        /// address: 0x6003a080
    -        /// The memory that stores T0
    -        pub const T0_MEM = @intToPtr(*volatile [16]u8, base_address + 0x80);
    -
    -        /// address: 0x6003a090
    -        /// DMA-AES working mode register
    -        pub const DMA_ENABLE = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x90);
    -
    -        /// address: 0x6003a094
    -        /// AES cipher block mode register
    -        pub const BLOCK_MODE = @intToPtr(*volatile MmioInt(32, u3), base_address + 0x94);
    -
    -        /// address: 0x6003a098
    -        /// AES block number register
    -        pub const BLOCK_NUM = @intToPtr(*volatile u32, base_address + 0x98);
    -
    -        /// address: 0x6003a09c
    -        /// Standard incrementing function configure register
    -        pub const INC_SEL = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x9c);
    -
    -        /// address: 0x6003a0a0
    -        /// Additional Authential Data block number register
    -        pub const AAD_BLOCK_NUM = @intToPtr(*volatile u32, base_address + 0xa0);
    -
    -        /// address: 0x6003a0a4
    -        /// AES remainder bit number register
    -        pub const REMAINDER_BIT_NUM = @intToPtr(*volatile MmioInt(32, u7), base_address + 0xa4);
    -
    -        /// address: 0x6003a0a8
    -        /// AES continue register
    -        pub const CONTINUE = @intToPtr(*volatile MmioInt(32, u1), base_address + 0xa8);
    -
    -        /// address: 0x6003a0ac
    -        /// AES Interrupt clear register
    -        pub const INT_CLEAR = @intToPtr(*volatile MmioInt(32, u1), base_address + 0xac);
    -
    -        /// address: 0x6003a0b0
    -        /// AES Interrupt enable register
    -        pub const INT_ENA = @intToPtr(*volatile MmioInt(32, u1), base_address + 0xb0);
    -
    -        /// address: 0x6003a0b4
    -        /// AES version control register
    -        pub const DATE = @intToPtr(*volatile MmioInt(32, u30), base_address + 0xb4);
    -
    -        /// address: 0x6003a0b8
    -        /// AES-DMA exit config
    -        pub const DMA_EXIT = @intToPtr(*volatile MmioInt(32, u1), base_address + 0xb8);
    -    };
    -
    -    /// Advanced Peripheral Bus Controller
    -    pub const APB_CTRL = struct {
    -        pub const base_address = 0x60026000;
    -
    -        /// address: 0x60026000
    -        /// APB_CTRL_SYSCLK_CONF_REG
    -        pub const SYSCLK_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_pre_div_cnt
    -            PRE_DIV_CNT: u10,
    -            /// reg_clk_320m_en
    -            CLK_320M_EN: u1,
    -            /// reg_clk_en
    -            CLK_EN: u1,
    -            /// reg_rst_tick_cnt
    -            RST_TICK_CNT: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x0);
    -
    -        /// address: 0x60026004
    -        /// APB_CTRL_TICK_CONF_REG
    -        pub const TICK_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_xtal_tick_num
    -            XTAL_TICK_NUM: u8,
    -            /// reg_ck8m_tick_num
    -            CK8M_TICK_NUM: u8,
    -            /// reg_tick_enable
    -            TICK_ENABLE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x60026008
    -        /// APB_CTRL_CLK_OUT_EN_REG
    -        pub const CLK_OUT_EN = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_clk20_oen
    -            CLK20_OEN: u1,
    -            /// reg_clk22_oen
    -            CLK22_OEN: u1,
    -            /// reg_clk44_oen
    -            CLK44_OEN: u1,
    -            /// reg_clk_bb_oen
    -            CLK_BB_OEN: u1,
    -            /// reg_clk80_oen
    -            CLK80_OEN: u1,
    -            /// reg_clk160_oen
    -            CLK160_OEN: u1,
    -            /// reg_clk_320m_oen
    -            CLK_320M_OEN: u1,
    -            /// reg_clk_adc_inf_oen
    -            CLK_ADC_INF_OEN: u1,
    -            /// reg_clk_dac_cpu_oen
    -            CLK_DAC_CPU_OEN: u1,
    -            /// reg_clk40x_bb_oen
    -            CLK40X_BB_OEN: u1,
    -            /// reg_clk_xtal_oen
    -            CLK_XTAL_OEN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x6002600c
    -        /// APB_CTRL_WIFI_BB_CFG_REG
    -        pub const WIFI_BB_CFG = @intToPtr(*volatile u32, base_address + 0xc);
    -
    -        /// address: 0x60026010
    -        /// APB_CTRL_WIFI_BB_CFG_2_REG
    -        pub const WIFI_BB_CFG_2 = @intToPtr(*volatile u32, base_address + 0x10);
    -
    -        /// address: 0x60026014
    -        /// APB_CTRL_WIFI_CLK_EN_REG
    -        pub const WIFI_CLK_EN = @intToPtr(*volatile u32, base_address + 0x14);
    -
    -        /// address: 0x60026018
    -        /// APB_CTRL_WIFI_RST_EN_REG
    -        pub const WIFI_RST_EN = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_wifi_rst
    -            WIFI_RST: u32,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x6002601c
    -        /// APB_CTRL_HOST_INF_SEL_REG
    -        pub const HOST_INF_SEL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_peri_io_swap
    -            PERI_IO_SWAP: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x60026020
    -        /// APB_CTRL_EXT_MEM_PMS_LOCK_REG
    -        pub const EXT_MEM_PMS_LOCK = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x20);
    -
    -        /// address: 0x60026028
    -        /// APB_CTRL_FLASH_ACE0_ATTR_REG
    -        pub const FLASH_ACE0_ATTR = @intToPtr(*volatile MmioInt(32, u2), base_address + 0x28);
    -
    -        /// address: 0x6002602c
    -        /// APB_CTRL_FLASH_ACE1_ATTR_REG
    -        pub const FLASH_ACE1_ATTR = @intToPtr(*volatile MmioInt(32, u2), base_address + 0x2c);
    -
    -        /// address: 0x60026030
    -        /// APB_CTRL_FLASH_ACE2_ATTR_REG
    -        pub const FLASH_ACE2_ATTR = @intToPtr(*volatile MmioInt(32, u2), base_address + 0x30);
    -
    -        /// address: 0x60026034
    -        /// APB_CTRL_FLASH_ACE3_ATTR_REG
    -        pub const FLASH_ACE3_ATTR = @intToPtr(*volatile MmioInt(32, u2), base_address + 0x34);
    -
    -        /// address: 0x60026038
    -        /// APB_CTRL_FLASH_ACE0_ADDR_REG
    -        pub const FLASH_ACE0_ADDR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_flash_ace0_addr_s
    -            S: u32,
    -        }), base_address + 0x38);
    -
    -        /// address: 0x6002603c
    -        /// APB_CTRL_FLASH_ACE1_ADDR_REG
    -        pub const FLASH_ACE1_ADDR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_flash_ace1_addr_s
    -            S: u32,
    -        }), base_address + 0x3c);
    -
    -        /// address: 0x60026040
    -        /// APB_CTRL_FLASH_ACE2_ADDR_REG
    -        pub const FLASH_ACE2_ADDR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_flash_ace2_addr_s
    -            S: u32,
    -        }), base_address + 0x40);
    -
    -        /// address: 0x60026044
    -        /// APB_CTRL_FLASH_ACE3_ADDR_REG
    -        pub const FLASH_ACE3_ADDR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_flash_ace3_addr_s
    -            S: u32,
    -        }), base_address + 0x44);
    -
    -        /// address: 0x60026048
    -        /// APB_CTRL_FLASH_ACE0_SIZE_REG
    -        pub const FLASH_ACE0_SIZE = @intToPtr(*volatile MmioInt(32, u13), base_address + 0x48);
    -
    -        /// address: 0x6002604c
    -        /// APB_CTRL_FLASH_ACE1_SIZE_REG
    -        pub const FLASH_ACE1_SIZE = @intToPtr(*volatile MmioInt(32, u13), base_address + 0x4c);
    -
    -        /// address: 0x60026050
    -        /// APB_CTRL_FLASH_ACE2_SIZE_REG
    -        pub const FLASH_ACE2_SIZE = @intToPtr(*volatile MmioInt(32, u13), base_address + 0x50);
    -
    -        /// address: 0x60026054
    -        /// APB_CTRL_FLASH_ACE3_SIZE_REG
    -        pub const FLASH_ACE3_SIZE = @intToPtr(*volatile MmioInt(32, u13), base_address + 0x54);
    -
    -        /// address: 0x60026088
    -        /// APB_CTRL_SPI_MEM_PMS_CTRL_REG
    -        pub const SPI_MEM_PMS_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_spi_mem_reject_int
    -            SPI_MEM_REJECT_INT: u1,
    -            /// reg_spi_mem_reject_clr
    -            SPI_MEM_REJECT_CLR: u1,
    -            /// reg_spi_mem_reject_cde
    -            SPI_MEM_REJECT_CDE: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x88);
    -
    -        /// address: 0x6002608c
    -        /// APB_CTRL_SPI_MEM_REJECT_ADDR_REG
    -        pub const SPI_MEM_REJECT_ADDR = @intToPtr(*volatile u32, base_address + 0x8c);
    -
    -        /// address: 0x60026090
    -        /// APB_CTRL_SDIO_CTRL_REG
    -        pub const SDIO_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_sdio_win_access_en
    -            SDIO_WIN_ACCESS_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x90);
    -
    -        /// address: 0x60026094
    -        /// APB_CTRL_REDCY_SIG0_REG
    -        pub const REDCY_SIG0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_redcy_sig0
    -            REDCY_SIG0: u31,
    -            /// reg_redcy_andor
    -            REDCY_ANDOR: u1,
    -        }), base_address + 0x94);
    -
    -        /// address: 0x60026098
    -        /// APB_CTRL_REDCY_SIG1_REG
    -        pub const REDCY_SIG1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_redcy_sig1
    -            REDCY_SIG1: u31,
    -            /// reg_redcy_nandor
    -            REDCY_NANDOR: u1,
    -        }), base_address + 0x98);
    -
    -        /// address: 0x6002609c
    -        /// APB_CTRL_FRONT_END_MEM_PD_REG
    -        pub const FRONT_END_MEM_PD = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_agc_mem_force_pu
    -            AGC_MEM_FORCE_PU: u1,
    -            /// reg_agc_mem_force_pd
    -            AGC_MEM_FORCE_PD: u1,
    -            /// reg_pbus_mem_force_pu
    -            PBUS_MEM_FORCE_PU: u1,
    -            /// reg_pbus_mem_force_pd
    -            PBUS_MEM_FORCE_PD: u1,
    -            /// reg_dc_mem_force_pu
    -            DC_MEM_FORCE_PU: u1,
    -            /// reg_dc_mem_force_pd
    -            DC_MEM_FORCE_PD: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -        }), base_address + 0x9c);
    -
    -        /// address: 0x600260a0
    -        /// APB_CTRL_RETENTION_CTRL_REG
    -        pub const RETENTION_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_retention_link_addr
    -            RETENTION_LINK_ADDR: u27,
    -            /// reg_nobypass_cpu_iso_rst
    -            NOBYPASS_CPU_ISO_RST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -        }), base_address + 0xa0);
    -
    -        /// address: 0x600260a4
    -        /// APB_CTRL_CLKGATE_FORCE_ON_REG
    -        pub const CLKGATE_FORCE_ON = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_rom_clkgate_force_on
    -            ROM_CLKGATE_FORCE_ON: u2,
    -            /// reg_sram_clkgate_force_on
    -            SRAM_CLKGATE_FORCE_ON: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -        }), base_address + 0xa4);
    -
    -        /// address: 0x600260a8
    -        /// APB_CTRL_MEM_POWER_DOWN_REG
    -        pub const MEM_POWER_DOWN = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_rom_power_down
    -            ROM_POWER_DOWN: u2,
    -            /// reg_sram_power_down
    -            SRAM_POWER_DOWN: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -        }), base_address + 0xa8);
    -
    -        /// address: 0x600260ac
    -        /// APB_CTRL_MEM_POWER_UP_REG
    -        pub const MEM_POWER_UP = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_rom_power_up
    -            ROM_POWER_UP: u2,
    -            /// reg_sram_power_up
    -            SRAM_POWER_UP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -        }), base_address + 0xac);
    -
    -        /// address: 0x600260b0
    -        /// APB_CTRL_RND_DATA_REG
    -        pub const RND_DATA = @intToPtr(*volatile u32, base_address + 0xb0);
    -
    -        /// address: 0x600260b4
    -        /// APB_CTRL_PERI_BACKUP_CONFIG_REG
    -        pub const PERI_BACKUP_CONFIG = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            /// reg_peri_backup_flow_err
    -            PERI_BACKUP_FLOW_ERR: u2,
    -            reserved1: u1,
    -            /// reg_peri_backup_burst_limit
    -            PERI_BACKUP_BURST_LIMIT: u5,
    -            /// reg_peri_backup_tout_thres
    -            PERI_BACKUP_TOUT_THRES: u10,
    -            /// reg_peri_backup_size
    -            PERI_BACKUP_SIZE: u10,
    -            /// reg_peri_backup_start
    -            PERI_BACKUP_START: u1,
    -            /// reg_peri_backup_to_mem
    -            PERI_BACKUP_TO_MEM: u1,
    -            /// reg_peri_backup_ena
    -            PERI_BACKUP_ENA: u1,
    -        }), base_address + 0xb4);
    -
    -        /// address: 0x600260b8
    -        /// APB_CTRL_PERI_BACKUP_APB_ADDR_REG
    -        pub const PERI_BACKUP_APB_ADDR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_backup_apb_start_addr
    -            BACKUP_APB_START_ADDR: u32,
    -        }), base_address + 0xb8);
    -
    -        /// address: 0x600260bc
    -        /// APB_CTRL_PERI_BACKUP_MEM_ADDR_REG
    -        pub const PERI_BACKUP_MEM_ADDR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_backup_mem_start_addr
    -            BACKUP_MEM_START_ADDR: u32,
    -        }), base_address + 0xbc);
    -
    -        /// address: 0x600260c0
    -        /// APB_CTRL_PERI_BACKUP_INT_RAW_REG
    -        pub const PERI_BACKUP_INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_peri_backup_done_int_raw
    -            PERI_BACKUP_DONE_INT_RAW: u1,
    -            /// reg_peri_backup_err_int_raw
    -            PERI_BACKUP_ERR_INT_RAW: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0xc0);
    -
    -        /// address: 0x600260c4
    -        /// APB_CTRL_PERI_BACKUP_INT_ST_REG
    -        pub const PERI_BACKUP_INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_peri_backup_done_int_st
    -            PERI_BACKUP_DONE_INT_ST: u1,
    -            /// reg_peri_backup_err_int_st
    -            PERI_BACKUP_ERR_INT_ST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0xc4);
    -
    -        /// address: 0x600260c8
    -        /// APB_CTRL_PERI_BACKUP_INT_ENA_REG
    -        pub const PERI_BACKUP_INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_peri_backup_done_int_ena
    -            PERI_BACKUP_DONE_INT_ENA: u1,
    -            /// reg_peri_backup_err_int_ena
    -            PERI_BACKUP_ERR_INT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0xc8);
    -
    -        /// address: 0x600260d0
    -        /// APB_CTRL_PERI_BACKUP_INT_CLR_REG
    -        pub const PERI_BACKUP_INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_peri_backup_done_int_clr
    -            PERI_BACKUP_DONE_INT_CLR: u1,
    -            /// reg_peri_backup_err_int_clr
    -            PERI_BACKUP_ERR_INT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0xd0);
    -
    -        /// address: 0x600263fc
    -        /// APB_CTRL_DATE_REG
    -        pub const DATE = @intToPtr(*volatile u32, base_address + 0x3fc);
    -    };
    -
    -    /// Successive Approximation Register Analog to Digital Converter
    -    pub const APB_SARADC = struct {
    -        pub const base_address = 0x60040000;
    -
    -        /// address: 0x60040000
    -        /// digital saradc configure register
    -        pub const CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// select software enable saradc sample
    -            SARADC_START_FORCE: u1,
    -            /// software enable saradc sample
    -            SARADC_START: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// SAR clock gated
    -            SARADC_SAR_CLK_GATED: u1,
    -            /// SAR clock divider
    -            SARADC_SAR_CLK_DIV: u8,
    -            /// 0 ~ 15 means length 1 ~ 16
    -            SARADC_SAR_PATT_LEN: u3,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            /// clear the pointer of pattern table for DIG ADC1 CTRL
    -            SARADC_SAR_PATT_P_CLEAR: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            /// force option to xpd sar blocks
    -            SARADC_XPD_SAR_FORCE: u2,
    -            reserved12: u1,
    -            /// wait arbit signal stable after sar_done
    -            SARADC_WAIT_ARB_CYCLE: u2,
    -        }), base_address + 0x0);
    -
    -        /// address: 0x60040004
    -        /// digital saradc configure register
    -        pub const CTRL2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// enable max meas num
    -            SARADC_MEAS_NUM_LIMIT: u1,
    -            /// max conversion number
    -            SARADC_MAX_MEAS_NUM: u8,
    -            /// 1: data to DIG ADC1 CTRL is inverted, otherwise not
    -            SARADC_SAR1_INV: u1,
    -            /// 1: data to DIG ADC2 CTRL is inverted, otherwise not
    -            SARADC_SAR2_INV: u1,
    -            reserved0: u1,
    -            /// to set saradc timer target
    -            SARADC_TIMER_TARGET: u12,
    -            /// to enable saradc timer trigger
    -            SARADC_TIMER_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x60040008
    -        /// digital saradc configure register
    -        pub const FILTER_CTRL1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            reserved25: u1,
    -            /// Factor of saradc filter1
    -            APB_SARADC_FILTER_FACTOR1: u3,
    -            /// Factor of saradc filter0
    -            APB_SARADC_FILTER_FACTOR0: u3,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x6004000c
    -        /// digital saradc configure register
    -        pub const FSM_WAIT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// saradc_xpd_wait
    -            SARADC_XPD_WAIT: u8,
    -            /// saradc_rstb_wait
    -            SARADC_RSTB_WAIT: u8,
    -            /// saradc_standby_wait
    -            SARADC_STANDBY_WAIT: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x60040010
    -        /// digital saradc configure register
    -        pub const SAR1_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// saradc1 status about data and channel
    -            SARADC_SAR1_STATUS: u32,
    -        }), base_address + 0x10);
    -
    -        /// address: 0x60040014
    -        /// digital saradc configure register
    -        pub const SAR2_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// saradc2 status about data and channel
    -            SARADC_SAR2_STATUS: u32,
    -        }), base_address + 0x14);
    -
    -        /// address: 0x60040018
    -        /// digital saradc configure register
    -        pub const SAR_PATT_TAB1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// item 0 ~ 3 for pattern table 1 (each item one byte)
    -            SARADC_SAR_PATT_TAB1: u24,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x6004001c
    -        /// digital saradc configure register
    -        pub const SAR_PATT_TAB2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Item 4 ~ 7 for pattern table 1 (each item one byte)
    -            SARADC_SAR_PATT_TAB2: u24,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x60040020
    -        /// digital saradc configure register
    -        pub const ONETIME_SAMPLE = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            /// configure onetime atten
    -            SARADC_ONETIME_ATTEN: u2,
    -            /// configure onetime channel
    -            SARADC_ONETIME_CHANNEL: u4,
    -            /// trigger adc onetime sample
    -            SARADC_ONETIME_START: u1,
    -            /// enable adc2 onetime sample
    -            SARADC2_ONETIME_SAMPLE: u1,
    -            /// enable adc1 onetime sample
    -            SARADC1_ONETIME_SAMPLE: u1,
    -        }), base_address + 0x20);
    -
    -        /// address: 0x60040024
    -        /// digital saradc configure register
    -        pub const ARB_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// adc2 arbiter force to enableapb controller
    -            ADC_ARB_APB_FORCE: u1,
    -            /// adc2 arbiter force to enable rtc controller
    -            ADC_ARB_RTC_FORCE: u1,
    -            /// adc2 arbiter force to enable wifi controller
    -            ADC_ARB_WIFI_FORCE: u1,
    -            /// adc2 arbiter force grant
    -            ADC_ARB_GRANT_FORCE: u1,
    -            /// Set adc2 arbiterapb priority
    -            ADC_ARB_APB_PRIORITY: u2,
    -            /// Set adc2 arbiter rtc priority
    -            ADC_ARB_RTC_PRIORITY: u2,
    -            /// Set adc2 arbiter wifi priority
    -            ADC_ARB_WIFI_PRIORITY: u2,
    -            /// adc2 arbiter uses fixed priority
    -            ADC_ARB_FIX_PRIORITY: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x24);
    -
    -        /// address: 0x60040028
    -        /// digital saradc configure register
    -        pub const FILTER_CTRL0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            /// configure filter1 to adc channel
    -            APB_SARADC_FILTER_CHANNEL1: u4,
    -            /// configure filter0 to adc channel
    -            APB_SARADC_FILTER_CHANNEL0: u4,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            /// enable apb_adc1_filter
    -            APB_SARADC_FILTER_RESET: u1,
    -        }), base_address + 0x28);
    -
    -        /// address: 0x6004002c
    -        /// digital saradc configure register
    -        pub const SAR1DATA_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// saradc1 data
    -            APB_SARADC1_DATA: u17,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -        }), base_address + 0x2c);
    -
    -        /// address: 0x60040030
    -        /// digital saradc configure register
    -        pub const SAR2DATA_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// saradc2 data
    -            APB_SARADC2_DATA: u17,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -        }), base_address + 0x30);
    -
    -        /// address: 0x60040034
    -        /// digital saradc configure register
    -        pub const THRES0_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// configure thres0 to adc channel
    -            APB_SARADC_THRES0_CHANNEL: u4,
    -            reserved0: u1,
    -            /// saradc thres0 monitor thres
    -            APB_SARADC_THRES0_HIGH: u13,
    -            /// saradc thres0 monitor thres
    -            APB_SARADC_THRES0_LOW: u13,
    -            padding0: u1,
    -        }), base_address + 0x34);
    -
    -        /// address: 0x60040038
    -        /// digital saradc configure register
    -        pub const THRES1_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// configure thres1 to adc channel
    -            APB_SARADC_THRES1_CHANNEL: u4,
    -            reserved0: u1,
    -            /// saradc thres1 monitor thres
    -            APB_SARADC_THRES1_HIGH: u13,
    -            /// saradc thres1 monitor thres
    -            APB_SARADC_THRES1_LOW: u13,
    -            padding0: u1,
    -        }), base_address + 0x38);
    -
    -        /// address: 0x6004003c
    -        /// digital saradc configure register
    -        pub const THRES_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            reserved25: u1,
    -            reserved26: u1,
    -            /// enable thres to all channel
    -            APB_SARADC_THRES_ALL_EN: u1,
    -            reserved27: u1,
    -            reserved28: u1,
    -            /// enable thres1
    -            APB_SARADC_THRES1_EN: u1,
    -            /// enable thres0
    -            APB_SARADC_THRES0_EN: u1,
    -        }), base_address + 0x3c);
    -
    -        /// address: 0x60040040
    -        /// digital saradc int register
    -        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            reserved25: u1,
    -            /// saradc thres1 low interrupt enable
    -            APB_SARADC_THRES1_LOW_INT_ENA: u1,
    -            /// saradc thres0 low interrupt enable
    -            APB_SARADC_THRES0_LOW_INT_ENA: u1,
    -            /// saradc thres1 high interrupt enable
    -            APB_SARADC_THRES1_HIGH_INT_ENA: u1,
    -            /// saradc thres0 high interrupt enable
    -            APB_SARADC_THRES0_HIGH_INT_ENA: u1,
    -            /// saradc2 done interrupt enable
    -            APB_SARADC2_DONE_INT_ENA: u1,
    -            /// saradc1 done interrupt enable
    -            APB_SARADC1_DONE_INT_ENA: u1,
    -        }), base_address + 0x40);
    -
    -        /// address: 0x60040044
    -        /// digital saradc int register
    -        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            reserved25: u1,
    -            /// saradc thres1 low interrupt raw
    -            APB_SARADC_THRES1_LOW_INT_RAW: u1,
    -            /// saradc thres0 low interrupt raw
    -            APB_SARADC_THRES0_LOW_INT_RAW: u1,
    -            /// saradc thres1 high interrupt raw
    -            APB_SARADC_THRES1_HIGH_INT_RAW: u1,
    -            /// saradc thres0 high interrupt raw
    -            APB_SARADC_THRES0_HIGH_INT_RAW: u1,
    -            /// saradc2 done interrupt raw
    -            APB_SARADC2_DONE_INT_RAW: u1,
    -            /// saradc1 done interrupt raw
    -            APB_SARADC1_DONE_INT_RAW: u1,
    -        }), base_address + 0x44);
    -
    -        /// address: 0x60040048
    -        /// digital saradc int register
    -        pub const INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            reserved25: u1,
    -            /// saradc thres1 low interrupt state
    -            APB_SARADC_THRES1_LOW_INT_ST: u1,
    -            /// saradc thres0 low interrupt state
    -            APB_SARADC_THRES0_LOW_INT_ST: u1,
    -            /// saradc thres1 high interrupt state
    -            APB_SARADC_THRES1_HIGH_INT_ST: u1,
    -            /// saradc thres0 high interrupt state
    -            APB_SARADC_THRES0_HIGH_INT_ST: u1,
    -            /// saradc2 done interrupt state
    -            APB_SARADC2_DONE_INT_ST: u1,
    -            /// saradc1 done interrupt state
    -            APB_SARADC1_DONE_INT_ST: u1,
    -        }), base_address + 0x48);
    -
    -        /// address: 0x6004004c
    -        /// digital saradc int register
    -        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            reserved25: u1,
    -            /// saradc thres1 low interrupt clear
    -            APB_SARADC_THRES1_LOW_INT_CLR: u1,
    -            /// saradc thres0 low interrupt clear
    -            APB_SARADC_THRES0_LOW_INT_CLR: u1,
    -            /// saradc thres1 high interrupt clear
    -            APB_SARADC_THRES1_HIGH_INT_CLR: u1,
    -            /// saradc thres0 high interrupt clear
    -            APB_SARADC_THRES0_HIGH_INT_CLR: u1,
    -            /// saradc2 done interrupt clear
    -            APB_SARADC2_DONE_INT_CLR: u1,
    -            /// saradc1 done interrupt clear
    -            APB_SARADC1_DONE_INT_CLR: u1,
    -        }), base_address + 0x4c);
    -
    -        /// address: 0x60040050
    -        /// digital saradc configure register
    -        pub const DMA_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// the dma_in_suc_eof gen when sample cnt = spi_eof_num
    -            APB_ADC_EOF_NUM: u16,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            /// reset_apb_adc_state
    -            APB_ADC_RESET_FSM: u1,
    -            /// enable apb_adc use spi_dma
    -            APB_ADC_TRANS: u1,
    -        }), base_address + 0x50);
    -
    -        /// address: 0x60040054
    -        /// digital saradc configure register
    -        pub const CLKM_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Integral I2S clock divider value
    -            CLKM_DIV_NUM: u8,
    -            /// Fractional clock divider numerator value
    -            CLKM_DIV_B: u6,
    -            /// Fractional clock divider denominator value
    -            CLKM_DIV_A: u6,
    -            /// reg clk en
    -            CLK_EN: u1,
    -            /// Set this bit to enable clk_apll
    -            CLK_SEL: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -        }), base_address + 0x54);
    -
    -        /// address: 0x60040058
    -        /// digital tsens configure register
    -        pub const APB_TSENS_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// temperature sensor data out
    -            TSENS_OUT: u8,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            /// invert temperature sensor data
    -            TSENS_IN_INV: u1,
    -            /// temperature sensor clock divider
    -            TSENS_CLK_DIV: u8,
    -            /// temperature sensor power up
    -            TSENS_PU: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -        }), base_address + 0x58);
    -
    -        /// address: 0x6004005c
    -        /// digital tsens configure register
    -        pub const TSENS_CTRL2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// the time that power up tsens need wait
    -            TSENS_XPD_WAIT: u12,
    -            /// force power up tsens
    -            TSENS_XPD_FORCE: u2,
    -            /// inv tsens clk
    -            TSENS_CLK_INV: u1,
    -            /// tsens clk select
    -            TSENS_CLK_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x5c);
    -
    -        /// address: 0x60040060
    -        /// digital saradc configure register
    -        pub const CALI = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// saradc cali factor
    -            APB_SARADC_CALI_CFG: u17,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -        }), base_address + 0x60);
    -
    -        /// address: 0x600403fc
    -        /// version
    -        pub const CTRL_DATE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// version
    -            DATE: u32,
    -        }), base_address + 0x3fc);
    -    };
    -
    -    /// Debug Assist
    -    pub const ASSIST_DEBUG = struct {
    -        pub const base_address = 0x600ce000;
    -
    -        /// address: 0x600ce000
    -        /// ASSIST_DEBUG_C0RE_0_MONTR_ENA_REG
    -        pub const C0RE_0_MONTR_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core_0_area_dram0_0_rd_ena
    -            CORE_0_AREA_DRAM0_0_RD_ENA: u1,
    -            /// reg_core_0_area_dram0_0_wr_ena
    -            CORE_0_AREA_DRAM0_0_WR_ENA: u1,
    -            /// reg_core_0_area_dram0_1_rd_ena
    -            CORE_0_AREA_DRAM0_1_RD_ENA: u1,
    -            /// reg_core_0_area_dram0_1_wr_ena
    -            CORE_0_AREA_DRAM0_1_WR_ENA: u1,
    -            /// reg_core_0_area_pif_0_rd_ena
    -            CORE_0_AREA_PIF_0_RD_ENA: u1,
    -            /// reg_core_0_area_pif_0_wr_ena
    -            CORE_0_AREA_PIF_0_WR_ENA: u1,
    -            /// reg_core_0_area_pif_1_rd_ena
    -            CORE_0_AREA_PIF_1_RD_ENA: u1,
    -            /// reg_core_0_area_pif_1_wr_ena
    -            CORE_0_AREA_PIF_1_WR_ENA: u1,
    -            /// reg_core_0_sp_spill_min_ena
    -            CORE_0_SP_SPILL_MIN_ENA: u1,
    -            /// reg_core_0_sp_spill_max_ena
    -            CORE_0_SP_SPILL_MAX_ENA: u1,
    -            /// reg_core_0_iram0_exception_monitor_ena
    -            CORE_0_IRAM0_EXCEPTION_MONITOR_ENA: u1,
    -            /// reg_core_0_dram0_exception_monitor_ena
    -            CORE_0_DRAM0_EXCEPTION_MONITOR_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0x0);
    -
    -        /// address: 0x600ce004
    -        /// ASSIST_DEBUG_CORE_0_INTR_RAW_REG
    -        pub const CORE_0_INTR_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core_0_area_dram0_0_rd_raw
    -            CORE_0_AREA_DRAM0_0_RD_RAW: u1,
    -            /// reg_core_0_area_dram0_0_wr_raw
    -            CORE_0_AREA_DRAM0_0_WR_RAW: u1,
    -            /// reg_core_0_area_dram0_1_rd_raw
    -            CORE_0_AREA_DRAM0_1_RD_RAW: u1,
    -            /// reg_core_0_area_dram0_1_wr_raw
    -            CORE_0_AREA_DRAM0_1_WR_RAW: u1,
    -            /// reg_core_0_area_pif_0_rd_raw
    -            CORE_0_AREA_PIF_0_RD_RAW: u1,
    -            /// reg_core_0_area_pif_0_wr_raw
    -            CORE_0_AREA_PIF_0_WR_RAW: u1,
    -            /// reg_core_0_area_pif_1_rd_raw
    -            CORE_0_AREA_PIF_1_RD_RAW: u1,
    -            /// reg_core_0_area_pif_1_wr_raw
    -            CORE_0_AREA_PIF_1_WR_RAW: u1,
    -            /// reg_core_0_sp_spill_min_raw
    -            CORE_0_SP_SPILL_MIN_RAW: u1,
    -            /// reg_core_0_sp_spill_max_raw
    -            CORE_0_SP_SPILL_MAX_RAW: u1,
    -            /// reg_core_0_iram0_exception_monitor_raw
    -            CORE_0_IRAM0_EXCEPTION_MONITOR_RAW: u1,
    -            /// reg_core_0_dram0_exception_monitor_raw
    -            CORE_0_DRAM0_EXCEPTION_MONITOR_RAW: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x600ce008
    -        /// ASSIST_DEBUG_CORE_0_INTR_ENA_REG
    -        pub const CORE_0_INTR_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core_0_area_dram0_0_rd_intr_ena
    -            CORE_0_AREA_DRAM0_0_RD_INTR_ENA: u1,
    -            /// reg_core_0_area_dram0_0_wr_intr_ena
    -            CORE_0_AREA_DRAM0_0_WR_INTR_ENA: u1,
    -            /// reg_core_0_area_dram0_1_rd_intr_ena
    -            CORE_0_AREA_DRAM0_1_RD_INTR_ENA: u1,
    -            /// reg_core_0_area_dram0_1_wr_intr_ena
    -            CORE_0_AREA_DRAM0_1_WR_INTR_ENA: u1,
    -            /// reg_core_0_area_pif_0_rd_intr_ena
    -            CORE_0_AREA_PIF_0_RD_INTR_ENA: u1,
    -            /// reg_core_0_area_pif_0_wr_intr_ena
    -            CORE_0_AREA_PIF_0_WR_INTR_ENA: u1,
    -            /// reg_core_0_area_pif_1_rd_intr_ena
    -            CORE_0_AREA_PIF_1_RD_INTR_ENA: u1,
    -            /// reg_core_0_area_pif_1_wr_intr_ena
    -            CORE_0_AREA_PIF_1_WR_INTR_ENA: u1,
    -            /// reg_core_0_sp_spill_min_intr_ena
    -            CORE_0_SP_SPILL_MIN_INTR_ENA: u1,
    -            /// reg_core_0_sp_spill_max_intr_ena
    -            CORE_0_SP_SPILL_MAX_INTR_ENA: u1,
    -            /// reg_core_0_iram0_exception_monitor_ena
    -            CORE_0_IRAM0_EXCEPTION_MONITOR_RLS: u1,
    -            /// reg_core_0_dram0_exception_monitor_ena
    -            CORE_0_DRAM0_EXCEPTION_MONITOR_RLS: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x600ce00c
    -        /// ASSIST_DEBUG_CORE_0_INTR_CLR_REG
    -        pub const CORE_0_INTR_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core_0_area_dram0_0_rd_clr
    -            CORE_0_AREA_DRAM0_0_RD_CLR: u1,
    -            /// reg_core_0_area_dram0_0_wr_clr
    -            CORE_0_AREA_DRAM0_0_WR_CLR: u1,
    -            /// reg_core_0_area_dram0_1_rd_clr
    -            CORE_0_AREA_DRAM0_1_RD_CLR: u1,
    -            /// reg_core_0_area_dram0_1_wr_clr
    -            CORE_0_AREA_DRAM0_1_WR_CLR: u1,
    -            /// reg_core_0_area_pif_0_rd_clr
    -            CORE_0_AREA_PIF_0_RD_CLR: u1,
    -            /// reg_core_0_area_pif_0_wr_clr
    -            CORE_0_AREA_PIF_0_WR_CLR: u1,
    -            /// reg_core_0_area_pif_1_rd_clr
    -            CORE_0_AREA_PIF_1_RD_CLR: u1,
    -            /// reg_core_0_area_pif_1_wr_clr
    -            CORE_0_AREA_PIF_1_WR_CLR: u1,
    -            /// reg_core_0_sp_spill_min_clr
    -            CORE_0_SP_SPILL_MIN_CLR: u1,
    -            /// reg_core_0_sp_spill_max_clr
    -            CORE_0_SP_SPILL_MAX_CLR: u1,
    -            /// reg_core_0_iram0_exception_monitor_clr
    -            CORE_0_IRAM0_EXCEPTION_MONITOR_CLR: u1,
    -            /// reg_core_0_dram0_exception_monitor_clr
    -            CORE_0_DRAM0_EXCEPTION_MONITOR_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x600ce010
    -        /// ASSIST_DEBUG_CORE_0_AREA_DRAM0_0_MIN_REG
    -        pub const CORE_0_AREA_DRAM0_0_MIN = @intToPtr(*volatile u32, base_address + 0x10);
    -
    -        /// address: 0x600ce014
    -        /// ASSIST_DEBUG_CORE_0_AREA_DRAM0_0_MAX_REG
    -        pub const CORE_0_AREA_DRAM0_0_MAX = @intToPtr(*volatile u32, base_address + 0x14);
    -
    -        /// address: 0x600ce018
    -        /// ASSIST_DEBUG_CORE_0_AREA_DRAM0_1_MIN_REG
    -        pub const CORE_0_AREA_DRAM0_1_MIN = @intToPtr(*volatile u32, base_address + 0x18);
    -
    -        /// address: 0x600ce01c
    -        /// ASSIST_DEBUG_CORE_0_AREA_DRAM0_1_MAX_REG
    -        pub const CORE_0_AREA_DRAM0_1_MAX = @intToPtr(*volatile u32, base_address + 0x1c);
    -
    -        /// address: 0x600ce020
    -        /// ASSIST_DEBUG_CORE_0_AREA_PIF_0_MIN_REG
    -        pub const CORE_0_AREA_PIF_0_MIN = @intToPtr(*volatile u32, base_address + 0x20);
    -
    -        /// address: 0x600ce024
    -        /// ASSIST_DEBUG_CORE_0_AREA_PIF_0_MAX_REG
    -        pub const CORE_0_AREA_PIF_0_MAX = @intToPtr(*volatile u32, base_address + 0x24);
    -
    -        /// address: 0x600ce028
    -        /// ASSIST_DEBUG_CORE_0_AREA_PIF_1_MIN_REG
    -        pub const CORE_0_AREA_PIF_1_MIN = @intToPtr(*volatile u32, base_address + 0x28);
    -
    -        /// address: 0x600ce02c
    -        /// ASSIST_DEBUG_CORE_0_AREA_PIF_1_MAX_REG
    -        pub const CORE_0_AREA_PIF_1_MAX = @intToPtr(*volatile u32, base_address + 0x2c);
    -
    -        /// address: 0x600ce030
    -        /// ASSIST_DEBUG_CORE_0_AREA_PC_REG
    -        pub const CORE_0_AREA_PC = @intToPtr(*volatile u32, base_address + 0x30);
    -
    -        /// address: 0x600ce034
    -        /// ASSIST_DEBUG_CORE_0_AREA_SP_REG
    -        pub const CORE_0_AREA_SP = @intToPtr(*volatile u32, base_address + 0x34);
    -
    -        /// address: 0x600ce038
    -        /// ASSIST_DEBUG_CORE_0_SP_MIN_REG
    -        pub const CORE_0_SP_MIN = @intToPtr(*volatile u32, base_address + 0x38);
    -
    -        /// address: 0x600ce03c
    -        /// ASSIST_DEBUG_CORE_0_SP_MAX_REG
    -        pub const CORE_0_SP_MAX = @intToPtr(*volatile u32, base_address + 0x3c);
    -
    -        /// address: 0x600ce040
    -        /// ASSIST_DEBUG_CORE_0_SP_PC_REG
    -        pub const CORE_0_SP_PC = @intToPtr(*volatile u32, base_address + 0x40);
    -
    -        /// address: 0x600ce044
    -        /// ASSIST_DEBUG_CORE_0_RCD_EN_REG
    -        pub const CORE_0_RCD_EN = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core_0_rcd_recorden
    -            CORE_0_RCD_RECORDEN: u1,
    -            /// reg_core_0_rcd_pdebugen
    -            CORE_0_RCD_PDEBUGEN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x44);
    -
    -        /// address: 0x600ce048
    -        /// ASSIST_DEBUG_CORE_0_RCD_PDEBUGPC_REG
    -        pub const CORE_0_RCD_PDEBUGPC = @intToPtr(*volatile u32, base_address + 0x48);
    -
    -        /// address: 0x600ce04c
    -        /// ASSIST_DEBUG_CORE_0_RCD_PDEBUGSP_REG
    -        pub const CORE_0_RCD_PDEBUGSP = @intToPtr(*volatile u32, base_address + 0x4c);
    -
    -        /// address: 0x600ce050
    -        /// ASSIST_DEBUG_CORE_0_RCD_PDEBUGSP_REG
    -        pub const CORE_0_IRAM0_EXCEPTION_MONITOR_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core_0_iram0_recording_addr_0
    -            CORE_0_IRAM0_RECORDING_ADDR_0: u24,
    -            /// reg_core_0_iram0_recording_wr_0
    -            CORE_0_IRAM0_RECORDING_WR_0: u1,
    -            /// reg_core_0_iram0_recording_loadstore_0
    -            CORE_0_IRAM0_RECORDING_LOADSTORE_0: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -        }), base_address + 0x50);
    -
    -        /// address: 0x600ce054
    -        /// ASSIST_DEBUG_CORE_0_IRAM0_EXCEPTION_MONITOR_1_REG
    -        pub const CORE_0_IRAM0_EXCEPTION_MONITOR_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core_0_iram0_recording_addr_1
    -            CORE_0_IRAM0_RECORDING_ADDR_1: u24,
    -            /// reg_core_0_iram0_recording_wr_1
    -            CORE_0_IRAM0_RECORDING_WR_1: u1,
    -            /// reg_core_0_iram0_recording_loadstore_1
    -            CORE_0_IRAM0_RECORDING_LOADSTORE_1: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -        }), base_address + 0x54);
    -
    -        /// address: 0x600ce058
    -        /// ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_0_REG
    -        pub const CORE_0_DRAM0_EXCEPTION_MONITOR_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core_0_dram0_recording_addr_0
    -            CORE_0_DRAM0_RECORDING_ADDR_0: u24,
    -            /// reg_core_0_dram0_recording_wr_0
    -            CORE_0_DRAM0_RECORDING_WR_0: u1,
    -            /// reg_core_0_dram0_recording_byteen_0
    -            CORE_0_DRAM0_RECORDING_BYTEEN_0: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -        }), base_address + 0x58);
    -
    -        /// address: 0x600ce05c
    -        /// ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_1_REG
    -        pub const CORE_0_DRAM0_EXCEPTION_MONITOR_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core_0_dram0_recording_pc_0
    -            CORE_0_DRAM0_RECORDING_PC_0: u32,
    -        }), base_address + 0x5c);
    -
    -        /// address: 0x600ce060
    -        /// ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_1_REG
    -        pub const CORE_0_DRAM0_EXCEPTION_MONITOR_2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core_0_dram0_recording_addr_1
    -            CORE_0_DRAM0_RECORDING_ADDR_1: u24,
    -            /// reg_core_0_dram0_recording_wr_1
    -            CORE_0_DRAM0_RECORDING_WR_1: u1,
    -            /// reg_core_0_dram0_recording_byteen_1
    -            CORE_0_DRAM0_RECORDING_BYTEEN_1: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -        }), base_address + 0x60);
    -
    -        /// address: 0x600ce064
    -        /// ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_3_REG
    -        pub const CORE_0_DRAM0_EXCEPTION_MONITOR_3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core_0_dram0_recording_pc_1
    -            CORE_0_DRAM0_RECORDING_PC_1: u32,
    -        }), base_address + 0x64);
    -
    -        /// address: 0x600ce068
    -        /// ASSIST_DEBUG_CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_0_REG
    -        pub const CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core_x_iram0_dram0_limit_cycle_0
    -            CORE_X_IRAM0_DRAM0_LIMIT_CYCLE_0: u20,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x68);
    -
    -        /// address: 0x600ce06c
    -        /// ASSIST_DEBUG_CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_1_REG
    -        pub const CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core_x_iram0_dram0_limit_cycle_1
    -            CORE_X_IRAM0_DRAM0_LIMIT_CYCLE_1: u20,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x6c);
    -
    -        /// address: 0x600ce070
    -        /// ASSIST_DEBUG_LOG_SETTING
    -        pub const LOG_SETTING = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_log_ena
    -            LOG_ENA: u3,
    -            /// reg_log_mode
    -            LOG_MODE: u4,
    -            /// reg_log_mem_loop_enable
    -            LOG_MEM_LOOP_ENABLE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x70);
    -
    -        /// address: 0x600ce074
    -        /// ASSIST_DEBUG_LOG_DATA_0_REG
    -        pub const LOG_DATA_0 = @intToPtr(*volatile u32, base_address + 0x74);
    -
    -        /// address: 0x600ce078
    -        /// ASSIST_DEBUG_LOG_DATA_MASK_REG
    -        pub const LOG_DATA_MASK = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_log_data_size
    -            LOG_DATA_SIZE: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x78);
    -
    -        /// address: 0x600ce07c
    -        /// ASSIST_DEBUG_LOG_MIN_REG
    -        pub const LOG_MIN = @intToPtr(*volatile u32, base_address + 0x7c);
    -
    -        /// address: 0x600ce080
    -        /// ASSIST_DEBUG_LOG_MAX_REG
    -        pub const LOG_MAX = @intToPtr(*volatile u32, base_address + 0x80);
    -
    -        /// address: 0x600ce084
    -        /// ASSIST_DEBUG_LOG_MEM_START_REG
    -        pub const LOG_MEM_START = @intToPtr(*volatile u32, base_address + 0x84);
    -
    -        /// address: 0x600ce088
    -        /// ASSIST_DEBUG_LOG_MEM_END_REG
    -        pub const LOG_MEM_END = @intToPtr(*volatile u32, base_address + 0x88);
    -
    -        /// address: 0x600ce08c
    -        /// ASSIST_DEBUG_LOG_MEM_WRITING_ADDR_REG
    -        pub const LOG_MEM_WRITING_ADDR = @intToPtr(*volatile u32, base_address + 0x8c);
    -
    -        /// address: 0x600ce090
    -        /// ASSIST_DEBUG_LOG_MEM_FULL_FLAG_REG
    -        pub const LOG_MEM_FULL_FLAG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_log_mem_full_flag
    -            LOG_MEM_FULL_FLAG: u1,
    -            /// reg_clr_log_mem_full_flag
    -            CLR_LOG_MEM_FULL_FLAG: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x90);
    -
    -        /// address: 0x600ce094
    -        /// ASSIST_DEBUG_C0RE_0_LASTPC_BEFORE_EXCEPTION
    -        pub const C0RE_0_LASTPC_BEFORE_EXCEPTION = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core_0_lastpc_before_exc
    -            CORE_0_LASTPC_BEFORE_EXC: u32,
    -        }), base_address + 0x94);
    -
    -        /// address: 0x600ce098
    -        /// ASSIST_DEBUG_C0RE_0_DEBUG_MODE
    -        pub const C0RE_0_DEBUG_MODE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core_0_debug_mode
    -            CORE_0_DEBUG_MODE: u1,
    -            /// reg_core_0_debug_module_active
    -            CORE_0_DEBUG_MODULE_ACTIVE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x98);
    -
    -        /// address: 0x600ce1fc
    -        /// ASSIST_DEBUG_DATE_REG
    -        pub const DATE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_assist_debug_date
    -            ASSIST_DEBUG_DATE: u28,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -        }), base_address + 0x1fc);
    -    };
    -
    -    /// DMA (Direct Memory Access) Controller
    -    pub const DMA = struct {
    -        pub const base_address = 0x6003f000;
    -
    -        /// address: 0x6003f000
    -        /// DMA_INT_RAW_CH0_REG.
    -        pub const INT_RAW_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The raw interrupt bit turns to high level when the last data pointed by one
    -            /// inlink descriptor has been received for Rx channel 0.
    -            IN_DONE_CH0_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when the last data pointed by one
    -            /// inlink descriptor has been received for Rx channel 0. For UHCI0, the raw
    -            /// interrupt bit turns to high level when the last data pointed by one inlink
    -            /// descriptor has been received and no data error is detected for Rx channel 0.
    -            IN_SUC_EOF_CH0_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when data error is detected only in
    -            /// the case that the peripheral is UHCI0 for Rx channel 0. For other peripherals,
    -            /// this raw interrupt is reserved.
    -            IN_ERR_EOF_CH0_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when the last data pointed by one
    -            /// outlink descriptor has been transmitted to peripherals for Tx channel 0.
    -            OUT_DONE_CH0_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when the last data pointed by one
    -            /// outlink descriptor has been read from memory for Tx channel 0.
    -            OUT_EOF_CH0_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when detecting inlink descriptor
    -            /// error, including owner error, the second and third word error of inlink
    -            /// descriptor for Rx channel 0.
    -            IN_DSCR_ERR_CH0_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when detecting outlink descriptor
    -            /// error, including owner error, the second and third word error of outlink
    -            /// descriptor for Tx channel 0.
    -            OUT_DSCR_ERR_CH0_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when Rx buffer pointed by inlink is
    -            /// full and receiving data is not completed, but there is no more inlink for Rx
    -            /// channel 0.
    -            IN_DSCR_EMPTY_CH0_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when data corresponding a outlink
    -            /// (includes one link descriptor or few link descriptors) is transmitted out for Tx
    -            /// channel 0.
    -            OUT_TOTAL_EOF_CH0_INT_RAW: u1,
    -            /// This raw interrupt bit turns to high level when level 1 fifo of Rx channel 0 is
    -            /// overflow.
    -            INFIFO_OVF_CH0_INT_RAW: u1,
    -            /// This raw interrupt bit turns to high level when level 1 fifo of Rx channel 0 is
    -            /// underflow.
    -            INFIFO_UDF_CH0_INT_RAW: u1,
    -            /// This raw interrupt bit turns to high level when level 1 fifo of Tx channel 0 is
    -            /// overflow.
    -            OUTFIFO_OVF_CH0_INT_RAW: u1,
    -            /// This raw interrupt bit turns to high level when level 1 fifo of Tx channel 0 is
    -            /// underflow.
    -            OUTFIFO_UDF_CH0_INT_RAW: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x0);
    -
    -        /// address: 0x6003f004
    -        /// DMA_INT_ST_CH0_REG.
    -        pub const INT_ST_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The raw interrupt status bit for the IN_DONE_CH_INT interrupt.
    -            IN_DONE_CH0_INT_ST: u1,
    -            /// The raw interrupt status bit for the IN_SUC_EOF_CH_INT interrupt.
    -            IN_SUC_EOF_CH0_INT_ST: u1,
    -            /// The raw interrupt status bit for the IN_ERR_EOF_CH_INT interrupt.
    -            IN_ERR_EOF_CH0_INT_ST: u1,
    -            /// The raw interrupt status bit for the OUT_DONE_CH_INT interrupt.
    -            OUT_DONE_CH0_INT_ST: u1,
    -            /// The raw interrupt status bit for the OUT_EOF_CH_INT interrupt.
    -            OUT_EOF_CH0_INT_ST: u1,
    -            /// The raw interrupt status bit for the IN_DSCR_ERR_CH_INT interrupt.
    -            IN_DSCR_ERR_CH0_INT_ST: u1,
    -            /// The raw interrupt status bit for the OUT_DSCR_ERR_CH_INT interrupt.
    -            OUT_DSCR_ERR_CH0_INT_ST: u1,
    -            /// The raw interrupt status bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    -            IN_DSCR_EMPTY_CH0_INT_ST: u1,
    -            /// The raw interrupt status bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    -            OUT_TOTAL_EOF_CH0_INT_ST: u1,
    -            /// The raw interrupt status bit for the INFIFO_OVF_L1_CH_INT interrupt.
    -            INFIFO_OVF_CH0_INT_ST: u1,
    -            /// The raw interrupt status bit for the INFIFO_UDF_L1_CH_INT interrupt.
    -            INFIFO_UDF_CH0_INT_ST: u1,
    -            /// The raw interrupt status bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    -            OUTFIFO_OVF_CH0_INT_ST: u1,
    -            /// The raw interrupt status bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    -            OUTFIFO_UDF_CH0_INT_ST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x6003f008
    -        /// DMA_INT_ENA_CH0_REG.
    -        pub const INT_ENA_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The interrupt enable bit for the IN_DONE_CH_INT interrupt.
    -            IN_DONE_CH0_INT_ENA: u1,
    -            /// The interrupt enable bit for the IN_SUC_EOF_CH_INT interrupt.
    -            IN_SUC_EOF_CH0_INT_ENA: u1,
    -            /// The interrupt enable bit for the IN_ERR_EOF_CH_INT interrupt.
    -            IN_ERR_EOF_CH0_INT_ENA: u1,
    -            /// The interrupt enable bit for the OUT_DONE_CH_INT interrupt.
    -            OUT_DONE_CH0_INT_ENA: u1,
    -            /// The interrupt enable bit for the OUT_EOF_CH_INT interrupt.
    -            OUT_EOF_CH0_INT_ENA: u1,
    -            /// The interrupt enable bit for the IN_DSCR_ERR_CH_INT interrupt.
    -            IN_DSCR_ERR_CH0_INT_ENA: u1,
    -            /// The interrupt enable bit for the OUT_DSCR_ERR_CH_INT interrupt.
    -            OUT_DSCR_ERR_CH0_INT_ENA: u1,
    -            /// The interrupt enable bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    -            IN_DSCR_EMPTY_CH0_INT_ENA: u1,
    -            /// The interrupt enable bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    -            OUT_TOTAL_EOF_CH0_INT_ENA: u1,
    -            /// The interrupt enable bit for the INFIFO_OVF_L1_CH_INT interrupt.
    -            INFIFO_OVF_CH0_INT_ENA: u1,
    -            /// The interrupt enable bit for the INFIFO_UDF_L1_CH_INT interrupt.
    -            INFIFO_UDF_CH0_INT_ENA: u1,
    -            /// The interrupt enable bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    -            OUTFIFO_OVF_CH0_INT_ENA: u1,
    -            /// The interrupt enable bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    -            OUTFIFO_UDF_CH0_INT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x6003f00c
    -        /// DMA_INT_CLR_CH0_REG.
    -        pub const INT_CLR_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set this bit to clear the IN_DONE_CH_INT interrupt.
    -            IN_DONE_CH0_INT_CLR: u1,
    -            /// Set this bit to clear the IN_SUC_EOF_CH_INT interrupt.
    -            IN_SUC_EOF_CH0_INT_CLR: u1,
    -            /// Set this bit to clear the IN_ERR_EOF_CH_INT interrupt.
    -            IN_ERR_EOF_CH0_INT_CLR: u1,
    -            /// Set this bit to clear the OUT_DONE_CH_INT interrupt.
    -            OUT_DONE_CH0_INT_CLR: u1,
    -            /// Set this bit to clear the OUT_EOF_CH_INT interrupt.
    -            OUT_EOF_CH0_INT_CLR: u1,
    -            /// Set this bit to clear the IN_DSCR_ERR_CH_INT interrupt.
    -            IN_DSCR_ERR_CH0_INT_CLR: u1,
    -            /// Set this bit to clear the OUT_DSCR_ERR_CH_INT interrupt.
    -            OUT_DSCR_ERR_CH0_INT_CLR: u1,
    -            /// Set this bit to clear the IN_DSCR_EMPTY_CH_INT interrupt.
    -            IN_DSCR_EMPTY_CH0_INT_CLR: u1,
    -            /// Set this bit to clear the OUT_TOTAL_EOF_CH_INT interrupt.
    -            OUT_TOTAL_EOF_CH0_INT_CLR: u1,
    -            /// Set this bit to clear the INFIFO_OVF_L1_CH_INT interrupt.
    -            INFIFO_OVF_CH0_INT_CLR: u1,
    -            /// Set this bit to clear the INFIFO_UDF_L1_CH_INT interrupt.
    -            INFIFO_UDF_CH0_INT_CLR: u1,
    -            /// Set this bit to clear the OUTFIFO_OVF_L1_CH_INT interrupt.
    -            OUTFIFO_OVF_CH0_INT_CLR: u1,
    -            /// Set this bit to clear the OUTFIFO_UDF_L1_CH_INT interrupt.
    -            OUTFIFO_UDF_CH0_INT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x6003f010
    -        /// DMA_INT_RAW_CH1_REG.
    -        pub const INT_RAW_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The raw interrupt bit turns to high level when the last data pointed by one
    -            /// inlink descriptor has been received for Rx channel 1.
    -            IN_DONE_CH1_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when the last data pointed by one
    -            /// inlink descriptor has been received for Rx channel 1. For UHCI0, the raw
    -            /// interrupt bit turns to high level when the last data pointed by one inlink
    -            /// descriptor has been received and no data error is detected for Rx channel 1.
    -            IN_SUC_EOF_CH1_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when data error is detected only in
    -            /// the case that the peripheral is UHCI0 for Rx channel 1. For other peripherals,
    -            /// this raw interrupt is reserved.
    -            IN_ERR_EOF_CH1_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when the last data pointed by one
    -            /// outlink descriptor has been transmitted to peripherals for Tx channel 1.
    -            OUT_DONE_CH1_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when the last data pointed by one
    -            /// outlink descriptor has been read from memory for Tx channel 1.
    -            OUT_EOF_CH1_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when detecting inlink descriptor
    -            /// error, including owner error, the second and third word error of inlink
    -            /// descriptor for Rx channel 1.
    -            IN_DSCR_ERR_CH1_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when detecting outlink descriptor
    -            /// error, including owner error, the second and third word error of outlink
    -            /// descriptor for Tx channel 1.
    -            OUT_DSCR_ERR_CH1_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when Rx buffer pointed by inlink is
    -            /// full and receiving data is not completed, but there is no more inlink for Rx
    -            /// channel 1.
    -            IN_DSCR_EMPTY_CH1_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when data corresponding a outlink
    -            /// (includes one link descriptor or few link descriptors) is transmitted out for Tx
    -            /// channel 1.
    -            OUT_TOTAL_EOF_CH1_INT_RAW: u1,
    -            /// This raw interrupt bit turns to high level when level 1 fifo of Rx channel 1 is
    -            /// overflow.
    -            INFIFO_OVF_CH1_INT_RAW: u1,
    -            /// This raw interrupt bit turns to high level when level 1 fifo of Rx channel 1 is
    -            /// underflow.
    -            INFIFO_UDF_CH1_INT_RAW: u1,
    -            /// This raw interrupt bit turns to high level when level 1 fifo of Tx channel 1 is
    -            /// overflow.
    -            OUTFIFO_OVF_CH1_INT_RAW: u1,
    -            /// This raw interrupt bit turns to high level when level 1 fifo of Tx channel 1 is
    -            /// underflow.
    -            OUTFIFO_UDF_CH1_INT_RAW: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x10);
    -
    -        /// address: 0x6003f014
    -        /// DMA_INT_ST_CH1_REG.
    -        pub const INT_ST_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The raw interrupt status bit for the IN_DONE_CH_INT interrupt.
    -            IN_DONE_CH1_INT_ST: u1,
    -            /// The raw interrupt status bit for the IN_SUC_EOF_CH_INT interrupt.
    -            IN_SUC_EOF_CH1_INT_ST: u1,
    -            /// The raw interrupt status bit for the IN_ERR_EOF_CH_INT interrupt.
    -            IN_ERR_EOF_CH1_INT_ST: u1,
    -            /// The raw interrupt status bit for the OUT_DONE_CH_INT interrupt.
    -            OUT_DONE_CH1_INT_ST: u1,
    -            /// The raw interrupt status bit for the OUT_EOF_CH_INT interrupt.
    -            OUT_EOF_CH1_INT_ST: u1,
    -            /// The raw interrupt status bit for the IN_DSCR_ERR_CH_INT interrupt.
    -            IN_DSCR_ERR_CH1_INT_ST: u1,
    -            /// The raw interrupt status bit for the OUT_DSCR_ERR_CH_INT interrupt.
    -            OUT_DSCR_ERR_CH1_INT_ST: u1,
    -            /// The raw interrupt status bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    -            IN_DSCR_EMPTY_CH1_INT_ST: u1,
    -            /// The raw interrupt status bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    -            OUT_TOTAL_EOF_CH1_INT_ST: u1,
    -            /// The raw interrupt status bit for the INFIFO_OVF_L1_CH_INT interrupt.
    -            INFIFO_OVF_CH1_INT_ST: u1,
    -            /// The raw interrupt status bit for the INFIFO_UDF_L1_CH_INT interrupt.
    -            INFIFO_UDF_CH1_INT_ST: u1,
    -            /// The raw interrupt status bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    -            OUTFIFO_OVF_CH1_INT_ST: u1,
    -            /// The raw interrupt status bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    -            OUTFIFO_UDF_CH1_INT_ST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x14);
    -
    -        /// address: 0x6003f018
    -        /// DMA_INT_ENA_CH1_REG.
    -        pub const INT_ENA_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The interrupt enable bit for the IN_DONE_CH_INT interrupt.
    -            IN_DONE_CH1_INT_ENA: u1,
    -            /// The interrupt enable bit for the IN_SUC_EOF_CH_INT interrupt.
    -            IN_SUC_EOF_CH1_INT_ENA: u1,
    -            /// The interrupt enable bit for the IN_ERR_EOF_CH_INT interrupt.
    -            IN_ERR_EOF_CH1_INT_ENA: u1,
    -            /// The interrupt enable bit for the OUT_DONE_CH_INT interrupt.
    -            OUT_DONE_CH1_INT_ENA: u1,
    -            /// The interrupt enable bit for the OUT_EOF_CH_INT interrupt.
    -            OUT_EOF_CH1_INT_ENA: u1,
    -            /// The interrupt enable bit for the IN_DSCR_ERR_CH_INT interrupt.
    -            IN_DSCR_ERR_CH1_INT_ENA: u1,
    -            /// The interrupt enable bit for the OUT_DSCR_ERR_CH_INT interrupt.
    -            OUT_DSCR_ERR_CH1_INT_ENA: u1,
    -            /// The interrupt enable bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    -            IN_DSCR_EMPTY_CH1_INT_ENA: u1,
    -            /// The interrupt enable bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    -            OUT_TOTAL_EOF_CH1_INT_ENA: u1,
    -            /// The interrupt enable bit for the INFIFO_OVF_L1_CH_INT interrupt.
    -            INFIFO_OVF_CH1_INT_ENA: u1,
    -            /// The interrupt enable bit for the INFIFO_UDF_L1_CH_INT interrupt.
    -            INFIFO_UDF_CH1_INT_ENA: u1,
    -            /// The interrupt enable bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    -            OUTFIFO_OVF_CH1_INT_ENA: u1,
    -            /// The interrupt enable bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    -            OUTFIFO_UDF_CH1_INT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x6003f01c
    -        /// DMA_INT_CLR_CH1_REG.
    -        pub const INT_CLR_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set this bit to clear the IN_DONE_CH_INT interrupt.
    -            IN_DONE_CH1_INT_CLR: u1,
    -            /// Set this bit to clear the IN_SUC_EOF_CH_INT interrupt.
    -            IN_SUC_EOF_CH1_INT_CLR: u1,
    -            /// Set this bit to clear the IN_ERR_EOF_CH_INT interrupt.
    -            IN_ERR_EOF_CH1_INT_CLR: u1,
    -            /// Set this bit to clear the OUT_DONE_CH_INT interrupt.
    -            OUT_DONE_CH1_INT_CLR: u1,
    -            /// Set this bit to clear the OUT_EOF_CH_INT interrupt.
    -            OUT_EOF_CH1_INT_CLR: u1,
    -            /// Set this bit to clear the IN_DSCR_ERR_CH_INT interrupt.
    -            IN_DSCR_ERR_CH1_INT_CLR: u1,
    -            /// Set this bit to clear the OUT_DSCR_ERR_CH_INT interrupt.
    -            OUT_DSCR_ERR_CH1_INT_CLR: u1,
    -            /// Set this bit to clear the IN_DSCR_EMPTY_CH_INT interrupt.
    -            IN_DSCR_EMPTY_CH1_INT_CLR: u1,
    -            /// Set this bit to clear the OUT_TOTAL_EOF_CH_INT interrupt.
    -            OUT_TOTAL_EOF_CH1_INT_CLR: u1,
    -            /// Set this bit to clear the INFIFO_OVF_L1_CH_INT interrupt.
    -            INFIFO_OVF_CH1_INT_CLR: u1,
    -            /// Set this bit to clear the INFIFO_UDF_L1_CH_INT interrupt.
    -            INFIFO_UDF_CH1_INT_CLR: u1,
    -            /// Set this bit to clear the OUTFIFO_OVF_L1_CH_INT interrupt.
    -            OUTFIFO_OVF_CH1_INT_CLR: u1,
    -            /// Set this bit to clear the OUTFIFO_UDF_L1_CH_INT interrupt.
    -            OUTFIFO_UDF_CH1_INT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x6003f020
    -        /// DMA_INT_RAW_CH2_REG.
    -        pub const INT_RAW_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The raw interrupt bit turns to high level when the last data pointed by one
    -            /// inlink descriptor has been received for Rx channel 2.
    -            IN_DONE_CH2_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when the last data pointed by one
    -            /// inlink descriptor has been received for Rx channel 2. For UHCI0, the raw
    -            /// interrupt bit turns to high level when the last data pointed by one inlink
    -            /// descriptor has been received and no data error is detected for Rx channel 2.
    -            IN_SUC_EOF_CH2_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when data error is detected only in
    -            /// the case that the peripheral is UHCI0 for Rx channel 2. For other peripherals,
    -            /// this raw interrupt is reserved.
    -            IN_ERR_EOF_CH2_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when the last data pointed by one
    -            /// outlink descriptor has been transmitted to peripherals for Tx channel 2.
    -            OUT_DONE_CH2_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when the last data pointed by one
    -            /// outlink descriptor has been read from memory for Tx channel 2.
    -            OUT_EOF_CH2_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when detecting inlink descriptor
    -            /// error, including owner error, the second and third word error of inlink
    -            /// descriptor for Rx channel 2.
    -            IN_DSCR_ERR_CH2_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when detecting outlink descriptor
    -            /// error, including owner error, the second and third word error of outlink
    -            /// descriptor for Tx channel 2.
    -            OUT_DSCR_ERR_CH2_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when Rx buffer pointed by inlink is
    -            /// full and receiving data is not completed, but there is no more inlink for Rx
    -            /// channel 2.
    -            IN_DSCR_EMPTY_CH2_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when data corresponding a outlink
    -            /// (includes one link descriptor or few link descriptors) is transmitted out for Tx
    -            /// channel 2.
    -            OUT_TOTAL_EOF_CH2_INT_RAW: u1,
    -            /// This raw interrupt bit turns to high level when level 1 fifo of Rx channel 2 is
    -            /// overflow.
    -            INFIFO_OVF_CH2_INT_RAW: u1,
    -            /// This raw interrupt bit turns to high level when level 1 fifo of Rx channel 2 is
    -            /// underflow.
    -            INFIFO_UDF_CH2_INT_RAW: u1,
    -            /// This raw interrupt bit turns to high level when level 1 fifo of Tx channel 2 is
    -            /// overflow.
    -            OUTFIFO_OVF_CH2_INT_RAW: u1,
    -            /// This raw interrupt bit turns to high level when level 1 fifo of Tx channel 2 is
    -            /// underflow.
    -            OUTFIFO_UDF_CH2_INT_RAW: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x20);
    -
    -        /// address: 0x6003f024
    -        /// DMA_INT_ST_CH2_REG.
    -        pub const INT_ST_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The raw interrupt status bit for the IN_DONE_CH_INT interrupt.
    -            IN_DONE_CH2_INT_ST: u1,
    -            /// The raw interrupt status bit for the IN_SUC_EOF_CH_INT interrupt.
    -            IN_SUC_EOF_CH2_INT_ST: u1,
    -            /// The raw interrupt status bit for the IN_ERR_EOF_CH_INT interrupt.
    -            IN_ERR_EOF_CH2_INT_ST: u1,
    -            /// The raw interrupt status bit for the OUT_DONE_CH_INT interrupt.
    -            OUT_DONE_CH2_INT_ST: u1,
    -            /// The raw interrupt status bit for the OUT_EOF_CH_INT interrupt.
    -            OUT_EOF_CH2_INT_ST: u1,
    -            /// The raw interrupt status bit for the IN_DSCR_ERR_CH_INT interrupt.
    -            IN_DSCR_ERR_CH2_INT_ST: u1,
    -            /// The raw interrupt status bit for the OUT_DSCR_ERR_CH_INT interrupt.
    -            OUT_DSCR_ERR_CH2_INT_ST: u1,
    -            /// The raw interrupt status bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    -            IN_DSCR_EMPTY_CH2_INT_ST: u1,
    -            /// The raw interrupt status bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    -            OUT_TOTAL_EOF_CH2_INT_ST: u1,
    -            /// The raw interrupt status bit for the INFIFO_OVF_L1_CH_INT interrupt.
    -            INFIFO_OVF_CH2_INT_ST: u1,
    -            /// The raw interrupt status bit for the INFIFO_UDF_L1_CH_INT interrupt.
    -            INFIFO_UDF_CH2_INT_ST: u1,
    -            /// The raw interrupt status bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    -            OUTFIFO_OVF_CH2_INT_ST: u1,
    -            /// The raw interrupt status bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    -            OUTFIFO_UDF_CH2_INT_ST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x24);
    -
    -        /// address: 0x6003f028
    -        /// DMA_INT_ENA_CH2_REG.
    -        pub const INT_ENA_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The interrupt enable bit for the IN_DONE_CH_INT interrupt.
    -            IN_DONE_CH2_INT_ENA: u1,
    -            /// The interrupt enable bit for the IN_SUC_EOF_CH_INT interrupt.
    -            IN_SUC_EOF_CH2_INT_ENA: u1,
    -            /// The interrupt enable bit for the IN_ERR_EOF_CH_INT interrupt.
    -            IN_ERR_EOF_CH2_INT_ENA: u1,
    -            /// The interrupt enable bit for the OUT_DONE_CH_INT interrupt.
    -            OUT_DONE_CH2_INT_ENA: u1,
    -            /// The interrupt enable bit for the OUT_EOF_CH_INT interrupt.
    -            OUT_EOF_CH2_INT_ENA: u1,
    -            /// The interrupt enable bit for the IN_DSCR_ERR_CH_INT interrupt.
    -            IN_DSCR_ERR_CH2_INT_ENA: u1,
    -            /// The interrupt enable bit for the OUT_DSCR_ERR_CH_INT interrupt.
    -            OUT_DSCR_ERR_CH2_INT_ENA: u1,
    -            /// The interrupt enable bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    -            IN_DSCR_EMPTY_CH2_INT_ENA: u1,
    -            /// The interrupt enable bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    -            OUT_TOTAL_EOF_CH2_INT_ENA: u1,
    -            /// The interrupt enable bit for the INFIFO_OVF_L1_CH_INT interrupt.
    -            INFIFO_OVF_CH2_INT_ENA: u1,
    -            /// The interrupt enable bit for the INFIFO_UDF_L1_CH_INT interrupt.
    -            INFIFO_UDF_CH2_INT_ENA: u1,
    -            /// The interrupt enable bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    -            OUTFIFO_OVF_CH2_INT_ENA: u1,
    -            /// The interrupt enable bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    -            OUTFIFO_UDF_CH2_INT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x28);
    -
    -        /// address: 0x6003f02c
    -        /// DMA_INT_CLR_CH2_REG.
    -        pub const INT_CLR_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set this bit to clear the IN_DONE_CH_INT interrupt.
    -            IN_DONE_CH2_INT_CLR: u1,
    -            /// Set this bit to clear the IN_SUC_EOF_CH_INT interrupt.
    -            IN_SUC_EOF_CH2_INT_CLR: u1,
    -            /// Set this bit to clear the IN_ERR_EOF_CH_INT interrupt.
    -            IN_ERR_EOF_CH2_INT_CLR: u1,
    -            /// Set this bit to clear the OUT_DONE_CH_INT interrupt.
    -            OUT_DONE_CH2_INT_CLR: u1,
    -            /// Set this bit to clear the OUT_EOF_CH_INT interrupt.
    -            OUT_EOF_CH2_INT_CLR: u1,
    -            /// Set this bit to clear the IN_DSCR_ERR_CH_INT interrupt.
    -            IN_DSCR_ERR_CH2_INT_CLR: u1,
    -            /// Set this bit to clear the OUT_DSCR_ERR_CH_INT interrupt.
    -            OUT_DSCR_ERR_CH2_INT_CLR: u1,
    -            /// Set this bit to clear the IN_DSCR_EMPTY_CH_INT interrupt.
    -            IN_DSCR_EMPTY_CH2_INT_CLR: u1,
    -            /// Set this bit to clear the OUT_TOTAL_EOF_CH_INT interrupt.
    -            OUT_TOTAL_EOF_CH2_INT_CLR: u1,
    -            /// Set this bit to clear the INFIFO_OVF_L1_CH_INT interrupt.
    -            INFIFO_OVF_CH2_INT_CLR: u1,
    -            /// Set this bit to clear the INFIFO_UDF_L1_CH_INT interrupt.
    -            INFIFO_UDF_CH2_INT_CLR: u1,
    -            /// Set this bit to clear the OUTFIFO_OVF_L1_CH_INT interrupt.
    -            OUTFIFO_OVF_CH2_INT_CLR: u1,
    -            /// Set this bit to clear the OUTFIFO_UDF_L1_CH_INT interrupt.
    -            OUTFIFO_UDF_CH2_INT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x2c);
    -
    -        /// address: 0x6003f040
    -        /// DMA_AHB_TEST_REG.
    -        pub const AHB_TEST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reserved
    -            AHB_TESTMODE: u3,
    -            reserved0: u1,
    -            /// reserved
    -            AHB_TESTADDR: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -        }), base_address + 0x40);
    -
    -        /// address: 0x6003f044
    -        /// DMA_MISC_CONF_REG.
    -        pub const MISC_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set this bit, then clear this bit to reset the internal ahb FSM.
    -            AHBM_RST_INTER: u1,
    -            reserved0: u1,
    -            /// Set this bit to disable priority arbitration function.
    -            ARB_PRI_DIS: u1,
    -            /// reg_clk_en
    -            CLK_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x44);
    -
    -        /// address: 0x6003f048
    -        /// DMA_DATE_REG.
    -        pub const DATE = @intToPtr(*volatile u32, base_address + 0x48);
    -
    -        /// address: 0x6003f070
    -        /// DMA_IN_CONF0_CH0_REG.
    -        pub const IN_CONF0_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This bit is used to reset DMA channel 0 Rx FSM and Rx FIFO pointer.
    -            IN_RST_CH0: u1,
    -            /// reserved
    -            IN_LOOP_TEST_CH0: u1,
    -            /// Set this bit to 1 to enable INCR burst transfer for Rx channel 0 reading link
    -            /// descriptor when accessing internal SRAM.
    -            INDSCR_BURST_EN_CH0: u1,
    -            /// Set this bit to 1 to enable INCR burst transfer for Rx channel 0 receiving data
    -            /// when accessing internal SRAM.
    -            IN_DATA_BURST_EN_CH0: u1,
    -            /// Set this bit 1 to enable automatic transmitting data from memory to memory via
    -            /// DMA.
    -            MEM_TRANS_EN_CH0: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -        }), base_address + 0x70);
    -
    -        /// address: 0x6003f074
    -        /// DMA_IN_CONF1_CH0_REG.
    -        pub const IN_CONF1_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            /// Set this bit to enable checking the owner attribute of the link descriptor.
    -            IN_CHECK_OWNER_CH0: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x74);
    -
    -        /// address: 0x6003f078
    -        /// DMA_INFIFO_STATUS_CH0_REG.
    -        pub const INFIFO_STATUS_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// L1 Rx FIFO full signal for Rx channel 0.
    -            INFIFO_FULL_CH0: u1,
    -            /// L1 Rx FIFO empty signal for Rx channel 0.
    -            INFIFO_EMPTY_CH0: u1,
    -            /// The register stores the byte number of the data in L1 Rx FIFO for Rx channel 0.
    -            INFIFO_CNT_CH0: u6,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            /// reserved
    -            IN_REMAIN_UNDER_1B_CH0: u1,
    -            /// reserved
    -            IN_REMAIN_UNDER_2B_CH0: u1,
    -            /// reserved
    -            IN_REMAIN_UNDER_3B_CH0: u1,
    -            /// reserved
    -            IN_REMAIN_UNDER_4B_CH0: u1,
    -            /// reserved
    -            IN_BUF_HUNGRY_CH0: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -        }), base_address + 0x78);
    -
    -        /// address: 0x6003f07c
    -        /// DMA_IN_POP_CH0_REG.
    -        pub const IN_POP_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the data popping from DMA FIFO.
    -            INFIFO_RDATA_CH0: u12,
    -            /// Set this bit to pop data from DMA FIFO.
    -            INFIFO_POP_CH0: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x7c);
    -
    -        /// address: 0x6003f080
    -        /// DMA_IN_LINK_CH0_REG.
    -        pub const IN_LINK_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the 20 least significant bits of the first inlink
    -            /// descriptor's address.
    -            INLINK_ADDR_CH0: u20,
    -            /// Set this bit to return to current inlink descriptor's address, when there are
    -            /// some errors in current receiving data.
    -            INLINK_AUTO_RET_CH0: u1,
    -            /// Set this bit to stop dealing with the inlink descriptors.
    -            INLINK_STOP_CH0: u1,
    -            /// Set this bit to start dealing with the inlink descriptors.
    -            INLINK_START_CH0: u1,
    -            /// Set this bit to mount a new inlink descriptor.
    -            INLINK_RESTART_CH0: u1,
    -            /// 1: the inlink descriptor's FSM is in idle state. 0: the inlink descriptor's FSM
    -            /// is working.
    -            INLINK_PARK_CH0: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -        }), base_address + 0x80);
    -
    -        /// address: 0x6003f084
    -        /// DMA_IN_STATE_CH0_REG.
    -        pub const IN_STATE_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the current inlink descriptor's address.
    -            INLINK_DSCR_ADDR_CH0: u18,
    -            /// reserved
    -            IN_DSCR_STATE_CH0: u2,
    -            /// reserved
    -            IN_STATE_CH0: u3,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -        }), base_address + 0x84);
    -
    -        /// address: 0x6003f088
    -        /// DMA_IN_SUC_EOF_DES_ADDR_CH0_REG.
    -        pub const IN_SUC_EOF_DES_ADDR_CH0 = @intToPtr(*volatile u32, base_address + 0x88);
    -
    -        /// address: 0x6003f08c
    -        /// DMA_IN_ERR_EOF_DES_ADDR_CH0_REG.
    -        pub const IN_ERR_EOF_DES_ADDR_CH0 = @intToPtr(*volatile u32, base_address + 0x8c);
    -
    -        /// address: 0x6003f090
    -        /// DMA_IN_DSCR_CH0_REG.
    -        pub const IN_DSCR_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The address of the current inlink descriptor x.
    -            INLINK_DSCR_CH0: u32,
    -        }), base_address + 0x90);
    -
    -        /// address: 0x6003f094
    -        /// DMA_IN_DSCR_BF0_CH0_REG.
    -        pub const IN_DSCR_BF0_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The address of the last inlink descriptor x-1.
    -            INLINK_DSCR_BF0_CH0: u32,
    -        }), base_address + 0x94);
    -
    -        /// address: 0x6003f098
    -        /// DMA_IN_DSCR_BF1_CH0_REG.
    -        pub const IN_DSCR_BF1_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The address of the second-to-last inlink descriptor x-2.
    -            INLINK_DSCR_BF1_CH0: u32,
    -        }), base_address + 0x98);
    -
    -        /// address: 0x6003f09c
    -        /// DMA_IN_PRI_CH0_REG.
    -        pub const IN_PRI_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The priority of Rx channel 0. The larger of the value, the higher of the
    -            /// priority.
    -            RX_PRI_CH0: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x9c);
    -
    -        /// address: 0x6003f0a0
    -        /// DMA_IN_PERI_SEL_CH0_REG.
    -        pub const IN_PERI_SEL_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register is used to select peripheral for Rx channel 0. 0:SPI2. 1:
    -            /// reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8:
    -            /// ADC_DAC.
    -            PERI_IN_SEL_CH0: u6,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -        }), base_address + 0xa0);
    -
    -        /// address: 0x6003f0d0
    -        /// DMA_OUT_CONF0_CH0_REG.
    -        pub const OUT_CONF0_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This bit is used to reset DMA channel 0 Tx FSM and Tx FIFO pointer.
    -            OUT_RST_CH0: u1,
    -            /// reserved
    -            OUT_LOOP_TEST_CH0: u1,
    -            /// Set this bit to enable automatic outlink-writeback when all the data in tx
    -            /// buffer has been transmitted.
    -            OUT_AUTO_WRBACK_CH0: u1,
    -            /// EOF flag generation mode when transmitting data. 1: EOF flag for Tx channel 0 is
    -            /// generated when data need to transmit has been popped from FIFO in DMA
    -            OUT_EOF_MODE_CH0: u1,
    -            /// Set this bit to 1 to enable INCR burst transfer for Tx channel 0 reading link
    -            /// descriptor when accessing internal SRAM.
    -            OUTDSCR_BURST_EN_CH0: u1,
    -            /// Set this bit to 1 to enable INCR burst transfer for Tx channel 0 transmitting
    -            /// data when accessing internal SRAM.
    -            OUT_DATA_BURST_EN_CH0: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -        }), base_address + 0xd0);
    -
    -        /// address: 0x6003f0d4
    -        /// DMA_OUT_CONF1_CH0_REG.
    -        pub const OUT_CONF1_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            /// Set this bit to enable checking the owner attribute of the link descriptor.
    -            OUT_CHECK_OWNER_CH0: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0xd4);
    -
    -        /// address: 0x6003f0d8
    -        /// DMA_OUTFIFO_STATUS_CH0_REG.
    -        pub const OUTFIFO_STATUS_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// L1 Tx FIFO full signal for Tx channel 0.
    -            OUTFIFO_FULL_CH0: u1,
    -            /// L1 Tx FIFO empty signal for Tx channel 0.
    -            OUTFIFO_EMPTY_CH0: u1,
    -            /// The register stores the byte number of the data in L1 Tx FIFO for Tx channel 0.
    -            OUTFIFO_CNT_CH0: u6,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            /// reserved
    -            OUT_REMAIN_UNDER_1B_CH0: u1,
    -            /// reserved
    -            OUT_REMAIN_UNDER_2B_CH0: u1,
    -            /// reserved
    -            OUT_REMAIN_UNDER_3B_CH0: u1,
    -            /// reserved
    -            OUT_REMAIN_UNDER_4B_CH0: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -        }), base_address + 0xd8);
    -
    -        /// address: 0x6003f0dc
    -        /// DMA_OUT_PUSH_CH0_REG.
    -        pub const OUT_PUSH_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the data that need to be pushed into DMA FIFO.
    -            OUTFIFO_WDATA_CH0: u9,
    -            /// Set this bit to push data into DMA FIFO.
    -            OUTFIFO_PUSH_CH0: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -        }), base_address + 0xdc);
    -
    -        /// address: 0x6003f0e0
    -        /// DMA_OUT_LINK_CH0_REG.
    -        pub const OUT_LINK_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the 20 least significant bits of the first outlink
    -            /// descriptor's address.
    -            OUTLINK_ADDR_CH0: u20,
    -            /// Set this bit to stop dealing with the outlink descriptors.
    -            OUTLINK_STOP_CH0: u1,
    -            /// Set this bit to start dealing with the outlink descriptors.
    -            OUTLINK_START_CH0: u1,
    -            /// Set this bit to restart a new outlink from the last address.
    -            OUTLINK_RESTART_CH0: u1,
    -            /// 1: the outlink descriptor's FSM is in idle state. 0: the outlink descriptor's
    -            /// FSM is working.
    -            OUTLINK_PARK_CH0: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -        }), base_address + 0xe0);
    -
    -        /// address: 0x6003f0e4
    -        /// DMA_OUT_STATE_CH0_REG.
    -        pub const OUT_STATE_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the current outlink descriptor's address.
    -            OUTLINK_DSCR_ADDR_CH0: u18,
    -            /// reserved
    -            OUT_DSCR_STATE_CH0: u2,
    -            /// reserved
    -            OUT_STATE_CH0: u3,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -        }), base_address + 0xe4);
    -
    -        /// address: 0x6003f0e8
    -        /// DMA_OUT_EOF_DES_ADDR_CH0_REG.
    -        pub const OUT_EOF_DES_ADDR_CH0 = @intToPtr(*volatile u32, base_address + 0xe8);
    -
    -        /// address: 0x6003f0ec
    -        /// DMA_OUT_EOF_BFR_DES_ADDR_CH0_REG.
    -        pub const OUT_EOF_BFR_DES_ADDR_CH0 = @intToPtr(*volatile u32, base_address + 0xec);
    -
    -        /// address: 0x6003f0f0
    -        /// DMA_OUT_DSCR_CH0_REG.
    -        pub const OUT_DSCR_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The address of the current outlink descriptor y.
    -            OUTLINK_DSCR_CH0: u32,
    -        }), base_address + 0xf0);
    -
    -        /// address: 0x6003f0f4
    -        /// DMA_OUT_DSCR_BF0_CH0_REG.
    -        pub const OUT_DSCR_BF0_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The address of the last outlink descriptor y-1.
    -            OUTLINK_DSCR_BF0_CH0: u32,
    -        }), base_address + 0xf4);
    -
    -        /// address: 0x6003f0f8
    -        /// DMA_OUT_DSCR_BF1_CH0_REG.
    -        pub const OUT_DSCR_BF1_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The address of the second-to-last inlink descriptor x-2.
    -            OUTLINK_DSCR_BF1_CH0: u32,
    -        }), base_address + 0xf8);
    -
    -        /// address: 0x6003f0fc
    -        /// DMA_OUT_PRI_CH0_REG.
    -        pub const OUT_PRI_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The priority of Tx channel 0. The larger of the value, the higher of the
    -            /// priority.
    -            TX_PRI_CH0: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0xfc);
    -
    -        /// address: 0x6003f100
    -        /// DMA_OUT_PERI_SEL_CH0_REG.
    -        pub const OUT_PERI_SEL_CH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register is used to select peripheral for Tx channel 0. 0:SPI2. 1:
    -            /// reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8:
    -            /// ADC_DAC.
    -            PERI_OUT_SEL_CH0: u6,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -        }), base_address + 0x100);
    -
    -        /// address: 0x6003f130
    -        /// DMA_IN_CONF0_CH1_REG.
    -        pub const IN_CONF0_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This bit is used to reset DMA channel 1 Rx FSM and Rx FIFO pointer.
    -            IN_RST_CH1: u1,
    -            /// reserved
    -            IN_LOOP_TEST_CH1: u1,
    -            /// Set this bit to 1 to enable INCR burst transfer for Rx channel 1 reading link
    -            /// descriptor when accessing internal SRAM.
    -            INDSCR_BURST_EN_CH1: u1,
    -            /// Set this bit to 1 to enable INCR burst transfer for Rx channel 1 receiving data
    -            /// when accessing internal SRAM.
    -            IN_DATA_BURST_EN_CH1: u1,
    -            /// Set this bit 1 to enable automatic transmitting data from memory to memory via
    -            /// DMA.
    -            MEM_TRANS_EN_CH1: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -        }), base_address + 0x130);
    -
    -        /// address: 0x6003f134
    -        /// DMA_IN_CONF1_CH1_REG.
    -        pub const IN_CONF1_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            /// Set this bit to enable checking the owner attribute of the link descriptor.
    -            IN_CHECK_OWNER_CH1: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x134);
    -
    -        /// address: 0x6003f138
    -        /// DMA_INFIFO_STATUS_CH1_REG.
    -        pub const INFIFO_STATUS_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// L1 Rx FIFO full signal for Rx channel 1.
    -            INFIFO_FULL_CH1: u1,
    -            /// L1 Rx FIFO empty signal for Rx channel 1.
    -            INFIFO_EMPTY_CH1: u1,
    -            /// The register stores the byte number of the data in L1 Rx FIFO for Rx channel 1.
    -            INFIFO_CNT_CH1: u6,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            /// reserved
    -            IN_REMAIN_UNDER_1B_CH1: u1,
    -            /// reserved
    -            IN_REMAIN_UNDER_2B_CH1: u1,
    -            /// reserved
    -            IN_REMAIN_UNDER_3B_CH1: u1,
    -            /// reserved
    -            IN_REMAIN_UNDER_4B_CH1: u1,
    -            /// reserved
    -            IN_BUF_HUNGRY_CH1: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -        }), base_address + 0x138);
    -
    -        /// address: 0x6003f13c
    -        /// DMA_IN_POP_CH1_REG.
    -        pub const IN_POP_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the data popping from DMA FIFO.
    -            INFIFO_RDATA_CH1: u12,
    -            /// Set this bit to pop data from DMA FIFO.
    -            INFIFO_POP_CH1: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x13c);
    -
    -        /// address: 0x6003f140
    -        /// DMA_IN_LINK_CH1_REG.
    -        pub const IN_LINK_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the 20 least significant bits of the first inlink
    -            /// descriptor's address.
    -            INLINK_ADDR_CH1: u20,
    -            /// Set this bit to return to current inlink descriptor's address, when there are
    -            /// some errors in current receiving data.
    -            INLINK_AUTO_RET_CH1: u1,
    -            /// Set this bit to stop dealing with the inlink descriptors.
    -            INLINK_STOP_CH1: u1,
    -            /// Set this bit to start dealing with the inlink descriptors.
    -            INLINK_START_CH1: u1,
    -            /// Set this bit to mount a new inlink descriptor.
    -            INLINK_RESTART_CH1: u1,
    -            /// 1: the inlink descriptor's FSM is in idle state. 0: the inlink descriptor's FSM
    -            /// is working.
    -            INLINK_PARK_CH1: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -        }), base_address + 0x140);
    -
    -        /// address: 0x6003f144
    -        /// DMA_IN_STATE_CH1_REG.
    -        pub const IN_STATE_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the current inlink descriptor's address.
    -            INLINK_DSCR_ADDR_CH1: u18,
    -            /// reserved
    -            IN_DSCR_STATE_CH1: u2,
    -            /// reserved
    -            IN_STATE_CH1: u3,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -        }), base_address + 0x144);
    -
    -        /// address: 0x6003f148
    -        /// DMA_IN_SUC_EOF_DES_ADDR_CH1_REG.
    -        pub const IN_SUC_EOF_DES_ADDR_CH1 = @intToPtr(*volatile u32, base_address + 0x148);
    -
    -        /// address: 0x6003f14c
    -        /// DMA_IN_ERR_EOF_DES_ADDR_CH1_REG.
    -        pub const IN_ERR_EOF_DES_ADDR_CH1 = @intToPtr(*volatile u32, base_address + 0x14c);
    -
    -        /// address: 0x6003f150
    -        /// DMA_IN_DSCR_CH1_REG.
    -        pub const IN_DSCR_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The address of the current inlink descriptor x.
    -            INLINK_DSCR_CH1: u32,
    -        }), base_address + 0x150);
    -
    -        /// address: 0x6003f154
    -        /// DMA_IN_DSCR_BF0_CH1_REG.
    -        pub const IN_DSCR_BF0_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The address of the last inlink descriptor x-1.
    -            INLINK_DSCR_BF0_CH1: u32,
    -        }), base_address + 0x154);
    -
    -        /// address: 0x6003f158
    -        /// DMA_IN_DSCR_BF1_CH1_REG.
    -        pub const IN_DSCR_BF1_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The address of the second-to-last inlink descriptor x-2.
    -            INLINK_DSCR_BF1_CH1: u32,
    -        }), base_address + 0x158);
    -
    -        /// address: 0x6003f15c
    -        /// DMA_IN_PRI_CH1_REG.
    -        pub const IN_PRI_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The priority of Rx channel 1. The larger of the value, the higher of the
    -            /// priority.
    -            RX_PRI_CH1: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x15c);
    -
    -        /// address: 0x6003f160
    -        /// DMA_IN_PERI_SEL_CH1_REG.
    -        pub const IN_PERI_SEL_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register is used to select peripheral for Rx channel 1. 0:SPI2. 1:
    -            /// reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8:
    -            /// ADC_DAC.
    -            PERI_IN_SEL_CH1: u6,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -        }), base_address + 0x160);
    -
    -        /// address: 0x6003f190
    -        /// DMA_OUT_CONF0_CH1_REG.
    -        pub const OUT_CONF0_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This bit is used to reset DMA channel 1 Tx FSM and Tx FIFO pointer.
    -            OUT_RST_CH1: u1,
    -            /// reserved
    -            OUT_LOOP_TEST_CH1: u1,
    -            /// Set this bit to enable automatic outlink-writeback when all the data in tx
    -            /// buffer has been transmitted.
    -            OUT_AUTO_WRBACK_CH1: u1,
    -            /// EOF flag generation mode when transmitting data. 1: EOF flag for Tx channel 1 is
    -            /// generated when data need to transmit has been popped from FIFO in DMA
    -            OUT_EOF_MODE_CH1: u1,
    -            /// Set this bit to 1 to enable INCR burst transfer for Tx channel 1 reading link
    -            /// descriptor when accessing internal SRAM.
    -            OUTDSCR_BURST_EN_CH1: u1,
    -            /// Set this bit to 1 to enable INCR burst transfer for Tx channel 1 transmitting
    -            /// data when accessing internal SRAM.
    -            OUT_DATA_BURST_EN_CH1: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -        }), base_address + 0x190);
    -
    -        /// address: 0x6003f194
    -        /// DMA_OUT_CONF1_CH1_REG.
    -        pub const OUT_CONF1_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            /// Set this bit to enable checking the owner attribute of the link descriptor.
    -            OUT_CHECK_OWNER_CH1: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x194);
    -
    -        /// address: 0x6003f198
    -        /// DMA_OUTFIFO_STATUS_CH1_REG.
    -        pub const OUTFIFO_STATUS_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// L1 Tx FIFO full signal for Tx channel 1.
    -            OUTFIFO_FULL_CH1: u1,
    -            /// L1 Tx FIFO empty signal for Tx channel 1.
    -            OUTFIFO_EMPTY_CH1: u1,
    -            /// The register stores the byte number of the data in L1 Tx FIFO for Tx channel 1.
    -            OUTFIFO_CNT_CH1: u6,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            /// reserved
    -            OUT_REMAIN_UNDER_1B_CH1: u1,
    -            /// reserved
    -            OUT_REMAIN_UNDER_2B_CH1: u1,
    -            /// reserved
    -            OUT_REMAIN_UNDER_3B_CH1: u1,
    -            /// reserved
    -            OUT_REMAIN_UNDER_4B_CH1: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -        }), base_address + 0x198);
    -
    -        /// address: 0x6003f19c
    -        /// DMA_OUT_PUSH_CH1_REG.
    -        pub const OUT_PUSH_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the data that need to be pushed into DMA FIFO.
    -            OUTFIFO_WDATA_CH1: u9,
    -            /// Set this bit to push data into DMA FIFO.
    -            OUTFIFO_PUSH_CH1: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -        }), base_address + 0x19c);
    -
    -        /// address: 0x6003f1a0
    -        /// DMA_OUT_LINK_CH1_REG.
    -        pub const OUT_LINK_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the 20 least significant bits of the first outlink
    -            /// descriptor's address.
    -            OUTLINK_ADDR_CH1: u20,
    -            /// Set this bit to stop dealing with the outlink descriptors.
    -            OUTLINK_STOP_CH1: u1,
    -            /// Set this bit to start dealing with the outlink descriptors.
    -            OUTLINK_START_CH1: u1,
    -            /// Set this bit to restart a new outlink from the last address.
    -            OUTLINK_RESTART_CH1: u1,
    -            /// 1: the outlink descriptor's FSM is in idle state. 0: the outlink descriptor's
    -            /// FSM is working.
    -            OUTLINK_PARK_CH1: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -        }), base_address + 0x1a0);
    -
    -        /// address: 0x6003f1a4
    -        /// DMA_OUT_STATE_CH1_REG.
    -        pub const OUT_STATE_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the current outlink descriptor's address.
    -            OUTLINK_DSCR_ADDR_CH1: u18,
    -            /// reserved
    -            OUT_DSCR_STATE_CH1: u2,
    -            /// reserved
    -            OUT_STATE_CH1: u3,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -        }), base_address + 0x1a4);
    -
    -        /// address: 0x6003f1a8
    -        /// DMA_OUT_EOF_DES_ADDR_CH1_REG.
    -        pub const OUT_EOF_DES_ADDR_CH1 = @intToPtr(*volatile u32, base_address + 0x1a8);
    -
    -        /// address: 0x6003f1ac
    -        /// DMA_OUT_EOF_BFR_DES_ADDR_CH1_REG.
    -        pub const OUT_EOF_BFR_DES_ADDR_CH1 = @intToPtr(*volatile u32, base_address + 0x1ac);
    -
    -        /// address: 0x6003f1b0
    -        /// DMA_OUT_DSCR_CH1_REG.
    -        pub const OUT_DSCR_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The address of the current outlink descriptor y.
    -            OUTLINK_DSCR_CH1: u32,
    -        }), base_address + 0x1b0);
    -
    -        /// address: 0x6003f1b4
    -        /// DMA_OUT_DSCR_BF0_CH1_REG.
    -        pub const OUT_DSCR_BF0_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The address of the last outlink descriptor y-1.
    -            OUTLINK_DSCR_BF0_CH1: u32,
    -        }), base_address + 0x1b4);
    -
    -        /// address: 0x6003f1b8
    -        /// DMA_OUT_DSCR_BF1_CH1_REG.
    -        pub const OUT_DSCR_BF1_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The address of the second-to-last inlink descriptor x-2.
    -            OUTLINK_DSCR_BF1_CH1: u32,
    -        }), base_address + 0x1b8);
    -
    -        /// address: 0x6003f1bc
    -        /// DMA_OUT_PRI_CH1_REG.
    -        pub const OUT_PRI_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The priority of Tx channel 1. The larger of the value, the higher of the
    -            /// priority.
    -            TX_PRI_CH1: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x1bc);
    -
    -        /// address: 0x6003f1c0
    -        /// DMA_OUT_PERI_SEL_CH1_REG.
    -        pub const OUT_PERI_SEL_CH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register is used to select peripheral for Tx channel 1. 0:SPI2. 1:
    -            /// reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8:
    -            /// ADC_DAC.
    -            PERI_OUT_SEL_CH1: u6,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -        }), base_address + 0x1c0);
    -
    -        /// address: 0x6003f1f0
    -        /// DMA_IN_CONF0_CH2_REG.
    -        pub const IN_CONF0_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This bit is used to reset DMA channel 2 Rx FSM and Rx FIFO pointer.
    -            IN_RST_CH2: u1,
    -            /// reserved
    -            IN_LOOP_TEST_CH2: u1,
    -            /// Set this bit to 1 to enable INCR burst transfer for Rx channel 2 reading link
    -            /// descriptor when accessing internal SRAM.
    -            INDSCR_BURST_EN_CH2: u1,
    -            /// Set this bit to 1 to enable INCR burst transfer for Rx channel 2 receiving data
    -            /// when accessing internal SRAM.
    -            IN_DATA_BURST_EN_CH2: u1,
    -            /// Set this bit 1 to enable automatic transmitting data from memory to memory via
    -            /// DMA.
    -            MEM_TRANS_EN_CH2: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -        }), base_address + 0x1f0);
    -
    -        /// address: 0x6003f1f4
    -        /// DMA_IN_CONF1_CH2_REG.
    -        pub const IN_CONF1_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            /// Set this bit to enable checking the owner attribute of the link descriptor.
    -            IN_CHECK_OWNER_CH2: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x1f4);
    -
    -        /// address: 0x6003f1f8
    -        /// DMA_INFIFO_STATUS_CH2_REG.
    -        pub const INFIFO_STATUS_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// L1 Rx FIFO full signal for Rx channel 2.
    -            INFIFO_FULL_CH2: u1,
    -            /// L1 Rx FIFO empty signal for Rx channel 2.
    -            INFIFO_EMPTY_CH2: u1,
    -            /// The register stores the byte number of the data in L1 Rx FIFO for Rx channel 2.
    -            INFIFO_CNT_CH2: u6,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            /// reserved
    -            IN_REMAIN_UNDER_1B_CH2: u1,
    -            /// reserved
    -            IN_REMAIN_UNDER_2B_CH2: u1,
    -            /// reserved
    -            IN_REMAIN_UNDER_3B_CH2: u1,
    -            /// reserved
    -            IN_REMAIN_UNDER_4B_CH2: u1,
    -            /// reserved
    -            IN_BUF_HUNGRY_CH2: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -        }), base_address + 0x1f8);
    -
    -        /// address: 0x6003f1fc
    -        /// DMA_IN_POP_CH2_REG.
    -        pub const IN_POP_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the data popping from DMA FIFO.
    -            INFIFO_RDATA_CH2: u12,
    -            /// Set this bit to pop data from DMA FIFO.
    -            INFIFO_POP_CH2: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x1fc);
    -
    -        /// address: 0x6003f200
    -        /// DMA_IN_LINK_CH2_REG.
    -        pub const IN_LINK_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the 20 least significant bits of the first inlink
    -            /// descriptor's address.
    -            INLINK_ADDR_CH2: u20,
    -            /// Set this bit to return to current inlink descriptor's address, when there are
    -            /// some errors in current receiving data.
    -            INLINK_AUTO_RET_CH2: u1,
    -            /// Set this bit to stop dealing with the inlink descriptors.
    -            INLINK_STOP_CH2: u1,
    -            /// Set this bit to start dealing with the inlink descriptors.
    -            INLINK_START_CH2: u1,
    -            /// Set this bit to mount a new inlink descriptor.
    -            INLINK_RESTART_CH2: u1,
    -            /// 1: the inlink descriptor's FSM is in idle state. 0: the inlink descriptor's FSM
    -            /// is working.
    -            INLINK_PARK_CH2: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -        }), base_address + 0x200);
    -
    -        /// address: 0x6003f204
    -        /// DMA_IN_STATE_CH2_REG.
    -        pub const IN_STATE_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the current inlink descriptor's address.
    -            INLINK_DSCR_ADDR_CH2: u18,
    -            /// reserved
    -            IN_DSCR_STATE_CH2: u2,
    -            /// reserved
    -            IN_STATE_CH2: u3,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -        }), base_address + 0x204);
    -
    -        /// address: 0x6003f208
    -        /// DMA_IN_SUC_EOF_DES_ADDR_CH2_REG.
    -        pub const IN_SUC_EOF_DES_ADDR_CH2 = @intToPtr(*volatile u32, base_address + 0x208);
    -
    -        /// address: 0x6003f20c
    -        /// DMA_IN_ERR_EOF_DES_ADDR_CH2_REG.
    -        pub const IN_ERR_EOF_DES_ADDR_CH2 = @intToPtr(*volatile u32, base_address + 0x20c);
    -
    -        /// address: 0x6003f210
    -        /// DMA_IN_DSCR_CH2_REG.
    -        pub const IN_DSCR_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The address of the current inlink descriptor x.
    -            INLINK_DSCR_CH2: u32,
    -        }), base_address + 0x210);
    -
    -        /// address: 0x6003f214
    -        /// DMA_IN_DSCR_BF0_CH2_REG.
    -        pub const IN_DSCR_BF0_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The address of the last inlink descriptor x-1.
    -            INLINK_DSCR_BF0_CH2: u32,
    -        }), base_address + 0x214);
    -
    -        /// address: 0x6003f218
    -        /// DMA_IN_DSCR_BF1_CH2_REG.
    -        pub const IN_DSCR_BF1_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The address of the second-to-last inlink descriptor x-2.
    -            INLINK_DSCR_BF1_CH2: u32,
    -        }), base_address + 0x218);
    -
    -        /// address: 0x6003f21c
    -        /// DMA_IN_PRI_CH2_REG.
    -        pub const IN_PRI_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The priority of Rx channel 2. The larger of the value, the higher of the
    -            /// priority.
    -            RX_PRI_CH2: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x21c);
    -
    -        /// address: 0x6003f220
    -        /// DMA_IN_PERI_SEL_CH2_REG.
    -        pub const IN_PERI_SEL_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register is used to select peripheral for Rx channel 2. 0:SPI2. 1:
    -            /// reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8:
    -            /// ADC_DAC.
    -            PERI_IN_SEL_CH2: u6,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -        }), base_address + 0x220);
    -
    -        /// address: 0x6003f250
    -        /// DMA_OUT_CONF0_CH2_REG.
    -        pub const OUT_CONF0_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This bit is used to reset DMA channel 2 Tx FSM and Tx FIFO pointer.
    -            OUT_RST_CH2: u1,
    -            /// reserved
    -            OUT_LOOP_TEST_CH2: u1,
    -            /// Set this bit to enable automatic outlink-writeback when all the data in tx
    -            /// buffer has been transmitted.
    -            OUT_AUTO_WRBACK_CH2: u1,
    -            /// EOF flag generation mode when transmitting data. 1: EOF flag for Tx channel 2 is
    -            /// generated when data need to transmit has been popped from FIFO in DMA
    -            OUT_EOF_MODE_CH2: u1,
    -            /// Set this bit to 1 to enable INCR burst transfer for Tx channel 2 reading link
    -            /// descriptor when accessing internal SRAM.
    -            OUTDSCR_BURST_EN_CH2: u1,
    -            /// Set this bit to 1 to enable INCR burst transfer for Tx channel 2 transmitting
    -            /// data when accessing internal SRAM.
    -            OUT_DATA_BURST_EN_CH2: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -        }), base_address + 0x250);
    -
    -        /// address: 0x6003f254
    -        /// DMA_OUT_CONF1_CH2_REG.
    -        pub const OUT_CONF1_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            /// Set this bit to enable checking the owner attribute of the link descriptor.
    -            OUT_CHECK_OWNER_CH2: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x254);
    -
    -        /// address: 0x6003f258
    -        /// DMA_OUTFIFO_STATUS_CH2_REG.
    -        pub const OUTFIFO_STATUS_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// L1 Tx FIFO full signal for Tx channel 2.
    -            OUTFIFO_FULL_CH2: u1,
    -            /// L1 Tx FIFO empty signal for Tx channel 2.
    -            OUTFIFO_EMPTY_CH2: u1,
    -            /// The register stores the byte number of the data in L1 Tx FIFO for Tx channel 2.
    -            OUTFIFO_CNT_CH2: u6,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            /// reserved
    -            OUT_REMAIN_UNDER_1B_CH2: u1,
    -            /// reserved
    -            OUT_REMAIN_UNDER_2B_CH2: u1,
    -            /// reserved
    -            OUT_REMAIN_UNDER_3B_CH2: u1,
    -            /// reserved
    -            OUT_REMAIN_UNDER_4B_CH2: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -        }), base_address + 0x258);
    -
    -        /// address: 0x6003f25c
    -        /// DMA_OUT_PUSH_CH2_REG.
    -        pub const OUT_PUSH_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the data that need to be pushed into DMA FIFO.
    -            OUTFIFO_WDATA_CH2: u9,
    -            /// Set this bit to push data into DMA FIFO.
    -            OUTFIFO_PUSH_CH2: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -        }), base_address + 0x25c);
    -
    -        /// address: 0x6003f260
    -        /// DMA_OUT_LINK_CH2_REG.
    -        pub const OUT_LINK_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the 20 least significant bits of the first outlink
    -            /// descriptor's address.
    -            OUTLINK_ADDR_CH2: u20,
    -            /// Set this bit to stop dealing with the outlink descriptors.
    -            OUTLINK_STOP_CH2: u1,
    -            /// Set this bit to start dealing with the outlink descriptors.
    -            OUTLINK_START_CH2: u1,
    -            /// Set this bit to restart a new outlink from the last address.
    -            OUTLINK_RESTART_CH2: u1,
    -            /// 1: the outlink descriptor's FSM is in idle state. 0: the outlink descriptor's
    -            /// FSM is working.
    -            OUTLINK_PARK_CH2: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -        }), base_address + 0x260);
    -
    -        /// address: 0x6003f264
    -        /// DMA_OUT_STATE_CH2_REG.
    -        pub const OUT_STATE_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the current outlink descriptor's address.
    -            OUTLINK_DSCR_ADDR_CH2: u18,
    -            /// reserved
    -            OUT_DSCR_STATE_CH2: u2,
    -            /// reserved
    -            OUT_STATE_CH2: u3,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -        }), base_address + 0x264);
    -
    -        /// address: 0x6003f268
    -        /// DMA_OUT_EOF_DES_ADDR_CH2_REG.
    -        pub const OUT_EOF_DES_ADDR_CH2 = @intToPtr(*volatile u32, base_address + 0x268);
    -
    -        /// address: 0x6003f26c
    -        /// DMA_OUT_EOF_BFR_DES_ADDR_CH2_REG.
    -        pub const OUT_EOF_BFR_DES_ADDR_CH2 = @intToPtr(*volatile u32, base_address + 0x26c);
    -
    -        /// address: 0x6003f270
    -        /// DMA_OUT_DSCR_CH2_REG.
    -        pub const OUT_DSCR_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The address of the current outlink descriptor y.
    -            OUTLINK_DSCR_CH2: u32,
    -        }), base_address + 0x270);
    -
    -        /// address: 0x6003f274
    -        /// DMA_OUT_DSCR_BF0_CH2_REG.
    -        pub const OUT_DSCR_BF0_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The address of the last outlink descriptor y-1.
    -            OUTLINK_DSCR_BF0_CH2: u32,
    -        }), base_address + 0x274);
    -
    -        /// address: 0x6003f278
    -        /// DMA_OUT_DSCR_BF1_CH2_REG.
    -        pub const OUT_DSCR_BF1_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The address of the second-to-last inlink descriptor x-2.
    -            OUTLINK_DSCR_BF1_CH2: u32,
    -        }), base_address + 0x278);
    -
    -        /// address: 0x6003f27c
    -        /// DMA_OUT_PRI_CH2_REG.
    -        pub const OUT_PRI_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The priority of Tx channel 2. The larger of the value, the higher of the
    -            /// priority.
    -            TX_PRI_CH2: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x27c);
    -
    -        /// address: 0x6003f280
    -        /// DMA_OUT_PERI_SEL_CH2_REG.
    -        pub const OUT_PERI_SEL_CH2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register is used to select peripheral for Tx channel 2. 0:SPI2. 1:
    -            /// reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8:
    -            /// ADC_DAC.
    -            PERI_OUT_SEL_CH2: u6,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -        }), base_address + 0x280);
    -    };
    -
    -    /// Digital Signature
    -    pub const DS = struct {
    -        pub const base_address = 0x6003d000;
    -
    -        /// address: 0x6003d000
    -        /// memory that stores Y
    -        pub const Y_MEM = @intToPtr(*volatile [512]u8, base_address + 0x0);
    -
    -        /// address: 0x6003d200
    -        /// memory that stores M
    -        pub const M_MEM = @intToPtr(*volatile [512]u8, base_address + 0x200);
    -
    -        /// address: 0x6003d400
    -        /// memory that stores Rb
    -        pub const RB_MEM = @intToPtr(*volatile [512]u8, base_address + 0x400);
    -
    -        /// address: 0x6003d600
    -        /// memory that stores BOX
    -        pub const BOX_MEM = @intToPtr(*volatile [48]u8, base_address + 0x600);
    -
    -        /// address: 0x6003d800
    -        /// memory that stores X
    -        pub const X_MEM = @intToPtr(*volatile [512]u8, base_address + 0x800);
    -
    -        /// address: 0x6003da00
    -        /// memory that stores Z
    -        pub const Z_MEM = @intToPtr(*volatile [512]u8, base_address + 0xa00);
    -
    -        /// address: 0x6003de00
    -        /// DS start control register
    -        pub const SET_START = @intToPtr(*volatile MmioInt(32, u1), base_address + 0xe00);
    -
    -        /// address: 0x6003de04
    -        /// DS continue control register
    -        pub const SET_CONTINUE = @intToPtr(*volatile MmioInt(32, u1), base_address + 0xe04);
    -
    -        /// address: 0x6003de08
    -        /// DS finish control register
    -        pub const SET_FINISH = @intToPtr(*volatile MmioInt(32, u1), base_address + 0xe08);
    -
    -        /// address: 0x6003de0c
    -        /// DS query busy register
    -        pub const QUERY_BUSY = @intToPtr(*volatile MmioInt(32, u1), base_address + 0xe0c);
    -
    -        /// address: 0x6003de10
    -        /// DS query key-wrong counter register
    -        pub const QUERY_KEY_WRONG = @intToPtr(*volatile MmioInt(32, u4), base_address + 0xe10);
    -
    -        /// address: 0x6003de14
    -        /// DS query check result register
    -        pub const QUERY_CHECK = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// MD checkout result. 1'b0: MD check pass, 1'b1: MD check fail
    -            MD_ERROR: u1,
    -            /// padding checkout result. 1'b0: a good padding, 1'b1: a bad padding
    -            PADDING_BAD: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0xe14);
    -
    -        /// address: 0x6003de20
    -        /// DS version control register
    -        pub const DATE = @intToPtr(*volatile MmioInt(32, u30), base_address + 0xe20);
    -    };
    -
    -    /// eFuse Controller
    -    pub const EFUSE = struct {
    -        pub const base_address = 0x60008800;
    -
    -        /// address: 0x60008800
    -        /// Register 0 that stores data to be programmed.
    -        pub const PGM_DATA0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The content of the 0th 32-bit data to be programmed.
    -            PGM_DATA_0: u32,
    -        }), base_address + 0x0);
    -
    -        /// address: 0x60008804
    -        /// Register 1 that stores data to be programmed.
    -        pub const PGM_DATA1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The content of the 1st 32-bit data to be programmed.
    -            PGM_DATA_1: u32,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x60008808
    -        /// Register 2 that stores data to be programmed.
    -        pub const PGM_DATA2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The content of the 2nd 32-bit data to be programmed.
    -            PGM_DATA_2: u32,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x6000880c
    -        /// Register 3 that stores data to be programmed.
    -        pub const PGM_DATA3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The content of the 3rd 32-bit data to be programmed.
    -            PGM_DATA_3: u32,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x60008810
    -        /// Register 4 that stores data to be programmed.
    -        pub const PGM_DATA4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The content of the 4th 32-bit data to be programmed.
    -            PGM_DATA_4: u32,
    -        }), base_address + 0x10);
    -
    -        /// address: 0x60008814
    -        /// Register 5 that stores data to be programmed.
    -        pub const PGM_DATA5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The content of the 5th 32-bit data to be programmed.
    -            PGM_DATA_5: u32,
    -        }), base_address + 0x14);
    -
    -        /// address: 0x60008818
    -        /// Register 6 that stores data to be programmed.
    -        pub const PGM_DATA6 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The content of the 6th 32-bit data to be programmed.
    -            PGM_DATA_6: u32,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x6000881c
    -        /// Register 7 that stores data to be programmed.
    -        pub const PGM_DATA7 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The content of the 7th 32-bit data to be programmed.
    -            PGM_DATA_7: u32,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x60008820
    -        /// Register 0 that stores the RS code to be programmed.
    -        pub const PGM_CHECK_VALUE0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The content of the 0th 32-bit RS code to be programmed.
    -            PGM_RS_DATA_0: u32,
    -        }), base_address + 0x20);
    -
    -        /// address: 0x60008824
    -        /// Register 1 that stores the RS code to be programmed.
    -        pub const PGM_CHECK_VALUE1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The content of the 1st 32-bit RS code to be programmed.
    -            PGM_RS_DATA_1: u32,
    -        }), base_address + 0x24);
    -
    -        /// address: 0x60008828
    -        /// Register 2 that stores the RS code to be programmed.
    -        pub const PGM_CHECK_VALUE2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The content of the 2nd 32-bit RS code to be programmed.
    -            PGM_RS_DATA_2: u32,
    -        }), base_address + 0x28);
    -
    -        /// address: 0x6000882c
    -        /// BLOCK0 data register 0.
    -        pub const RD_WR_DIS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Disable programming of individual eFuses.
    -            WR_DIS: u32,
    -        }), base_address + 0x2c);
    -
    -        /// address: 0x60008830
    -        /// BLOCK0 data register 1.
    -        pub const RD_REPEAT_DATA0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set this bit to disable reading from BlOCK4-10.
    -            RD_DIS: u7,
    -            /// Set this bit to disable boot from RTC RAM.
    -            DIS_RTC_RAM_BOOT: u1,
    -            /// Set this bit to disable Icache.
    -            DIS_ICACHE: u1,
    -            /// Set this bit to disable function of usb switch to jtag in module of usb device.
    -            DIS_USB_JTAG: u1,
    -            /// Set this bit to disable Icache in download mode (boot_mode[3:0] is 0, 1, 2, 3,
    -            /// 6, 7).
    -            DIS_DOWNLOAD_ICACHE: u1,
    -            /// Set this bit to disable usb device.
    -            DIS_USB_DEVICE: u1,
    -            /// Set this bit to disable the function that forces chip into download mode.
    -            DIS_FORCE_DOWNLOAD: u1,
    -            /// Reserved (used for four backups method).
    -            RPT4_RESERVED6: u1,
    -            /// Set this bit to disable CAN function.
    -            DIS_CAN: u1,
    -            /// Set this bit to enable selection between usb_to_jtag and pad_to_jtag through
    -            /// strapping gpio10 when both reg_dis_usb_jtag and reg_dis_pad_jtag are equal to 0.
    -            JTAG_SEL_ENABLE: u1,
    -            /// Set these bits to disable JTAG in the soft way (odd number 1 means disable ).
    -            /// JTAG can be enabled in HMAC module.
    -            SOFT_DIS_JTAG: u3,
    -            /// Set this bit to disable JTAG in the hard way. JTAG is disabled permanently.
    -            DIS_PAD_JTAG: u1,
    -            /// Set this bit to disable flash encryption when in download boot modes.
    -            DIS_DOWNLOAD_MANUAL_ENCRYPT: u1,
    -            /// Controls single-end input threshold vrefh, 1.76 V to 2 V with step of 80 mV,
    -            /// stored in eFuse.
    -            USB_DREFH: u2,
    -            /// Controls single-end input threshold vrefl, 0.8 V to 1.04 V with step of 80 mV,
    -            /// stored in eFuse.
    -            USB_DREFL: u2,
    -            /// Set this bit to exchange USB D+ and D- pins.
    -            USB_EXCHG_PINS: u1,
    -            /// Set this bit to vdd spi pin function as gpio.
    -            VDD_SPI_AS_GPIO: u1,
    -            /// Enable btlc gpio.
    -            BTLC_GPIO_ENABLE: u2,
    -            /// Set this bit to enable power glitch function.
    -            POWERGLITCH_EN: u1,
    -            /// Sample delay configuration of power glitch.
    -            POWER_GLITCH_DSENSE: u2,
    -        }), base_address + 0x30);
    -
    -        /// address: 0x60008834
    -        /// BLOCK0 data register 2.
    -        pub const RD_REPEAT_DATA1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Reserved (used for four backups method).
    -            RPT4_RESERVED2: u16,
    -            /// Selects RTC watchdog timeout threshold, in unit of slow clock cycle. 0: 40000.
    -            /// 1: 80000. 2: 160000. 3:320000.
    -            WDT_DELAY_SEL: u2,
    -            /// Set this bit to enable SPI boot encrypt/decrypt. Odd number of 1: enable. even
    -            /// number of 1: disable.
    -            SPI_BOOT_CRYPT_CNT: u3,
    -            /// Set this bit to enable revoking first secure boot key.
    -            SECURE_BOOT_KEY_REVOKE0: u1,
    -            /// Set this bit to enable revoking second secure boot key.
    -            SECURE_BOOT_KEY_REVOKE1: u1,
    -            /// Set this bit to enable revoking third secure boot key.
    -            SECURE_BOOT_KEY_REVOKE2: u1,
    -            /// Purpose of Key0.
    -            KEY_PURPOSE_0: u4,
    -            /// Purpose of Key1.
    -            KEY_PURPOSE_1: u4,
    -        }), base_address + 0x34);
    -
    -        /// address: 0x60008838
    -        /// BLOCK0 data register 3.
    -        pub const RD_REPEAT_DATA2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Purpose of Key2.
    -            KEY_PURPOSE_2: u4,
    -            /// Purpose of Key3.
    -            KEY_PURPOSE_3: u4,
    -            /// Purpose of Key4.
    -            KEY_PURPOSE_4: u4,
    -            /// Purpose of Key5.
    -            KEY_PURPOSE_5: u4,
    -            /// Reserved (used for four backups method).
    -            RPT4_RESERVED3: u4,
    -            /// Set this bit to enable secure boot.
    -            SECURE_BOOT_EN: u1,
    -            /// Set this bit to enable revoking aggressive secure boot.
    -            SECURE_BOOT_AGGRESSIVE_REVOKE: u1,
    -            /// Reserved (used for four backups method).
    -            RPT4_RESERVED0: u6,
    -            /// Configures flash waiting time after power-up, in unit of ms. If the value is
    -            /// less than 15, the waiting time is the configurable value; Otherwise, the waiting
    -            /// time is twice the configurable value.
    -            FLASH_TPUW: u4,
    -        }), base_address + 0x38);
    -
    -        /// address: 0x6000883c
    -        /// BLOCK0 data register 4.
    -        pub const RD_REPEAT_DATA3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set this bit to disable download mode (boot_mode[3:0] = 0, 1, 2, 3, 6, 7).
    -            DIS_DOWNLOAD_MODE: u1,
    -            /// Set this bit to disable Legacy SPI boot mode (boot_mode[3:0] = 4).
    -            DIS_LEGACY_SPI_BOOT: u1,
    -            /// Selectes the default UART print channel. 0: UART0. 1: UART1.
    -            UART_PRINT_CHANNEL: u1,
    -            /// Set ECC mode in ROM, 0: ROM would Enable Flash ECC 16to18 byte mode. 1:ROM would
    -            /// use 16to17 byte mode.
    -            FLASH_ECC_MODE: u1,
    -            /// Set this bit to disable UART download mode through USB.
    -            DIS_USB_DOWNLOAD_MODE: u1,
    -            /// Set this bit to enable secure UART download mode.
    -            ENABLE_SECURITY_DOWNLOAD: u1,
    -            /// Set the default UARTboot message output mode. 00: Enabled. 01: Enabled when
    -            /// GPIO8 is low at reset. 10: Enabled when GPIO8 is high at reset. 11:disabled.
    -            UART_PRINT_CONTROL: u2,
    -            /// GPIO33-GPIO37 power supply selection in ROM code. 0: VDD3P3_CPU. 1: VDD_SPI.
    -            PIN_POWER_SELECTION: u1,
    -            /// Set the maximum lines of SPI flash. 0: four lines. 1: eight lines.
    -            FLASH_TYPE: u1,
    -            /// Set Flash page size.
    -            FLASH_PAGE_SIZE: u2,
    -            /// Set 1 to enable ECC for flash boot.
    -            FLASH_ECC_EN: u1,
    -            /// Set this bit to force ROM code to send a resume command during SPI boot.
    -            FORCE_SEND_RESUME: u1,
    -            /// Secure version (used by ESP-IDF anti-rollback feature).
    -            SECURE_VERSION: u16,
    -            /// Reserved (used for four backups method).
    -            RPT4_RESERVED1: u2,
    -        }), base_address + 0x3c);
    -
    -        /// address: 0x60008840
    -        /// BLOCK0 data register 5.
    -        pub const RD_REPEAT_DATA4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Reserved (used for four backups method).
    -            RPT4_RESERVED4: u24,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -        }), base_address + 0x40);
    -
    -        /// address: 0x60008844
    -        /// BLOCK1 data register 0.
    -        pub const RD_MAC_SPI_SYS_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the low 32 bits of MAC address.
    -            MAC_0: u32,
    -        }), base_address + 0x44);
    -
    -        /// address: 0x60008848
    -        /// BLOCK1 data register 1.
    -        pub const RD_MAC_SPI_SYS_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the high 16 bits of MAC address.
    -            MAC_1: u16,
    -            /// Stores the zeroth part of SPI_PAD_CONF.
    -            SPI_PAD_CONF_0: u16,
    -        }), base_address + 0x48);
    -
    -        /// address: 0x6000884c
    -        /// BLOCK1 data register 2.
    -        pub const RD_MAC_SPI_SYS_2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the first part of SPI_PAD_CONF.
    -            SPI_PAD_CONF_1: u32,
    -        }), base_address + 0x4c);
    -
    -        /// address: 0x60008850
    -        /// BLOCK1 data register 3.
    -        pub const RD_MAC_SPI_SYS_3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the second part of SPI_PAD_CONF.
    -            SPI_PAD_CONF_2: u18,
    -            /// Stores the fist 14 bits of the zeroth part of system data.
    -            SYS_DATA_PART0_0: u14,
    -        }), base_address + 0x50);
    -
    -        /// address: 0x60008854
    -        /// BLOCK1 data register 4.
    -        pub const RD_MAC_SPI_SYS_4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the fist 32 bits of the zeroth part of system data.
    -            SYS_DATA_PART0_1: u32,
    -        }), base_address + 0x54);
    -
    -        /// address: 0x60008858
    -        /// BLOCK1 data register 5.
    -        pub const RD_MAC_SPI_SYS_5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the second 32 bits of the zeroth part of system data.
    -            SYS_DATA_PART0_2: u32,
    -        }), base_address + 0x58);
    -
    -        /// address: 0x6000885c
    -        /// Register 0 of BLOCK2 (system).
    -        pub const RD_SYS_PART1_DATA0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the zeroth 32 bits of the first part of system data.
    -            SYS_DATA_PART1_0: u32,
    -        }), base_address + 0x5c);
    -
    -        /// address: 0x60008860
    -        /// Register 1 of BLOCK2 (system).
    -        pub const RD_SYS_PART1_DATA1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the first 32 bits of the first part of system data.
    -            SYS_DATA_PART1_1: u32,
    -        }), base_address + 0x60);
    -
    -        /// address: 0x60008864
    -        /// Register 2 of BLOCK2 (system).
    -        pub const RD_SYS_PART1_DATA2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the second 32 bits of the first part of system data.
    -            SYS_DATA_PART1_2: u32,
    -        }), base_address + 0x64);
    -
    -        /// address: 0x60008868
    -        /// Register 3 of BLOCK2 (system).
    -        pub const RD_SYS_PART1_DATA3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the third 32 bits of the first part of system data.
    -            SYS_DATA_PART1_3: u32,
    -        }), base_address + 0x68);
    -
    -        /// address: 0x6000886c
    -        /// Register 4 of BLOCK2 (system).
    -        pub const RD_SYS_PART1_DATA4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the fourth 32 bits of the first part of system data.
    -            SYS_DATA_PART1_4: u32,
    -        }), base_address + 0x6c);
    -
    -        /// address: 0x60008870
    -        /// Register 5 of BLOCK2 (system).
    -        pub const RD_SYS_PART1_DATA5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the fifth 32 bits of the first part of system data.
    -            SYS_DATA_PART1_5: u32,
    -        }), base_address + 0x70);
    -
    -        /// address: 0x60008874
    -        /// Register 6 of BLOCK2 (system).
    -        pub const RD_SYS_PART1_DATA6 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the sixth 32 bits of the first part of system data.
    -            SYS_DATA_PART1_6: u32,
    -        }), base_address + 0x74);
    -
    -        /// address: 0x60008878
    -        /// Register 7 of BLOCK2 (system).
    -        pub const RD_SYS_PART1_DATA7 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the seventh 32 bits of the first part of system data.
    -            SYS_DATA_PART1_7: u32,
    -        }), base_address + 0x78);
    -
    -        /// address: 0x6000887c
    -        /// Register 0 of BLOCK3 (user).
    -        pub const RD_USR_DATA0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the zeroth 32 bits of BLOCK3 (user).
    -            USR_DATA0: u32,
    -        }), base_address + 0x7c);
    -
    -        /// address: 0x60008880
    -        /// Register 1 of BLOCK3 (user).
    -        pub const RD_USR_DATA1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the first 32 bits of BLOCK3 (user).
    -            USR_DATA1: u32,
    -        }), base_address + 0x80);
    -
    -        /// address: 0x60008884
    -        /// Register 2 of BLOCK3 (user).
    -        pub const RD_USR_DATA2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the second 32 bits of BLOCK3 (user).
    -            USR_DATA2: u32,
    -        }), base_address + 0x84);
    -
    -        /// address: 0x60008888
    -        /// Register 3 of BLOCK3 (user).
    -        pub const RD_USR_DATA3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the third 32 bits of BLOCK3 (user).
    -            USR_DATA3: u32,
    -        }), base_address + 0x88);
    -
    -        /// address: 0x6000888c
    -        /// Register 4 of BLOCK3 (user).
    -        pub const RD_USR_DATA4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the fourth 32 bits of BLOCK3 (user).
    -            USR_DATA4: u32,
    -        }), base_address + 0x8c);
    -
    -        /// address: 0x60008890
    -        /// Register 5 of BLOCK3 (user).
    -        pub const RD_USR_DATA5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the fifth 32 bits of BLOCK3 (user).
    -            USR_DATA5: u32,
    -        }), base_address + 0x90);
    -
    -        /// address: 0x60008894
    -        /// Register 6 of BLOCK3 (user).
    -        pub const RD_USR_DATA6 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the sixth 32 bits of BLOCK3 (user).
    -            USR_DATA6: u32,
    -        }), base_address + 0x94);
    -
    -        /// address: 0x60008898
    -        /// Register 7 of BLOCK3 (user).
    -        pub const RD_USR_DATA7 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the seventh 32 bits of BLOCK3 (user).
    -            USR_DATA7: u32,
    -        }), base_address + 0x98);
    -
    -        /// address: 0x6000889c
    -        /// Register 0 of BLOCK4 (KEY0).
    -        pub const RD_KEY0_DATA0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the zeroth 32 bits of KEY0.
    -            KEY0_DATA0: u32,
    -        }), base_address + 0x9c);
    -
    -        /// address: 0x600088a0
    -        /// Register 1 of BLOCK4 (KEY0).
    -        pub const RD_KEY0_DATA1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the first 32 bits of KEY0.
    -            KEY0_DATA1: u32,
    -        }), base_address + 0xa0);
    -
    -        /// address: 0x600088a4
    -        /// Register 2 of BLOCK4 (KEY0).
    -        pub const RD_KEY0_DATA2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the second 32 bits of KEY0.
    -            KEY0_DATA2: u32,
    -        }), base_address + 0xa4);
    -
    -        /// address: 0x600088a8
    -        /// Register 3 of BLOCK4 (KEY0).
    -        pub const RD_KEY0_DATA3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the third 32 bits of KEY0.
    -            KEY0_DATA3: u32,
    -        }), base_address + 0xa8);
    -
    -        /// address: 0x600088ac
    -        /// Register 4 of BLOCK4 (KEY0).
    -        pub const RD_KEY0_DATA4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the fourth 32 bits of KEY0.
    -            KEY0_DATA4: u32,
    -        }), base_address + 0xac);
    -
    -        /// address: 0x600088b0
    -        /// Register 5 of BLOCK4 (KEY0).
    -        pub const RD_KEY0_DATA5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the fifth 32 bits of KEY0.
    -            KEY0_DATA5: u32,
    -        }), base_address + 0xb0);
    -
    -        /// address: 0x600088b4
    -        /// Register 6 of BLOCK4 (KEY0).
    -        pub const RD_KEY0_DATA6 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the sixth 32 bits of KEY0.
    -            KEY0_DATA6: u32,
    -        }), base_address + 0xb4);
    -
    -        /// address: 0x600088b8
    -        /// Register 7 of BLOCK4 (KEY0).
    -        pub const RD_KEY0_DATA7 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the seventh 32 bits of KEY0.
    -            KEY0_DATA7: u32,
    -        }), base_address + 0xb8);
    -
    -        /// address: 0x600088bc
    -        /// Register 0 of BLOCK5 (KEY1).
    -        pub const RD_KEY1_DATA0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the zeroth 32 bits of KEY1.
    -            KEY1_DATA0: u32,
    -        }), base_address + 0xbc);
    -
    -        /// address: 0x600088c0
    -        /// Register 1 of BLOCK5 (KEY1).
    -        pub const RD_KEY1_DATA1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the first 32 bits of KEY1.
    -            KEY1_DATA1: u32,
    -        }), base_address + 0xc0);
    -
    -        /// address: 0x600088c4
    -        /// Register 2 of BLOCK5 (KEY1).
    -        pub const RD_KEY1_DATA2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the second 32 bits of KEY1.
    -            KEY1_DATA2: u32,
    -        }), base_address + 0xc4);
    -
    -        /// address: 0x600088c8
    -        /// Register 3 of BLOCK5 (KEY1).
    -        pub const RD_KEY1_DATA3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the third 32 bits of KEY1.
    -            KEY1_DATA3: u32,
    -        }), base_address + 0xc8);
    -
    -        /// address: 0x600088cc
    -        /// Register 4 of BLOCK5 (KEY1).
    -        pub const RD_KEY1_DATA4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the fourth 32 bits of KEY1.
    -            KEY1_DATA4: u32,
    -        }), base_address + 0xcc);
    -
    -        /// address: 0x600088d0
    -        /// Register 5 of BLOCK5 (KEY1).
    -        pub const RD_KEY1_DATA5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the fifth 32 bits of KEY1.
    -            KEY1_DATA5: u32,
    -        }), base_address + 0xd0);
    -
    -        /// address: 0x600088d4
    -        /// Register 6 of BLOCK5 (KEY1).
    -        pub const RD_KEY1_DATA6 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the sixth 32 bits of KEY1.
    -            KEY1_DATA6: u32,
    -        }), base_address + 0xd4);
    -
    -        /// address: 0x600088d8
    -        /// Register 7 of BLOCK5 (KEY1).
    -        pub const RD_KEY1_DATA7 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the seventh 32 bits of KEY1.
    -            KEY1_DATA7: u32,
    -        }), base_address + 0xd8);
    -
    -        /// address: 0x600088dc
    -        /// Register 0 of BLOCK6 (KEY2).
    -        pub const RD_KEY2_DATA0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the zeroth 32 bits of KEY2.
    -            KEY2_DATA0: u32,
    -        }), base_address + 0xdc);
    -
    -        /// address: 0x600088e0
    -        /// Register 1 of BLOCK6 (KEY2).
    -        pub const RD_KEY2_DATA1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the first 32 bits of KEY2.
    -            KEY2_DATA1: u32,
    -        }), base_address + 0xe0);
    -
    -        /// address: 0x600088e4
    -        /// Register 2 of BLOCK6 (KEY2).
    -        pub const RD_KEY2_DATA2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the second 32 bits of KEY2.
    -            KEY2_DATA2: u32,
    -        }), base_address + 0xe4);
    -
    -        /// address: 0x600088e8
    -        /// Register 3 of BLOCK6 (KEY2).
    -        pub const RD_KEY2_DATA3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the third 32 bits of KEY2.
    -            KEY2_DATA3: u32,
    -        }), base_address + 0xe8);
    -
    -        /// address: 0x600088ec
    -        /// Register 4 of BLOCK6 (KEY2).
    -        pub const RD_KEY2_DATA4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the fourth 32 bits of KEY2.
    -            KEY2_DATA4: u32,
    -        }), base_address + 0xec);
    -
    -        /// address: 0x600088f0
    -        /// Register 5 of BLOCK6 (KEY2).
    -        pub const RD_KEY2_DATA5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the fifth 32 bits of KEY2.
    -            KEY2_DATA5: u32,
    -        }), base_address + 0xf0);
    -
    -        /// address: 0x600088f4
    -        /// Register 6 of BLOCK6 (KEY2).
    -        pub const RD_KEY2_DATA6 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the sixth 32 bits of KEY2.
    -            KEY2_DATA6: u32,
    -        }), base_address + 0xf4);
    -
    -        /// address: 0x600088f8
    -        /// Register 7 of BLOCK6 (KEY2).
    -        pub const RD_KEY2_DATA7 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the seventh 32 bits of KEY2.
    -            KEY2_DATA7: u32,
    -        }), base_address + 0xf8);
    -
    -        /// address: 0x600088fc
    -        /// Register 0 of BLOCK7 (KEY3).
    -        pub const RD_KEY3_DATA0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the zeroth 32 bits of KEY3.
    -            KEY3_DATA0: u32,
    -        }), base_address + 0xfc);
    -
    -        /// address: 0x60008900
    -        /// Register 1 of BLOCK7 (KEY3).
    -        pub const RD_KEY3_DATA1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the first 32 bits of KEY3.
    -            KEY3_DATA1: u32,
    -        }), base_address + 0x100);
    -
    -        /// address: 0x60008904
    -        /// Register 2 of BLOCK7 (KEY3).
    -        pub const RD_KEY3_DATA2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the second 32 bits of KEY3.
    -            KEY3_DATA2: u32,
    -        }), base_address + 0x104);
    -
    -        /// address: 0x60008908
    -        /// Register 3 of BLOCK7 (KEY3).
    -        pub const RD_KEY3_DATA3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the third 32 bits of KEY3.
    -            KEY3_DATA3: u32,
    -        }), base_address + 0x108);
    -
    -        /// address: 0x6000890c
    -        /// Register 4 of BLOCK7 (KEY3).
    -        pub const RD_KEY3_DATA4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the fourth 32 bits of KEY3.
    -            KEY3_DATA4: u32,
    -        }), base_address + 0x10c);
    -
    -        /// address: 0x60008910
    -        /// Register 5 of BLOCK7 (KEY3).
    -        pub const RD_KEY3_DATA5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the fifth 32 bits of KEY3.
    -            KEY3_DATA5: u32,
    -        }), base_address + 0x110);
    -
    -        /// address: 0x60008914
    -        /// Register 6 of BLOCK7 (KEY3).
    -        pub const RD_KEY3_DATA6 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the sixth 32 bits of KEY3.
    -            KEY3_DATA6: u32,
    -        }), base_address + 0x114);
    -
    -        /// address: 0x60008918
    -        /// Register 7 of BLOCK7 (KEY3).
    -        pub const RD_KEY3_DATA7 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the seventh 32 bits of KEY3.
    -            KEY3_DATA7: u32,
    -        }), base_address + 0x118);
    -
    -        /// address: 0x6000891c
    -        /// Register 0 of BLOCK8 (KEY4).
    -        pub const RD_KEY4_DATA0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the zeroth 32 bits of KEY4.
    -            KEY4_DATA0: u32,
    -        }), base_address + 0x11c);
    -
    -        /// address: 0x60008920
    -        /// Register 1 of BLOCK8 (KEY4).
    -        pub const RD_KEY4_DATA1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the first 32 bits of KEY4.
    -            KEY4_DATA1: u32,
    -        }), base_address + 0x120);
    -
    -        /// address: 0x60008924
    -        /// Register 2 of BLOCK8 (KEY4).
    -        pub const RD_KEY4_DATA2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the second 32 bits of KEY4.
    -            KEY4_DATA2: u32,
    -        }), base_address + 0x124);
    -
    -        /// address: 0x60008928
    -        /// Register 3 of BLOCK8 (KEY4).
    -        pub const RD_KEY4_DATA3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the third 32 bits of KEY4.
    -            KEY4_DATA3: u32,
    -        }), base_address + 0x128);
    -
    -        /// address: 0x6000892c
    -        /// Register 4 of BLOCK8 (KEY4).
    -        pub const RD_KEY4_DATA4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the fourth 32 bits of KEY4.
    -            KEY4_DATA4: u32,
    -        }), base_address + 0x12c);
    -
    -        /// address: 0x60008930
    -        /// Register 5 of BLOCK8 (KEY4).
    -        pub const RD_KEY4_DATA5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the fifth 32 bits of KEY4.
    -            KEY4_DATA5: u32,
    -        }), base_address + 0x130);
    -
    -        /// address: 0x60008934
    -        /// Register 6 of BLOCK8 (KEY4).
    -        pub const RD_KEY4_DATA6 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the sixth 32 bits of KEY4.
    -            KEY4_DATA6: u32,
    -        }), base_address + 0x134);
    -
    -        /// address: 0x60008938
    -        /// Register 7 of BLOCK8 (KEY4).
    -        pub const RD_KEY4_DATA7 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the seventh 32 bits of KEY4.
    -            KEY4_DATA7: u32,
    -        }), base_address + 0x138);
    -
    -        /// address: 0x6000893c
    -        /// Register 0 of BLOCK9 (KEY5).
    -        pub const RD_KEY5_DATA0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the zeroth 32 bits of KEY5.
    -            KEY5_DATA0: u32,
    -        }), base_address + 0x13c);
    -
    -        /// address: 0x60008940
    -        /// Register 1 of BLOCK9 (KEY5).
    -        pub const RD_KEY5_DATA1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the first 32 bits of KEY5.
    -            KEY5_DATA1: u32,
    -        }), base_address + 0x140);
    -
    -        /// address: 0x60008944
    -        /// Register 2 of BLOCK9 (KEY5).
    -        pub const RD_KEY5_DATA2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the second 32 bits of KEY5.
    -            KEY5_DATA2: u32,
    -        }), base_address + 0x144);
    -
    -        /// address: 0x60008948
    -        /// Register 3 of BLOCK9 (KEY5).
    -        pub const RD_KEY5_DATA3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the third 32 bits of KEY5.
    -            KEY5_DATA3: u32,
    -        }), base_address + 0x148);
    -
    -        /// address: 0x6000894c
    -        /// Register 4 of BLOCK9 (KEY5).
    -        pub const RD_KEY5_DATA4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the fourth 32 bits of KEY5.
    -            KEY5_DATA4: u32,
    -        }), base_address + 0x14c);
    -
    -        /// address: 0x60008950
    -        /// Register 5 of BLOCK9 (KEY5).
    -        pub const RD_KEY5_DATA5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the fifth 32 bits of KEY5.
    -            KEY5_DATA5: u32,
    -        }), base_address + 0x150);
    -
    -        /// address: 0x60008954
    -        /// Register 6 of BLOCK9 (KEY5).
    -        pub const RD_KEY5_DATA6 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the sixth 32 bits of KEY5.
    -            KEY5_DATA6: u32,
    -        }), base_address + 0x154);
    -
    -        /// address: 0x60008958
    -        /// Register 7 of BLOCK9 (KEY5).
    -        pub const RD_KEY5_DATA7 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the seventh 32 bits of KEY5.
    -            KEY5_DATA7: u32,
    -        }), base_address + 0x158);
    -
    -        /// address: 0x6000895c
    -        /// Register 0 of BLOCK10 (system).
    -        pub const RD_SYS_PART2_DATA0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the 0th 32 bits of the 2nd part of system data.
    -            SYS_DATA_PART2_0: u32,
    -        }), base_address + 0x15c);
    -
    -        /// address: 0x60008960
    -        /// Register 1 of BLOCK9 (KEY5).
    -        pub const RD_SYS_PART2_DATA1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the 1st 32 bits of the 2nd part of system data.
    -            SYS_DATA_PART2_1: u32,
    -        }), base_address + 0x160);
    -
    -        /// address: 0x60008964
    -        /// Register 2 of BLOCK10 (system).
    -        pub const RD_SYS_PART2_DATA2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the 2nd 32 bits of the 2nd part of system data.
    -            SYS_DATA_PART2_2: u32,
    -        }), base_address + 0x164);
    -
    -        /// address: 0x60008968
    -        /// Register 3 of BLOCK10 (system).
    -        pub const RD_SYS_PART2_DATA3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the 3rd 32 bits of the 2nd part of system data.
    -            SYS_DATA_PART2_3: u32,
    -        }), base_address + 0x168);
    -
    -        /// address: 0x6000896c
    -        /// Register 4 of BLOCK10 (system).
    -        pub const RD_SYS_PART2_DATA4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the 4th 32 bits of the 2nd part of system data.
    -            SYS_DATA_PART2_4: u32,
    -        }), base_address + 0x16c);
    -
    -        /// address: 0x60008970
    -        /// Register 5 of BLOCK10 (system).
    -        pub const RD_SYS_PART2_DATA5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the 5th 32 bits of the 2nd part of system data.
    -            SYS_DATA_PART2_5: u32,
    -        }), base_address + 0x170);
    -
    -        /// address: 0x60008974
    -        /// Register 6 of BLOCK10 (system).
    -        pub const RD_SYS_PART2_DATA6 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the 6th 32 bits of the 2nd part of system data.
    -            SYS_DATA_PART2_6: u32,
    -        }), base_address + 0x174);
    -
    -        /// address: 0x60008978
    -        /// Register 7 of BLOCK10 (system).
    -        pub const RD_SYS_PART2_DATA7 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the 7th 32 bits of the 2nd part of system data.
    -            SYS_DATA_PART2_7: u32,
    -        }), base_address + 0x178);
    -
    -        /// address: 0x6000897c
    -        /// Programming error record register 0 of BLOCK0.
    -        pub const RD_REPEAT_ERR0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// If any bit in RD_DIS is 1, then it indicates a programming error.
    -            RD_DIS_ERR: u7,
    -            /// If DIS_RTC_RAM_BOOT is 1, then it indicates a programming error.
    -            DIS_RTC_RAM_BOOT_ERR: u1,
    -            /// If DIS_ICACHE is 1, then it indicates a programming error.
    -            DIS_ICACHE_ERR: u1,
    -            /// If DIS_USB_JTAG is 1, then it indicates a programming error.
    -            DIS_USB_JTAG_ERR: u1,
    -            /// If DIS_DOWNLOAD_ICACHE is 1, then it indicates a programming error.
    -            DIS_DOWNLOAD_ICACHE_ERR: u1,
    -            /// If DIS_USB_DEVICE is 1, then it indicates a programming error.
    -            DIS_USB_DEVICE_ERR: u1,
    -            /// If DIS_FORCE_DOWNLOAD is 1, then it indicates a programming error.
    -            DIS_FORCE_DOWNLOAD_ERR: u1,
    -            /// Reserved.
    -            RPT4_RESERVED6_ERR: u1,
    -            /// If DIS_CAN is 1, then it indicates a programming error.
    -            DIS_CAN_ERR: u1,
    -            /// If JTAG_SEL_ENABLE is 1, then it indicates a programming error.
    -            JTAG_SEL_ENABLE_ERR: u1,
    -            /// If SOFT_DIS_JTAG is 1, then it indicates a programming error.
    -            SOFT_DIS_JTAG_ERR: u3,
    -            /// If DIS_PAD_JTAG is 1, then it indicates a programming error.
    -            DIS_PAD_JTAG_ERR: u1,
    -            /// If DIS_DOWNLOAD_MANUAL_ENCRYPT is 1, then it indicates a programming error.
    -            DIS_DOWNLOAD_MANUAL_ENCRYPT_ERR: u1,
    -            /// If any bit in USB_DREFH is 1, then it indicates a programming error.
    -            USB_DREFH_ERR: u2,
    -            /// If any bit in USB_DREFL is 1, then it indicates a programming error.
    -            USB_DREFL_ERR: u2,
    -            /// If USB_EXCHG_PINS is 1, then it indicates a programming error.
    -            USB_EXCHG_PINS_ERR: u1,
    -            /// If VDD_SPI_AS_GPIO is 1, then it indicates a programming error.
    -            VDD_SPI_AS_GPIO_ERR: u1,
    -            /// If any bit in BTLC_GPIO_ENABLE is 1, then it indicates a programming error.
    -            BTLC_GPIO_ENABLE_ERR: u2,
    -            /// If POWERGLITCH_EN is 1, then it indicates a programming error.
    -            POWERGLITCH_EN_ERR: u1,
    -            /// If any bit in POWER_GLITCH_DSENSE is 1, then it indicates a programming error.
    -            POWER_GLITCH_DSENSE_ERR: u2,
    -        }), base_address + 0x17c);
    -
    -        /// address: 0x60008980
    -        /// Programming error record register 1 of BLOCK0.
    -        pub const RD_REPEAT_ERR1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Reserved.
    -            RPT4_RESERVED2_ERR: u16,
    -            /// If any bit in WDT_DELAY_SEL is 1, then it indicates a programming error.
    -            WDT_DELAY_SEL_ERR: u2,
    -            /// If any bit in SPI_BOOT_CRYPT_CNT is 1, then it indicates a programming error.
    -            SPI_BOOT_CRYPT_CNT_ERR: u3,
    -            /// If SECURE_BOOT_KEY_REVOKE0 is 1, then it indicates a programming error.
    -            SECURE_BOOT_KEY_REVOKE0_ERR: u1,
    -            /// If SECURE_BOOT_KEY_REVOKE1 is 1, then it indicates a programming error.
    -            SECURE_BOOT_KEY_REVOKE1_ERR: u1,
    -            /// If SECURE_BOOT_KEY_REVOKE2 is 1, then it indicates a programming error.
    -            SECURE_BOOT_KEY_REVOKE2_ERR: u1,
    -            /// If any bit in KEY_PURPOSE_0 is 1, then it indicates a programming error.
    -            KEY_PURPOSE_0_ERR: u4,
    -            /// If any bit in KEY_PURPOSE_1 is 1, then it indicates a programming error.
    -            KEY_PURPOSE_1_ERR: u4,
    -        }), base_address + 0x180);
    -
    -        /// address: 0x60008984
    -        /// Programming error record register 2 of BLOCK0.
    -        pub const RD_REPEAT_ERR2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// If any bit in KEY_PURPOSE_2 is 1, then it indicates a programming error.
    -            KEY_PURPOSE_2_ERR: u4,
    -            /// If any bit in KEY_PURPOSE_3 is 1, then it indicates a programming error.
    -            KEY_PURPOSE_3_ERR: u4,
    -            /// If any bit in KEY_PURPOSE_4 is 1, then it indicates a programming error.
    -            KEY_PURPOSE_4_ERR: u4,
    -            /// If any bit in KEY_PURPOSE_5 is 1, then it indicates a programming error.
    -            KEY_PURPOSE_5_ERR: u4,
    -            /// Reserved.
    -            RPT4_RESERVED3_ERR: u4,
    -            /// If SECURE_BOOT_EN is 1, then it indicates a programming error.
    -            SECURE_BOOT_EN_ERR: u1,
    -            /// If SECURE_BOOT_AGGRESSIVE_REVOKE is 1, then it indicates a programming error.
    -            SECURE_BOOT_AGGRESSIVE_REVOKE_ERR: u1,
    -            /// Reserved.
    -            RPT4_RESERVED0_ERR: u6,
    -            /// If any bit in FLASH_TPUM is 1, then it indicates a programming error.
    -            FLASH_TPUW_ERR: u4,
    -        }), base_address + 0x184);
    -
    -        /// address: 0x60008988
    -        /// Programming error record register 3 of BLOCK0.
    -        pub const RD_REPEAT_ERR3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// If DIS_DOWNLOAD_MODE is 1, then it indicates a programming error.
    -            DIS_DOWNLOAD_MODE_ERR: u1,
    -            /// If DIS_LEGACY_SPI_BOOT is 1, then it indicates a programming error.
    -            DIS_LEGACY_SPI_BOOT_ERR: u1,
    -            /// If UART_PRINT_CHANNEL is 1, then it indicates a programming error.
    -            UART_PRINT_CHANNEL_ERR: u1,
    -            /// If FLASH_ECC_MODE is 1, then it indicates a programming error.
    -            FLASH_ECC_MODE_ERR: u1,
    -            /// If DIS_USB_DOWNLOAD_MODE is 1, then it indicates a programming error.
    -            DIS_USB_DOWNLOAD_MODE_ERR: u1,
    -            /// If ENABLE_SECURITY_DOWNLOAD is 1, then it indicates a programming error.
    -            ENABLE_SECURITY_DOWNLOAD_ERR: u1,
    -            /// If any bit in UART_PRINT_CONTROL is 1, then it indicates a programming error.
    -            UART_PRINT_CONTROL_ERR: u2,
    -            /// If PIN_POWER_SELECTION is 1, then it indicates a programming error.
    -            PIN_POWER_SELECTION_ERR: u1,
    -            /// If FLASH_TYPE is 1, then it indicates a programming error.
    -            FLASH_TYPE_ERR: u1,
    -            /// If any bits in FLASH_PAGE_SIZE is 1, then it indicates a programming error.
    -            FLASH_PAGE_SIZE_ERR: u2,
    -            /// If FLASH_ECC_EN_ERR is 1, then it indicates a programming error.
    -            FLASH_ECC_EN_ERR: u1,
    -            /// If FORCE_SEND_RESUME is 1, then it indicates a programming error.
    -            FORCE_SEND_RESUME_ERR: u1,
    -            /// If any bit in SECURE_VERSION is 1, then it indicates a programming error.
    -            SECURE_VERSION_ERR: u16,
    -            /// Reserved.
    -            RPT4_RESERVED1_ERR: u2,
    -        }), base_address + 0x188);
    -
    -        /// address: 0x60008990
    -        /// Programming error record register 4 of BLOCK0.
    -        pub const RD_REPEAT_ERR4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Reserved.
    -            RPT4_RESERVED4_ERR: u24,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -        }), base_address + 0x190);
    -
    -        /// address: 0x600089c0
    -        /// Programming error record register 0 of BLOCK1-10.
    -        pub const RD_RS_ERR0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of this signal means the number of error bytes.
    -            MAC_SPI_8M_ERR_NUM: u3,
    -            /// 0: Means no failure and that the data of MAC_SPI_8M is reliable 1: Means that
    -            /// programming user data failed and the number of error bytes is over 6.
    -            MAC_SPI_8M_FAIL: u1,
    -            /// The value of this signal means the number of error bytes.
    -            SYS_PART1_NUM: u3,
    -            /// 0: Means no failure and that the data of system part1 is reliable 1: Means that
    -            /// programming user data failed and the number of error bytes is over 6.
    -            SYS_PART1_FAIL: u1,
    -            /// The value of this signal means the number of error bytes.
    -            USR_DATA_ERR_NUM: u3,
    -            /// 0: Means no failure and that the user data is reliable 1: Means that programming
    -            /// user data failed and the number of error bytes is over 6.
    -            USR_DATA_FAIL: u1,
    -            /// The value of this signal means the number of error bytes.
    -            KEY0_ERR_NUM: u3,
    -            /// 0: Means no failure and that the data of key0 is reliable 1: Means that
    -            /// programming key0 failed and the number of error bytes is over 6.
    -            KEY0_FAIL: u1,
    -            /// The value of this signal means the number of error bytes.
    -            KEY1_ERR_NUM: u3,
    -            /// 0: Means no failure and that the data of key1 is reliable 1: Means that
    -            /// programming key1 failed and the number of error bytes is over 6.
    -            KEY1_FAIL: u1,
    -            /// The value of this signal means the number of error bytes.
    -            KEY2_ERR_NUM: u3,
    -            /// 0: Means no failure and that the data of key2 is reliable 1: Means that
    -            /// programming key2 failed and the number of error bytes is over 6.
    -            KEY2_FAIL: u1,
    -            /// The value of this signal means the number of error bytes.
    -            KEY3_ERR_NUM: u3,
    -            /// 0: Means no failure and that the data of key3 is reliable 1: Means that
    -            /// programming key3 failed and the number of error bytes is over 6.
    -            KEY3_FAIL: u1,
    -            /// The value of this signal means the number of error bytes.
    -            KEY4_ERR_NUM: u3,
    -            /// 0: Means no failure and that the data of key4 is reliable 1: Means that
    -            /// programming key4 failed and the number of error bytes is over 6.
    -            KEY4_FAIL: u1,
    -        }), base_address + 0x1c0);
    -
    -        /// address: 0x600089c4
    -        /// Programming error record register 1 of BLOCK1-10.
    -        pub const RD_RS_ERR1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of this signal means the number of error bytes.
    -            KEY5_ERR_NUM: u3,
    -            /// 0: Means no failure and that the data of KEY5 is reliable 1: Means that
    -            /// programming user data failed and the number of error bytes is over 6.
    -            KEY5_FAIL: u1,
    -            /// The value of this signal means the number of error bytes.
    -            SYS_PART2_ERR_NUM: u3,
    -            /// 0: Means no failure and that the data of system part2 is reliable 1: Means that
    -            /// programming user data failed and the number of error bytes is over 6.
    -            SYS_PART2_FAIL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x1c4);
    -
    -        /// address: 0x600089c8
    -        /// eFuse clcok configuration register.
    -        pub const CLK = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set this bit to force eFuse SRAM into power-saving mode.
    -            EFUSE_MEM_FORCE_PD: u1,
    -            /// Set this bit and force to activate clock signal of eFuse SRAM.
    -            MEM_CLK_FORCE_ON: u1,
    -            /// Set this bit to force eFuse SRAM into working mode.
    -            EFUSE_MEM_FORCE_PU: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            /// Set this bit and force to enable clock signal of eFuse memory.
    -            EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -        }), base_address + 0x1c8);
    -
    -        /// address: 0x600089cc
    -        /// eFuse operation mode configuraiton register;
    -        pub const CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// 0x5A5A: Operate programming command 0x5AA5: Operate read command.
    -            OP_CODE: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x1cc);
    -
    -        /// address: 0x600089d0
    -        /// eFuse status register.
    -        pub const STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Indicates the state of the eFuse state machine.
    -            STATE: u4,
    -            /// The value of OTP_LOAD_SW.
    -            OTP_LOAD_SW: u1,
    -            /// The value of OTP_VDDQ_C_SYNC2.
    -            OTP_VDDQ_C_SYNC2: u1,
    -            /// The value of OTP_STROBE_SW.
    -            OTP_STROBE_SW: u1,
    -            /// The value of OTP_CSB_SW.
    -            OTP_CSB_SW: u1,
    -            /// The value of OTP_PGENB_SW.
    -            OTP_PGENB_SW: u1,
    -            /// The value of OTP_VDDQ_IS_SW.
    -            OTP_VDDQ_IS_SW: u1,
    -            /// Indicates the number of error bits during programming BLOCK0.
    -            REPEAT_ERR_CNT: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0x1d0);
    -
    -        /// address: 0x600089d4
    -        /// eFuse command register.
    -        pub const CMD = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set this bit to send read command.
    -            READ_CMD: u1,
    -            /// Set this bit to send programming command.
    -            PGM_CMD: u1,
    -            /// The serial number of the block to be programmed. Value 0-10 corresponds to block
    -            /// number 0-10, respectively.
    -            BLK_NUM: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -        }), base_address + 0x1d4);
    -
    -        /// address: 0x600089d8
    -        /// eFuse raw interrupt register.
    -        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The raw bit signal for read_done interrupt.
    -            READ_DONE_INT_RAW: u1,
    -            /// The raw bit signal for pgm_done interrupt.
    -            PGM_DONE_INT_RAW: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x1d8);
    -
    -        /// address: 0x600089dc
    -        /// eFuse interrupt status register.
    -        pub const INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The status signal for read_done interrupt.
    -            READ_DONE_INT_ST: u1,
    -            /// The status signal for pgm_done interrupt.
    -            PGM_DONE_INT_ST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x1dc);
    -
    -        /// address: 0x600089e0
    -        /// eFuse interrupt enable register.
    -        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The enable signal for read_done interrupt.
    -            READ_DONE_INT_ENA: u1,
    -            /// The enable signal for pgm_done interrupt.
    -            PGM_DONE_INT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x1e0);
    -
    -        /// address: 0x600089e4
    -        /// eFuse interrupt clear register.
    -        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The clear signal for read_done interrupt.
    -            READ_DONE_INT_CLR: u1,
    -            /// The clear signal for pgm_done interrupt.
    -            PGM_DONE_INT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x1e4);
    -
    -        /// address: 0x600089e8
    -        /// Controls the eFuse programming voltage.
    -        pub const DAC_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Controls the division factor of the rising clock of the programming voltage.
    -            DAC_CLK_DIV: u8,
    -            /// Don't care.
    -            DAC_CLK_PAD_SEL: u1,
    -            /// Controls the rising period of the programming voltage.
    -            DAC_NUM: u8,
    -            /// Reduces the power supply of the programming voltage.
    -            OE_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0x1e8);
    -
    -        /// address: 0x600089ec
    -        /// Configures read timing parameters.
    -        pub const RD_TIM_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            /// Configures the initial read time of eFuse.
    -            READ_INIT_NUM: u8,
    -        }), base_address + 0x1ec);
    -
    -        /// address: 0x600089f0
    -        /// Configurarion register 1 of eFuse programming timing parameters.
    -        pub const WR_TIM_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            /// Configures the power up time for VDDQ.
    -            PWR_ON_NUM: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -        }), base_address + 0x1f0);
    -
    -        /// address: 0x600089f4
    -        /// Configurarion register 2 of eFuse programming timing parameters.
    -        pub const WR_TIM_CONF2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Configures the power outage time for VDDQ.
    -            PWR_OFF_NUM: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x1f4);
    -
    -        /// address: 0x600089fc
    -        /// eFuse version register.
    -        pub const DATE = @intToPtr(*volatile MmioInt(32, u28), base_address + 0x1fc);
    -    };
    -
    -    /// External Memory
    -    pub const EXTMEM = struct {
    -        pub const base_address = 0x600c4000;
    -
    -        /// address: 0x600c4000
    -        /// This description will be updated in the near future.
    -        pub const ICACHE_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to activate the data cache. 0: disable, 1: enable
    -            ICACHE_ENABLE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x0);
    -
    -        /// address: 0x600c4004
    -        /// This description will be updated in the near future.
    -        pub const ICACHE_CTRL1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to disable core0 ibus, 0: enable, 1: disable
    -            ICACHE_SHUT_IBUS: u1,
    -            /// The bit is used to disable core1 ibus, 0: enable, 1: disable
    -            ICACHE_SHUT_DBUS: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x600c4008
    -        /// This description will be updated in the near future.
    -        pub const ICACHE_TAG_POWER_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to close clock gating of icache tag memory. 1: close gating, 0:
    -            /// open clock gating.
    -            ICACHE_TAG_MEM_FORCE_ON: u1,
    -            /// The bit is used to power icache tag memory down, 0: follow rtc_lslp, 1: power
    -            /// down
    -            ICACHE_TAG_MEM_FORCE_PD: u1,
    -            /// The bit is used to power icache tag memory up, 0: follow rtc_lslp, 1: power up
    -            ICACHE_TAG_MEM_FORCE_PU: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x600c400c
    -        /// This description will be updated in the near future.
    -        pub const ICACHE_PRELOCK_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to enable the first section of prelock function.
    -            ICACHE_PRELOCK_SCT0_EN: u1,
    -            /// The bit is used to enable the second section of prelock function.
    -            ICACHE_PRELOCK_SCT1_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x600c4010
    -        /// This description will be updated in the near future.
    -        pub const ICACHE_PRELOCK_SCT0_ADDR = @intToPtr(*volatile u32, base_address + 0x10);
    -
    -        /// address: 0x600c4014
    -        /// This description will be updated in the near future.
    -        pub const ICACHE_PRELOCK_SCT1_ADDR = @intToPtr(*volatile u32, base_address + 0x14);
    -
    -        /// address: 0x600c4018
    -        /// This description will be updated in the near future.
    -        pub const ICACHE_PRELOCK_SCT_SIZE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bits are used to configure the second length of data locking, which is
    -            /// combined with ICACHE_PRELOCK_SCT1_ADDR_REG
    -            ICACHE_PRELOCK_SCT1_SIZE: u16,
    -            /// The bits are used to configure the first length of data locking, which is
    -            /// combined with ICACHE_PRELOCK_SCT0_ADDR_REG
    -            ICACHE_PRELOCK_SCT0_SIZE: u16,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x600c401c
    -        /// This description will be updated in the near future.
    -        pub const ICACHE_LOCK_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to enable lock operation. It will be cleared by hardware after
    -            /// lock operation done.
    -            ICACHE_LOCK_ENA: u1,
    -            /// The bit is used to enable unlock operation. It will be cleared by hardware after
    -            /// unlock operation done.
    -            ICACHE_UNLOCK_ENA: u1,
    -            /// The bit is used to indicate unlock/lock operation is finished.
    -            ICACHE_LOCK_DONE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x600c4020
    -        /// This description will be updated in the near future.
    -        pub const ICACHE_LOCK_ADDR = @intToPtr(*volatile u32, base_address + 0x20);
    -
    -        /// address: 0x600c4024
    -        /// This description will be updated in the near future.
    -        pub const ICACHE_LOCK_SIZE = @intToPtr(*volatile MmioInt(32, u16), base_address + 0x24);
    -
    -        /// address: 0x600c4028
    -        /// This description will be updated in the near future.
    -        pub const ICACHE_SYNC_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to enable invalidate operation. It will be cleared by hardware
    -            /// after invalidate operation done.
    -            ICACHE_INVALIDATE_ENA: u1,
    -            /// The bit is used to indicate invalidate operation is finished.
    -            ICACHE_SYNC_DONE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x28);
    -
    -        /// address: 0x600c402c
    -        /// This description will be updated in the near future.
    -        pub const ICACHE_SYNC_ADDR = @intToPtr(*volatile u32, base_address + 0x2c);
    -
    -        /// address: 0x600c4030
    -        /// This description will be updated in the near future.
    -        pub const ICACHE_SYNC_SIZE = @intToPtr(*volatile MmioInt(32, u23), base_address + 0x30);
    -
    -        /// address: 0x600c4034
    -        /// This description will be updated in the near future.
    -        pub const ICACHE_PRELOAD_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to enable preload operation. It will be cleared by hardware
    -            /// after preload operation done.
    -            ICACHE_PRELOAD_ENA: u1,
    -            /// The bit is used to indicate preload operation is finished.
    -            ICACHE_PRELOAD_DONE: u1,
    -            /// The bit is used to configure the direction of preload operation. 1: descending,
    -            /// 0: ascending.
    -            ICACHE_PRELOAD_ORDER: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -        }), base_address + 0x34);
    -
    -        /// address: 0x600c4038
    -        /// This description will be updated in the near future.
    -        pub const ICACHE_PRELOAD_ADDR = @intToPtr(*volatile u32, base_address + 0x38);
    -
    -        /// address: 0x600c403c
    -        /// This description will be updated in the near future.
    -        pub const ICACHE_PRELOAD_SIZE = @intToPtr(*volatile MmioInt(32, u16), base_address + 0x3c);
    -
    -        /// address: 0x600c4040
    -        /// This description will be updated in the near future.
    -        pub const ICACHE_AUTOLOAD_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bits are used to enable the first section for autoload operation.
    -            ICACHE_AUTOLOAD_SCT0_ENA: u1,
    -            /// The bits are used to enable the second section for autoload operation.
    -            ICACHE_AUTOLOAD_SCT1_ENA: u1,
    -            /// The bit is used to enable and disable autoload operation. It is combined with
    -            /// icache_autoload_done. 1: enable, 0: disable.
    -            ICACHE_AUTOLOAD_ENA: u1,
    -            /// The bit is used to indicate autoload operation is finished.
    -            ICACHE_AUTOLOAD_DONE: u1,
    -            /// The bits are used to configure the direction of autoload. 1: descending, 0:
    -            /// ascending.
    -            ICACHE_AUTOLOAD_ORDER: u1,
    -            /// The bits are used to configure trigger conditions for autoload. 0/3: cache miss,
    -            /// 1: cache hit, 2: both cache miss and hit.
    -            ICACHE_AUTOLOAD_RQST: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x40);
    -
    -        /// address: 0x600c4044
    -        /// This description will be updated in the near future.
    -        pub const ICACHE_AUTOLOAD_SCT0_ADDR = @intToPtr(*volatile u32, base_address + 0x44);
    -
    -        /// address: 0x600c4048
    -        /// This description will be updated in the near future.
    -        pub const ICACHE_AUTOLOAD_SCT0_SIZE = @intToPtr(*volatile MmioInt(32, u27), base_address + 0x48);
    -
    -        /// address: 0x600c404c
    -        /// This description will be updated in the near future.
    -        pub const ICACHE_AUTOLOAD_SCT1_ADDR = @intToPtr(*volatile u32, base_address + 0x4c);
    -
    -        /// address: 0x600c4050
    -        /// This description will be updated in the near future.
    -        pub const ICACHE_AUTOLOAD_SCT1_SIZE = @intToPtr(*volatile MmioInt(32, u27), base_address + 0x50);
    -
    -        /// address: 0x600c4054
    -        /// This description will be updated in the near future.
    -        pub const IBUS_TO_FLASH_START_VADDR = @intToPtr(*volatile u32, base_address + 0x54);
    -
    -        /// address: 0x600c4058
    -        /// This description will be updated in the near future.
    -        pub const IBUS_TO_FLASH_END_VADDR = @intToPtr(*volatile u32, base_address + 0x58);
    -
    -        /// address: 0x600c405c
    -        /// This description will be updated in the near future.
    -        pub const DBUS_TO_FLASH_START_VADDR = @intToPtr(*volatile u32, base_address + 0x5c);
    -
    -        /// address: 0x600c4060
    -        /// This description will be updated in the near future.
    -        pub const DBUS_TO_FLASH_END_VADDR = @intToPtr(*volatile u32, base_address + 0x60);
    -
    -        /// address: 0x600c4064
    -        /// This description will be updated in the near future.
    -        pub const CACHE_ACS_CNT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to clear ibus counter.
    -            IBUS_ACS_CNT_CLR: u1,
    -            /// The bit is used to clear dbus counter.
    -            DBUS_ACS_CNT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x64);
    -
    -        /// address: 0x600c4068
    -        /// This description will be updated in the near future.
    -        pub const IBUS_ACS_MISS_CNT = @intToPtr(*volatile u32, base_address + 0x68);
    -
    -        /// address: 0x600c406c
    -        /// This description will be updated in the near future.
    -        pub const IBUS_ACS_CNT = @intToPtr(*volatile u32, base_address + 0x6c);
    -
    -        /// address: 0x600c4070
    -        /// This description will be updated in the near future.
    -        pub const DBUS_ACS_FLASH_MISS_CNT = @intToPtr(*volatile u32, base_address + 0x70);
    -
    -        /// address: 0x600c4074
    -        /// This description will be updated in the near future.
    -        pub const DBUS_ACS_CNT = @intToPtr(*volatile u32, base_address + 0x74);
    -
    -        /// address: 0x600c4078
    -        /// This description will be updated in the near future.
    -        pub const CACHE_ILG_INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to enable interrupt by sync configurations fault.
    -            ICACHE_SYNC_OP_FAULT_INT_ENA: u1,
    -            /// The bit is used to enable interrupt by preload configurations fault.
    -            ICACHE_PRELOAD_OP_FAULT_INT_ENA: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            /// The bit is used to enable interrupt by mmu entry fault.
    -            MMU_ENTRY_FAULT_INT_ENA: u1,
    -            reserved3: u1,
    -            /// The bit is used to enable interrupt by ibus counter overflow.
    -            IBUS_CNT_OVF_INT_ENA: u1,
    -            /// The bit is used to enable interrupt by dbus counter overflow.
    -            DBUS_CNT_OVF_INT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0x78);
    -
    -        /// address: 0x600c407c
    -        /// This description will be updated in the near future.
    -        pub const CACHE_ILG_INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to clear interrupt by sync configurations fault.
    -            ICACHE_SYNC_OP_FAULT_INT_CLR: u1,
    -            /// The bit is used to clear interrupt by preload configurations fault.
    -            ICACHE_PRELOAD_OP_FAULT_INT_CLR: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            /// The bit is used to clear interrupt by mmu entry fault.
    -            MMU_ENTRY_FAULT_INT_CLR: u1,
    -            reserved3: u1,
    -            /// The bit is used to clear interrupt by ibus counter overflow.
    -            IBUS_CNT_OVF_INT_CLR: u1,
    -            /// The bit is used to clear interrupt by dbus counter overflow.
    -            DBUS_CNT_OVF_INT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0x7c);
    -
    -        /// address: 0x600c4080
    -        /// This description will be updated in the near future.
    -        pub const CACHE_ILG_INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to indicate interrupt by sync configurations fault.
    -            ICACHE_SYNC_OP_FAULT_ST: u1,
    -            /// The bit is used to indicate interrupt by preload configurations fault.
    -            ICACHE_PRELOAD_OP_FAULT_ST: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            /// The bit is used to indicate interrupt by mmu entry fault.
    -            MMU_ENTRY_FAULT_ST: u1,
    -            reserved3: u1,
    -            /// The bit is used to indicate interrupt by ibus access flash/spiram counter
    -            /// overflow.
    -            IBUS_ACS_CNT_OVF_ST: u1,
    -            /// The bit is used to indicate interrupt by ibus access flash/spiram miss counter
    -            /// overflow.
    -            IBUS_ACS_MISS_CNT_OVF_ST: u1,
    -            /// The bit is used to indicate interrupt by dbus access flash/spiram counter
    -            /// overflow.
    -            DBUS_ACS_CNT_OVF_ST: u1,
    -            /// The bit is used to indicate interrupt by dbus access flash miss counter
    -            /// overflow.
    -            DBUS_ACS_FLASH_MISS_CNT_OVF_ST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x80);
    -
    -        /// address: 0x600c4084
    -        /// This description will be updated in the near future.
    -        pub const CORE0_ACS_CACHE_INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to enable interrupt by cpu access icache while the corresponding
    -            /// ibus is disabled which include speculative access.
    -            CORE0_IBUS_ACS_MSK_IC_INT_ENA: u1,
    -            /// The bit is used to enable interrupt by ibus trying to write icache
    -            CORE0_IBUS_WR_IC_INT_ENA: u1,
    -            /// The bit is used to enable interrupt by authentication fail.
    -            CORE0_IBUS_REJECT_INT_ENA: u1,
    -            /// The bit is used to enable interrupt by cpu access icache while the corresponding
    -            /// dbus is disabled which include speculative access.
    -            CORE0_DBUS_ACS_MSK_IC_INT_ENA: u1,
    -            /// The bit is used to enable interrupt by authentication fail.
    -            CORE0_DBUS_REJECT_INT_ENA: u1,
    -            /// The bit is used to enable interrupt by dbus trying to write icache
    -            CORE0_DBUS_WR_IC_INT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -        }), base_address + 0x84);
    -
    -        /// address: 0x600c4088
    -        /// This description will be updated in the near future.
    -        pub const CORE0_ACS_CACHE_INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to clear interrupt by cpu access icache while the corresponding
    -            /// ibus is disabled or icache is disabled which include speculative access.
    -            CORE0_IBUS_ACS_MSK_IC_INT_CLR: u1,
    -            /// The bit is used to clear interrupt by ibus trying to write icache
    -            CORE0_IBUS_WR_IC_INT_CLR: u1,
    -            /// The bit is used to clear interrupt by authentication fail.
    -            CORE0_IBUS_REJECT_INT_CLR: u1,
    -            /// The bit is used to clear interrupt by cpu access icache while the corresponding
    -            /// dbus is disabled or icache is disabled which include speculative access.
    -            CORE0_DBUS_ACS_MSK_IC_INT_CLR: u1,
    -            /// The bit is used to clear interrupt by authentication fail.
    -            CORE0_DBUS_REJECT_INT_CLR: u1,
    -            /// The bit is used to clear interrupt by dbus trying to write icache
    -            CORE0_DBUS_WR_IC_INT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -        }), base_address + 0x88);
    -
    -        /// address: 0x600c408c
    -        /// This description will be updated in the near future.
    -        pub const CORE0_ACS_CACHE_INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to indicate interrupt by cpu access icache while the core0_ibus
    -            /// is disabled or icache is disabled which include speculative access.
    -            CORE0_IBUS_ACS_MSK_ICACHE_ST: u1,
    -            /// The bit is used to indicate interrupt by ibus trying to write icache
    -            CORE0_IBUS_WR_ICACHE_ST: u1,
    -            /// The bit is used to indicate interrupt by authentication fail.
    -            CORE0_IBUS_REJECT_ST: u1,
    -            /// The bit is used to indicate interrupt by cpu access icache while the core0_dbus
    -            /// is disabled or icache is disabled which include speculative access.
    -            CORE0_DBUS_ACS_MSK_ICACHE_ST: u1,
    -            /// The bit is used to indicate interrupt by authentication fail.
    -            CORE0_DBUS_REJECT_ST: u1,
    -            /// The bit is used to indicate interrupt by dbus trying to write icache
    -            CORE0_DBUS_WR_ICACHE_ST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -        }), base_address + 0x8c);
    -
    -        /// address: 0x600c4090
    -        /// This description will be updated in the near future.
    -        pub const CORE0_DBUS_REJECT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bits are used to indicate the attribute of CPU access dbus when
    -            /// authentication fail. 0: invalidate, 1: execute-able, 2: read-able, 4:
    -            /// write-able.
    -            CORE0_DBUS_ATTR: u3,
    -            /// The bit is used to indicate the world of CPU access dbus when authentication
    -            /// fail. 0: WORLD0, 1: WORLD1
    -            CORE0_DBUS_WORLD: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x90);
    -
    -        /// address: 0x600c4094
    -        /// This description will be updated in the near future.
    -        pub const CORE0_DBUS_REJECT_VADDR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bits are used to indicate the virtual address of CPU access dbus when
    -            /// authentication fail.
    -            CORE0_DBUS_VADDR: u32,
    -        }), base_address + 0x94);
    -
    -        /// address: 0x600c4098
    -        /// This description will be updated in the near future.
    -        pub const CORE0_IBUS_REJECT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bits are used to indicate the attribute of CPU access ibus when
    -            /// authentication fail. 0: invalidate, 1: execute-able, 2: read-able
    -            CORE0_IBUS_ATTR: u3,
    -            /// The bit is used to indicate the world of CPU access ibus when authentication
    -            /// fail. 0: WORLD0, 1: WORLD1
    -            CORE0_IBUS_WORLD: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x98);
    -
    -        /// address: 0x600c409c
    -        /// This description will be updated in the near future.
    -        pub const CORE0_IBUS_REJECT_VADDR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bits are used to indicate the virtual address of CPU access ibus when
    -            /// authentication fail.
    -            CORE0_IBUS_VADDR: u32,
    -        }), base_address + 0x9c);
    -
    -        /// address: 0x600c40a0
    -        /// This description will be updated in the near future.
    -        pub const CACHE_MMU_FAULT_CONTENT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bits are used to indicate the content of mmu entry which cause mmu fault..
    -            CACHE_MMU_FAULT_CONTENT: u10,
    -            /// The right-most 3 bits are used to indicate the operations which cause mmu fault
    -            /// occurrence. 0: default, 1: cpu miss, 2: preload miss, 3: writeback, 4: cpu miss
    -            /// evict recovery address, 5: load miss evict recovery address, 6: external dma tx,
    -            /// 7: external dma rx. The most significant bit is used to indicate this operation
    -            /// occurs in which one icache.
    -            CACHE_MMU_FAULT_CODE: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -        }), base_address + 0xa0);
    -
    -        /// address: 0x600c40a4
    -        /// This description will be updated in the near future.
    -        pub const CACHE_MMU_FAULT_VADDR = @intToPtr(*volatile u32, base_address + 0xa4);
    -
    -        /// address: 0x600c40a8
    -        /// This description will be updated in the near future.
    -        pub const CACHE_WRAP_AROUND_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to enable wrap around mode when read data from flash.
    -            CACHE_FLASH_WRAP_AROUND: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0xa8);
    -
    -        /// address: 0x600c40ac
    -        /// This description will be updated in the near future.
    -        pub const CACHE_MMU_POWER_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to enable clock gating to save power when access mmu memory, 0:
    -            /// enable, 1: disable
    -            CACHE_MMU_MEM_FORCE_ON: u1,
    -            /// The bit is used to power mmu memory down, 0: follow_rtc_lslp_pd, 1: power down
    -            CACHE_MMU_MEM_FORCE_PD: u1,
    -            /// The bit is used to power mmu memory down, 0: follow_rtc_lslp_pd, 1: power up
    -            CACHE_MMU_MEM_FORCE_PU: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -        }), base_address + 0xac);
    -
    -        /// address: 0x600c40b0
    -        /// This description will be updated in the near future.
    -        pub const CACHE_STATE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to indicate whether icache main fsm is in idle state or not. 1:
    -            /// in idle state, 0: not in idle state
    -            ICACHE_STATE: u12,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0xb0);
    -
    -        /// address: 0x600c40b4
    -        /// This description will be updated in the near future.
    -        pub const CACHE_ENCRYPT_DECRYPT_RECORD_DISABLE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Reserved.
    -            RECORD_DISABLE_DB_ENCRYPT: u1,
    -            /// Reserved.
    -            RECORD_DISABLE_G0CB_DECRYPT: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0xb4);
    -
    -        /// address: 0x600c40b8
    -        /// This description will be updated in the near future.
    -        pub const CACHE_ENCRYPT_DECRYPT_CLK_FORCE_ON = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to close clock gating of manual crypt clock. 1: close gating, 0:
    -            /// open clock gating.
    -            CLK_FORCE_ON_MANUAL_CRYPT: u1,
    -            /// The bit is used to close clock gating of automatic crypt clock. 1: close gating,
    -            /// 0: open clock gating.
    -            CLK_FORCE_ON_AUTO_CRYPT: u1,
    -            /// The bit is used to close clock gating of external memory encrypt and decrypt
    -            /// clock. 1: close gating, 0: open clock gating.
    -            CLK_FORCE_ON_CRYPT: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -        }), base_address + 0xb8);
    -
    -        /// address: 0x600c40bc
    -        /// This description will be updated in the near future.
    -        pub const CACHE_PRELOAD_INT_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to indicate the interrupt by icache pre-load done.
    -            ICACHE_PRELOAD_INT_ST: u1,
    -            /// The bit is used to enable the interrupt by icache pre-load done.
    -            ICACHE_PRELOAD_INT_ENA: u1,
    -            /// The bit is used to clear the interrupt by icache pre-load done.
    -            ICACHE_PRELOAD_INT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -        }), base_address + 0xbc);
    -
    -        /// address: 0x600c40c0
    -        /// This description will be updated in the near future.
    -        pub const CACHE_SYNC_INT_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to indicate the interrupt by icache sync done.
    -            ICACHE_SYNC_INT_ST: u1,
    -            /// The bit is used to enable the interrupt by icache sync done.
    -            ICACHE_SYNC_INT_ENA: u1,
    -            /// The bit is used to clear the interrupt by icache sync done.
    -            ICACHE_SYNC_INT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -        }), base_address + 0xc0);
    -
    -        /// address: 0x600c40c4
    -        /// This description will be updated in the near future.
    -        pub const CACHE_MMU_OWNER = @intToPtr(*volatile MmioInt(32, u4), base_address + 0xc4);
    -
    -        /// address: 0x600c40c8
    -        /// This description will be updated in the near future.
    -        pub const CACHE_CONF_MISC = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to disable checking mmu entry fault by preload operation.
    -            CACHE_IGNORE_PRELOAD_MMU_ENTRY_FAULT: u1,
    -            /// The bit is used to disable checking mmu entry fault by sync operation.
    -            CACHE_IGNORE_SYNC_MMU_ENTRY_FAULT: u1,
    -            /// The bit is used to enable cache trace function.
    -            CACHE_TRACE_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -        }), base_address + 0xc8);
    -
    -        /// address: 0x600c40cc
    -        /// This description will be updated in the near future.
    -        pub const ICACHE_FREEZE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to enable icache freeze mode
    -            ENA: u1,
    -            /// The bit is used to configure freeze mode, 0: assert busy if CPU miss 1: assert
    -            /// hit if CPU miss
    -            MODE: u1,
    -            /// The bit is used to indicate icache freeze success
    -            DONE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -        }), base_address + 0xcc);
    -
    -        /// address: 0x600c40d0
    -        /// This description will be updated in the near future.
    -        pub const ICACHE_ATOMIC_OPERATE_ENA = @intToPtr(*volatile MmioInt(32, u1), base_address + 0xd0);
    -
    -        /// address: 0x600c40d4
    -        /// This description will be updated in the near future.
    -        pub const CACHE_REQUEST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to disable request recording which could cause performance issue
    -            BYPASS: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0xd4);
    -
    -        /// address: 0x600c40d8
    -        /// This description will be updated in the near future.
    -        pub const IBUS_PMS_TBL_LOCK = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to configure the ibus permission control section boundary0
    -            IBUS_PMS_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0xd8);
    -
    -        /// address: 0x600c40dc
    -        /// This description will be updated in the near future.
    -        pub const IBUS_PMS_TBL_BOUNDARY0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to configure the ibus permission control section boundary0
    -            IBUS_PMS_BOUNDARY0: u12,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0xdc);
    -
    -        /// address: 0x600c40e0
    -        /// This description will be updated in the near future.
    -        pub const IBUS_PMS_TBL_BOUNDARY1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to configure the ibus permission control section boundary1
    -            IBUS_PMS_BOUNDARY1: u12,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0xe0);
    -
    -        /// address: 0x600c40e4
    -        /// This description will be updated in the near future.
    -        pub const IBUS_PMS_TBL_BOUNDARY2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to configure the ibus permission control section boundary2
    -            IBUS_PMS_BOUNDARY2: u12,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0xe4);
    -
    -        /// address: 0x600c40e8
    -        /// This description will be updated in the near future.
    -        pub const IBUS_PMS_TBL_ATTR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to configure attribute of the ibus permission control section1,
    -            /// bit0: fetch in world0, bit1: load in world0, bit2: fetch in world1, bit3: load
    -            /// in world1
    -            IBUS_PMS_SCT1_ATTR: u4,
    -            /// The bit is used to configure attribute of the ibus permission control section2,
    -            /// bit0: fetch in world0, bit1: load in world0, bit2: fetch in world1, bit3: load
    -            /// in world1
    -            IBUS_PMS_SCT2_ATTR: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0xe8);
    -
    -        /// address: 0x600c40ec
    -        /// This description will be updated in the near future.
    -        pub const DBUS_PMS_TBL_LOCK = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to configure the ibus permission control section boundary0
    -            DBUS_PMS_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0xec);
    -
    -        /// address: 0x600c40f0
    -        /// This description will be updated in the near future.
    -        pub const DBUS_PMS_TBL_BOUNDARY0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to configure the dbus permission control section boundary0
    -            DBUS_PMS_BOUNDARY0: u12,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0xf0);
    -
    -        /// address: 0x600c40f4
    -        /// This description will be updated in the near future.
    -        pub const DBUS_PMS_TBL_BOUNDARY1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to configure the dbus permission control section boundary1
    -            DBUS_PMS_BOUNDARY1: u12,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0xf4);
    -
    -        /// address: 0x600c40f8
    -        /// This description will be updated in the near future.
    -        pub const DBUS_PMS_TBL_BOUNDARY2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to configure the dbus permission control section boundary2
    -            DBUS_PMS_BOUNDARY2: u12,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0xf8);
    -
    -        /// address: 0x600c40fc
    -        /// This description will be updated in the near future.
    -        pub const DBUS_PMS_TBL_ATTR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to configure attribute of the dbus permission control section1,
    -            /// bit0: load in world0, bit2: load in world1
    -            DBUS_PMS_SCT1_ATTR: u2,
    -            /// The bit is used to configure attribute of the dbus permission control section2,
    -            /// bit0: load in world0, bit2: load in world1
    -            DBUS_PMS_SCT2_ATTR: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0xfc);
    -
    -        /// address: 0x600c4100
    -        /// This description will be updated in the near future.
    -        pub const CLOCK_GATE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// clock gate enable.
    -            CLK_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x100);
    -
    -        /// address: 0x600c43fc
    -        /// This description will be updated in the near future.
    -        pub const REG_DATE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// version information
    -            DATE: u28,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -        }), base_address + 0x3fc);
    -    };
    -
    -    /// General Purpose Input/Output
    -    pub const GPIO = struct {
    -        pub const base_address = 0x60004000;
    -
    -        /// address: 0x60004000
    -        /// GPIO bit select register
    -        pub const BT_SELECT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// GPIO bit select register
    -            BT_SEL: u32,
    -        }), base_address + 0x0);
    -
    -        /// address: 0x60004004
    -        /// GPIO output register
    -        pub const OUT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// GPIO output register for GPIO0-25
    -            DATA_ORIG: u26,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x60004008
    -        /// GPIO output set register
    -        pub const OUT_W1TS = @intToPtr(*volatile MmioInt(32, u26), base_address + 0x8);
    -
    -        /// address: 0x6000400c
    -        /// GPIO output clear register
    -        pub const OUT_W1TC = @intToPtr(*volatile MmioInt(32, u26), base_address + 0xc);
    -
    -        /// address: 0x6000401c
    -        /// GPIO sdio select register
    -        pub const SDIO_SELECT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// GPIO sdio select register
    -            SDIO_SEL: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x60004020
    -        /// GPIO output enable register
    -        pub const ENABLE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// GPIO output enable register for GPIO0-25
    -            DATA: u26,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -        }), base_address + 0x20);
    -
    -        /// address: 0x60004024
    -        /// GPIO output enable set register
    -        pub const ENABLE_W1TS = @intToPtr(*volatile MmioInt(32, u26), base_address + 0x24);
    -
    -        /// address: 0x60004028
    -        /// GPIO output enable clear register
    -        pub const ENABLE_W1TC = @intToPtr(*volatile MmioInt(32, u26), base_address + 0x28);
    -
    -        /// address: 0x60004038
    -        /// pad strapping register
    -        pub const STRAP = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// pad strapping register
    -            STRAPPING: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x38);
    -
    -        /// address: 0x6000403c
    -        /// GPIO input register
    -        pub const IN = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// GPIO input register for GPIO0-25
    -            DATA_NEXT: u26,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -        }), base_address + 0x3c);
    -
    -        /// address: 0x60004044
    -        /// GPIO interrupt status register
    -        pub const STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// GPIO interrupt status register for GPIO0-25
    -            INTERRUPT: u26,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -        }), base_address + 0x44);
    -
    -        /// address: 0x60004048
    -        /// GPIO interrupt status set register
    -        pub const STATUS_W1TS = @intToPtr(*volatile MmioInt(32, u26), base_address + 0x48);
    -
    -        /// address: 0x6000404c
    -        /// GPIO interrupt status clear register
    -        pub const STATUS_W1TC = @intToPtr(*volatile MmioInt(32, u26), base_address + 0x4c);
    -
    -        /// address: 0x6000405c
    -        /// GPIO PRO_CPU interrupt status register
    -        pub const PCPU_INT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// GPIO PRO_CPU interrupt status register for GPIO0-25
    -            PROCPU_INT: u26,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -        }), base_address + 0x5c);
    -
    -        /// address: 0x60004060
    -        /// GPIO PRO_CPU(not shielded) interrupt status register
    -        pub const PCPU_NMI_INT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// GPIO PRO_CPU(not shielded) interrupt status register for GPIO0-25
    -            PROCPU_NMI_INT: u26,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -        }), base_address + 0x60);
    -
    -        /// address: 0x60004064
    -        /// GPIO CPUSDIO interrupt status register
    -        pub const CPUSDIO_INT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// GPIO CPUSDIO interrupt status register for GPIO0-25
    -            SDIO_INT: u26,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -        }), base_address + 0x64);
    -
    -        /// address: 0x60004074
    -        /// GPIO pin configuration register
    -        pub const PIN0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0x74);
    -
    -        /// address: 0x60004078
    -        /// GPIO pin configuration register
    -        pub const PIN1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0x78);
    -
    -        /// address: 0x6000407c
    -        /// GPIO pin configuration register
    -        pub const PIN2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0x7c);
    -
    -        /// address: 0x60004080
    -        /// GPIO pin configuration register
    -        pub const PIN3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0x80);
    -
    -        /// address: 0x60004084
    -        /// GPIO pin configuration register
    -        pub const PIN4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0x84);
    -
    -        /// address: 0x60004088
    -        /// GPIO pin configuration register
    -        pub const PIN5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0x88);
    -
    -        /// address: 0x6000408c
    -        /// GPIO pin configuration register
    -        pub const PIN6 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0x8c);
    -
    -        /// address: 0x60004090
    -        /// GPIO pin configuration register
    -        pub const PIN7 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0x90);
    -
    -        /// address: 0x60004094
    -        /// GPIO pin configuration register
    -        pub const PIN8 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0x94);
    -
    -        /// address: 0x60004098
    -        /// GPIO pin configuration register
    -        pub const PIN9 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0x98);
    -
    -        /// address: 0x6000409c
    -        /// GPIO pin configuration register
    -        pub const PIN10 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0x9c);
    -
    -        /// address: 0x600040a0
    -        /// GPIO pin configuration register
    -        pub const PIN11 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0xa0);
    -
    -        /// address: 0x600040a4
    -        /// GPIO pin configuration register
    -        pub const PIN12 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0xa4);
    -
    -        /// address: 0x600040a8
    -        /// GPIO pin configuration register
    -        pub const PIN13 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0xa8);
    -
    -        /// address: 0x600040ac
    -        /// GPIO pin configuration register
    -        pub const PIN14 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0xac);
    -
    -        /// address: 0x600040b0
    -        /// GPIO pin configuration register
    -        pub const PIN15 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0xb0);
    -
    -        /// address: 0x600040b4
    -        /// GPIO pin configuration register
    -        pub const PIN16 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0xb4);
    -
    -        /// address: 0x600040b8
    -        /// GPIO pin configuration register
    -        pub const PIN17 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0xb8);
    -
    -        /// address: 0x600040bc
    -        /// GPIO pin configuration register
    -        pub const PIN18 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0xbc);
    -
    -        /// address: 0x600040c0
    -        /// GPIO pin configuration register
    -        pub const PIN19 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0xc0);
    -
    -        /// address: 0x600040c4
    -        /// GPIO pin configuration register
    -        pub const PIN20 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0xc4);
    -
    -        /// address: 0x600040c8
    -        /// GPIO pin configuration register
    -        pub const PIN21 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0xc8);
    -
    -        /// address: 0x600040cc
    -        /// GPIO pin configuration register
    -        pub const PIN22 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0xcc);
    -
    -        /// address: 0x600040d0
    -        /// GPIO pin configuration register
    -        pub const PIN23 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0xd0);
    -
    -        /// address: 0x600040d4
    -        /// GPIO pin configuration register
    -        pub const PIN24 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0xd4);
    -
    -        /// address: 0x600040d8
    -        /// GPIO pin configuration register
    -        pub const PIN25 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC2_BYPASS: u2,
    -            /// set this bit to select pad driver. 1:open-drain. :normal.
    -            PIN_PAD_DRIVER: u1,
    -            /// set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger
    -            /// at posedge.
    -            PIN_SYNC1_BYPASS: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at
    -            /// posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level.
    -            /// 5:valid at high level
    -            PIN_INT_TYPE: u3,
    -            /// set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -            PIN_WAKEUP_ENABLE: u1,
    -            /// reserved
    -            PIN_CONFIG: u2,
    -            /// set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded)
    -            /// interrupt.
    -            PIN_INT_ENA: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0xd8);
    -
    -        /// address: 0x6000414c
    -        /// GPIO interrupt source register
    -        pub const STATUS_NEXT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// GPIO interrupt source register for GPIO0-25
    -            STATUS_INTERRUPT_NEXT: u26,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -        }), base_address + 0x14c);
    -
    -        /// address: 0x60004154
    -        /// GPIO input function configuration register
    -        pub const FUNC0_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x154);
    -
    -        /// address: 0x60004158
    -        /// GPIO input function configuration register
    -        pub const FUNC1_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x158);
    -
    -        /// address: 0x6000415c
    -        /// GPIO input function configuration register
    -        pub const FUNC2_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x15c);
    -
    -        /// address: 0x60004160
    -        /// GPIO input function configuration register
    -        pub const FUNC3_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x160);
    -
    -        /// address: 0x60004164
    -        /// GPIO input function configuration register
    -        pub const FUNC4_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x164);
    -
    -        /// address: 0x60004168
    -        /// GPIO input function configuration register
    -        pub const FUNC5_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x168);
    -
    -        /// address: 0x6000416c
    -        /// GPIO input function configuration register
    -        pub const FUNC6_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x16c);
    -
    -        /// address: 0x60004170
    -        /// GPIO input function configuration register
    -        pub const FUNC7_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x170);
    -
    -        /// address: 0x60004174
    -        /// GPIO input function configuration register
    -        pub const FUNC8_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x174);
    -
    -        /// address: 0x60004178
    -        /// GPIO input function configuration register
    -        pub const FUNC9_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x178);
    -
    -        /// address: 0x6000417c
    -        /// GPIO input function configuration register
    -        pub const FUNC10_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x17c);
    -
    -        /// address: 0x60004180
    -        /// GPIO input function configuration register
    -        pub const FUNC11_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x180);
    -
    -        /// address: 0x60004184
    -        /// GPIO input function configuration register
    -        pub const FUNC12_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x184);
    -
    -        /// address: 0x60004188
    -        /// GPIO input function configuration register
    -        pub const FUNC13_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x188);
    -
    -        /// address: 0x6000418c
    -        /// GPIO input function configuration register
    -        pub const FUNC14_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x18c);
    -
    -        /// address: 0x60004190
    -        /// GPIO input function configuration register
    -        pub const FUNC15_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x190);
    -
    -        /// address: 0x60004194
    -        /// GPIO input function configuration register
    -        pub const FUNC16_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x194);
    -
    -        /// address: 0x60004198
    -        /// GPIO input function configuration register
    -        pub const FUNC17_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x198);
    -
    -        /// address: 0x6000419c
    -        /// GPIO input function configuration register
    -        pub const FUNC18_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x19c);
    -
    -        /// address: 0x600041a0
    -        /// GPIO input function configuration register
    -        pub const FUNC19_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x1a0);
    -
    -        /// address: 0x600041a4
    -        /// GPIO input function configuration register
    -        pub const FUNC20_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x1a4);
    -
    -        /// address: 0x600041a8
    -        /// GPIO input function configuration register
    -        pub const FUNC21_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x1a8);
    -
    -        /// address: 0x600041ac
    -        /// GPIO input function configuration register
    -        pub const FUNC22_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x1ac);
    -
    -        /// address: 0x600041b0
    -        /// GPIO input function configuration register
    -        pub const FUNC23_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x1b0);
    -
    -        /// address: 0x600041b4
    -        /// GPIO input function configuration register
    -        pub const FUNC24_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x1b4);
    -
    -        /// address: 0x600041b8
    -        /// GPIO input function configuration register
    -        pub const FUNC25_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x1b8);
    -
    -        /// address: 0x600041bc
    -        /// GPIO input function configuration register
    -        pub const FUNC26_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x1bc);
    -
    -        /// address: 0x600041c0
    -        /// GPIO input function configuration register
    -        pub const FUNC27_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x1c0);
    -
    -        /// address: 0x600041c4
    -        /// GPIO input function configuration register
    -        pub const FUNC28_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x1c4);
    -
    -        /// address: 0x600041c8
    -        /// GPIO input function configuration register
    -        pub const FUNC29_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x1c8);
    -
    -        /// address: 0x600041cc
    -        /// GPIO input function configuration register
    -        pub const FUNC30_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x1cc);
    -
    -        /// address: 0x600041d0
    -        /// GPIO input function configuration register
    -        pub const FUNC31_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x1d0);
    -
    -        /// address: 0x600041d4
    -        /// GPIO input function configuration register
    -        pub const FUNC32_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x1d4);
    -
    -        /// address: 0x600041d8
    -        /// GPIO input function configuration register
    -        pub const FUNC33_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x1d8);
    -
    -        /// address: 0x600041dc
    -        /// GPIO input function configuration register
    -        pub const FUNC34_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x1dc);
    -
    -        /// address: 0x600041e0
    -        /// GPIO input function configuration register
    -        pub const FUNC35_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x1e0);
    -
    -        /// address: 0x600041e4
    -        /// GPIO input function configuration register
    -        pub const FUNC36_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x1e4);
    -
    -        /// address: 0x600041e8
    -        /// GPIO input function configuration register
    -        pub const FUNC37_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x1e8);
    -
    -        /// address: 0x600041ec
    -        /// GPIO input function configuration register
    -        pub const FUNC38_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x1ec);
    -
    -        /// address: 0x600041f0
    -        /// GPIO input function configuration register
    -        pub const FUNC39_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x1f0);
    -
    -        /// address: 0x600041f4
    -        /// GPIO input function configuration register
    -        pub const FUNC40_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x1f4);
    -
    -        /// address: 0x600041f8
    -        /// GPIO input function configuration register
    -        pub const FUNC41_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x1f8);
    -
    -        /// address: 0x600041fc
    -        /// GPIO input function configuration register
    -        pub const FUNC42_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x1fc);
    -
    -        /// address: 0x60004200
    -        /// GPIO input function configuration register
    -        pub const FUNC43_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x200);
    -
    -        /// address: 0x60004204
    -        /// GPIO input function configuration register
    -        pub const FUNC44_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x204);
    -
    -        /// address: 0x60004208
    -        /// GPIO input function configuration register
    -        pub const FUNC45_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x208);
    -
    -        /// address: 0x6000420c
    -        /// GPIO input function configuration register
    -        pub const FUNC46_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x20c);
    -
    -        /// address: 0x60004210
    -        /// GPIO input function configuration register
    -        pub const FUNC47_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x210);
    -
    -        /// address: 0x60004214
    -        /// GPIO input function configuration register
    -        pub const FUNC48_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x214);
    -
    -        /// address: 0x60004218
    -        /// GPIO input function configuration register
    -        pub const FUNC49_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x218);
    -
    -        /// address: 0x6000421c
    -        /// GPIO input function configuration register
    -        pub const FUNC50_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x21c);
    -
    -        /// address: 0x60004220
    -        /// GPIO input function configuration register
    -        pub const FUNC51_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x220);
    -
    -        /// address: 0x60004224
    -        /// GPIO input function configuration register
    -        pub const FUNC52_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x224);
    -
    -        /// address: 0x60004228
    -        /// GPIO input function configuration register
    -        pub const FUNC53_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x228);
    -
    -        /// address: 0x6000422c
    -        /// GPIO input function configuration register
    -        pub const FUNC54_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x22c);
    -
    -        /// address: 0x60004230
    -        /// GPIO input function configuration register
    -        pub const FUNC55_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x230);
    -
    -        /// address: 0x60004234
    -        /// GPIO input function configuration register
    -        pub const FUNC56_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x234);
    -
    -        /// address: 0x60004238
    -        /// GPIO input function configuration register
    -        pub const FUNC57_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x238);
    -
    -        /// address: 0x6000423c
    -        /// GPIO input function configuration register
    -        pub const FUNC58_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x23c);
    -
    -        /// address: 0x60004240
    -        /// GPIO input function configuration register
    -        pub const FUNC59_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x240);
    -
    -        /// address: 0x60004244
    -        /// GPIO input function configuration register
    -        pub const FUNC60_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x244);
    -
    -        /// address: 0x60004248
    -        /// GPIO input function configuration register
    -        pub const FUNC61_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x248);
    -
    -        /// address: 0x6000424c
    -        /// GPIO input function configuration register
    -        pub const FUNC62_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x24c);
    -
    -        /// address: 0x60004250
    -        /// GPIO input function configuration register
    -        pub const FUNC63_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x250);
    -
    -        /// address: 0x60004254
    -        /// GPIO input function configuration register
    -        pub const FUNC64_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x254);
    -
    -        /// address: 0x60004258
    -        /// GPIO input function configuration register
    -        pub const FUNC65_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x258);
    -
    -        /// address: 0x6000425c
    -        /// GPIO input function configuration register
    -        pub const FUNC66_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x25c);
    -
    -        /// address: 0x60004260
    -        /// GPIO input function configuration register
    -        pub const FUNC67_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x260);
    -
    -        /// address: 0x60004264
    -        /// GPIO input function configuration register
    -        pub const FUNC68_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x264);
    -
    -        /// address: 0x60004268
    -        /// GPIO input function configuration register
    -        pub const FUNC69_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x268);
    -
    -        /// address: 0x6000426c
    -        /// GPIO input function configuration register
    -        pub const FUNC70_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x26c);
    -
    -        /// address: 0x60004270
    -        /// GPIO input function configuration register
    -        pub const FUNC71_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x270);
    -
    -        /// address: 0x60004274
    -        /// GPIO input function configuration register
    -        pub const FUNC72_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x274);
    -
    -        /// address: 0x60004278
    -        /// GPIO input function configuration register
    -        pub const FUNC73_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x278);
    -
    -        /// address: 0x6000427c
    -        /// GPIO input function configuration register
    -        pub const FUNC74_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x27c);
    -
    -        /// address: 0x60004280
    -        /// GPIO input function configuration register
    -        pub const FUNC75_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x280);
    -
    -        /// address: 0x60004284
    -        /// GPIO input function configuration register
    -        pub const FUNC76_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x284);
    -
    -        /// address: 0x60004288
    -        /// GPIO input function configuration register
    -        pub const FUNC77_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x288);
    -
    -        /// address: 0x6000428c
    -        /// GPIO input function configuration register
    -        pub const FUNC78_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x28c);
    -
    -        /// address: 0x60004290
    -        /// GPIO input function configuration register
    -        pub const FUNC79_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x290);
    -
    -        /// address: 0x60004294
    -        /// GPIO input function configuration register
    -        pub const FUNC80_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x294);
    -
    -        /// address: 0x60004298
    -        /// GPIO input function configuration register
    -        pub const FUNC81_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x298);
    -
    -        /// address: 0x6000429c
    -        /// GPIO input function configuration register
    -        pub const FUNC82_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x29c);
    -
    -        /// address: 0x600042a0
    -        /// GPIO input function configuration register
    -        pub const FUNC83_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x2a0);
    -
    -        /// address: 0x600042a4
    -        /// GPIO input function configuration register
    -        pub const FUNC84_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x2a4);
    -
    -        /// address: 0x600042a8
    -        /// GPIO input function configuration register
    -        pub const FUNC85_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x2a8);
    -
    -        /// address: 0x600042ac
    -        /// GPIO input function configuration register
    -        pub const FUNC86_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x2ac);
    -
    -        /// address: 0x600042b0
    -        /// GPIO input function configuration register
    -        pub const FUNC87_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x2b0);
    -
    -        /// address: 0x600042b4
    -        /// GPIO input function configuration register
    -        pub const FUNC88_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x2b4);
    -
    -        /// address: 0x600042b8
    -        /// GPIO input function configuration register
    -        pub const FUNC89_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x2b8);
    -
    -        /// address: 0x600042bc
    -        /// GPIO input function configuration register
    -        pub const FUNC90_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x2bc);
    -
    -        /// address: 0x600042c0
    -        /// GPIO input function configuration register
    -        pub const FUNC91_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x2c0);
    -
    -        /// address: 0x600042c4
    -        /// GPIO input function configuration register
    -        pub const FUNC92_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x2c4);
    -
    -        /// address: 0x600042c8
    -        /// GPIO input function configuration register
    -        pub const FUNC93_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x2c8);
    -
    -        /// address: 0x600042cc
    -        /// GPIO input function configuration register
    -        pub const FUNC94_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x2cc);
    -
    -        /// address: 0x600042d0
    -        /// GPIO input function configuration register
    -        pub const FUNC95_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x2d0);
    -
    -        /// address: 0x600042d4
    -        /// GPIO input function configuration register
    -        pub const FUNC96_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x2d4);
    -
    -        /// address: 0x600042d8
    -        /// GPIO input function configuration register
    -        pub const FUNC97_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x2d8);
    -
    -        /// address: 0x600042dc
    -        /// GPIO input function configuration register
    -        pub const FUNC98_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x2dc);
    -
    -        /// address: 0x600042e0
    -        /// GPIO input function configuration register
    -        pub const FUNC99_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x2e0);
    -
    -        /// address: 0x600042e4
    -        /// GPIO input function configuration register
    -        pub const FUNC100_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x2e4);
    -
    -        /// address: 0x600042e8
    -        /// GPIO input function configuration register
    -        pub const FUNC101_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x2e8);
    -
    -        /// address: 0x600042ec
    -        /// GPIO input function configuration register
    -        pub const FUNC102_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x2ec);
    -
    -        /// address: 0x600042f0
    -        /// GPIO input function configuration register
    -        pub const FUNC103_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x2f0);
    -
    -        /// address: 0x600042f4
    -        /// GPIO input function configuration register
    -        pub const FUNC104_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x2f4);
    -
    -        /// address: 0x600042f8
    -        /// GPIO input function configuration register
    -        pub const FUNC105_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x2f8);
    -
    -        /// address: 0x600042fc
    -        /// GPIO input function configuration register
    -        pub const FUNC106_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x2fc);
    -
    -        /// address: 0x60004300
    -        /// GPIO input function configuration register
    -        pub const FUNC107_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x300);
    -
    -        /// address: 0x60004304
    -        /// GPIO input function configuration register
    -        pub const FUNC108_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x304);
    -
    -        /// address: 0x60004308
    -        /// GPIO input function configuration register
    -        pub const FUNC109_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x308);
    -
    -        /// address: 0x6000430c
    -        /// GPIO input function configuration register
    -        pub const FUNC110_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x30c);
    -
    -        /// address: 0x60004310
    -        /// GPIO input function configuration register
    -        pub const FUNC111_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x310);
    -
    -        /// address: 0x60004314
    -        /// GPIO input function configuration register
    -        pub const FUNC112_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x314);
    -
    -        /// address: 0x60004318
    -        /// GPIO input function configuration register
    -        pub const FUNC113_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x318);
    -
    -        /// address: 0x6000431c
    -        /// GPIO input function configuration register
    -        pub const FUNC114_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x31c);
    -
    -        /// address: 0x60004320
    -        /// GPIO input function configuration register
    -        pub const FUNC115_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x320);
    -
    -        /// address: 0x60004324
    -        /// GPIO input function configuration register
    -        pub const FUNC116_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x324);
    -
    -        /// address: 0x60004328
    -        /// GPIO input function configuration register
    -        pub const FUNC117_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x328);
    -
    -        /// address: 0x6000432c
    -        /// GPIO input function configuration register
    -        pub const FUNC118_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x32c);
    -
    -        /// address: 0x60004330
    -        /// GPIO input function configuration register
    -        pub const FUNC119_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x330);
    -
    -        /// address: 0x60004334
    -        /// GPIO input function configuration register
    -        pub const FUNC120_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x334);
    -
    -        /// address: 0x60004338
    -        /// GPIO input function configuration register
    -        pub const FUNC121_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x338);
    -
    -        /// address: 0x6000433c
    -        /// GPIO input function configuration register
    -        pub const FUNC122_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x33c);
    -
    -        /// address: 0x60004340
    -        /// GPIO input function configuration register
    -        pub const FUNC123_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x340);
    -
    -        /// address: 0x60004344
    -        /// GPIO input function configuration register
    -        pub const FUNC124_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x344);
    -
    -        /// address: 0x60004348
    -        /// GPIO input function configuration register
    -        pub const FUNC125_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x348);
    -
    -        /// address: 0x6000434c
    -        /// GPIO input function configuration register
    -        pub const FUNC126_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x34c);
    -
    -        /// address: 0x60004350
    -        /// GPIO input function configuration register
    -        pub const FUNC127_IN_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always
    -            /// high level. s=x3C: set this port always low level.
    -            IN_SEL: u5,
    -            /// set this bit to invert input signal. 1:invert. :not invert.
    -            IN_INV_SEL: u1,
    -            /// set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -            SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x350);
    -
    -        /// address: 0x60004554
    -        /// GPIO output function select register
    -        pub const FUNC0_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x554);
    -
    -        /// address: 0x60004558
    -        /// GPIO output function select register
    -        pub const FUNC1_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x558);
    -
    -        /// address: 0x6000455c
    -        /// GPIO output function select register
    -        pub const FUNC2_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x55c);
    -
    -        /// address: 0x60004560
    -        /// GPIO output function select register
    -        pub const FUNC3_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x560);
    -
    -        /// address: 0x60004564
    -        /// GPIO output function select register
    -        pub const FUNC4_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x564);
    -
    -        /// address: 0x60004568
    -        /// GPIO output function select register
    -        pub const FUNC5_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x568);
    -
    -        /// address: 0x6000456c
    -        /// GPIO output function select register
    -        pub const FUNC6_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x56c);
    -
    -        /// address: 0x60004570
    -        /// GPIO output function select register
    -        pub const FUNC7_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x570);
    -
    -        /// address: 0x60004574
    -        /// GPIO output function select register
    -        pub const FUNC8_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x574);
    -
    -        /// address: 0x60004578
    -        /// GPIO output function select register
    -        pub const FUNC9_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x578);
    -
    -        /// address: 0x6000457c
    -        /// GPIO output function select register
    -        pub const FUNC10_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x57c);
    -
    -        /// address: 0x60004580
    -        /// GPIO output function select register
    -        pub const FUNC11_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x580);
    -
    -        /// address: 0x60004584
    -        /// GPIO output function select register
    -        pub const FUNC12_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x584);
    -
    -        /// address: 0x60004588
    -        /// GPIO output function select register
    -        pub const FUNC13_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x588);
    -
    -        /// address: 0x6000458c
    -        /// GPIO output function select register
    -        pub const FUNC14_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x58c);
    -
    -        /// address: 0x60004590
    -        /// GPIO output function select register
    -        pub const FUNC15_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x590);
    -
    -        /// address: 0x60004594
    -        /// GPIO output function select register
    -        pub const FUNC16_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x594);
    -
    -        /// address: 0x60004598
    -        /// GPIO output function select register
    -        pub const FUNC17_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x598);
    -
    -        /// address: 0x6000459c
    -        /// GPIO output function select register
    -        pub const FUNC18_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x59c);
    -
    -        /// address: 0x600045a0
    -        /// GPIO output function select register
    -        pub const FUNC19_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x5a0);
    -
    -        /// address: 0x600045a4
    -        /// GPIO output function select register
    -        pub const FUNC20_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x5a4);
    -
    -        /// address: 0x600045a8
    -        /// GPIO output function select register
    -        pub const FUNC21_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x5a8);
    -
    -        /// address: 0x600045ac
    -        /// GPIO output function select register
    -        pub const FUNC22_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x5ac);
    -
    -        /// address: 0x600045b0
    -        /// GPIO output function select register
    -        pub const FUNC23_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x5b0);
    -
    -        /// address: 0x600045b4
    -        /// GPIO output function select register
    -        pub const FUNC24_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x5b4);
    -
    -        /// address: 0x600045b8
    -        /// GPIO output function select register
    -        pub const FUNC25_OUT_SEL_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of the bits: <=s<=256. Set the value to select output signal. s=-255:
    -            /// output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals
    -            /// GPIO_OUT_REG[n].
    -            OUT_SEL: u8,
    -            /// set this bit to invert output signal.1:invert.:not invert.
    -            INV_SEL: u1,
    -            /// set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output
    -            /// enable signal.:use peripheral output enable signal.
    -            OEN_SEL: u1,
    -            /// set this bit to invert output enable signal.1:invert.:not invert.
    -            OEN_INV_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x5b8);
    -
    -        /// address: 0x6000462c
    -        /// GPIO clock gate register
    -        pub const CLOCK_GATE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this bit to enable GPIO clock gate
    -            CLK_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x62c);
    -
    -        /// address: 0x600046fc
    -        /// GPIO version register
    -        pub const REG_DATE = @intToPtr(*volatile MmioInt(32, u28), base_address + 0x6fc);
    -    };
    -
    -    /// Sigma-Delta Modulation
    -    pub const GPIOSD = struct {
    -        pub const base_address = 0x60004f00;
    -
    -        /// address: 0x60004f00
    -        /// Duty Cycle Configure Register of SDM%s
    -        pub const SIGMADELTA0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This field is used to configure the duty cycle of sigma delta modulation output.
    -            SD0_IN: u8,
    -            /// This field is used to set a divider value to divide APB clock.
    -            SD0_PRESCALE: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x0);
    -
    -        /// address: 0x60004f04
    -        /// Duty Cycle Configure Register of SDM%s
    -        pub const SIGMADELTA1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This field is used to configure the duty cycle of sigma delta modulation output.
    -            SD0_IN: u8,
    -            /// This field is used to set a divider value to divide APB clock.
    -            SD0_PRESCALE: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x60004f08
    -        /// Duty Cycle Configure Register of SDM%s
    -        pub const SIGMADELTA2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This field is used to configure the duty cycle of sigma delta modulation output.
    -            SD0_IN: u8,
    -            /// This field is used to set a divider value to divide APB clock.
    -            SD0_PRESCALE: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x60004f0c
    -        /// Duty Cycle Configure Register of SDM%s
    -        pub const SIGMADELTA3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This field is used to configure the duty cycle of sigma delta modulation output.
    -            SD0_IN: u8,
    -            /// This field is used to set a divider value to divide APB clock.
    -            SD0_PRESCALE: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x60004f20
    -        /// Clock Gating Configure Register
    -        pub const SIGMADELTA_CG = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            reserved25: u1,
    -            reserved26: u1,
    -            reserved27: u1,
    -            reserved28: u1,
    -            reserved29: u1,
    -            reserved30: u1,
    -            /// Clock enable bit of configuration registers for sigma delta modulation.
    -            CLK_EN: u1,
    -        }), base_address + 0x20);
    -
    -        /// address: 0x60004f24
    -        /// MISC Register
    -        pub const SIGMADELTA_MISC = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            reserved25: u1,
    -            reserved26: u1,
    -            reserved27: u1,
    -            reserved28: u1,
    -            reserved29: u1,
    -            /// Clock enable bit of sigma delta modulation.
    -            FUNCTION_CLK_EN: u1,
    -            /// Reserved.
    -            SPI_SWAP: u1,
    -        }), base_address + 0x24);
    -
    -        /// address: 0x60004f28
    -        /// Version Control Register
    -        pub const SIGMADELTA_VERSION = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Version control register.
    -            GPIO_SD_DATE: u28,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -        }), base_address + 0x28);
    -    };
    -
    -    /// HMAC (Hash-based Message Authentication Code) Accelerator
    -    pub const HMAC = struct {
    -        pub const base_address = 0x6003e000;
    -
    -        /// address: 0x6003e040
    -        /// Process control register 0.
    -        pub const SET_START = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x40);
    -
    -        /// address: 0x6003e044
    -        /// Configure purpose.
    -        pub const SET_PARA_PURPOSE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set hmac parameter purpose.
    -            PURPOSE_SET: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x44);
    -
    -        /// address: 0x6003e048
    -        /// Configure key.
    -        pub const SET_PARA_KEY = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set hmac parameter key.
    -            KEY_SET: u3,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -        }), base_address + 0x48);
    -
    -        /// address: 0x6003e04c
    -        /// Finish initial configuration.
    -        pub const SET_PARA_FINISH = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Finish hmac configuration.
    -            SET_PARA_END: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x4c);
    -
    -        /// address: 0x6003e050
    -        /// Process control register 1.
    -        pub const SET_MESSAGE_ONE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Call SHA to calculate one message block.
    -            SET_TEXT_ONE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x50);
    -
    -        /// address: 0x6003e054
    -        /// Process control register 2.
    -        pub const SET_MESSAGE_ING = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Continue typical hmac.
    -            SET_TEXT_ING: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x54);
    -
    -        /// address: 0x6003e058
    -        /// Process control register 3.
    -        pub const SET_MESSAGE_END = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Start hardware padding.
    -            SET_TEXT_END: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x58);
    -
    -        /// address: 0x6003e05c
    -        /// Process control register 4.
    -        pub const SET_RESULT_FINISH = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// After read result from upstream, then let hmac back to idle.
    -            SET_RESULT_END: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x5c);
    -
    -        /// address: 0x6003e060
    -        /// Invalidate register 0.
    -        pub const SET_INVALIDATE_JTAG = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x60);
    -
    -        /// address: 0x6003e064
    -        /// Invalidate register 1.
    -        pub const SET_INVALIDATE_DS = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x64);
    -
    -        /// address: 0x6003e068
    -        /// Error register.
    -        pub const QUERY_ERROR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Hmac configuration state. 0: key are agree with purpose. 1: error
    -            QUREY_CHECK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x68);
    -
    -        /// address: 0x6003e06c
    -        /// Busy register.
    -        pub const QUERY_BUSY = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Hmac state. 1'b0: idle. 1'b1: busy
    -            BUSY_STATE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x6c);
    -
    -        /// address: 0x6003e080
    -        /// Message block memory.
    -        pub const WR_MESSAGE_MEM = @intToPtr(*volatile [64]u8, base_address + 0x80);
    -
    -        /// address: 0x6003e0c0
    -        /// Result from upstream.
    -        pub const RD_RESULT_MEM = @intToPtr(*volatile [32]u8, base_address + 0xc0);
    -
    -        /// address: 0x6003e0f0
    -        /// Process control register 5.
    -        pub const SET_MESSAGE_PAD = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Start software padding.
    -            SET_TEXT_PAD: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0xf0);
    -
    -        /// address: 0x6003e0f4
    -        /// Process control register 6.
    -        pub const ONE_BLOCK = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Don't have to do padding.
    -            SET_ONE_BLOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0xf4);
    -
    -        /// address: 0x6003e0f8
    -        /// Jtag register 0.
    -        pub const SOFT_JTAG_CTRL = @intToPtr(*volatile MmioInt(32, u1), base_address + 0xf8);
    -
    -        /// address: 0x6003e0fc
    -        /// Jtag register 1.
    -        pub const WR_JTAG = @intToPtr(*volatile u32, base_address + 0xfc);
    -    };
    -
    -    /// I2C (Inter-Integrated Circuit) Controller
    -    pub const I2C0 = struct {
    -        pub const base_address = 0x60013000;
    -
    -        /// address: 0x60013000
    -        /// I2C_SCL_LOW_PERIOD_REG
    -        pub const SCL_LOW_PERIOD = @intToPtr(*volatile MmioInt(32, u9), base_address + 0x0);
    -
    -        /// address: 0x60013004
    -        /// I2C_CTR_REG
    -        pub const CTR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_sda_force_out
    -            SDA_FORCE_OUT: u1,
    -            /// reg_scl_force_out
    -            SCL_FORCE_OUT: u1,
    -            /// reg_sample_scl_level
    -            SAMPLE_SCL_LEVEL: u1,
    -            /// reg_rx_full_ack_level
    -            RX_FULL_ACK_LEVEL: u1,
    -            /// reg_ms_mode
    -            MS_MODE: u1,
    -            /// reg_trans_start
    -            TRANS_START: u1,
    -            /// reg_tx_lsb_first
    -            TX_LSB_FIRST: u1,
    -            /// reg_rx_lsb_first
    -            RX_LSB_FIRST: u1,
    -            /// reg_clk_en
    -            CLK_EN: u1,
    -            /// reg_arbitration_en
    -            ARBITRATION_EN: u1,
    -            /// reg_fsm_rst
    -            FSM_RST: u1,
    -            /// reg_conf_upgate
    -            CONF_UPGATE: u1,
    -            /// reg_slv_tx_auto_start_en
    -            SLV_TX_AUTO_START_EN: u1,
    -            /// reg_addr_10bit_rw_check_en
    -            ADDR_10BIT_RW_CHECK_EN: u1,
    -            /// reg_addr_broadcasting_en
    -            ADDR_BROADCASTING_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x60013008
    -        /// I2C_SR_REG
    -        pub const SR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_resp_rec
    -            RESP_REC: u1,
    -            /// reg_slave_rw
    -            SLAVE_RW: u1,
    -            reserved0: u1,
    -            /// reg_arb_lost
    -            ARB_LOST: u1,
    -            /// reg_bus_busy
    -            BUS_BUSY: u1,
    -            /// reg_slave_addressed
    -            SLAVE_ADDRESSED: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            /// reg_rxfifo_cnt
    -            RXFIFO_CNT: u6,
    -            /// reg_stretch_cause
    -            STRETCH_CAUSE: u2,
    -            reserved3: u1,
    -            reserved4: u1,
    -            /// reg_txfifo_cnt
    -            TXFIFO_CNT: u6,
    -            /// reg_scl_main_state_last
    -            SCL_MAIN_STATE_LAST: u3,
    -            reserved5: u1,
    -            /// reg_scl_state_last
    -            SCL_STATE_LAST: u3,
    -            padding0: u1,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x6001300c
    -        /// I2C_TO_REG
    -        pub const TO = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_time_out_value
    -            TIME_OUT_VALUE: u5,
    -            /// reg_time_out_en
    -            TIME_OUT_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x60013010
    -        /// I2C_SLAVE_ADDR_REG
    -        pub const SLAVE_ADDR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_slave_addr
    -            SLAVE_ADDR: u15,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            /// reg_addr_10bit_en
    -            ADDR_10BIT_EN: u1,
    -        }), base_address + 0x10);
    -
    -        /// address: 0x60013014
    -        /// I2C_FIFO_ST_REG
    -        pub const FIFO_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_rxfifo_raddr
    -            RXFIFO_RADDR: u5,
    -            /// reg_rxfifo_waddr
    -            RXFIFO_WADDR: u5,
    -            /// reg_txfifo_raddr
    -            TXFIFO_RADDR: u5,
    -            /// reg_txfifo_waddr
    -            TXFIFO_WADDR: u5,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// reg_slave_rw_point
    -            SLAVE_RW_POINT: u8,
    -            padding0: u1,
    -            padding1: u1,
    -        }), base_address + 0x14);
    -
    -        /// address: 0x60013018
    -        /// I2C_FIFO_CONF_REG
    -        pub const FIFO_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_rxfifo_wm_thrhd
    -            RXFIFO_WM_THRHD: u5,
    -            /// reg_txfifo_wm_thrhd
    -            TXFIFO_WM_THRHD: u5,
    -            /// reg_nonfifo_en
    -            NONFIFO_EN: u1,
    -            /// reg_fifo_addr_cfg_en
    -            FIFO_ADDR_CFG_EN: u1,
    -            /// reg_rx_fifo_rst
    -            RX_FIFO_RST: u1,
    -            /// reg_tx_fifo_rst
    -            TX_FIFO_RST: u1,
    -            /// reg_fifo_prt_en
    -            FIFO_PRT_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x6001301c
    -        /// I2C_FIFO_DATA_REG
    -        pub const DATA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_fifo_rdata
    -            FIFO_RDATA: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x60013020
    -        /// I2C_INT_RAW_REG
    -        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_rxfifo_wm_int_raw
    -            RXFIFO_WM_INT_RAW: u1,
    -            /// reg_txfifo_wm_int_raw
    -            TXFIFO_WM_INT_RAW: u1,
    -            /// reg_rxfifo_ovf_int_raw
    -            RXFIFO_OVF_INT_RAW: u1,
    -            /// reg_end_detect_int_raw
    -            END_DETECT_INT_RAW: u1,
    -            /// reg_byte_trans_done_int_raw
    -            BYTE_TRANS_DONE_INT_RAW: u1,
    -            /// reg_arbitration_lost_int_raw
    -            ARBITRATION_LOST_INT_RAW: u1,
    -            /// reg_mst_txfifo_udf_int_raw
    -            MST_TXFIFO_UDF_INT_RAW: u1,
    -            /// reg_trans_complete_int_raw
    -            TRANS_COMPLETE_INT_RAW: u1,
    -            /// reg_time_out_int_raw
    -            TIME_OUT_INT_RAW: u1,
    -            /// reg_trans_start_int_raw
    -            TRANS_START_INT_RAW: u1,
    -            /// reg_nack_int_raw
    -            NACK_INT_RAW: u1,
    -            /// reg_txfifo_ovf_int_raw
    -            TXFIFO_OVF_INT_RAW: u1,
    -            /// reg_rxfifo_udf_int_raw
    -            RXFIFO_UDF_INT_RAW: u1,
    -            /// reg_scl_st_to_int_raw
    -            SCL_ST_TO_INT_RAW: u1,
    -            /// reg_scl_main_st_to_int_raw
    -            SCL_MAIN_ST_TO_INT_RAW: u1,
    -            /// reg_det_start_int_raw
    -            DET_START_INT_RAW: u1,
    -            /// reg_slave_stretch_int_raw
    -            SLAVE_STRETCH_INT_RAW: u1,
    -            /// reg_general_call_int_raw
    -            GENERAL_CALL_INT_RAW: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0x20);
    -
    -        /// address: 0x60013024
    -        /// I2C_INT_CLR_REG
    -        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_rxfifo_wm_int_clr
    -            RXFIFO_WM_INT_CLR: u1,
    -            /// reg_txfifo_wm_int_clr
    -            TXFIFO_WM_INT_CLR: u1,
    -            /// reg_rxfifo_ovf_int_clr
    -            RXFIFO_OVF_INT_CLR: u1,
    -            /// reg_end_detect_int_clr
    -            END_DETECT_INT_CLR: u1,
    -            /// reg_byte_trans_done_int_clr
    -            BYTE_TRANS_DONE_INT_CLR: u1,
    -            /// reg_arbitration_lost_int_clr
    -            ARBITRATION_LOST_INT_CLR: u1,
    -            /// reg_mst_txfifo_udf_int_clr
    -            MST_TXFIFO_UDF_INT_CLR: u1,
    -            /// reg_trans_complete_int_clr
    -            TRANS_COMPLETE_INT_CLR: u1,
    -            /// reg_time_out_int_clr
    -            TIME_OUT_INT_CLR: u1,
    -            /// reg_trans_start_int_clr
    -            TRANS_START_INT_CLR: u1,
    -            /// reg_nack_int_clr
    -            NACK_INT_CLR: u1,
    -            /// reg_txfifo_ovf_int_clr
    -            TXFIFO_OVF_INT_CLR: u1,
    -            /// reg_rxfifo_udf_int_clr
    -            RXFIFO_UDF_INT_CLR: u1,
    -            /// reg_scl_st_to_int_clr
    -            SCL_ST_TO_INT_CLR: u1,
    -            /// reg_scl_main_st_to_int_clr
    -            SCL_MAIN_ST_TO_INT_CLR: u1,
    -            /// reg_det_start_int_clr
    -            DET_START_INT_CLR: u1,
    -            /// reg_slave_stretch_int_clr
    -            SLAVE_STRETCH_INT_CLR: u1,
    -            /// reg_general_call_int_clr
    -            GENERAL_CALL_INT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0x24);
    -
    -        /// address: 0x60013028
    -        /// I2C_INT_ENA_REG
    -        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_rxfifo_wm_int_ena
    -            RXFIFO_WM_INT_ENA: u1,
    -            /// reg_txfifo_wm_int_ena
    -            TXFIFO_WM_INT_ENA: u1,
    -            /// reg_rxfifo_ovf_int_ena
    -            RXFIFO_OVF_INT_ENA: u1,
    -            /// reg_end_detect_int_ena
    -            END_DETECT_INT_ENA: u1,
    -            /// reg_byte_trans_done_int_ena
    -            BYTE_TRANS_DONE_INT_ENA: u1,
    -            /// reg_arbitration_lost_int_ena
    -            ARBITRATION_LOST_INT_ENA: u1,
    -            /// reg_mst_txfifo_udf_int_ena
    -            MST_TXFIFO_UDF_INT_ENA: u1,
    -            /// reg_trans_complete_int_ena
    -            TRANS_COMPLETE_INT_ENA: u1,
    -            /// reg_time_out_int_ena
    -            TIME_OUT_INT_ENA: u1,
    -            /// reg_trans_start_int_ena
    -            TRANS_START_INT_ENA: u1,
    -            /// reg_nack_int_ena
    -            NACK_INT_ENA: u1,
    -            /// reg_txfifo_ovf_int_ena
    -            TXFIFO_OVF_INT_ENA: u1,
    -            /// reg_rxfifo_udf_int_ena
    -            RXFIFO_UDF_INT_ENA: u1,
    -            /// reg_scl_st_to_int_ena
    -            SCL_ST_TO_INT_ENA: u1,
    -            /// reg_scl_main_st_to_int_ena
    -            SCL_MAIN_ST_TO_INT_ENA: u1,
    -            /// reg_det_start_int_ena
    -            DET_START_INT_ENA: u1,
    -            /// reg_slave_stretch_int_ena
    -            SLAVE_STRETCH_INT_ENA: u1,
    -            /// reg_general_call_int_ena
    -            GENERAL_CALL_INT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0x28);
    -
    -        /// address: 0x6001302c
    -        /// I2C_INT_STATUS_REG
    -        pub const INT_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_rxfifo_wm_int_st
    -            RXFIFO_WM_INT_ST: u1,
    -            /// reg_txfifo_wm_int_st
    -            TXFIFO_WM_INT_ST: u1,
    -            /// reg_rxfifo_ovf_int_st
    -            RXFIFO_OVF_INT_ST: u1,
    -            /// reg_end_detect_int_st
    -            END_DETECT_INT_ST: u1,
    -            /// reg_byte_trans_done_int_st
    -            BYTE_TRANS_DONE_INT_ST: u1,
    -            /// reg_arbitration_lost_int_st
    -            ARBITRATION_LOST_INT_ST: u1,
    -            /// reg_mst_txfifo_udf_int_st
    -            MST_TXFIFO_UDF_INT_ST: u1,
    -            /// reg_trans_complete_int_st
    -            TRANS_COMPLETE_INT_ST: u1,
    -            /// reg_time_out_int_st
    -            TIME_OUT_INT_ST: u1,
    -            /// reg_trans_start_int_st
    -            TRANS_START_INT_ST: u1,
    -            /// reg_nack_int_st
    -            NACK_INT_ST: u1,
    -            /// reg_txfifo_ovf_int_st
    -            TXFIFO_OVF_INT_ST: u1,
    -            /// reg_rxfifo_udf_int_st
    -            RXFIFO_UDF_INT_ST: u1,
    -            /// reg_scl_st_to_int_st
    -            SCL_ST_TO_INT_ST: u1,
    -            /// reg_scl_main_st_to_int_st
    -            SCL_MAIN_ST_TO_INT_ST: u1,
    -            /// reg_det_start_int_st
    -            DET_START_INT_ST: u1,
    -            /// reg_slave_stretch_int_st
    -            SLAVE_STRETCH_INT_ST: u1,
    -            /// reg_general_call_int_st
    -            GENERAL_CALL_INT_ST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0x2c);
    -
    -        /// address: 0x60013030
    -        /// I2C_SDA_HOLD_REG
    -        pub const SDA_HOLD = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_sda_hold_time
    -            TIME: u9,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0x30);
    -
    -        /// address: 0x60013034
    -        /// I2C_SDA_SAMPLE_REG
    -        pub const SDA_SAMPLE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_sda_sample_time
    -            TIME: u9,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0x34);
    -
    -        /// address: 0x60013038
    -        /// I2C_SCL_HIGH_PERIOD_REG
    -        pub const SCL_HIGH_PERIOD = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_scl_high_period
    -            SCL_HIGH_PERIOD: u9,
    -            /// reg_scl_wait_high_period
    -            SCL_WAIT_HIGH_PERIOD: u7,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x38);
    -
    -        /// address: 0x60013040
    -        /// I2C_SCL_START_HOLD_REG
    -        pub const SCL_START_HOLD = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_scl_start_hold_time
    -            TIME: u9,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0x40);
    -
    -        /// address: 0x60013044
    -        /// I2C_SCL_RSTART_SETUP_REG
    -        pub const SCL_RSTART_SETUP = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_scl_rstart_setup_time
    -            TIME: u9,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0x44);
    -
    -        /// address: 0x60013048
    -        /// I2C_SCL_STOP_HOLD_REG
    -        pub const SCL_STOP_HOLD = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_scl_stop_hold_time
    -            TIME: u9,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0x48);
    -
    -        /// address: 0x6001304c
    -        /// I2C_SCL_STOP_SETUP_REG
    -        pub const SCL_STOP_SETUP = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_scl_stop_setup_time
    -            TIME: u9,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0x4c);
    -
    -        /// address: 0x60013050
    -        /// I2C_FILTER_CFG_REG
    -        pub const FILTER_CFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_scl_filter_thres
    -            SCL_FILTER_THRES: u4,
    -            /// reg_sda_filter_thres
    -            SDA_FILTER_THRES: u4,
    -            /// reg_scl_filter_en
    -            SCL_FILTER_EN: u1,
    -            /// reg_sda_filter_en
    -            SDA_FILTER_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -        }), base_address + 0x50);
    -
    -        /// address: 0x60013054
    -        /// I2C_CLK_CONF_REG
    -        pub const CLK_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_sclk_div_num
    -            SCLK_DIV_NUM: u8,
    -            /// reg_sclk_div_a
    -            SCLK_DIV_A: u6,
    -            /// reg_sclk_div_b
    -            SCLK_DIV_B: u6,
    -            /// reg_sclk_sel
    -            SCLK_SEL: u1,
    -            /// reg_sclk_active
    -            SCLK_ACTIVE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -        }), base_address + 0x54);
    -
    -        /// address: 0x60013058
    -        /// I2C_COMD%s_REG
    -        pub const COMD0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_command
    -            COMMAND: u14,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            /// reg_command_done
    -            COMMAND_DONE: u1,
    -        }), base_address + 0x58);
    -
    -        /// address: 0x6001305c
    -        /// I2C_COMD%s_REG
    -        pub const COMD1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_command
    -            COMMAND: u14,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            /// reg_command_done
    -            COMMAND_DONE: u1,
    -        }), base_address + 0x5c);
    -
    -        /// address: 0x60013060
    -        /// I2C_COMD%s_REG
    -        pub const COMD2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_command
    -            COMMAND: u14,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            /// reg_command_done
    -            COMMAND_DONE: u1,
    -        }), base_address + 0x60);
    -
    -        /// address: 0x60013064
    -        /// I2C_COMD%s_REG
    -        pub const COMD3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_command
    -            COMMAND: u14,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            /// reg_command_done
    -            COMMAND_DONE: u1,
    -        }), base_address + 0x64);
    -
    -        /// address: 0x60013068
    -        /// I2C_COMD%s_REG
    -        pub const COMD4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_command
    -            COMMAND: u14,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            /// reg_command_done
    -            COMMAND_DONE: u1,
    -        }), base_address + 0x68);
    -
    -        /// address: 0x6001306c
    -        /// I2C_COMD%s_REG
    -        pub const COMD5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_command
    -            COMMAND: u14,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            /// reg_command_done
    -            COMMAND_DONE: u1,
    -        }), base_address + 0x6c);
    -
    -        /// address: 0x60013070
    -        /// I2C_COMD%s_REG
    -        pub const COMD6 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_command
    -            COMMAND: u14,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            /// reg_command_done
    -            COMMAND_DONE: u1,
    -        }), base_address + 0x70);
    -
    -        /// address: 0x60013074
    -        /// I2C_COMD%s_REG
    -        pub const COMD7 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_command
    -            COMMAND: u14,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            /// reg_command_done
    -            COMMAND_DONE: u1,
    -        }), base_address + 0x74);
    -
    -        /// address: 0x60013078
    -        /// I2C_SCL_ST_TIME_OUT_REG
    -        pub const SCL_ST_TIME_OUT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_scl_st_to_regno more than 23
    -            SCL_ST_TO_I2C: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -        }), base_address + 0x78);
    -
    -        /// address: 0x6001307c
    -        /// I2C_SCL_MAIN_ST_TIME_OUT_REG
    -        pub const SCL_MAIN_ST_TIME_OUT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_scl_main_st_to_regno more than 23
    -            SCL_MAIN_ST_TO_I2C: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -        }), base_address + 0x7c);
    -
    -        /// address: 0x60013080
    -        /// I2C_SCL_SP_CONF_REG
    -        pub const SCL_SP_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_scl_rst_slv_en
    -            SCL_RST_SLV_EN: u1,
    -            /// reg_scl_rst_slv_num
    -            SCL_RST_SLV_NUM: u5,
    -            /// reg_scl_pd_en
    -            SCL_PD_EN: u1,
    -            /// reg_sda_pd_en
    -            SDA_PD_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x80);
    -
    -        /// address: 0x60013084
    -        /// I2C_SCL_STRETCH_CONF_REG
    -        pub const SCL_STRETCH_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_stretch_protect_num
    -            STRETCH_PROTECT_NUM: u10,
    -            /// reg_slave_scl_stretch_en
    -            SLAVE_SCL_STRETCH_EN: u1,
    -            /// reg_slave_scl_stretch_clr
    -            SLAVE_SCL_STRETCH_CLR: u1,
    -            /// reg_slave_byte_ack_ctl_en
    -            SLAVE_BYTE_ACK_CTL_EN: u1,
    -            /// reg_slave_byte_ack_lvl
    -            SLAVE_BYTE_ACK_LVL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -        }), base_address + 0x84);
    -
    -        /// address: 0x600130f8
    -        /// I2C_DATE_REG
    -        pub const DATE = @intToPtr(*volatile u32, base_address + 0xf8);
    -
    -        /// address: 0x60013100
    -        /// I2C_TXFIFO_START_ADDR_REG
    -        pub const TXFIFO_START_ADDR = @intToPtr(*volatile u32, base_address + 0x100);
    -
    -        /// address: 0x60013180
    -        /// I2C_RXFIFO_START_ADDR_REG
    -        pub const RXFIFO_START_ADDR = @intToPtr(*volatile u32, base_address + 0x180);
    -    };
    -
    -    /// I2S (Inter-IC Sound) Controller
    -    pub const I2S = struct {
    -        pub const base_address = 0x6002d000;
    -
    -        /// address: 0x6002d00c
    -        /// I2S interrupt raw register, valid in level.
    -        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The raw interrupt status bit for the i2s_rx_done_int interrupt
    -            RX_DONE_INT_RAW: u1,
    -            /// The raw interrupt status bit for the i2s_tx_done_int interrupt
    -            TX_DONE_INT_RAW: u1,
    -            /// The raw interrupt status bit for the i2s_rx_hung_int interrupt
    -            RX_HUNG_INT_RAW: u1,
    -            /// The raw interrupt status bit for the i2s_tx_hung_int interrupt
    -            TX_HUNG_INT_RAW: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x6002d010
    -        /// I2S interrupt status register.
    -        pub const INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The masked interrupt status bit for the i2s_rx_done_int interrupt
    -            RX_DONE_INT_ST: u1,
    -            /// The masked interrupt status bit for the i2s_tx_done_int interrupt
    -            TX_DONE_INT_ST: u1,
    -            /// The masked interrupt status bit for the i2s_rx_hung_int interrupt
    -            RX_HUNG_INT_ST: u1,
    -            /// The masked interrupt status bit for the i2s_tx_hung_int interrupt
    -            TX_HUNG_INT_ST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x10);
    -
    -        /// address: 0x6002d014
    -        /// I2S interrupt enable register.
    -        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The interrupt enable bit for the i2s_rx_done_int interrupt
    -            RX_DONE_INT_ENA: u1,
    -            /// The interrupt enable bit for the i2s_tx_done_int interrupt
    -            TX_DONE_INT_ENA: u1,
    -            /// The interrupt enable bit for the i2s_rx_hung_int interrupt
    -            RX_HUNG_INT_ENA: u1,
    -            /// The interrupt enable bit for the i2s_tx_hung_int interrupt
    -            TX_HUNG_INT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x14);
    -
    -        /// address: 0x6002d018
    -        /// I2S interrupt clear register.
    -        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set this bit to clear the i2s_rx_done_int interrupt
    -            RX_DONE_INT_CLR: u1,
    -            /// Set this bit to clear the i2s_tx_done_int interrupt
    -            TX_DONE_INT_CLR: u1,
    -            /// Set this bit to clear the i2s_rx_hung_int interrupt
    -            RX_HUNG_INT_CLR: u1,
    -            /// Set this bit to clear the i2s_tx_hung_int interrupt
    -            TX_HUNG_INT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x6002d020
    -        /// I2S RX configure register
    -        pub const RX_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set this bit to reset receiver
    -            RX_RESET: u1,
    -            /// Set this bit to reset Rx AFIFO
    -            RX_FIFO_RESET: u1,
    -            /// Set this bit to start receiving data
    -            RX_START: u1,
    -            /// Set this bit to enable slave receiver mode
    -            RX_SLAVE_MOD: u1,
    -            reserved0: u1,
    -            /// Set this bit to enable receiver in mono mode
    -            RX_MONO: u1,
    -            reserved1: u1,
    -            /// I2S Rx byte endian, 1: low addr value to high addr. 0: low addr with low addr
    -            /// value.
    -            RX_BIG_ENDIAN: u1,
    -            /// Set 1 to update I2S RX registers from APB clock domain to I2S RX clock domain.
    -            /// This bit will be cleared by hardware after update register done.
    -            RX_UPDATE: u1,
    -            /// 1: The first channel data value is valid in I2S RX mono mode. 0: The second
    -            /// channel data value is valid in I2S RX mono mode.
    -            RX_MONO_FST_VLD: u1,
    -            /// I2S RX compress/decompress configuration bit. & 0 (atol): A-Law decompress, 1
    -            /// (ltoa) : A-Law compress, 2 (utol) : u-Law decompress, 3 (ltou) : u-Law compress.
    -            /// &
    -            RX_PCM_CONF: u2,
    -            /// Set this bit to bypass Compress/Decompress module for received data.
    -            RX_PCM_BYPASS: u1,
    -            /// 0 : I2S Rx only stop when reg_rx_start is cleared. 1: Stop when reg_rx_start is
    -            /// 0 or in_suc_eof is 1. 2: Stop I2S RX when reg_rx_start is 0 or RX FIFO is full.
    -            RX_STOP_MODE: u2,
    -            /// 1: I2S RX left alignment mode. 0: I2S RX right alignment mode.
    -            RX_LEFT_ALIGN: u1,
    -            /// 1: store 24 channel bits to 32 bits. 0:store 24 channel bits to 24 bits.
    -            RX_24_FILL_EN: u1,
    -            /// 0: WS should be 0 when receiving left channel data, and WS is 1in right channel.
    -            /// 1: WS should be 1 when receiving left channel data, and WS is 0in right channel.
    -            RX_WS_IDLE_POL: u1,
    -            /// I2S Rx bit endian. 1:small endian, the LSB is received first. 0:big endian, the
    -            /// MSB is received first.
    -            RX_BIT_ORDER: u1,
    -            /// 1: Enable I2S TDM Rx mode . 0: Disable.
    -            RX_TDM_EN: u1,
    -            /// 1: Enable I2S PDM Rx mode . 0: Disable.
    -            RX_PDM_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -        }), base_address + 0x20);
    -
    -        /// address: 0x6002d024
    -        /// I2S TX configure register
    -        pub const TX_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set this bit to reset transmitter
    -            TX_RESET: u1,
    -            /// Set this bit to reset Tx AFIFO
    -            TX_FIFO_RESET: u1,
    -            /// Set this bit to start transmitting data
    -            TX_START: u1,
    -            /// Set this bit to enable slave transmitter mode
    -            TX_SLAVE_MOD: u1,
    -            reserved0: u1,
    -            /// Set this bit to enable transmitter in mono mode
    -            TX_MONO: u1,
    -            /// 1: The value of Left channel data is equal to the value of right channel data in
    -            /// I2S TX mono mode or TDM channel select mode. 0: The invalid channel data is
    -            /// reg_i2s_single_data in I2S TX mono mode or TDM channel select mode.
    -            TX_CHAN_EQUAL: u1,
    -            /// I2S Tx byte endian, 1: low addr value to high addr. 0: low addr with low addr
    -            /// value.
    -            TX_BIG_ENDIAN: u1,
    -            /// Set 1 to update I2S TX registers from APB clock domain to I2S TX clock domain.
    -            /// This bit will be cleared by hardware after update register done.
    -            TX_UPDATE: u1,
    -            /// 1: The first channel data value is valid in I2S TX mono mode. 0: The second
    -            /// channel data value is valid in I2S TX mono mode.
    -            TX_MONO_FST_VLD: u1,
    -            /// I2S TX compress/decompress configuration bit. & 0 (atol): A-Law decompress, 1
    -            /// (ltoa) : A-Law compress, 2 (utol) : u-Law decompress, 3 (ltou) : u-Law compress.
    -            /// &
    -            TX_PCM_CONF: u2,
    -            /// Set this bit to bypass Compress/Decompress module for transmitted data.
    -            TX_PCM_BYPASS: u1,
    -            /// Set this bit to stop disable output BCK signal and WS signal when tx FIFO is
    -            /// emtpy
    -            TX_STOP_EN: u1,
    -            reserved1: u1,
    -            /// 1: I2S TX left alignment mode. 0: I2S TX right alignment mode.
    -            TX_LEFT_ALIGN: u1,
    -            /// 1: Sent 32 bits in 24 channel bits mode. 0: Sent 24 bits in 24 channel bits mode
    -            TX_24_FILL_EN: u1,
    -            /// 0: WS should be 0 when sending left channel data, and WS is 1in right channel.
    -            /// 1: WS should be 1 when sending left channel data, and WS is 0in right channel.
    -            TX_WS_IDLE_POL: u1,
    -            /// I2S Tx bit endian. 1:small endian, the LSB is sent first. 0:big endian, the MSB
    -            /// is sent first.
    -            TX_BIT_ORDER: u1,
    -            /// 1: Enable I2S TDM Tx mode . 0: Disable.
    -            TX_TDM_EN: u1,
    -            /// 1: Enable I2S PDM Tx mode . 0: Disable.
    -            TX_PDM_EN: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            /// I2S transmitter channel mode configuration bits.
    -            TX_CHAN_MOD: u3,
    -            /// Enable signal loop back mode with transmitter module and receiver module sharing
    -            /// the same WS and BCK signals.
    -            SIG_LOOPBACK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -        }), base_address + 0x24);
    -
    -        /// address: 0x6002d028
    -        /// I2S RX configure register 1
    -        pub const RX_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The width of rx_ws_out in TDM mode is (I2S_RX_TDM_WS_WIDTH[6:0] +1) * T_bck
    -            RX_TDM_WS_WIDTH: u7,
    -            /// Bit clock configuration bits in receiver mode.
    -            RX_BCK_DIV_NUM: u6,
    -            /// Set the bits to configure the valid data bit length of I2S receiver channel. 7:
    -            /// all the valid channel data is in 8-bit-mode. 15: all the valid channel data is
    -            /// in 16-bit-mode. 23: all the valid channel data is in 24-bit-mode. 31:all the
    -            /// valid channel data is in 32-bit-mode.
    -            RX_BITS_MOD: u5,
    -            /// I2S Rx half sample bits -1.
    -            RX_HALF_SAMPLE_BITS: u6,
    -            /// The Rx bit number for each channel minus 1in TDM mode.
    -            RX_TDM_CHAN_BITS: u5,
    -            /// Set this bit to enable receiver in Phillips standard mode
    -            RX_MSB_SHIFT: u1,
    -            padding0: u1,
    -            padding1: u1,
    -        }), base_address + 0x28);
    -
    -        /// address: 0x6002d02c
    -        /// I2S TX configure register 1
    -        pub const TX_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The width of tx_ws_out in TDM mode is (I2S_TX_TDM_WS_WIDTH[6:0] +1) * T_bck
    -            TX_TDM_WS_WIDTH: u7,
    -            /// Bit clock configuration bits in transmitter mode.
    -            TX_BCK_DIV_NUM: u6,
    -            /// Set the bits to configure the valid data bit length of I2S transmitter channel.
    -            /// 7: all the valid channel data is in 8-bit-mode. 15: all the valid channel data
    -            /// is in 16-bit-mode. 23: all the valid channel data is in 24-bit-mode. 31:all the
    -            /// valid channel data is in 32-bit-mode.
    -            TX_BITS_MOD: u5,
    -            /// I2S Tx half sample bits -1.
    -            TX_HALF_SAMPLE_BITS: u6,
    -            /// The Tx bit number for each channel minus 1in TDM mode.
    -            TX_TDM_CHAN_BITS: u5,
    -            /// Set this bit to enable transmitter in Phillips standard mode
    -            TX_MSB_SHIFT: u1,
    -            /// 1: BCK is not delayed to generate pos/neg edge in master mode. 0: BCK is delayed
    -            /// to generate pos/neg edge in master mode.
    -            TX_BCK_NO_DLY: u1,
    -            padding0: u1,
    -        }), base_address + 0x2c);
    -
    -        /// address: 0x6002d030
    -        /// I2S RX clock configure register
    -        pub const RX_CLKM_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Integral I2S clock divider value
    -            RX_CLKM_DIV_NUM: u8,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            /// I2S Rx module clock enable signal.
    -            RX_CLK_ACTIVE: u1,
    -            /// Select I2S Rx module source clock. 0: no clock. 1: APLL. 2: CLK160. 3:
    -            /// I2S_MCLK_in.
    -            RX_CLK_SEL: u2,
    -            /// 0: UseI2S Tx module clock as I2S_MCLK_OUT. 1: UseI2S Rx module clock as
    -            /// I2S_MCLK_OUT.
    -            MCLK_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -        }), base_address + 0x30);
    -
    -        /// address: 0x6002d034
    -        /// I2S TX clock configure register
    -        pub const TX_CLKM_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Integral I2S TX clock divider value. f_I2S_CLK = f_I2S_CLK_S/(N+b/a). There will
    -            /// be (a-b) * n-div and b * (n+1)-div. So the average combination will be: for b <=
    -            /// a/2, z * [x * n-div + (n+1)-div] + y * n-div. For b > a/2, z * [n-div + x *
    -            /// (n+1)-div] + y * (n+1)-div.
    -            TX_CLKM_DIV_NUM: u8,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            /// I2S Tx module clock enable signal.
    -            TX_CLK_ACTIVE: u1,
    -            /// Select I2S Tx module source clock. 0: XTAL clock. 1: APLL. 2: CLK160. 3:
    -            /// I2S_MCLK_in.
    -            TX_CLK_SEL: u2,
    -            /// Set this bit to enable clk gate
    -            CLK_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -        }), base_address + 0x34);
    -
    -        /// address: 0x6002d038
    -        /// I2S RX module clock divider configure register
    -        pub const RX_CLKM_DIV_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// For b <= a/2, the value of I2S_RX_CLKM_DIV_Z is b. For b > a/2, the value of
    -            /// I2S_RX_CLKM_DIV_Z is (a-b).
    -            RX_CLKM_DIV_Z: u9,
    -            /// For b <= a/2, the value of I2S_RX_CLKM_DIV_Y is (a%b) . For b > a/2, the value
    -            /// of I2S_RX_CLKM_DIV_Y is (a%(a-b)).
    -            RX_CLKM_DIV_Y: u9,
    -            /// For b <= a/2, the value of I2S_RX_CLKM_DIV_X is (a/b) - 1. For b > a/2, the
    -            /// value of I2S_RX_CLKM_DIV_X is (a/(a-b)) - 1.
    -            RX_CLKM_DIV_X: u9,
    -            /// For b <= a/2, the value of I2S_RX_CLKM_DIV_YN1 is 0 . For b > a/2, the value of
    -            /// I2S_RX_CLKM_DIV_YN1 is 1.
    -            RX_CLKM_DIV_YN1: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -        }), base_address + 0x38);
    -
    -        /// address: 0x6002d03c
    -        /// I2S TX module clock divider configure register
    -        pub const TX_CLKM_DIV_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// For b <= a/2, the value of I2S_TX_CLKM_DIV_Z is b. For b > a/2, the value of
    -            /// I2S_TX_CLKM_DIV_Z is (a-b).
    -            TX_CLKM_DIV_Z: u9,
    -            /// For b <= a/2, the value of I2S_TX_CLKM_DIV_Y is (a%b) . For b > a/2, the value
    -            /// of I2S_TX_CLKM_DIV_Y is (a%(a-b)).
    -            TX_CLKM_DIV_Y: u9,
    -            /// For b <= a/2, the value of I2S_TX_CLKM_DIV_X is (a/b) - 1. For b > a/2, the
    -            /// value of I2S_TX_CLKM_DIV_X is (a/(a-b)) - 1.
    -            TX_CLKM_DIV_X: u9,
    -            /// For b <= a/2, the value of I2S_TX_CLKM_DIV_YN1 is 0 . For b > a/2, the value of
    -            /// I2S_TX_CLKM_DIV_YN1 is 1.
    -            TX_CLKM_DIV_YN1: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -        }), base_address + 0x3c);
    -
    -        /// address: 0x6002d040
    -        /// I2S TX PCM2PDM configuration register
    -        pub const TX_PCM2PDM_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// I2S TX PDM bypass hp filter or not. The option has been removed.
    -            TX_PDM_HP_BYPASS: u1,
    -            /// I2S TX PDM OSR2 value
    -            TX_PDM_SINC_OSR2: u4,
    -            /// I2S TX PDM prescale for sigmadelta
    -            TX_PDM_PRESCALE: u8,
    -            /// I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4
    -            TX_PDM_HP_IN_SHIFT: u2,
    -            /// I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4
    -            TX_PDM_LP_IN_SHIFT: u2,
    -            /// I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4
    -            TX_PDM_SINC_IN_SHIFT: u2,
    -            /// I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4
    -            TX_PDM_SIGMADELTA_IN_SHIFT: u2,
    -            /// I2S TX PDM sigmadelta dither2 value
    -            TX_PDM_SIGMADELTA_DITHER2: u1,
    -            /// I2S TX PDM sigmadelta dither value
    -            TX_PDM_SIGMADELTA_DITHER: u1,
    -            /// I2S TX PDM dac mode enable
    -            TX_PDM_DAC_2OUT_EN: u1,
    -            /// I2S TX PDM dac 2channel enable
    -            TX_PDM_DAC_MODE_EN: u1,
    -            /// I2S TX PDM Converter enable
    -            PCM2PDM_CONV_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -        }), base_address + 0x40);
    -
    -        /// address: 0x6002d044
    -        /// I2S TX PCM2PDM configuration register
    -        pub const TX_PCM2PDM_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// I2S TX PDM Fp
    -            TX_PDM_FP: u10,
    -            /// I2S TX PDM Fs
    -            TX_PDM_FS: u10,
    -            /// The fourth parameter of PDM TX IIR_HP filter stage 2 is (504 +
    -            /// I2S_TX_IIR_HP_MULT12_5[2:0])
    -            TX_IIR_HP_MULT12_5: u3,
    -            /// The fourth parameter of PDM TX IIR_HP filter stage 1 is (504 +
    -            /// I2S_TX_IIR_HP_MULT12_0[2:0])
    -            TX_IIR_HP_MULT12_0: u3,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -        }), base_address + 0x44);
    -
    -        /// address: 0x6002d050
    -        /// I2S TX TDM mode control register
    -        pub const RX_TDM_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// 1: Enable the valid data input of I2S RX TDM or PDM channel 0. 0: Disable, just
    -            /// input 0 in this channel.
    -            RX_TDM_PDM_CHAN0_EN: u1,
    -            /// 1: Enable the valid data input of I2S RX TDM or PDM channel 1. 0: Disable, just
    -            /// input 0 in this channel.
    -            RX_TDM_PDM_CHAN1_EN: u1,
    -            /// 1: Enable the valid data input of I2S RX TDM or PDM channel 2. 0: Disable, just
    -            /// input 0 in this channel.
    -            RX_TDM_PDM_CHAN2_EN: u1,
    -            /// 1: Enable the valid data input of I2S RX TDM or PDM channel 3. 0: Disable, just
    -            /// input 0 in this channel.
    -            RX_TDM_PDM_CHAN3_EN: u1,
    -            /// 1: Enable the valid data input of I2S RX TDM or PDM channel 4. 0: Disable, just
    -            /// input 0 in this channel.
    -            RX_TDM_PDM_CHAN4_EN: u1,
    -            /// 1: Enable the valid data input of I2S RX TDM or PDM channel 5. 0: Disable, just
    -            /// input 0 in this channel.
    -            RX_TDM_PDM_CHAN5_EN: u1,
    -            /// 1: Enable the valid data input of I2S RX TDM or PDM channel 6. 0: Disable, just
    -            /// input 0 in this channel.
    -            RX_TDM_PDM_CHAN6_EN: u1,
    -            /// 1: Enable the valid data input of I2S RX TDM or PDM channel 7. 0: Disable, just
    -            /// input 0 in this channel.
    -            RX_TDM_PDM_CHAN7_EN: u1,
    -            /// 1: Enable the valid data input of I2S RX TDM channel 8. 0: Disable, just input 0
    -            /// in this channel.
    -            RX_TDM_CHAN8_EN: u1,
    -            /// 1: Enable the valid data input of I2S RX TDM channel 9. 0: Disable, just input 0
    -            /// in this channel.
    -            RX_TDM_CHAN9_EN: u1,
    -            /// 1: Enable the valid data input of I2S RX TDM channel 10. 0: Disable, just input
    -            /// 0 in this channel.
    -            RX_TDM_CHAN10_EN: u1,
    -            /// 1: Enable the valid data input of I2S RX TDM channel 11. 0: Disable, just input
    -            /// 0 in this channel.
    -            RX_TDM_CHAN11_EN: u1,
    -            /// 1: Enable the valid data input of I2S RX TDM channel 12. 0: Disable, just input
    -            /// 0 in this channel.
    -            RX_TDM_CHAN12_EN: u1,
    -            /// 1: Enable the valid data input of I2S RX TDM channel 13. 0: Disable, just input
    -            /// 0 in this channel.
    -            RX_TDM_CHAN13_EN: u1,
    -            /// 1: Enable the valid data input of I2S RX TDM channel 14. 0: Disable, just input
    -            /// 0 in this channel.
    -            RX_TDM_CHAN14_EN: u1,
    -            /// 1: Enable the valid data input of I2S RX TDM channel 15. 0: Disable, just input
    -            /// 0 in this channel.
    -            RX_TDM_CHAN15_EN: u1,
    -            /// The total channel number of I2S TX TDM mode.
    -            RX_TDM_TOT_CHAN_NUM: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x50);
    -
    -        /// address: 0x6002d054
    -        /// I2S TX TDM mode control register
    -        pub const TX_TDM_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// 1: Enable the valid data output of I2S TX TDM channel 0. 0: Disable, just output
    -            /// 0 in this channel.
    -            TX_TDM_CHAN0_EN: u1,
    -            /// 1: Enable the valid data output of I2S TX TDM channel 1. 0: Disable, just output
    -            /// 0 in this channel.
    -            TX_TDM_CHAN1_EN: u1,
    -            /// 1: Enable the valid data output of I2S TX TDM channel 2. 0: Disable, just output
    -            /// 0 in this channel.
    -            TX_TDM_CHAN2_EN: u1,
    -            /// 1: Enable the valid data output of I2S TX TDM channel 3. 0: Disable, just output
    -            /// 0 in this channel.
    -            TX_TDM_CHAN3_EN: u1,
    -            /// 1: Enable the valid data output of I2S TX TDM channel 4. 0: Disable, just output
    -            /// 0 in this channel.
    -            TX_TDM_CHAN4_EN: u1,
    -            /// 1: Enable the valid data output of I2S TX TDM channel 5. 0: Disable, just output
    -            /// 0 in this channel.
    -            TX_TDM_CHAN5_EN: u1,
    -            /// 1: Enable the valid data output of I2S TX TDM channel 6. 0: Disable, just output
    -            /// 0 in this channel.
    -            TX_TDM_CHAN6_EN: u1,
    -            /// 1: Enable the valid data output of I2S TX TDM channel 7. 0: Disable, just output
    -            /// 0 in this channel.
    -            TX_TDM_CHAN7_EN: u1,
    -            /// 1: Enable the valid data output of I2S TX TDM channel 8. 0: Disable, just output
    -            /// 0 in this channel.
    -            TX_TDM_CHAN8_EN: u1,
    -            /// 1: Enable the valid data output of I2S TX TDM channel 9. 0: Disable, just output
    -            /// 0 in this channel.
    -            TX_TDM_CHAN9_EN: u1,
    -            /// 1: Enable the valid data output of I2S TX TDM channel 10. 0: Disable, just
    -            /// output 0 in this channel.
    -            TX_TDM_CHAN10_EN: u1,
    -            /// 1: Enable the valid data output of I2S TX TDM channel 11. 0: Disable, just
    -            /// output 0 in this channel.
    -            TX_TDM_CHAN11_EN: u1,
    -            /// 1: Enable the valid data output of I2S TX TDM channel 12. 0: Disable, just
    -            /// output 0 in this channel.
    -            TX_TDM_CHAN12_EN: u1,
    -            /// 1: Enable the valid data output of I2S TX TDM channel 13. 0: Disable, just
    -            /// output 0 in this channel.
    -            TX_TDM_CHAN13_EN: u1,
    -            /// 1: Enable the valid data output of I2S TX TDM channel 14. 0: Disable, just
    -            /// output 0 in this channel.
    -            TX_TDM_CHAN14_EN: u1,
    -            /// 1: Enable the valid data output of I2S TX TDM channel 15. 0: Disable, just
    -            /// output 0 in this channel.
    -            TX_TDM_CHAN15_EN: u1,
    -            /// The total channel number of I2S TX TDM mode.
    -            TX_TDM_TOT_CHAN_NUM: u4,
    -            /// When DMA TX buffer stores the data of (REG_TX_TDM_TOT_CHAN_NUM + 1) channels,
    -            /// and only the data of the enabled channels is sent, then this bit should be set.
    -            /// Clear it when all the data stored in DMA TX buffer is for enabled channels.
    -            TX_TDM_SKIP_MSK_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -        }), base_address + 0x54);
    -
    -        /// address: 0x6002d058
    -        /// I2S RX timing control register
    -        pub const RX_TIMING = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The delay mode of I2S Rx SD input signal. 0: bypass. 1: delay by pos edge. 2:
    -            /// delay by neg edge. 3: not used.
    -            RX_SD_IN_DM: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            /// The delay mode of I2S Rx WS output signal. 0: bypass. 1: delay by pos edge. 2:
    -            /// delay by neg edge. 3: not used.
    -            RX_WS_OUT_DM: u2,
    -            reserved14: u1,
    -            reserved15: u1,
    -            /// The delay mode of I2S Rx BCK output signal. 0: bypass. 1: delay by pos edge. 2:
    -            /// delay by neg edge. 3: not used.
    -            RX_BCK_OUT_DM: u2,
    -            reserved16: u1,
    -            reserved17: u1,
    -            /// The delay mode of I2S Rx WS input signal. 0: bypass. 1: delay by pos edge. 2:
    -            /// delay by neg edge. 3: not used.
    -            RX_WS_IN_DM: u2,
    -            reserved18: u1,
    -            reserved19: u1,
    -            /// The delay mode of I2S Rx BCK input signal. 0: bypass. 1: delay by pos edge. 2:
    -            /// delay by neg edge. 3: not used.
    -            RX_BCK_IN_DM: u2,
    -            padding0: u1,
    -            padding1: u1,
    -        }), base_address + 0x58);
    -
    -        /// address: 0x6002d05c
    -        /// I2S TX timing control register
    -        pub const TX_TIMING = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The delay mode of I2S TX SD output signal. 0: bypass. 1: delay by pos edge. 2:
    -            /// delay by neg edge. 3: not used.
    -            TX_SD_OUT_DM: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// The delay mode of I2S TX SD1 output signal. 0: bypass. 1: delay by pos edge. 2:
    -            /// delay by neg edge. 3: not used.
    -            TX_SD1_OUT_DM: u2,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            /// The delay mode of I2S TX WS output signal. 0: bypass. 1: delay by pos edge. 2:
    -            /// delay by neg edge. 3: not used.
    -            TX_WS_OUT_DM: u2,
    -            reserved12: u1,
    -            reserved13: u1,
    -            /// The delay mode of I2S TX BCK output signal. 0: bypass. 1: delay by pos edge. 2:
    -            /// delay by neg edge. 3: not used.
    -            TX_BCK_OUT_DM: u2,
    -            reserved14: u1,
    -            reserved15: u1,
    -            /// The delay mode of I2S TX WS input signal. 0: bypass. 1: delay by pos edge. 2:
    -            /// delay by neg edge. 3: not used.
    -            TX_WS_IN_DM: u2,
    -            reserved16: u1,
    -            reserved17: u1,
    -            /// The delay mode of I2S TX BCK input signal. 0: bypass. 1: delay by pos edge. 2:
    -            /// delay by neg edge. 3: not used.
    -            TX_BCK_IN_DM: u2,
    -            padding0: u1,
    -            padding1: u1,
    -        }), base_address + 0x5c);
    -
    -        /// address: 0x6002d060
    -        /// I2S HUNG configure register.
    -        pub const LC_HUNG_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// the i2s_tx_hung_int interrupt or the i2s_rx_hung_int interrupt will be triggered
    -            /// when fifo hung counter is equal to this value
    -            LC_FIFO_TIMEOUT: u8,
    -            /// The bits are used to scale tick counter threshold. The tick counter is reset
    -            /// when counter value >= 88000/2^i2s_lc_fifo_timeout_shift
    -            LC_FIFO_TIMEOUT_SHIFT: u3,
    -            /// The enable bit for FIFO timeout
    -            LC_FIFO_TIMEOUT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0x60);
    -
    -        /// address: 0x6002d064
    -        /// I2S RX data number control register.
    -        pub const RXEOF_NUM = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The receive data bit length is (I2S_RX_BITS_MOD[4:0] + 1) *
    -            /// (REG_RX_EOF_NUM[11:0] + 1) . It will trigger in_suc_eof interrupt in the
    -            /// configured DMA RX channel.
    -            RX_EOF_NUM: u12,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0x64);
    -
    -        /// address: 0x6002d068
    -        /// I2S signal data register
    -        pub const CONF_SIGLE_DATA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The configured constant channel data to be sent out.
    -            SINGLE_DATA: u32,
    -        }), base_address + 0x68);
    -
    -        /// address: 0x6002d06c
    -        /// I2S TX status register
    -        pub const STATE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// 1: i2s_tx is idle state. 0: i2s_tx is working.
    -            TX_IDLE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x6c);
    -
    -        /// address: 0x6002d080
    -        /// Version control register
    -        pub const DATE = @intToPtr(*volatile MmioInt(32, u28), base_address + 0x80);
    -    };
    -
    -    /// Interrupt Core
    -    pub const INTERRUPT_CORE0 = struct {
    -        pub const base_address = 0x600c2000;
    -
    -        /// address: 0x600c2000
    -        /// mac intr map register
    -        pub const MAC_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x0);
    -
    -        /// address: 0x600c2004
    -        /// mac nmi_intr map register
    -        pub const MAC_NMI_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x4);
    -
    -        /// address: 0x600c2008
    -        /// pwr intr map register
    -        pub const PWR_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x8);
    -
    -        /// address: 0x600c200c
    -        /// bb intr map register
    -        pub const BB_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xc);
    -
    -        /// address: 0x600c2010
    -        /// bt intr map register
    -        pub const BT_MAC_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x10);
    -
    -        /// address: 0x600c2014
    -        /// bb_bt intr map register
    -        pub const BT_BB_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x14);
    -
    -        /// address: 0x600c2018
    -        /// bb_bt_nmi intr map register
    -        pub const BT_BB_NMI_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x18);
    -
    -        /// address: 0x600c201c
    -        /// rwbt intr map register
    -        pub const RWBT_IRQ_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x1c);
    -
    -        /// address: 0x600c2020
    -        /// rwble intr map register
    -        pub const RWBLE_IRQ_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x20);
    -
    -        /// address: 0x600c2024
    -        /// rwbt_nmi intr map register
    -        pub const RWBT_NMI_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x24);
    -
    -        /// address: 0x600c2028
    -        /// rwble_nmi intr map register
    -        pub const RWBLE_NMI_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x28);
    -
    -        /// address: 0x600c202c
    -        /// i2c intr map register
    -        pub const I2C_MST_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x2c);
    -
    -        /// address: 0x600c2030
    -        /// slc0 intr map register
    -        pub const SLC0_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x30);
    -
    -        /// address: 0x600c2034
    -        /// slc1 intr map register
    -        pub const SLC1_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x34);
    -
    -        /// address: 0x600c2038
    -        /// apb_ctrl intr map register
    -        pub const APB_CTRL_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x38);
    -
    -        /// address: 0x600c203c
    -        /// uchi0 intr map register
    -        pub const UHCI0_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x3c);
    -
    -        /// address: 0x600c2040
    -        /// gpio intr map register
    -        pub const GPIO_INTERRUPT_PRO_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x40);
    -
    -        /// address: 0x600c2044
    -        /// gpio_pro intr map register
    -        pub const GPIO_INTERRUPT_PRO_NMI_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x44);
    -
    -        /// address: 0x600c2048
    -        /// gpio_pro_nmi intr map register
    -        pub const SPI_INTR_1_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x48);
    -
    -        /// address: 0x600c204c
    -        /// spi1 intr map register
    -        pub const SPI_INTR_2_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x4c);
    -
    -        /// address: 0x600c2050
    -        /// spi2 intr map register
    -        pub const I2S1_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x50);
    -
    -        /// address: 0x600c2054
    -        /// i2s1 intr map register
    -        pub const UART_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x54);
    -
    -        /// address: 0x600c2058
    -        /// uart1 intr map register
    -        pub const UART1_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x58);
    -
    -        /// address: 0x600c205c
    -        /// ledc intr map register
    -        pub const LEDC_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x5c);
    -
    -        /// address: 0x600c2060
    -        /// efuse intr map register
    -        pub const EFUSE_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x60);
    -
    -        /// address: 0x600c2064
    -        /// can intr map register
    -        pub const CAN_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x64);
    -
    -        /// address: 0x600c2068
    -        /// usb intr map register
    -        pub const USB_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x68);
    -
    -        /// address: 0x600c206c
    -        /// rtc intr map register
    -        pub const RTC_CORE_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x6c);
    -
    -        /// address: 0x600c2070
    -        /// rmt intr map register
    -        pub const RMT_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x70);
    -
    -        /// address: 0x600c2074
    -        /// i2c intr map register
    -        pub const I2C_EXT0_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x74);
    -
    -        /// address: 0x600c2078
    -        /// timer1 intr map register
    -        pub const TIMER_INT1_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x78);
    -
    -        /// address: 0x600c207c
    -        /// timer2 intr map register
    -        pub const TIMER_INT2_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x7c);
    -
    -        /// address: 0x600c2080
    -        /// tg to intr map register
    -        pub const TG_T0_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x80);
    -
    -        /// address: 0x600c2084
    -        /// tg wdt intr map register
    -        pub const TG_WDT_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x84);
    -
    -        /// address: 0x600c2088
    -        /// tg1 to intr map register
    -        pub const TG1_T0_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x88);
    -
    -        /// address: 0x600c208c
    -        /// tg1 wdt intr map register
    -        pub const TG1_WDT_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x8c);
    -
    -        /// address: 0x600c2090
    -        /// cache ia intr map register
    -        pub const CACHE_IA_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x90);
    -
    -        /// address: 0x600c2094
    -        /// systimer intr map register
    -        pub const SYSTIMER_TARGET0_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x94);
    -
    -        /// address: 0x600c2098
    -        /// systimer target1 intr map register
    -        pub const SYSTIMER_TARGET1_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x98);
    -
    -        /// address: 0x600c209c
    -        /// systimer target2 intr map register
    -        pub const SYSTIMER_TARGET2_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x9c);
    -
    -        /// address: 0x600c20a0
    -        /// spi mem reject intr map register
    -        pub const SPI_MEM_REJECT_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xa0);
    -
    -        /// address: 0x600c20a4
    -        /// icache perload intr map register
    -        pub const ICACHE_PRELOAD_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xa4);
    -
    -        /// address: 0x600c20a8
    -        /// icache sync intr map register
    -        pub const ICACHE_SYNC_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xa8);
    -
    -        /// address: 0x600c20ac
    -        /// adc intr map register
    -        pub const APB_ADC_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xac);
    -
    -        /// address: 0x600c20b0
    -        /// dma ch0 intr map register
    -        pub const DMA_CH0_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xb0);
    -
    -        /// address: 0x600c20b4
    -        /// dma ch1 intr map register
    -        pub const DMA_CH1_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xb4);
    -
    -        /// address: 0x600c20b8
    -        /// dma ch2 intr map register
    -        pub const DMA_CH2_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xb8);
    -
    -        /// address: 0x600c20bc
    -        /// rsa intr map register
    -        pub const RSA_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xbc);
    -
    -        /// address: 0x600c20c0
    -        /// aes intr map register
    -        pub const AES_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xc0);
    -
    -        /// address: 0x600c20c4
    -        /// sha intr map register
    -        pub const SHA_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xc4);
    -
    -        /// address: 0x600c20c8
    -        /// cpu from cpu 0 intr map register
    -        pub const CPU_INTR_FROM_CPU_0_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xc8);
    -
    -        /// address: 0x600c20cc
    -        /// cpu from cpu 0 intr map register
    -        pub const CPU_INTR_FROM_CPU_1_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xcc);
    -
    -        /// address: 0x600c20d0
    -        /// cpu from cpu 1 intr map register
    -        pub const CPU_INTR_FROM_CPU_2_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xd0);
    -
    -        /// address: 0x600c20d4
    -        /// cpu from cpu 3 intr map register
    -        pub const CPU_INTR_FROM_CPU_3_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xd4);
    -
    -        /// address: 0x600c20d8
    -        /// assist debug intr map register
    -        pub const ASSIST_DEBUG_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xd8);
    -
    -        /// address: 0x600c20dc
    -        /// dma pms violatile intr map register
    -        pub const DMA_APBPERI_PMS_MONITOR_VIOLATE_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xdc);
    -
    -        /// address: 0x600c20e0
    -        /// iram0 pms violatile intr map register
    -        pub const CORE_0_IRAM0_PMS_MONITOR_VIOLATE_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xe0);
    -
    -        /// address: 0x600c20e4
    -        /// mac intr map register
    -        pub const CORE_0_DRAM0_PMS_MONITOR_VIOLATE_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xe4);
    -
    -        /// address: 0x600c20e8
    -        /// mac intr map register
    -        pub const CORE_0_PIF_PMS_MONITOR_VIOLATE_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xe8);
    -
    -        /// address: 0x600c20ec
    -        /// mac intr map register
    -        pub const CORE_0_PIF_PMS_MONITOR_VIOLATE_SIZE_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xec);
    -
    -        /// address: 0x600c20f0
    -        /// mac intr map register
    -        pub const BACKUP_PMS_VIOLATE_INTR_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xf0);
    -
    -        /// address: 0x600c20f4
    -        /// mac intr map register
    -        pub const CACHE_CORE0_ACS_INT_MAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0xf4);
    -
    -        /// address: 0x600c20f8
    -        /// mac intr map register
    -        pub const INTR_STATUS_REG_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_intr_status_0
    -            INTR_STATUS_0: u32,
    -        }), base_address + 0xf8);
    -
    -        /// address: 0x600c20fc
    -        /// mac intr map register
    -        pub const INTR_STATUS_REG_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_intr_status_1
    -            INTR_STATUS_1: u32,
    -        }), base_address + 0xfc);
    -
    -        /// address: 0x600c2100
    -        /// mac intr map register
    -        pub const CLOCK_GATE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_reg_clk_en
    -            REG_CLK_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x100);
    -
    -        /// address: 0x600c2104
    -        /// mac intr map register
    -        pub const CPU_INT_ENABLE = @intToPtr(*volatile u32, base_address + 0x104);
    -
    -        /// address: 0x600c2108
    -        /// mac intr map register
    -        pub const CPU_INT_TYPE = @intToPtr(*volatile u32, base_address + 0x108);
    -
    -        /// address: 0x600c210c
    -        /// mac intr map register
    -        pub const CPU_INT_CLEAR = @intToPtr(*volatile u32, base_address + 0x10c);
    -
    -        /// address: 0x600c2110
    -        /// mac intr map register
    -        pub const CPU_INT_EIP_STATUS = @intToPtr(*volatile u32, base_address + 0x110);
    -
    -        /// address: 0x600c2114
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_0_map
    -            CPU_PRI_0_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x114);
    -
    -        /// address: 0x600c2118
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_1_map
    -            CPU_PRI_1_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x118);
    -
    -        /// address: 0x600c211c
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_2_map
    -            CPU_PRI_2_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x11c);
    -
    -        /// address: 0x600c2120
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_3_map
    -            CPU_PRI_3_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x120);
    -
    -        /// address: 0x600c2124
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_4_map
    -            CPU_PRI_4_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x124);
    -
    -        /// address: 0x600c2128
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_5_map
    -            CPU_PRI_5_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x128);
    -
    -        /// address: 0x600c212c
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_6 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_6_map
    -            CPU_PRI_6_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x12c);
    -
    -        /// address: 0x600c2130
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_7 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_7_map
    -            CPU_PRI_7_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x130);
    -
    -        /// address: 0x600c2134
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_8 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_8_map
    -            CPU_PRI_8_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x134);
    -
    -        /// address: 0x600c2138
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_9 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_9_map
    -            CPU_PRI_9_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x138);
    -
    -        /// address: 0x600c213c
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_10 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_10_map
    -            CPU_PRI_10_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x13c);
    -
    -        /// address: 0x600c2140
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_11 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_11_map
    -            CPU_PRI_11_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x140);
    -
    -        /// address: 0x600c2144
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_12 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_12_map
    -            CPU_PRI_12_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x144);
    -
    -        /// address: 0x600c2148
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_13 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_13_map
    -            CPU_PRI_13_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x148);
    -
    -        /// address: 0x600c214c
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_14 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_14_map
    -            CPU_PRI_14_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x14c);
    -
    -        /// address: 0x600c2150
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_15 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_15_map
    -            CPU_PRI_15_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x150);
    -
    -        /// address: 0x600c2154
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_16 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_16_map
    -            CPU_PRI_16_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x154);
    -
    -        /// address: 0x600c2158
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_17 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_17_map
    -            CPU_PRI_17_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x158);
    -
    -        /// address: 0x600c215c
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_18 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_18_map
    -            CPU_PRI_18_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x15c);
    -
    -        /// address: 0x600c2160
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_19 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_19_map
    -            CPU_PRI_19_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x160);
    -
    -        /// address: 0x600c2164
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_20 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_20_map
    -            CPU_PRI_20_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x164);
    -
    -        /// address: 0x600c2168
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_21 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_21_map
    -            CPU_PRI_21_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x168);
    -
    -        /// address: 0x600c216c
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_22 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_22_map
    -            CPU_PRI_22_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x16c);
    -
    -        /// address: 0x600c2170
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_23 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_23_map
    -            CPU_PRI_23_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x170);
    -
    -        /// address: 0x600c2174
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_24 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_24_map
    -            CPU_PRI_24_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x174);
    -
    -        /// address: 0x600c2178
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_25 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_25_map
    -            CPU_PRI_25_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x178);
    -
    -        /// address: 0x600c217c
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_26 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_26_map
    -            CPU_PRI_26_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x17c);
    -
    -        /// address: 0x600c2180
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_27 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_27_map
    -            CPU_PRI_27_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x180);
    -
    -        /// address: 0x600c2184
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_28 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_28_map
    -            CPU_PRI_28_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x184);
    -
    -        /// address: 0x600c2188
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_29 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_29_map
    -            CPU_PRI_29_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x188);
    -
    -        /// address: 0x600c218c
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_30 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_30_map
    -            CPU_PRI_30_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x18c);
    -
    -        /// address: 0x600c2190
    -        /// mac intr map register
    -        pub const CPU_INT_PRI_31 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_core0_cpu_pri_31_map
    -            CPU_PRI_31_MAP: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x190);
    -
    -        /// address: 0x600c2194
    -        /// mac intr map register
    -        pub const CPU_INT_THRESH = @intToPtr(*volatile MmioInt(32, u4), base_address + 0x194);
    -
    -        /// address: 0x600c27fc
    -        /// mac intr map register
    -        pub const INTERRUPT_REG_DATE = @intToPtr(*volatile MmioInt(32, u28), base_address + 0x7fc);
    -    };
    -
    -    /// Input/Output Multiplexer
    -    pub const IO_MUX = struct {
    -        pub const base_address = 0x60009000;
    -
    -        /// address: 0x60009000
    -        /// Clock Output Configuration Register
    -        pub const PIN_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// If you want to output clock for I2S to CLK_OUT_out1, set this register to 0x0.
    -            /// CLK_OUT_out1 can be found in peripheral output signals.
    -            CLK_OUT1: u4,
    -            /// If you want to output clock for I2S to CLK_OUT_out2, set this register to 0x0.
    -            /// CLK_OUT_out2 can be found in peripheral output signals.
    -            CLK_OUT2: u4,
    -            /// If you want to output clock for I2S to CLK_OUT_out3, set this register to 0x0.
    -            /// CLK_OUT_out3 can be found in peripheral output signals.
    -            CLK_OUT3: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0x0);
    -
    -        /// address: 0x60009004
    -        /// IO MUX Configure Register for pad XTAL_32K_P
    -        pub const GPIO0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    -            MCU_OE: u1,
    -            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    -            SLP_SEL: u1,
    -            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    -            /// internal pull-down disabled.
    -            MCU_WPD: u1,
    -            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    -            /// internal pull-up disabled.
    -            MCU_WPU: u1,
    -            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    -            MCU_IE: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    -            /// pull-down disabled.
    -            FUN_WPD: u1,
    -            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    -            /// disabled.
    -            FUN_WPU: u1,
    -            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    -            FUN_IE: u1,
    -            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    -            FUN_DRV: u2,
    -            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    -            /// 2; etc.
    -            MCU_SEL: u3,
    -            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    -            FILTER_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x60009008
    -        /// IO MUX Configure Register for pad XTAL_32K_P
    -        pub const GPIO1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    -            MCU_OE: u1,
    -            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    -            SLP_SEL: u1,
    -            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    -            /// internal pull-down disabled.
    -            MCU_WPD: u1,
    -            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    -            /// internal pull-up disabled.
    -            MCU_WPU: u1,
    -            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    -            MCU_IE: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    -            /// pull-down disabled.
    -            FUN_WPD: u1,
    -            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    -            /// disabled.
    -            FUN_WPU: u1,
    -            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    -            FUN_IE: u1,
    -            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    -            FUN_DRV: u2,
    -            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    -            /// 2; etc.
    -            MCU_SEL: u3,
    -            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    -            FILTER_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x6000900c
    -        /// IO MUX Configure Register for pad XTAL_32K_P
    -        pub const GPIO2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    -            MCU_OE: u1,
    -            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    -            SLP_SEL: u1,
    -            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    -            /// internal pull-down disabled.
    -            MCU_WPD: u1,
    -            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    -            /// internal pull-up disabled.
    -            MCU_WPU: u1,
    -            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    -            MCU_IE: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    -            /// pull-down disabled.
    -            FUN_WPD: u1,
    -            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    -            /// disabled.
    -            FUN_WPU: u1,
    -            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    -            FUN_IE: u1,
    -            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    -            FUN_DRV: u2,
    -            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    -            /// 2; etc.
    -            MCU_SEL: u3,
    -            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    -            FILTER_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x60009010
    -        /// IO MUX Configure Register for pad XTAL_32K_P
    -        pub const GPIO3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    -            MCU_OE: u1,
    -            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    -            SLP_SEL: u1,
    -            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    -            /// internal pull-down disabled.
    -            MCU_WPD: u1,
    -            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    -            /// internal pull-up disabled.
    -            MCU_WPU: u1,
    -            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    -            MCU_IE: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    -            /// pull-down disabled.
    -            FUN_WPD: u1,
    -            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    -            /// disabled.
    -            FUN_WPU: u1,
    -            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    -            FUN_IE: u1,
    -            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    -            FUN_DRV: u2,
    -            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    -            /// 2; etc.
    -            MCU_SEL: u3,
    -            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    -            FILTER_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x10);
    -
    -        /// address: 0x60009014
    -        /// IO MUX Configure Register for pad XTAL_32K_P
    -        pub const GPIO4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    -            MCU_OE: u1,
    -            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    -            SLP_SEL: u1,
    -            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    -            /// internal pull-down disabled.
    -            MCU_WPD: u1,
    -            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    -            /// internal pull-up disabled.
    -            MCU_WPU: u1,
    -            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    -            MCU_IE: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    -            /// pull-down disabled.
    -            FUN_WPD: u1,
    -            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    -            /// disabled.
    -            FUN_WPU: u1,
    -            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    -            FUN_IE: u1,
    -            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    -            FUN_DRV: u2,
    -            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    -            /// 2; etc.
    -            MCU_SEL: u3,
    -            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    -            FILTER_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x14);
    -
    -        /// address: 0x60009018
    -        /// IO MUX Configure Register for pad XTAL_32K_P
    -        pub const GPIO5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    -            MCU_OE: u1,
    -            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    -            SLP_SEL: u1,
    -            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    -            /// internal pull-down disabled.
    -            MCU_WPD: u1,
    -            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    -            /// internal pull-up disabled.
    -            MCU_WPU: u1,
    -            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    -            MCU_IE: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    -            /// pull-down disabled.
    -            FUN_WPD: u1,
    -            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    -            /// disabled.
    -            FUN_WPU: u1,
    -            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    -            FUN_IE: u1,
    -            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    -            FUN_DRV: u2,
    -            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    -            /// 2; etc.
    -            MCU_SEL: u3,
    -            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    -            FILTER_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x6000901c
    -        /// IO MUX Configure Register for pad XTAL_32K_P
    -        pub const GPIO6 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    -            MCU_OE: u1,
    -            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    -            SLP_SEL: u1,
    -            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    -            /// internal pull-down disabled.
    -            MCU_WPD: u1,
    -            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    -            /// internal pull-up disabled.
    -            MCU_WPU: u1,
    -            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    -            MCU_IE: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    -            /// pull-down disabled.
    -            FUN_WPD: u1,
    -            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    -            /// disabled.
    -            FUN_WPU: u1,
    -            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    -            FUN_IE: u1,
    -            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    -            FUN_DRV: u2,
    -            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    -            /// 2; etc.
    -            MCU_SEL: u3,
    -            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    -            FILTER_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x60009020
    -        /// IO MUX Configure Register for pad XTAL_32K_P
    -        pub const GPIO7 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    -            MCU_OE: u1,
    -            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    -            SLP_SEL: u1,
    -            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    -            /// internal pull-down disabled.
    -            MCU_WPD: u1,
    -            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    -            /// internal pull-up disabled.
    -            MCU_WPU: u1,
    -            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    -            MCU_IE: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    -            /// pull-down disabled.
    -            FUN_WPD: u1,
    -            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    -            /// disabled.
    -            FUN_WPU: u1,
    -            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    -            FUN_IE: u1,
    -            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    -            FUN_DRV: u2,
    -            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    -            /// 2; etc.
    -            MCU_SEL: u3,
    -            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    -            FILTER_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x20);
    -
    -        /// address: 0x60009024
    -        /// IO MUX Configure Register for pad XTAL_32K_P
    -        pub const GPIO8 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    -            MCU_OE: u1,
    -            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    -            SLP_SEL: u1,
    -            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    -            /// internal pull-down disabled.
    -            MCU_WPD: u1,
    -            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    -            /// internal pull-up disabled.
    -            MCU_WPU: u1,
    -            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    -            MCU_IE: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    -            /// pull-down disabled.
    -            FUN_WPD: u1,
    -            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    -            /// disabled.
    -            FUN_WPU: u1,
    -            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    -            FUN_IE: u1,
    -            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    -            FUN_DRV: u2,
    -            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    -            /// 2; etc.
    -            MCU_SEL: u3,
    -            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    -            FILTER_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x24);
    -
    -        /// address: 0x60009028
    -        /// IO MUX Configure Register for pad XTAL_32K_P
    -        pub const GPIO9 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    -            MCU_OE: u1,
    -            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    -            SLP_SEL: u1,
    -            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    -            /// internal pull-down disabled.
    -            MCU_WPD: u1,
    -            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    -            /// internal pull-up disabled.
    -            MCU_WPU: u1,
    -            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    -            MCU_IE: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    -            /// pull-down disabled.
    -            FUN_WPD: u1,
    -            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    -            /// disabled.
    -            FUN_WPU: u1,
    -            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    -            FUN_IE: u1,
    -            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    -            FUN_DRV: u2,
    -            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    -            /// 2; etc.
    -            MCU_SEL: u3,
    -            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    -            FILTER_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x28);
    -
    -        /// address: 0x6000902c
    -        /// IO MUX Configure Register for pad XTAL_32K_P
    -        pub const GPIO10 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    -            MCU_OE: u1,
    -            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    -            SLP_SEL: u1,
    -            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    -            /// internal pull-down disabled.
    -            MCU_WPD: u1,
    -            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    -            /// internal pull-up disabled.
    -            MCU_WPU: u1,
    -            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    -            MCU_IE: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    -            /// pull-down disabled.
    -            FUN_WPD: u1,
    -            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    -            /// disabled.
    -            FUN_WPU: u1,
    -            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    -            FUN_IE: u1,
    -            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    -            FUN_DRV: u2,
    -            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    -            /// 2; etc.
    -            MCU_SEL: u3,
    -            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    -            FILTER_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x2c);
    -
    -        /// address: 0x60009030
    -        /// IO MUX Configure Register for pad XTAL_32K_P
    -        pub const GPIO11 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    -            MCU_OE: u1,
    -            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    -            SLP_SEL: u1,
    -            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    -            /// internal pull-down disabled.
    -            MCU_WPD: u1,
    -            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    -            /// internal pull-up disabled.
    -            MCU_WPU: u1,
    -            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    -            MCU_IE: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    -            /// pull-down disabled.
    -            FUN_WPD: u1,
    -            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    -            /// disabled.
    -            FUN_WPU: u1,
    -            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    -            FUN_IE: u1,
    -            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    -            FUN_DRV: u2,
    -            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    -            /// 2; etc.
    -            MCU_SEL: u3,
    -            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    -            FILTER_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x30);
    -
    -        /// address: 0x60009034
    -        /// IO MUX Configure Register for pad XTAL_32K_P
    -        pub const GPIO12 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    -            MCU_OE: u1,
    -            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    -            SLP_SEL: u1,
    -            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    -            /// internal pull-down disabled.
    -            MCU_WPD: u1,
    -            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    -            /// internal pull-up disabled.
    -            MCU_WPU: u1,
    -            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    -            MCU_IE: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    -            /// pull-down disabled.
    -            FUN_WPD: u1,
    -            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    -            /// disabled.
    -            FUN_WPU: u1,
    -            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    -            FUN_IE: u1,
    -            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    -            FUN_DRV: u2,
    -            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    -            /// 2; etc.
    -            MCU_SEL: u3,
    -            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    -            FILTER_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x34);
    -
    -        /// address: 0x60009038
    -        /// IO MUX Configure Register for pad XTAL_32K_P
    -        pub const GPIO13 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    -            MCU_OE: u1,
    -            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    -            SLP_SEL: u1,
    -            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    -            /// internal pull-down disabled.
    -            MCU_WPD: u1,
    -            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    -            /// internal pull-up disabled.
    -            MCU_WPU: u1,
    -            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    -            MCU_IE: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    -            /// pull-down disabled.
    -            FUN_WPD: u1,
    -            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    -            /// disabled.
    -            FUN_WPU: u1,
    -            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    -            FUN_IE: u1,
    -            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    -            FUN_DRV: u2,
    -            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    -            /// 2; etc.
    -            MCU_SEL: u3,
    -            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    -            FILTER_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x38);
    -
    -        /// address: 0x6000903c
    -        /// IO MUX Configure Register for pad XTAL_32K_P
    -        pub const GPIO14 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    -            MCU_OE: u1,
    -            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    -            SLP_SEL: u1,
    -            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    -            /// internal pull-down disabled.
    -            MCU_WPD: u1,
    -            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    -            /// internal pull-up disabled.
    -            MCU_WPU: u1,
    -            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    -            MCU_IE: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    -            /// pull-down disabled.
    -            FUN_WPD: u1,
    -            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    -            /// disabled.
    -            FUN_WPU: u1,
    -            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    -            FUN_IE: u1,
    -            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    -            FUN_DRV: u2,
    -            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    -            /// 2; etc.
    -            MCU_SEL: u3,
    -            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    -            FILTER_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x3c);
    -
    -        /// address: 0x60009040
    -        /// IO MUX Configure Register for pad XTAL_32K_P
    -        pub const GPIO15 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    -            MCU_OE: u1,
    -            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    -            SLP_SEL: u1,
    -            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    -            /// internal pull-down disabled.
    -            MCU_WPD: u1,
    -            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    -            /// internal pull-up disabled.
    -            MCU_WPU: u1,
    -            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    -            MCU_IE: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    -            /// pull-down disabled.
    -            FUN_WPD: u1,
    -            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    -            /// disabled.
    -            FUN_WPU: u1,
    -            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    -            FUN_IE: u1,
    -            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    -            FUN_DRV: u2,
    -            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    -            /// 2; etc.
    -            MCU_SEL: u3,
    -            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    -            FILTER_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x40);
    -
    -        /// address: 0x60009044
    -        /// IO MUX Configure Register for pad XTAL_32K_P
    -        pub const GPIO16 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    -            MCU_OE: u1,
    -            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    -            SLP_SEL: u1,
    -            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    -            /// internal pull-down disabled.
    -            MCU_WPD: u1,
    -            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    -            /// internal pull-up disabled.
    -            MCU_WPU: u1,
    -            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    -            MCU_IE: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    -            /// pull-down disabled.
    -            FUN_WPD: u1,
    -            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    -            /// disabled.
    -            FUN_WPU: u1,
    -            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    -            FUN_IE: u1,
    -            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    -            FUN_DRV: u2,
    -            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    -            /// 2; etc.
    -            MCU_SEL: u3,
    -            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    -            FILTER_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x44);
    -
    -        /// address: 0x60009048
    -        /// IO MUX Configure Register for pad XTAL_32K_P
    -        pub const GPIO17 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    -            MCU_OE: u1,
    -            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    -            SLP_SEL: u1,
    -            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    -            /// internal pull-down disabled.
    -            MCU_WPD: u1,
    -            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    -            /// internal pull-up disabled.
    -            MCU_WPU: u1,
    -            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    -            MCU_IE: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    -            /// pull-down disabled.
    -            FUN_WPD: u1,
    -            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    -            /// disabled.
    -            FUN_WPU: u1,
    -            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    -            FUN_IE: u1,
    -            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    -            FUN_DRV: u2,
    -            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    -            /// 2; etc.
    -            MCU_SEL: u3,
    -            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    -            FILTER_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x48);
    -
    -        /// address: 0x6000904c
    -        /// IO MUX Configure Register for pad XTAL_32K_P
    -        pub const GPIO18 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    -            MCU_OE: u1,
    -            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    -            SLP_SEL: u1,
    -            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    -            /// internal pull-down disabled.
    -            MCU_WPD: u1,
    -            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    -            /// internal pull-up disabled.
    -            MCU_WPU: u1,
    -            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    -            MCU_IE: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    -            /// pull-down disabled.
    -            FUN_WPD: u1,
    -            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    -            /// disabled.
    -            FUN_WPU: u1,
    -            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    -            FUN_IE: u1,
    -            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    -            FUN_DRV: u2,
    -            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    -            /// 2; etc.
    -            MCU_SEL: u3,
    -            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    -            FILTER_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x4c);
    -
    -        /// address: 0x60009050
    -        /// IO MUX Configure Register for pad XTAL_32K_P
    -        pub const GPIO19 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    -            MCU_OE: u1,
    -            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    -            SLP_SEL: u1,
    -            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    -            /// internal pull-down disabled.
    -            MCU_WPD: u1,
    -            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    -            /// internal pull-up disabled.
    -            MCU_WPU: u1,
    -            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    -            MCU_IE: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    -            /// pull-down disabled.
    -            FUN_WPD: u1,
    -            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    -            /// disabled.
    -            FUN_WPU: u1,
    -            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    -            FUN_IE: u1,
    -            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    -            FUN_DRV: u2,
    -            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    -            /// 2; etc.
    -            MCU_SEL: u3,
    -            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    -            FILTER_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x50);
    -
    -        /// address: 0x60009054
    -        /// IO MUX Configure Register for pad XTAL_32K_P
    -        pub const GPIO20 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    -            MCU_OE: u1,
    -            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    -            SLP_SEL: u1,
    -            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    -            /// internal pull-down disabled.
    -            MCU_WPD: u1,
    -            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    -            /// internal pull-up disabled.
    -            MCU_WPU: u1,
    -            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    -            MCU_IE: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    -            /// pull-down disabled.
    -            FUN_WPD: u1,
    -            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    -            /// disabled.
    -            FUN_WPU: u1,
    -            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    -            FUN_IE: u1,
    -            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    -            FUN_DRV: u2,
    -            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    -            /// 2; etc.
    -            MCU_SEL: u3,
    -            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    -            FILTER_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x54);
    -
    -        /// address: 0x60009058
    -        /// IO MUX Configure Register for pad XTAL_32K_P
    -        pub const GPIO21 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    -            MCU_OE: u1,
    -            /// Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    -            SLP_SEL: u1,
    -            /// Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0:
    -            /// internal pull-down disabled.
    -            MCU_WPD: u1,
    -            /// Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0:
    -            /// internal pull-up disabled.
    -            MCU_WPU: u1,
    -            /// Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    -            MCU_IE: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal
    -            /// pull-down disabled.
    -            FUN_WPD: u1,
    -            /// Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up
    -            /// disabled.
    -            FUN_WPU: u1,
    -            /// Input enable of the pad. 1: input enabled; 0: input disabled.
    -            FUN_IE: u1,
    -            /// Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    -            FUN_DRV: u2,
    -            /// Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function
    -            /// 2; etc.
    -            MCU_SEL: u3,
    -            /// Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    -            FILTER_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x58);
    -
    -        /// address: 0x600090fc
    -        /// IO MUX Version Control Register
    -        pub const DATE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Version control register
    -            REG_DATE: u28,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -        }), base_address + 0xfc);
    -    };
    -
    -    /// LED Control PWM (Pulse Width Modulation)
    -    pub const LEDC = struct {
    -        pub const base_address = 0x60019000;
    -
    -        /// address: 0x60019000
    -        /// LEDC_LSCH0_CONF0.
    -        pub const LSCH0_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_timer_sel_lsch0.
    -            TIMER_SEL_LSCH0: u2,
    -            /// reg_sig_out_en_lsch0.
    -            SIG_OUT_EN_LSCH0: u1,
    -            /// reg_idle_lv_lsch0.
    -            IDLE_LV_LSCH0: u1,
    -            /// reg_para_up_lsch0.
    -            PARA_UP_LSCH0: u1,
    -            /// reg_ovf_num_lsch0.
    -            OVF_NUM_LSCH0: u10,
    -            /// reg_ovf_cnt_en_lsch0.
    -            OVF_CNT_EN_LSCH0: u1,
    -            /// reg_ovf_cnt_reset_lsch0.
    -            OVF_CNT_RESET_LSCH0: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -        }), base_address + 0x0);
    -
    -        /// address: 0x60019004
    -        /// LEDC_LSCH0_HPOINT.
    -        pub const LSCH0_HPOINT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_hpoint_lsch0.
    -            HPOINT_LSCH0: u14,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x60019008
    -        /// LEDC_LSCH0_DUTY.
    -        pub const LSCH0_DUTY = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_duty_lsch0.
    -            DUTY_LSCH0: u19,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x6001900c
    -        /// LEDC_LSCH0_CONF1.
    -        pub const LSCH0_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_duty_scale_lsch0.
    -            DUTY_SCALE_LSCH0: u10,
    -            /// reg_duty_cycle_lsch0.
    -            DUTY_CYCLE_LSCH0: u10,
    -            /// reg_duty_num_lsch0.
    -            DUTY_NUM_LSCH0: u10,
    -            /// reg_duty_inc_lsch0.
    -            DUTY_INC_LSCH0: u1,
    -            /// reg_duty_start_lsch0.
    -            DUTY_START_LSCH0: u1,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x60019010
    -        /// LEDC_LSCH0_DUTY_R.
    -        pub const LSCH0_DUTY_R = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_duty_lsch0_r.
    -            DUTY_LSCH0_R: u19,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -        }), base_address + 0x10);
    -
    -        /// address: 0x60019014
    -        /// LEDC_LSCH1_CONF0.
    -        pub const LSCH1_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_timer_sel_lsch1.
    -            TIMER_SEL_LSCH1: u2,
    -            /// reg_sig_out_en_lsch1.
    -            SIG_OUT_EN_LSCH1: u1,
    -            /// reg_idle_lv_lsch1.
    -            IDLE_LV_LSCH1: u1,
    -            /// reg_para_up_lsch1.
    -            PARA_UP_LSCH1: u1,
    -            /// reg_ovf_num_lsch1.
    -            OVF_NUM_LSCH1: u10,
    -            /// reg_ovf_cnt_en_lsch1.
    -            OVF_CNT_EN_LSCH1: u1,
    -            /// reg_ovf_cnt_reset_lsch1.
    -            OVF_CNT_RESET_LSCH1: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -        }), base_address + 0x14);
    -
    -        /// address: 0x60019018
    -        /// LEDC_LSCH1_HPOINT.
    -        pub const LSCH1_HPOINT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_hpoint_lsch1.
    -            HPOINT_LSCH1: u14,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x6001901c
    -        /// LEDC_LSCH1_DUTY.
    -        pub const LSCH1_DUTY = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_duty_lsch1.
    -            DUTY_LSCH1: u19,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x60019020
    -        /// LEDC_LSCH1_CONF1.
    -        pub const LSCH1_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_duty_scale_lsch1.
    -            DUTY_SCALE_LSCH1: u10,
    -            /// reg_duty_cycle_lsch1.
    -            DUTY_CYCLE_LSCH1: u10,
    -            /// reg_duty_num_lsch1.
    -            DUTY_NUM_LSCH1: u10,
    -            /// reg_duty_inc_lsch1.
    -            DUTY_INC_LSCH1: u1,
    -            /// reg_duty_start_lsch1.
    -            DUTY_START_LSCH1: u1,
    -        }), base_address + 0x20);
    -
    -        /// address: 0x60019024
    -        /// LEDC_LSCH1_DUTY_R.
    -        pub const LSCH1_DUTY_R = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_duty_lsch1_r.
    -            DUTY_LSCH1_R: u19,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -        }), base_address + 0x24);
    -
    -        /// address: 0x60019028
    -        /// LEDC_LSCH2_CONF0.
    -        pub const LSCH2_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_timer_sel_lsch2.
    -            TIMER_SEL_LSCH2: u2,
    -            /// reg_sig_out_en_lsch2.
    -            SIG_OUT_EN_LSCH2: u1,
    -            /// reg_idle_lv_lsch2.
    -            IDLE_LV_LSCH2: u1,
    -            /// reg_para_up_lsch2.
    -            PARA_UP_LSCH2: u1,
    -            /// reg_ovf_num_lsch2.
    -            OVF_NUM_LSCH2: u10,
    -            /// reg_ovf_cnt_en_lsch2.
    -            OVF_CNT_EN_LSCH2: u1,
    -            /// reg_ovf_cnt_reset_lsch2.
    -            OVF_CNT_RESET_LSCH2: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -        }), base_address + 0x28);
    -
    -        /// address: 0x6001902c
    -        /// LEDC_LSCH2_HPOINT.
    -        pub const LSCH2_HPOINT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_hpoint_lsch2.
    -            HPOINT_LSCH2: u14,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -        }), base_address + 0x2c);
    -
    -        /// address: 0x60019030
    -        /// LEDC_LSCH2_DUTY.
    -        pub const LSCH2_DUTY = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_duty_lsch2.
    -            DUTY_LSCH2: u19,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -        }), base_address + 0x30);
    -
    -        /// address: 0x60019034
    -        /// LEDC_LSCH2_CONF1.
    -        pub const LSCH2_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_duty_scale_lsch2.
    -            DUTY_SCALE_LSCH2: u10,
    -            /// reg_duty_cycle_lsch2.
    -            DUTY_CYCLE_LSCH2: u10,
    -            /// reg_duty_num_lsch2.
    -            DUTY_NUM_LSCH2: u10,
    -            /// reg_duty_inc_lsch2.
    -            DUTY_INC_LSCH2: u1,
    -            /// reg_duty_start_lsch2.
    -            DUTY_START_LSCH2: u1,
    -        }), base_address + 0x34);
    -
    -        /// address: 0x60019038
    -        /// LEDC_LSCH2_DUTY_R.
    -        pub const LSCH2_DUTY_R = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_duty_lsch2_r.
    -            DUTY_LSCH2_R: u19,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -        }), base_address + 0x38);
    -
    -        /// address: 0x6001903c
    -        /// LEDC_LSCH3_CONF0.
    -        pub const LSCH3_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_timer_sel_lsch3.
    -            TIMER_SEL_LSCH3: u2,
    -            /// reg_sig_out_en_lsch3.
    -            SIG_OUT_EN_LSCH3: u1,
    -            /// reg_idle_lv_lsch3.
    -            IDLE_LV_LSCH3: u1,
    -            /// reg_para_up_lsch3.
    -            PARA_UP_LSCH3: u1,
    -            /// reg_ovf_num_lsch3.
    -            OVF_NUM_LSCH3: u10,
    -            /// reg_ovf_cnt_en_lsch3.
    -            OVF_CNT_EN_LSCH3: u1,
    -            /// reg_ovf_cnt_reset_lsch3.
    -            OVF_CNT_RESET_LSCH3: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -        }), base_address + 0x3c);
    -
    -        /// address: 0x60019040
    -        /// LEDC_LSCH3_HPOINT.
    -        pub const LSCH3_HPOINT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_hpoint_lsch3.
    -            HPOINT_LSCH3: u14,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -        }), base_address + 0x40);
    -
    -        /// address: 0x60019044
    -        /// LEDC_LSCH3_DUTY.
    -        pub const LSCH3_DUTY = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_duty_lsch3.
    -            DUTY_LSCH3: u19,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -        }), base_address + 0x44);
    -
    -        /// address: 0x60019048
    -        /// LEDC_LSCH3_CONF1.
    -        pub const LSCH3_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_duty_scale_lsch3.
    -            DUTY_SCALE_LSCH3: u10,
    -            /// reg_duty_cycle_lsch3.
    -            DUTY_CYCLE_LSCH3: u10,
    -            /// reg_duty_num_lsch3.
    -            DUTY_NUM_LSCH3: u10,
    -            /// reg_duty_inc_lsch3.
    -            DUTY_INC_LSCH3: u1,
    -            /// reg_duty_start_lsch3.
    -            DUTY_START_LSCH3: u1,
    -        }), base_address + 0x48);
    -
    -        /// address: 0x6001904c
    -        /// LEDC_LSCH3_DUTY_R.
    -        pub const LSCH3_DUTY_R = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_duty_lsch3_r.
    -            DUTY_LSCH3_R: u19,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -        }), base_address + 0x4c);
    -
    -        /// address: 0x60019050
    -        /// LEDC_LSCH4_CONF0.
    -        pub const LSCH4_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_timer_sel_lsch4.
    -            TIMER_SEL_LSCH4: u2,
    -            /// reg_sig_out_en_lsch4.
    -            SIG_OUT_EN_LSCH4: u1,
    -            /// reg_idle_lv_lsch4.
    -            IDLE_LV_LSCH4: u1,
    -            /// reg_para_up_lsch4.
    -            PARA_UP_LSCH4: u1,
    -            /// reg_ovf_num_lsch4.
    -            OVF_NUM_LSCH4: u10,
    -            /// reg_ovf_cnt_en_lsch4.
    -            OVF_CNT_EN_LSCH4: u1,
    -            /// reg_ovf_cnt_reset_lsch4.
    -            OVF_CNT_RESET_LSCH4: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -        }), base_address + 0x50);
    -
    -        /// address: 0x60019054
    -        /// LEDC_LSCH4_HPOINT.
    -        pub const LSCH4_HPOINT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_hpoint_lsch4.
    -            HPOINT_LSCH4: u14,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -        }), base_address + 0x54);
    -
    -        /// address: 0x60019058
    -        /// LEDC_LSCH4_DUTY.
    -        pub const LSCH4_DUTY = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_duty_lsch4.
    -            DUTY_LSCH4: u19,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -        }), base_address + 0x58);
    -
    -        /// address: 0x6001905c
    -        /// LEDC_LSCH4_CONF1.
    -        pub const LSCH4_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_duty_scale_lsch4.
    -            DUTY_SCALE_LSCH4: u10,
    -            /// reg_duty_cycle_lsch4.
    -            DUTY_CYCLE_LSCH4: u10,
    -            /// reg_duty_num_lsch4.
    -            DUTY_NUM_LSCH4: u10,
    -            /// reg_duty_inc_lsch4.
    -            DUTY_INC_LSCH4: u1,
    -            /// reg_duty_start_lsch4.
    -            DUTY_START_LSCH4: u1,
    -        }), base_address + 0x5c);
    -
    -        /// address: 0x60019060
    -        /// LEDC_LSCH4_DUTY_R.
    -        pub const LSCH4_DUTY_R = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_duty_lsch4_r.
    -            DUTY_LSCH4_R: u19,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -        }), base_address + 0x60);
    -
    -        /// address: 0x60019064
    -        /// LEDC_LSCH5_CONF0.
    -        pub const LSCH5_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_timer_sel_lsch5.
    -            TIMER_SEL_LSCH5: u2,
    -            /// reg_sig_out_en_lsch5.
    -            SIG_OUT_EN_LSCH5: u1,
    -            /// reg_idle_lv_lsch5.
    -            IDLE_LV_LSCH5: u1,
    -            /// reg_para_up_lsch5.
    -            PARA_UP_LSCH5: u1,
    -            /// reg_ovf_num_lsch5.
    -            OVF_NUM_LSCH5: u10,
    -            /// reg_ovf_cnt_en_lsch5.
    -            OVF_CNT_EN_LSCH5: u1,
    -            /// reg_ovf_cnt_reset_lsch5.
    -            OVF_CNT_RESET_LSCH5: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -        }), base_address + 0x64);
    -
    -        /// address: 0x60019068
    -        /// LEDC_LSCH5_HPOINT.
    -        pub const LSCH5_HPOINT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_hpoint_lsch5.
    -            HPOINT_LSCH5: u14,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -        }), base_address + 0x68);
    -
    -        /// address: 0x6001906c
    -        /// LEDC_LSCH5_DUTY.
    -        pub const LSCH5_DUTY = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_duty_lsch5.
    -            DUTY_LSCH5: u19,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -        }), base_address + 0x6c);
    -
    -        /// address: 0x60019070
    -        /// LEDC_LSCH5_CONF1.
    -        pub const LSCH5_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_duty_scale_lsch5.
    -            DUTY_SCALE_LSCH5: u10,
    -            /// reg_duty_cycle_lsch5.
    -            DUTY_CYCLE_LSCH5: u10,
    -            /// reg_duty_num_lsch5.
    -            DUTY_NUM_LSCH5: u10,
    -            /// reg_duty_inc_lsch5.
    -            DUTY_INC_LSCH5: u1,
    -            /// reg_duty_start_lsch5.
    -            DUTY_START_LSCH5: u1,
    -        }), base_address + 0x70);
    -
    -        /// address: 0x60019074
    -        /// LEDC_LSCH5_DUTY_R.
    -        pub const LSCH5_DUTY_R = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_duty_lsch5_r.
    -            DUTY_LSCH5_R: u19,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -        }), base_address + 0x74);
    -
    -        /// address: 0x600190a0
    -        /// LEDC_LSTIMER0_CONF.
    -        pub const LSTIMER0_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_lstimer0_duty_res.
    -            LSTIMER0_DUTY_RES: u4,
    -            /// reg_clk_div_lstimer0.
    -            CLK_DIV_LSTIMER0: u18,
    -            /// reg_lstimer0_pause.
    -            LSTIMER0_PAUSE: u1,
    -            /// reg_lstimer0_rst.
    -            LSTIMER0_RST: u1,
    -            /// reg_tick_sel_lstimer0.
    -            TICK_SEL_LSTIMER0: u1,
    -            /// reg_lstimer0_para_up.
    -            LSTIMER0_PARA_UP: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -        }), base_address + 0xa0);
    -
    -        /// address: 0x600190a4
    -        /// LEDC_LSTIMER0_VALUE.
    -        pub const LSTIMER0_VALUE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_lstimer0_cnt.
    -            LSTIMER0_CNT: u14,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -        }), base_address + 0xa4);
    -
    -        /// address: 0x600190a8
    -        /// LEDC_LSTIMER1_CONF.
    -        pub const LSTIMER1_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_lstimer1_duty_res.
    -            LSTIMER1_DUTY_RES: u4,
    -            /// reg_clk_div_lstimer1.
    -            CLK_DIV_LSTIMER1: u18,
    -            /// reg_lstimer1_pause.
    -            LSTIMER1_PAUSE: u1,
    -            /// reg_lstimer1_rst.
    -            LSTIMER1_RST: u1,
    -            /// reg_tick_sel_lstimer1.
    -            TICK_SEL_LSTIMER1: u1,
    -            /// reg_lstimer1_para_up.
    -            LSTIMER1_PARA_UP: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -        }), base_address + 0xa8);
    -
    -        /// address: 0x600190ac
    -        /// LEDC_LSTIMER1_VALUE.
    -        pub const LSTIMER1_VALUE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_lstimer1_cnt.
    -            LSTIMER1_CNT: u14,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -        }), base_address + 0xac);
    -
    -        /// address: 0x600190b0
    -        /// LEDC_LSTIMER2_CONF.
    -        pub const LSTIMER2_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_lstimer2_duty_res.
    -            LSTIMER2_DUTY_RES: u4,
    -            /// reg_clk_div_lstimer2.
    -            CLK_DIV_LSTIMER2: u18,
    -            /// reg_lstimer2_pause.
    -            LSTIMER2_PAUSE: u1,
    -            /// reg_lstimer2_rst.
    -            LSTIMER2_RST: u1,
    -            /// reg_tick_sel_lstimer2.
    -            TICK_SEL_LSTIMER2: u1,
    -            /// reg_lstimer2_para_up.
    -            LSTIMER2_PARA_UP: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -        }), base_address + 0xb0);
    -
    -        /// address: 0x600190b4
    -        /// LEDC_LSTIMER2_VALUE.
    -        pub const LSTIMER2_VALUE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_lstimer2_cnt.
    -            LSTIMER2_CNT: u14,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -        }), base_address + 0xb4);
    -
    -        /// address: 0x600190b8
    -        /// LEDC_LSTIMER3_CONF.
    -        pub const LSTIMER3_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_lstimer3_duty_res.
    -            LSTIMER3_DUTY_RES: u4,
    -            /// reg_clk_div_lstimer3.
    -            CLK_DIV_LSTIMER3: u18,
    -            /// reg_lstimer3_pause.
    -            LSTIMER3_PAUSE: u1,
    -            /// reg_lstimer3_rst.
    -            LSTIMER3_RST: u1,
    -            /// reg_tick_sel_lstimer3.
    -            TICK_SEL_LSTIMER3: u1,
    -            /// reg_lstimer3_para_up.
    -            LSTIMER3_PARA_UP: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -        }), base_address + 0xb8);
    -
    -        /// address: 0x600190bc
    -        /// LEDC_LSTIMER3_VALUE.
    -        pub const LSTIMER3_VALUE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_lstimer3_cnt.
    -            LSTIMER3_CNT: u14,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -        }), base_address + 0xbc);
    -
    -        /// address: 0x600190c0
    -        /// LEDC_INT_RAW.
    -        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_lstimer0_ovf_int_raw.
    -            LSTIMER0_OVF_INT_RAW: u1,
    -            /// reg_lstimer1_ovf_int_raw.
    -            LSTIMER1_OVF_INT_RAW: u1,
    -            /// reg_lstimer2_ovf_int_raw.
    -            LSTIMER2_OVF_INT_RAW: u1,
    -            /// reg_lstimer3_ovf_int_raw.
    -            LSTIMER3_OVF_INT_RAW: u1,
    -            /// reg_duty_chng_end_lsch0_int_raw.
    -            DUTY_CHNG_END_LSCH0_INT_RAW: u1,
    -            /// reg_duty_chng_end_lsch1_int_raw.
    -            DUTY_CHNG_END_LSCH1_INT_RAW: u1,
    -            /// reg_duty_chng_end_lsch2_int_raw.
    -            DUTY_CHNG_END_LSCH2_INT_RAW: u1,
    -            /// reg_duty_chng_end_lsch3_int_raw.
    -            DUTY_CHNG_END_LSCH3_INT_RAW: u1,
    -            /// reg_duty_chng_end_lsch4_int_raw.
    -            DUTY_CHNG_END_LSCH4_INT_RAW: u1,
    -            /// reg_duty_chng_end_lsch5_int_raw.
    -            DUTY_CHNG_END_LSCH5_INT_RAW: u1,
    -            /// reg_ovf_cnt_lsch0_int_raw.
    -            OVF_CNT_LSCH0_INT_RAW: u1,
    -            /// reg_ovf_cnt_lsch1_int_raw.
    -            OVF_CNT_LSCH1_INT_RAW: u1,
    -            /// reg_ovf_cnt_lsch2_int_raw.
    -            OVF_CNT_LSCH2_INT_RAW: u1,
    -            /// reg_ovf_cnt_lsch3_int_raw.
    -            OVF_CNT_LSCH3_INT_RAW: u1,
    -            /// reg_ovf_cnt_lsch4_int_raw.
    -            OVF_CNT_LSCH4_INT_RAW: u1,
    -            /// reg_ovf_cnt_lsch5_int_raw.
    -            OVF_CNT_LSCH5_INT_RAW: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0xc0);
    -
    -        /// address: 0x600190c4
    -        /// LEDC_INT_ST.
    -        pub const INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_lstimer0_ovf_int_st.
    -            LSTIMER0_OVF_INT_ST: u1,
    -            /// reg_lstimer1_ovf_int_st.
    -            LSTIMER1_OVF_INT_ST: u1,
    -            /// reg_lstimer2_ovf_int_st.
    -            LSTIMER2_OVF_INT_ST: u1,
    -            /// reg_lstimer3_ovf_int_st.
    -            LSTIMER3_OVF_INT_ST: u1,
    -            /// reg_duty_chng_end_lsch0_int_st.
    -            DUTY_CHNG_END_LSCH0_INT_ST: u1,
    -            /// reg_duty_chng_end_lsch1_int_st.
    -            DUTY_CHNG_END_LSCH1_INT_ST: u1,
    -            /// reg_duty_chng_end_lsch2_int_st.
    -            DUTY_CHNG_END_LSCH2_INT_ST: u1,
    -            /// reg_duty_chng_end_lsch3_int_st.
    -            DUTY_CHNG_END_LSCH3_INT_ST: u1,
    -            /// reg_duty_chng_end_lsch4_int_st.
    -            DUTY_CHNG_END_LSCH4_INT_ST: u1,
    -            /// reg_duty_chng_end_lsch5_int_st.
    -            DUTY_CHNG_END_LSCH5_INT_ST: u1,
    -            /// reg_ovf_cnt_lsch0_int_st.
    -            OVF_CNT_LSCH0_INT_ST: u1,
    -            /// reg_ovf_cnt_lsch1_int_st.
    -            OVF_CNT_LSCH1_INT_ST: u1,
    -            /// reg_ovf_cnt_lsch2_int_st.
    -            OVF_CNT_LSCH2_INT_ST: u1,
    -            /// reg_ovf_cnt_lsch3_int_st.
    -            OVF_CNT_LSCH3_INT_ST: u1,
    -            /// reg_ovf_cnt_lsch4_int_st.
    -            OVF_CNT_LSCH4_INT_ST: u1,
    -            /// reg_ovf_cnt_lsch5_int_st.
    -            OVF_CNT_LSCH5_INT_ST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0xc4);
    -
    -        /// address: 0x600190c8
    -        /// LEDC_INT_ENA.
    -        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_lstimer0_ovf_int_ena.
    -            LSTIMER0_OVF_INT_ENA: u1,
    -            /// reg_lstimer1_ovf_int_ena.
    -            LSTIMER1_OVF_INT_ENA: u1,
    -            /// reg_lstimer2_ovf_int_ena.
    -            LSTIMER2_OVF_INT_ENA: u1,
    -            /// reg_lstimer3_ovf_int_ena.
    -            LSTIMER3_OVF_INT_ENA: u1,
    -            /// reg_duty_chng_end_lsch0_int_ena.
    -            DUTY_CHNG_END_LSCH0_INT_ENA: u1,
    -            /// reg_duty_chng_end_lsch1_int_ena.
    -            DUTY_CHNG_END_LSCH1_INT_ENA: u1,
    -            /// reg_duty_chng_end_lsch2_int_ena.
    -            DUTY_CHNG_END_LSCH2_INT_ENA: u1,
    -            /// reg_duty_chng_end_lsch3_int_ena.
    -            DUTY_CHNG_END_LSCH3_INT_ENA: u1,
    -            /// reg_duty_chng_end_lsch4_int_ena.
    -            DUTY_CHNG_END_LSCH4_INT_ENA: u1,
    -            /// reg_duty_chng_end_lsch5_int_ena.
    -            DUTY_CHNG_END_LSCH5_INT_ENA: u1,
    -            /// reg_ovf_cnt_lsch0_int_ena.
    -            OVF_CNT_LSCH0_INT_ENA: u1,
    -            /// reg_ovf_cnt_lsch1_int_ena.
    -            OVF_CNT_LSCH1_INT_ENA: u1,
    -            /// reg_ovf_cnt_lsch2_int_ena.
    -            OVF_CNT_LSCH2_INT_ENA: u1,
    -            /// reg_ovf_cnt_lsch3_int_ena.
    -            OVF_CNT_LSCH3_INT_ENA: u1,
    -            /// reg_ovf_cnt_lsch4_int_ena.
    -            OVF_CNT_LSCH4_INT_ENA: u1,
    -            /// reg_ovf_cnt_lsch5_int_ena.
    -            OVF_CNT_LSCH5_INT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0xc8);
    -
    -        /// address: 0x600190cc
    -        /// LEDC_INT_CLR.
    -        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_lstimer0_ovf_int_clr.
    -            LSTIMER0_OVF_INT_CLR: u1,
    -            /// reg_lstimer1_ovf_int_clr.
    -            LSTIMER1_OVF_INT_CLR: u1,
    -            /// reg_lstimer2_ovf_int_clr.
    -            LSTIMER2_OVF_INT_CLR: u1,
    -            /// reg_lstimer3_ovf_int_clr.
    -            LSTIMER3_OVF_INT_CLR: u1,
    -            /// reg_duty_chng_end_lsch0_int_clr.
    -            DUTY_CHNG_END_LSCH0_INT_CLR: u1,
    -            /// reg_duty_chng_end_lsch1_int_clr.
    -            DUTY_CHNG_END_LSCH1_INT_CLR: u1,
    -            /// reg_duty_chng_end_lsch2_int_clr.
    -            DUTY_CHNG_END_LSCH2_INT_CLR: u1,
    -            /// reg_duty_chng_end_lsch3_int_clr.
    -            DUTY_CHNG_END_LSCH3_INT_CLR: u1,
    -            /// reg_duty_chng_end_lsch4_int_clr.
    -            DUTY_CHNG_END_LSCH4_INT_CLR: u1,
    -            /// reg_duty_chng_end_lsch5_int_clr.
    -            DUTY_CHNG_END_LSCH5_INT_CLR: u1,
    -            /// reg_ovf_cnt_lsch0_int_clr.
    -            OVF_CNT_LSCH0_INT_CLR: u1,
    -            /// reg_ovf_cnt_lsch1_int_clr.
    -            OVF_CNT_LSCH1_INT_CLR: u1,
    -            /// reg_ovf_cnt_lsch2_int_clr.
    -            OVF_CNT_LSCH2_INT_CLR: u1,
    -            /// reg_ovf_cnt_lsch3_int_clr.
    -            OVF_CNT_LSCH3_INT_CLR: u1,
    -            /// reg_ovf_cnt_lsch4_int_clr.
    -            OVF_CNT_LSCH4_INT_CLR: u1,
    -            /// reg_ovf_cnt_lsch5_int_clr.
    -            OVF_CNT_LSCH5_INT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0xcc);
    -
    -        /// address: 0x600190d0
    -        /// LEDC_CONF.
    -        pub const CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_apb_clk_sel.
    -            APB_CLK_SEL: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            reserved25: u1,
    -            reserved26: u1,
    -            reserved27: u1,
    -            reserved28: u1,
    -            /// reg_clk_en.
    -            CLK_EN: u1,
    -        }), base_address + 0xd0);
    -
    -        /// address: 0x600190fc
    -        /// LEDC_DATE.
    -        pub const DATE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_ledc_date.
    -            LEDC_DATE: u32,
    -        }), base_address + 0xfc);
    -    };
    -
    -    /// Remote Control Peripheral
    -    pub const RMT = struct {
    -        pub const base_address = 0x60016000;
    -
    -        /// address: 0x60016000
    -        /// RMT_CH0DATA_REG.
    -        pub const CH0DATA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Reserved.
    -            DATA: u32,
    -        }), base_address + 0x0);
    -
    -        /// address: 0x60016004
    -        /// RMT_CH1DATA_REG.
    -        pub const CH1DATA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Reserved.
    -            DATA: u32,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x60016008
    -        /// RMT_CH2DATA_REG.
    -        pub const CH2DATA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Reserved.
    -            DATA: u32,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x6001600c
    -        /// RMT_CH3DATA_REG.
    -        pub const CH3DATA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Reserved.
    -            DATA: u32,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x60016010
    -        /// RMT_CH%sCONF%s_REG.
    -        pub const CH0_TX_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_tx_start_ch0.
    -            TX_START: u1,
    -            /// reg_mem_rd_rst_ch0.
    -            MEM_RD_RST: u1,
    -            /// reg_apb_mem_rst_ch0.
    -            APB_MEM_RST: u1,
    -            /// reg_tx_conti_mode_ch0.
    -            TX_CONTI_MODE: u1,
    -            /// reg_mem_tx_wrap_en_ch0.
    -            MEM_TX_WRAP_EN: u1,
    -            /// reg_idle_out_lv_ch0.
    -            IDLE_OUT_LV: u1,
    -            /// reg_idle_out_en_ch0.
    -            IDLE_OUT_EN: u1,
    -            /// reg_tx_stop_ch0.
    -            TX_STOP: u1,
    -            /// reg_div_cnt_ch0.
    -            DIV_CNT: u8,
    -            /// reg_mem_size_ch0.
    -            MEM_SIZE: u3,
    -            reserved0: u1,
    -            /// reg_carrier_eff_en_ch0.
    -            CARRIER_EFF_EN: u1,
    -            /// reg_carrier_en_ch0.
    -            CARRIER_EN: u1,
    -            /// reg_carrier_out_lv_ch0.
    -            CARRIER_OUT_LV: u1,
    -            /// reg_afifo_rst_ch0.
    -            AFIFO_RST: u1,
    -            /// reg_reg_conf_update_ch0.
    -            CONF_UPDATE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -        }), base_address + 0x10);
    -
    -        /// address: 0x60016014
    -        /// RMT_CH%sCONF%s_REG.
    -        pub const CH1_TX_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_tx_start_ch0.
    -            TX_START: u1,
    -            /// reg_mem_rd_rst_ch0.
    -            MEM_RD_RST: u1,
    -            /// reg_apb_mem_rst_ch0.
    -            APB_MEM_RST: u1,
    -            /// reg_tx_conti_mode_ch0.
    -            TX_CONTI_MODE: u1,
    -            /// reg_mem_tx_wrap_en_ch0.
    -            MEM_TX_WRAP_EN: u1,
    -            /// reg_idle_out_lv_ch0.
    -            IDLE_OUT_LV: u1,
    -            /// reg_idle_out_en_ch0.
    -            IDLE_OUT_EN: u1,
    -            /// reg_tx_stop_ch0.
    -            TX_STOP: u1,
    -            /// reg_div_cnt_ch0.
    -            DIV_CNT: u8,
    -            /// reg_mem_size_ch0.
    -            MEM_SIZE: u3,
    -            reserved0: u1,
    -            /// reg_carrier_eff_en_ch0.
    -            CARRIER_EFF_EN: u1,
    -            /// reg_carrier_en_ch0.
    -            CARRIER_EN: u1,
    -            /// reg_carrier_out_lv_ch0.
    -            CARRIER_OUT_LV: u1,
    -            /// reg_afifo_rst_ch0.
    -            AFIFO_RST: u1,
    -            /// reg_reg_conf_update_ch0.
    -            CONF_UPDATE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -        }), base_address + 0x14);
    -
    -        /// address: 0x60016018
    -        /// RMT_CH2CONF0_REG.
    -        pub const CH2_RX_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_div_cnt_ch2.
    -            DIV_CNT: u8,
    -            /// reg_idle_thres_ch2.
    -            IDLE_THRES: u15,
    -            /// reg_mem_size_ch2.
    -            MEM_SIZE: u3,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// reg_carrier_en_ch2.
    -            CARRIER_EN: u1,
    -            /// reg_carrier_out_lv_ch2.
    -            CARRIER_OUT_LV: u1,
    -            padding0: u1,
    -            padding1: u1,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x60016020
    -        /// RMT_CH2CONF0_REG.
    -        pub const CH3_RX_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_div_cnt_ch2.
    -            DIV_CNT: u8,
    -            /// reg_idle_thres_ch2.
    -            IDLE_THRES: u15,
    -            /// reg_mem_size_ch2.
    -            MEM_SIZE: u3,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// reg_carrier_en_ch2.
    -            CARRIER_EN: u1,
    -            /// reg_carrier_out_lv_ch2.
    -            CARRIER_OUT_LV: u1,
    -            padding0: u1,
    -            padding1: u1,
    -        }), base_address + 0x20);
    -
    -        /// address: 0x6001601c
    -        /// RMT_CH2CONF1_REG.
    -        pub const CH2CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_rx_en_ch2.
    -            RX_EN: u1,
    -            /// reg_mem_wr_rst_ch2.
    -            MEM_WR_RST: u1,
    -            /// reg_apb_mem_rst_ch2.
    -            APB_MEM_RST: u1,
    -            /// reg_mem_owner_ch2.
    -            MEM_OWNER: u1,
    -            /// reg_rx_filter_en_ch2.
    -            RX_FILTER_EN: u1,
    -            /// reg_rx_filter_thres_ch2.
    -            RX_FILTER_THRES: u8,
    -            /// reg_mem_rx_wrap_en_ch2.
    -            MEM_RX_WRAP_EN: u1,
    -            /// reg_afifo_rst_ch2.
    -            AFIFO_RST: u1,
    -            /// reg_conf_update_ch2.
    -            CONF_UPDATE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x60016024
    -        /// RMT_CH3CONF1_REG.
    -        pub const CH3CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_rx_en_ch3.
    -            RX_EN: u1,
    -            /// reg_mem_wr_rst_ch3.
    -            MEM_WR_RST: u1,
    -            /// reg_apb_mem_rst_ch3.
    -            APB_MEM_RST: u1,
    -            /// reg_mem_owner_ch3.
    -            MEM_OWNER: u1,
    -            /// reg_rx_filter_en_ch3.
    -            RX_FILTER_EN: u1,
    -            /// reg_rx_filter_thres_ch3.
    -            RX_FILTER_THRES: u8,
    -            /// reg_mem_rx_wrap_en_ch3.
    -            MEM_RX_WRAP_EN: u1,
    -            /// reg_afifo_rst_ch3.
    -            AFIFO_RST: u1,
    -            /// reg_conf_update_ch3.
    -            CONF_UPDATE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x24);
    -
    -        /// address: 0x60016028
    -        /// RMT_CH0STATUS_REG.
    -        pub const CH0STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_mem_raddr_ex_ch0.
    -            MEM_RADDR_EX: u9,
    -            /// reg_state_ch0.
    -            STATE: u3,
    -            /// reg_apb_mem_waddr_ch0.
    -            APB_MEM_WADDR: u9,
    -            /// reg_apb_mem_rd_err_ch0.
    -            APB_MEM_RD_ERR: u1,
    -            /// reg_mem_empty_ch0.
    -            MEM_EMPTY: u1,
    -            /// reg_apb_mem_wr_err_ch0.
    -            APB_MEM_WR_ERR: u1,
    -            /// reg_apb_mem_raddr_ch0.
    -            APB_MEM_RADDR: u8,
    -        }), base_address + 0x28);
    -
    -        /// address: 0x6001602c
    -        /// RMT_CH1STATUS_REG.
    -        pub const CH1STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_mem_raddr_ex_ch1.
    -            MEM_RADDR_EX: u9,
    -            /// reg_state_ch1.
    -            STATE: u3,
    -            /// reg_apb_mem_waddr_ch1.
    -            APB_MEM_WADDR: u9,
    -            /// reg_apb_mem_rd_err_ch1.
    -            APB_MEM_RD_ERR: u1,
    -            /// reg_mem_empty_ch1.
    -            MEM_EMPTY: u1,
    -            /// reg_apb_mem_wr_err_ch1.
    -            APB_MEM_WR_ERR: u1,
    -            /// reg_apb_mem_raddr_ch1.
    -            APB_MEM_RADDR: u8,
    -        }), base_address + 0x2c);
    -
    -        /// address: 0x60016030
    -        /// RMT_CH2STATUS_REG.
    -        pub const CH2STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_mem_waddr_ex_ch2.
    -            MEM_WADDR_EX: u9,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            /// reg_apb_mem_raddr_ch2.
    -            APB_MEM_RADDR: u9,
    -            reserved3: u1,
    -            /// reg_state_ch2.
    -            STATE: u3,
    -            /// reg_mem_owner_err_ch2.
    -            MEM_OWNER_ERR: u1,
    -            /// reg_mem_full_ch2.
    -            MEM_FULL: u1,
    -            /// reg_apb_mem_rd_err_ch2.
    -            APB_MEM_RD_ERR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -        }), base_address + 0x30);
    -
    -        /// address: 0x60016034
    -        /// RMT_CH3STATUS_REG.
    -        pub const CH3STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_mem_waddr_ex_ch3.
    -            MEM_WADDR_EX: u9,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            /// reg_apb_mem_raddr_ch3.
    -            APB_MEM_RADDR: u9,
    -            reserved3: u1,
    -            /// reg_state_ch3.
    -            STATE: u3,
    -            /// reg_mem_owner_err_ch3.
    -            MEM_OWNER_ERR: u1,
    -            /// reg_mem_full_ch3.
    -            MEM_FULL: u1,
    -            /// reg_apb_mem_rd_err_ch3.
    -            APB_MEM_RD_ERR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -        }), base_address + 0x34);
    -
    -        /// address: 0x60016038
    -        /// RMT_INT_RAW_REG.
    -        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    -            CH0_TX_END_INT_RAW: u1,
    -            CH1_TX_END_INT_RAW: u1,
    -            CH2_RX_END_INT_RAW: u1,
    -            CH3_RX_END_INT_RAW: u1,
    -            CH0_TX_ERR_INT_RAW: u1,
    -            CH1_TX_ERR_INT_RAW: u1,
    -            CH2_RX_ERR_INT_RAW: u1,
    -            CH3_RX_ERR_INT_RAW: u1,
    -            CH0_TX_THR_EVENT_INT_RAW: u1,
    -            CH1_TX_THR_EVENT_INT_RAW: u1,
    -            /// reg_ch2_rx_thr_event_int_raw.
    -            CH2_RX_THR_EVENT_INT_RAW: u1,
    -            /// reg_ch3_rx_thr_event_int_raw.
    -            CH3_RX_THR_EVENT_INT_RAW: u1,
    -            CH0_TX_LOOP_INT_RAW: u1,
    -            CH1_TX_LOOP_INT_RAW: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -        }), base_address + 0x38);
    -
    -        /// address: 0x6001603c
    -        /// RMT_INT_ST_REG.
    -        pub const INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            CH0_TX_END_INT_ST: u1,
    -            CH1_TX_END_INT_ST: u1,
    -            CH2_RX_END_INT_ST: u1,
    -            CH3_RX_END_INT_ST: u1,
    -            CH0_TX_ERR_INT_ST: u1,
    -            CH1_TX_ERR_INT_ST: u1,
    -            CH2_RX_ERR_INT_ST: u1,
    -            CH3_RX_ERR_INT_ST: u1,
    -            CH0_TX_THR_EVENT_INT_ST: u1,
    -            CH1_TX_THR_EVENT_INT_ST: u1,
    -            /// reg_ch2_rx_thr_event_int_st.
    -            CH2_RX_THR_EVENT_INT_ST: u1,
    -            /// reg_ch3_rx_thr_event_int_st.
    -            CH3_RX_THR_EVENT_INT_ST: u1,
    -            CH0_TX_LOOP_INT_ST: u1,
    -            CH1_TX_LOOP_INT_ST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -        }), base_address + 0x3c);
    -
    -        /// address: 0x60016040
    -        /// RMT_INT_ENA_REG.
    -        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    -            CH0_TX_END_INT_ENA: u1,
    -            CH1_TX_END_INT_ENA: u1,
    -            CH2_RX_END_INT_ENA: u1,
    -            CH3_RX_END_INT_ENA: u1,
    -            CH0_TX_ERR_INT_ENA: u1,
    -            CH1_TX_ERR_INT_ENA: u1,
    -            CH2_RX_ERR_INT_ENA: u1,
    -            CH3_RX_ERR_INT_ENA: u1,
    -            CH0_TX_THR_EVENT_INT_ENA: u1,
    -            CH1_TX_THR_EVENT_INT_ENA: u1,
    -            /// reg_ch2_rx_thr_event_int_ena.
    -            CH2_RX_THR_EVENT_INT_ENA: u1,
    -            /// reg_ch3_rx_thr_event_int_ena.
    -            CH3_RX_THR_EVENT_INT_ENA: u1,
    -            CH0_TX_LOOP_INT_ENA: u1,
    -            CH1_TX_LOOP_INT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -        }), base_address + 0x40);
    -
    -        /// address: 0x60016044
    -        /// RMT_INT_CLR_REG.
    -        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    -            CH0_TX_END_INT_CLR: u1,
    -            CH1_TX_END_INT_CLR: u1,
    -            CH2_RX_END_INT_CLR: u1,
    -            CH3_RX_END_INT_CLR: u1,
    -            CH0_TX_ERR_INT_CLR: u1,
    -            CH1_TX_ERR_INT_CLR: u1,
    -            CH2_RX_ERR_INT_CLR: u1,
    -            CH3_RX_ERR_INT_CLR: u1,
    -            CH0_TX_THR_EVENT_INT_CLR: u1,
    -            CH1_TX_THR_EVENT_INT_CLR: u1,
    -            /// reg_ch2_rx_thr_event_int_clr.
    -            CH2_RX_THR_EVENT_INT_CLR: u1,
    -            /// reg_ch3_rx_thr_event_int_clr.
    -            CH3_RX_THR_EVENT_INT_CLR: u1,
    -            CH0_TX_LOOP_INT_CLR: u1,
    -            CH1_TX_LOOP_INT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -        }), base_address + 0x44);
    -
    -        /// address: 0x60016048
    -        /// RMT_CH0CARRIER_DUTY_REG.
    -        pub const CH0CARRIER_DUTY = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_carrier_low_ch0.
    -            CARRIER_LOW: u16,
    -            /// reg_carrier_high_ch0.
    -            CARRIER_HIGH: u16,
    -        }), base_address + 0x48);
    -
    -        /// address: 0x6001604c
    -        /// RMT_CH1CARRIER_DUTY_REG.
    -        pub const CH1CARRIER_DUTY = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_carrier_low_ch1.
    -            CARRIER_LOW: u16,
    -            /// reg_carrier_high_ch1.
    -            CARRIER_HIGH: u16,
    -        }), base_address + 0x4c);
    -
    -        /// address: 0x60016050
    -        /// RMT_CH2_RX_CARRIER_RM_REG.
    -        pub const CH2_RX_CARRIER_RM = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_carrier_low_thres_ch2.
    -            CARRIER_LOW_THRES: u16,
    -            /// reg_carrier_high_thres_ch2.
    -            CARRIER_HIGH_THRES: u16,
    -        }), base_address + 0x50);
    -
    -        /// address: 0x60016054
    -        /// RMT_CH3_RX_CARRIER_RM_REG.
    -        pub const CH3_RX_CARRIER_RM = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_carrier_low_thres_ch3.
    -            CARRIER_LOW_THRES: u16,
    -            /// reg_carrier_high_thres_ch3.
    -            CARRIER_HIGH_THRES: u16,
    -        }), base_address + 0x54);
    -
    -        /// address: 0x60016058
    -        /// RMT_CH%s_TX_LIM_REG.
    -        pub const CH0_TX_LIM = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_rmt_tx_lim_ch0.
    -            TX_LIM: u9,
    -            /// reg_rmt_tx_loop_num_ch0.
    -            TX_LOOP_NUM: u10,
    -            /// reg_rmt_tx_loop_cnt_en_ch0.
    -            TX_LOOP_CNT_EN: u1,
    -            /// reg_loop_count_reset_ch0.
    -            LOOP_COUNT_RESET: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -        }), base_address + 0x58);
    -
    -        /// address: 0x6001605c
    -        /// RMT_CH%s_TX_LIM_REG.
    -        pub const CH1_TX_LIM = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_rmt_tx_lim_ch0.
    -            TX_LIM: u9,
    -            /// reg_rmt_tx_loop_num_ch0.
    -            TX_LOOP_NUM: u10,
    -            /// reg_rmt_tx_loop_cnt_en_ch0.
    -            TX_LOOP_CNT_EN: u1,
    -            /// reg_loop_count_reset_ch0.
    -            LOOP_COUNT_RESET: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -        }), base_address + 0x5c);
    -
    -        /// address: 0x60016060
    -        /// RMT_CH2_RX_LIM_REG.
    -        pub const CH2_RX_LIM = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_rmt_rx_lim_ch2.
    -            RX_LIM: u9,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0x60);
    -
    -        /// address: 0x60016064
    -        /// RMT_CH2_RX_LIM_REG.
    -        pub const CH3_RX_LIM = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_rmt_rx_lim_ch2.
    -            RX_LIM: u9,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0x64);
    -
    -        /// address: 0x60016068
    -        /// RMT_SYS_CONF_REG.
    -        pub const SYS_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_apb_fifo_mask.
    -            APB_FIFO_MASK: u1,
    -            /// reg_mem_clk_force_on.
    -            MEM_CLK_FORCE_ON: u1,
    -            /// reg_rmt_mem_force_pd.
    -            MEM_FORCE_PD: u1,
    -            /// reg_rmt_mem_force_pu.
    -            MEM_FORCE_PU: u1,
    -            /// reg_rmt_sclk_div_num.
    -            SCLK_DIV_NUM: u8,
    -            /// reg_rmt_sclk_div_a.
    -            SCLK_DIV_A: u6,
    -            /// reg_rmt_sclk_div_b.
    -            SCLK_DIV_B: u6,
    -            /// reg_rmt_sclk_sel.
    -            SCLK_SEL: u2,
    -            /// reg_rmt_sclk_active.
    -            SCLK_ACTIVE: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// reg_clk_en.
    -            CLK_EN: u1,
    -        }), base_address + 0x68);
    -
    -        /// address: 0x6001606c
    -        /// RMT_TX_SIM_REG.
    -        pub const TX_SIM = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_rmt_tx_sim_ch0.
    -            TX_SIM_CH0: u1,
    -            /// reg_rmt_tx_sim_ch1.
    -            TX_SIM_CH1: u1,
    -            /// reg_rmt_tx_sim_en.
    -            TX_SIM_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -        }), base_address + 0x6c);
    -
    -        /// address: 0x60016070
    -        /// RMT_REF_CNT_RST_REG.
    -        pub const REF_CNT_RST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_ref_cnt_rst_ch0.
    -            CH0: u1,
    -            /// reg_ref_cnt_rst_ch1.
    -            CH1: u1,
    -            /// reg_ref_cnt_rst_ch2.
    -            CH2: u1,
    -            /// reg_ref_cnt_rst_ch3.
    -            CH3: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x70);
    -
    -        /// address: 0x600160cc
    -        /// RMT_DATE_REG.
    -        pub const DATE = @intToPtr(*volatile MmioInt(32, u28), base_address + 0xcc);
    -    };
    -
    -    /// Hardware random number generator
    -    pub const RNG = struct {
    -        pub const base_address = 0x60026000;
    -
    -        /// address: 0x600260b0
    -        /// Random number data
    -        pub const DATA = @intToPtr(*volatile u32, base_address + 0xb0);
    -    };
    -
    -    /// RSA (Rivest Shamir Adleman) Accelerator
    -    pub const RSA = struct {
    -        pub const base_address = 0x6003c000;
    -
    -        /// address: 0x6003c000
    -        /// The memory that stores M
    -        pub const M_MEM = @intToPtr(*volatile [16]u8, base_address + 0x0);
    -
    -        /// address: 0x6003c200
    -        /// The memory that stores Z
    -        pub const Z_MEM = @intToPtr(*volatile [16]u8, base_address + 0x200);
    -
    -        /// address: 0x6003c400
    -        /// The memory that stores Y
    -        pub const Y_MEM = @intToPtr(*volatile [16]u8, base_address + 0x400);
    -
    -        /// address: 0x6003c600
    -        /// The memory that stores X
    -        pub const X_MEM = @intToPtr(*volatile [16]u8, base_address + 0x600);
    -
    -        /// address: 0x6003c800
    -        /// RSA M_prime register
    -        pub const M_PRIME = @intToPtr(*volatile u32, base_address + 0x800);
    -
    -        /// address: 0x6003c804
    -        /// RSA mode register
    -        pub const MODE = @intToPtr(*volatile MmioInt(32, u7), base_address + 0x804);
    -
    -        /// address: 0x6003c808
    -        /// RSA query clean register
    -        pub const QUERY_CLEAN = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x808);
    -
    -        /// address: 0x6003c80c
    -        /// RSA modular exponentiation trigger register.
    -        pub const SET_START_MODEXP = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x80c);
    -
    -        /// address: 0x6003c810
    -        /// RSA modular multiplication trigger register.
    -        pub const SET_START_MODMULT = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x810);
    -
    -        /// address: 0x6003c814
    -        /// RSA normal multiplication trigger register.
    -        pub const SET_START_MULT = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x814);
    -
    -        /// address: 0x6003c818
    -        /// RSA query idle register
    -        pub const QUERY_IDLE = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x818);
    -
    -        /// address: 0x6003c81c
    -        /// RSA interrupt clear register
    -        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// set this bit to clear RSA interrupt.
    -            CLEAR_INTERRUPT: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x81c);
    -
    -        /// address: 0x6003c820
    -        /// RSA constant time option register
    -        pub const CONSTANT_TIME = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x820);
    -
    -        /// address: 0x6003c824
    -        /// RSA search option
    -        pub const SEARCH_ENABLE = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x824);
    -
    -        /// address: 0x6003c828
    -        /// RSA search position configure register
    -        pub const SEARCH_POS = @intToPtr(*volatile MmioInt(32, u12), base_address + 0x828);
    -
    -        /// address: 0x6003c82c
    -        /// RSA interrupt enable register
    -        pub const INT_ENA = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x82c);
    -
    -        /// address: 0x6003c830
    -        /// RSA version control register
    -        pub const DATE = @intToPtr(*volatile MmioInt(32, u30), base_address + 0x830);
    -    };
    -
    -    /// Real-Time Clock Control
    -    pub const RTC_CNTL = struct {
    -        pub const base_address = 0x60008000;
    -
    -        /// address: 0x60008000
    -        /// rtc configure register
    -        pub const OPTIONS0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// {reg_sw_stall_appcpu_c1[5:0], reg_sw_stall_appcpu_c0[1:0]} == 0x86 will stall
    -            /// APP CPU
    -            SW_STALL_APPCPU_C0: u2,
    -            /// {reg_sw_stall_procpu_c1[5:0], reg_sw_stall_procpu_c0[1:0]} == 0x86 will stall
    -            /// PRO CPU
    -            SW_STALL_PROCPU_C0: u2,
    -            /// APP CPU SW reset
    -            SW_APPCPU_RST: u1,
    -            /// PRO CPU SW reset
    -            SW_PROCPU_RST: u1,
    -            /// BB_I2C force power down
    -            BB_I2C_FORCE_PD: u1,
    -            /// BB_I2C force power up
    -            BB_I2C_FORCE_PU: u1,
    -            /// BB_PLL _I2C force power down
    -            BBPLL_I2C_FORCE_PD: u1,
    -            /// BB_PLL_I2C force power up
    -            BBPLL_I2C_FORCE_PU: u1,
    -            /// BB_PLL force power down
    -            BBPLL_FORCE_PD: u1,
    -            /// BB_PLL force power up
    -            BBPLL_FORCE_PU: u1,
    -            /// crystall force power down
    -            XTL_FORCE_PD: u1,
    -            /// crystall force power up
    -            XTL_FORCE_PU: u1,
    -            /// wait bias_sleep and current source wakeup
    -            XTL_EN_WAIT: u4,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// analog configure
    -            XTL_EXT_CTR_SEL: u3,
    -            /// analog configure
    -            XTL_FORCE_ISO: u1,
    -            /// analog configure
    -            PLL_FORCE_ISO: u1,
    -            /// analog configure
    -            ANALOG_FORCE_ISO: u1,
    -            /// analog configure
    -            XTL_FORCE_NOISO: u1,
    -            /// analog configure
    -            PLL_FORCE_NOISO: u1,
    -            /// analog configure
    -            ANALOG_FORCE_NOISO: u1,
    -            /// digital wrap force reset in deep sleep
    -            DG_WRAP_FORCE_RST: u1,
    -            /// digital core force no reset in deep sleep
    -            DG_WRAP_FORCE_NORST: u1,
    -            /// SW system reset
    -            SW_SYS_RST: u1,
    -        }), base_address + 0x0);
    -
    -        /// address: 0x60008004
    -        /// rtc configure register
    -        pub const SLP_TIMER0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// configure the sleep time
    -            SLP_VAL_LO: u32,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x60008008
    -        /// rtc configure register
    -        pub const SLP_TIMER1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// RTC sleep timer high 16 bits
    -            SLP_VAL_HI: u16,
    -            /// timer alarm enable bit
    -            RTC_MAIN_TIMER_ALARM_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x6000800c
    -        /// rtc configure register
    -        pub const TIME_UPDATE = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            reserved25: u1,
    -            reserved26: u1,
    -            /// Enable to record system stall time
    -            TIMER_SYS_STALL: u1,
    -            /// Enable to record 40M XTAL OFF time
    -            TIMER_XTL_OFF: u1,
    -            /// enable to record system reset time
    -            TIMER_SYS_RST: u1,
    -            reserved27: u1,
    -            /// Set 1: to update register with RTC timer
    -            RTC_TIME_UPDATE: u1,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x60008010
    -        /// rtc configure register
    -        pub const TIME_LOW0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// RTC timer low 32 bits
    -            RTC_TIMER_VALUE0_LOW: u32,
    -        }), base_address + 0x10);
    -
    -        /// address: 0x60008014
    -        /// rtc configure register
    -        pub const TIME_HIGH0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// RTC timer high 16 bits
    -            RTC_TIMER_VALUE0_HIGH: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x14);
    -
    -        /// address: 0x60008018
    -        /// rtc configure register
    -        pub const STATE0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// rtc software interrupt to main cpu
    -            RTC_SW_CPU_INT: u1,
    -            /// clear rtc sleep reject cause
    -            RTC_SLP_REJECT_CAUSE_CLR: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            /// 1: APB to RTC using bridge
    -            APB2RTC_BRIDGE_SEL: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            /// SDIO active indication
    -            SDIO_ACTIVE_IND: u1,
    -            /// leep wakeup bit
    -            SLP_WAKEUP: u1,
    -            /// leep reject bit
    -            SLP_REJECT: u1,
    -            /// sleep enable bit
    -            SLEEP_EN: u1,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x6000801c
    -        /// rtc configure register
    -        pub const TIMER1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// CPU stall enable bit
    -            CPU_STALL_EN: u1,
    -            /// CPU stall wait cycles in fast_clk_rtc
    -            CPU_STALL_WAIT: u5,
    -            /// CK8M wait cycles in slow_clk_rtc
    -            CK8M_WAIT: u8,
    -            /// XTAL wait cycles in slow_clk_rtc
    -            XTL_BUF_WAIT: u10,
    -            /// PLL wait cycles in slow_clk_rtc
    -            PLL_BUF_WAIT: u8,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x60008020
    -        /// rtc configure register
    -        pub const TIMER2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            /// minimal cycles in slow_clk_rtc for CK8M in power down state
    -            MIN_TIME_CK8M_OFF: u8,
    -        }), base_address + 0x20);
    -
    -        /// address: 0x60008024
    -        /// rtc configure register
    -        pub const TIMER3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// wifi power domain wakeup time
    -            WIFI_WAIT_TIMER: u9,
    -            /// wifi power domain power on time
    -            WIFI_POWERUP_TIMER: u7,
    -            /// bt power domain wakeup time
    -            BT_WAIT_TIMER: u9,
    -            /// bt power domain power on time
    -            BT_POWERUP_TIMER: u7,
    -        }), base_address + 0x24);
    -
    -        /// address: 0x60008028
    -        /// rtc configure register
    -        pub const TIMER4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// cpu top power domain wakeup time
    -            CPU_TOP_WAIT_TIMER: u9,
    -            /// cpu top power domain power on time
    -            CPU_TOP_POWERUP_TIMER: u7,
    -            /// digital wrap power domain wakeup time
    -            DG_WRAP_WAIT_TIMER: u9,
    -            /// digital wrap power domain power on time
    -            DG_WRAP_POWERUP_TIMER: u7,
    -        }), base_address + 0x28);
    -
    -        /// address: 0x6000802c
    -        /// rtc configure register
    -        pub const TIMER5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            /// minimal sleep cycles in slow_clk_rtc
    -            MIN_SLP_VAL: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x2c);
    -
    -        /// address: 0x60008030
    -        /// rtc configure register
    -        pub const TIMER6 = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            /// digital peri power domain wakeup time
    -            DG_PERI_WAIT_TIMER: u9,
    -            /// digital peri power domain power on time
    -            DG_PERI_POWERUP_TIMER: u7,
    -        }), base_address + 0x30);
    -
    -        /// address: 0x60008034
    -        /// rtc configure register
    -        pub const ANA_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            /// force no bypass i2c power on reset
    -            RESET_POR_FORCE_PD: u1,
    -            /// force bypass i2c power on reset
    -            RESET_POR_FORCE_PU: u1,
    -            /// enable glitch reset
    -            GLITCH_RST_EN: u1,
    -            reserved18: u1,
    -            /// PLLA force power up
    -            SAR_I2C_PU: u1,
    -            /// PLLA force power down
    -            PLLA_FORCE_PD: u1,
    -            /// PLLA force power up
    -            PLLA_FORCE_PU: u1,
    -            /// start BBPLL calibration during sleep
    -            BBPLL_CAL_SLP_START: u1,
    -            /// 1: PVTMON power up
    -            PVTMON_PU: u1,
    -            /// 1: TXRF_I2C power up
    -            TXRF_I2C_PU: u1,
    -            /// 1: RFRX_PBUS power up
    -            RFRX_PBUS_PU: u1,
    -            reserved19: u1,
    -            /// 1: CKGEN_I2C power up
    -            CKGEN_I2C_PU: u1,
    -            /// power up pll i2c
    -            PLL_I2C_PU: u1,
    -        }), base_address + 0x34);
    -
    -        /// address: 0x60008038
    -        /// rtc configure register
    -        pub const RESET_STATE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reset cause of PRO CPU
    -            RESET_CAUSE_PROCPU: u6,
    -            /// reset cause of APP CPU
    -            RESET_CAUSE_APPCPU: u6,
    -            /// APP CPU state vector sel
    -            STAT_VECTOR_SEL_APPCPU: u1,
    -            /// PRO CPU state vector sel
    -            STAT_VECTOR_SEL_PROCPU: u1,
    -            /// PRO CPU reset_flag
    -            ALL_RESET_FLAG_PROCPU: u1,
    -            /// APP CPU reset flag
    -            ALL_RESET_FLAG_APPCPU: u1,
    -            /// clear PRO CPU reset_flag
    -            ALL_RESET_FLAG_CLR_PROCPU: u1,
    -            /// clear APP CPU reset flag
    -            ALL_RESET_FLAG_CLR_APPCPU: u1,
    -            /// APPCPU OcdHaltOnReset
    -            OCD_HALT_ON_RESET_APPCPU: u1,
    -            /// PROCPU OcdHaltOnReset
    -            OCD_HALT_ON_RESET_PROCPU: u1,
    -            /// configure jtag reset configure
    -            JTAG_RESET_FLAG_PROCPU: u1,
    -            /// configure jtag reset configure
    -            JTAG_RESET_FLAG_APPCPU: u1,
    -            /// configure jtag reset configure
    -            JTAG_RESET_FLAG_CLR_PROCPU: u1,
    -            /// configure jtag reset configure
    -            JTAG_RESET_FLAG_CLR_APPCPU: u1,
    -            /// configure dreset configure
    -            RTC_DRESET_MASK_APPCPU: u1,
    -            /// configure dreset configure
    -            RTC_DRESET_MASK_PROCPU: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -        }), base_address + 0x38);
    -
    -        /// address: 0x6000803c
    -        /// rtc configure register
    -        pub const WAKEUP_STATE = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            /// wakeup enable bitmap
    -            RTC_WAKEUP_ENA: u17,
    -        }), base_address + 0x3c);
    -
    -        /// address: 0x60008040
    -        /// rtc configure register
    -        pub const INT_ENA_RTC = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// enable sleep wakeup interrupt
    -            SLP_WAKEUP_INT_ENA: u1,
    -            /// enable sleep reject interrupt
    -            SLP_REJECT_INT_ENA: u1,
    -            reserved0: u1,
    -            /// enable RTC WDT interrupt
    -            RTC_WDT_INT_ENA: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            /// enable brown out interrupt
    -            RTC_BROWN_OUT_INT_ENA: u1,
    -            /// enable RTC main timer interrupt
    -            RTC_MAIN_TIMER_INT_ENA: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            /// enable super watch dog interrupt
    -            RTC_SWD_INT_ENA: u1,
    -            /// enable xtal32k_dead interrupt
    -            RTC_XTAL32K_DEAD_INT_ENA: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            /// enbale gitch det interrupt
    -            RTC_GLITCH_DET_INT_ENA: u1,
    -            /// enbale bbpll cal end interrupt
    -            RTC_BBPLL_CAL_INT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -        }), base_address + 0x40);
    -
    -        /// address: 0x60008044
    -        /// rtc configure register
    -        pub const INT_RAW_RTC = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// sleep wakeup interrupt raw
    -            SLP_WAKEUP_INT_RAW: u1,
    -            /// sleep reject interrupt raw
    -            SLP_REJECT_INT_RAW: u1,
    -            reserved0: u1,
    -            /// RTC WDT interrupt raw
    -            RTC_WDT_INT_RAW: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            /// brown out interrupt raw
    -            RTC_BROWN_OUT_INT_RAW: u1,
    -            /// RTC main timer interrupt raw
    -            RTC_MAIN_TIMER_INT_RAW: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            /// super watch dog interrupt raw
    -            RTC_SWD_INT_RAW: u1,
    -            /// xtal32k dead detection interrupt raw
    -            RTC_XTAL32K_DEAD_INT_RAW: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            /// glitch_det_interrupt_raw
    -            RTC_GLITCH_DET_INT_RAW: u1,
    -            /// bbpll cal end interrupt state
    -            RTC_BBPLL_CAL_INT_RAW: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -        }), base_address + 0x44);
    -
    -        /// address: 0x60008048
    -        /// rtc configure register
    -        pub const INT_ST_RTC = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// sleep wakeup interrupt state
    -            SLP_WAKEUP_INT_ST: u1,
    -            /// sleep reject interrupt state
    -            SLP_REJECT_INT_ST: u1,
    -            reserved0: u1,
    -            /// RTC WDT interrupt state
    -            RTC_WDT_INT_ST: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            /// brown out interrupt state
    -            RTC_BROWN_OUT_INT_ST: u1,
    -            /// RTC main timer interrupt state
    -            RTC_MAIN_TIMER_INT_ST: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            /// super watch dog interrupt state
    -            RTC_SWD_INT_ST: u1,
    -            /// xtal32k dead detection interrupt state
    -            RTC_XTAL32K_DEAD_INT_ST: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            /// glitch_det_interrupt state
    -            RTC_GLITCH_DET_INT_ST: u1,
    -            /// bbpll cal end interrupt state
    -            RTC_BBPLL_CAL_INT_ST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -        }), base_address + 0x48);
    -
    -        /// address: 0x6000804c
    -        /// rtc configure register
    -        pub const INT_CLR_RTC = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Clear sleep wakeup interrupt state
    -            SLP_WAKEUP_INT_CLR: u1,
    -            /// Clear sleep reject interrupt state
    -            SLP_REJECT_INT_CLR: u1,
    -            reserved0: u1,
    -            /// Clear RTC WDT interrupt state
    -            RTC_WDT_INT_CLR: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            /// Clear brown out interrupt state
    -            RTC_BROWN_OUT_INT_CLR: u1,
    -            /// Clear RTC main timer interrupt state
    -            RTC_MAIN_TIMER_INT_CLR: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            /// Clear super watch dog interrupt state
    -            RTC_SWD_INT_CLR: u1,
    -            /// Clear RTC WDT interrupt state
    -            RTC_XTAL32K_DEAD_INT_CLR: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            /// Clear glitch det interrupt state
    -            RTC_GLITCH_DET_INT_CLR: u1,
    -            /// clear bbpll cal end interrupt state
    -            RTC_BBPLL_CAL_INT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -        }), base_address + 0x4c);
    -
    -        /// address: 0x60008050
    -        /// rtc configure register
    -        pub const STORE0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reserved register
    -            RTC_SCRATCH0: u32,
    -        }), base_address + 0x50);
    -
    -        /// address: 0x60008054
    -        /// rtc configure register
    -        pub const STORE1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reserved register
    -            RTC_SCRATCH1: u32,
    -        }), base_address + 0x54);
    -
    -        /// address: 0x60008058
    -        /// rtc configure register
    -        pub const STORE2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reserved register
    -            RTC_SCRATCH2: u32,
    -        }), base_address + 0x58);
    -
    -        /// address: 0x6000805c
    -        /// rtc configure register
    -        pub const STORE3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reserved register
    -            RTC_SCRATCH3: u32,
    -        }), base_address + 0x5c);
    -
    -        /// address: 0x60008060
    -        /// rtc configure register
    -        pub const EXT_XTL_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// xtal 32k watch dog enable
    -            XTAL32K_WDT_EN: u1,
    -            /// xtal 32k watch dog clock force on
    -            XTAL32K_WDT_CLK_FO: u1,
    -            /// xtal 32k watch dog sw reset
    -            XTAL32K_WDT_RESET: u1,
    -            /// xtal 32k external xtal clock force on
    -            XTAL32K_EXT_CLK_FO: u1,
    -            /// xtal 32k switch to back up clock when xtal is dead
    -            XTAL32K_AUTO_BACKUP: u1,
    -            /// xtal 32k restart xtal when xtal is dead
    -            XTAL32K_AUTO_RESTART: u1,
    -            /// xtal 32k switch back xtal when xtal is restarted
    -            XTAL32K_AUTO_RETURN: u1,
    -            /// Xtal 32k xpd control by sw or fsm
    -            XTAL32K_XPD_FORCE: u1,
    -            /// apply an internal clock to help xtal 32k to start
    -            ENCKINIT_XTAL_32K: u1,
    -            /// 0: single-end buffer 1: differential buffer
    -            DBUF_XTAL_32K: u1,
    -            /// xtal_32k gm control
    -            DGM_XTAL_32K: u3,
    -            /// DRES_XTAL_32K
    -            DRES_XTAL_32K: u3,
    -            /// XPD_XTAL_32K
    -            XPD_XTAL_32K: u1,
    -            /// DAC_XTAL_32K
    -            DAC_XTAL_32K: u3,
    -            /// state of 32k_wdt
    -            RTC_WDT_STATE: u3,
    -            /// XTAL_32K sel. 0: external XTAL_32K
    -            RTC_XTAL32K_GPIO_SEL: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            /// 0: power down XTAL at high level
    -            XTL_EXT_CTR_LV: u1,
    -            /// enable gpio configure xtal power on
    -            XTL_EXT_CTR_EN: u1,
    -        }), base_address + 0x60);
    -
    -        /// address: 0x60008064
    -        /// rtc configure register
    -        pub const EXT_WAKEUP_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            reserved25: u1,
    -            reserved26: u1,
    -            reserved27: u1,
    -            reserved28: u1,
    -            reserved29: u1,
    -            reserved30: u1,
    -            /// enable filter for gpio wakeup event
    -            GPIO_WAKEUP_FILTER: u1,
    -        }), base_address + 0x64);
    -
    -        /// address: 0x60008068
    -        /// rtc configure register
    -        pub const SLP_REJECT_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            /// sleep reject enable
    -            RTC_SLEEP_REJECT_ENA: u18,
    -            /// enable reject for light sleep
    -            LIGHT_SLP_REJECT_EN: u1,
    -            /// enable reject for deep sleep
    -            DEEP_SLP_REJECT_EN: u1,
    -        }), base_address + 0x68);
    -
    -        /// address: 0x6000806c
    -        /// rtc configure register
    -        pub const CPU_PERIOD_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            reserved25: u1,
    -            reserved26: u1,
    -            reserved27: u1,
    -            reserved28: u1,
    -            /// CPU sel option
    -            RTC_CPUSEL_CONF: u1,
    -            /// CPU clk sel option
    -            RTC_CPUPERIOD_SEL: u2,
    -        }), base_address + 0x6c);
    -
    -        /// address: 0x60008070
    -        /// rtc configure register
    -        pub const CLK_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            /// efuse_clk_force_gating
    -            EFUSE_CLK_FORCE_GATING: u1,
    -            /// efuse_clk_force_nogating
    -            EFUSE_CLK_FORCE_NOGATING: u1,
    -            /// used to sync reg_ck8m_div_sel bus. Clear vld before set reg_ck8m_div_sel
    -            CK8M_DIV_SEL_VLD: u1,
    -            /// CK8M_D256_OUT divider. 00: div128
    -            CK8M_DIV: u2,
    -            /// disable CK8M and CK8M_D256_OUT
    -            ENB_CK8M: u1,
    -            /// 1: CK8M_D256_OUT is actually CK8M
    -            ENB_CK8M_DIV: u1,
    -            /// enable CK_XTAL_32K for digital core (no relationship with RTC core)
    -            DIG_XTAL32K_EN: u1,
    -            /// enable CK8M_D256_OUT for digital core (no relationship with RTC core)
    -            DIG_CLK8M_D256_EN: u1,
    -            /// enable CK8M for digital core (no relationship with RTC core)
    -            DIG_CLK8M_EN: u1,
    -            reserved1: u1,
    -            /// divider = reg_ck8m_div_sel + 1
    -            CK8M_DIV_SEL: u3,
    -            /// XTAL force no gating during sleep
    -            XTAL_FORCE_NOGATING: u1,
    -            /// CK8M force no gating during sleep
    -            CK8M_FORCE_NOGATING: u1,
    -            /// CK8M_DFREQ
    -            CK8M_DFREQ: u8,
    -            /// CK8M force power down
    -            CK8M_FORCE_PD: u1,
    -            /// CK8M force power up
    -            CK8M_FORCE_PU: u1,
    -            /// force enable xtal clk gating
    -            XTAL_GLOBAL_FORCE_GATING: u1,
    -            /// force bypass xtal clk gating
    -            XTAL_GLOBAL_FORCE_NOGATING: u1,
    -            /// fast_clk_rtc sel. 0: XTAL div 4
    -            FAST_CLK_RTC_SEL: u1,
    -            /// slelect rtc slow clk
    -            ANA_CLK_RTC_SEL: u2,
    -        }), base_address + 0x70);
    -
    -        /// address: 0x60008074
    -        /// rtc configure register
    -        pub const SLOW_CLK_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            /// used to sync div bus. clear vld before set reg_rtc_ana_clk_div
    -            RTC_ANA_CLK_DIV_VLD: u1,
    -            /// the clk divider num of RTC_CLK
    -            RTC_ANA_CLK_DIV: u8,
    -            /// flag rtc_slow_clk_next_edge
    -            RTC_SLOW_CLK_NEXT_EDGE: u1,
    -        }), base_address + 0x74);
    -
    -        /// address: 0x60008078
    -        /// rtc configure register
    -        pub const SDIO_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// timer count to apply reg_sdio_dcap after sdio power on
    -            SDIO_TIMER_TARGET: u8,
    -            reserved0: u1,
    -            /// Tieh = 1 mode drive ability. Initially set to 0 to limit charge current
    -            SDIO_DTHDRV: u2,
    -            /// ability to prevent LDO from overshoot
    -            SDIO_DCAP: u2,
    -            /// add resistor from ldo output to ground. 0: no res
    -            SDIO_INITI: u2,
    -            /// 0 to set init[1:0]=0
    -            SDIO_EN_INITI: u1,
    -            /// tune current limit threshold when tieh = 0. About 800mA/(8+d)
    -            SDIO_DCURLIM: u3,
    -            /// select current limit mode
    -            SDIO_MODECURLIM: u1,
    -            /// enable current limit
    -            SDIO_ENCURLIM: u1,
    -            /// power down SDIO_REG in sleep. Only active when reg_sdio_force = 0
    -            SDIO_REG_PD_EN: u1,
    -            /// 1: use SW option to control SDIO_REG
    -            SDIO_FORCE: u1,
    -            /// SW option for SDIO_TIEH. Only active when reg_sdio_force = 1
    -            SDIO_TIEH: u1,
    -            /// read only register for REG1P8_READY
    -            _1P8_READY: u1,
    -            /// SW option for DREFL_SDIO. Only active when reg_sdio_force = 1
    -            DREFL_SDIO: u2,
    -            /// SW option for DREFM_SDIO. Only active when reg_sdio_force = 1
    -            DREFM_SDIO: u2,
    -            /// SW option for DREFH_SDIO. Only active when reg_sdio_force = 1
    -            DREFH_SDIO: u2,
    -            XPD_SDIO: u1,
    -        }), base_address + 0x78);
    -
    -        /// address: 0x6000807c
    -        /// rtc configure register
    -        pub const BIAS_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            DG_VDD_DRV_B_SLP: u8,
    -            DG_VDD_DRV_B_SLP_EN: u1,
    -            reserved0: u1,
    -            /// bias buf when rtc in normal work state
    -            BIAS_BUF_IDLE: u1,
    -            /// bias buf when rtc in wakeup state
    -            BIAS_BUF_WAKE: u1,
    -            /// bias buf when rtc in sleep state
    -            BIAS_BUF_DEEP_SLP: u1,
    -            /// bias buf when rtc in monitor state
    -            BIAS_BUF_MONITOR: u1,
    -            /// xpd cur when rtc in sleep_state
    -            PD_CUR_DEEP_SLP: u1,
    -            /// xpd cur when rtc in monitor state
    -            PD_CUR_MONITOR: u1,
    -            /// bias_sleep when rtc in sleep_state
    -            BIAS_SLEEP_DEEP_SLP: u1,
    -            /// bias_sleep when rtc in monitor state
    -            BIAS_SLEEP_MONITOR: u1,
    -            /// DBG_ATTEN when rtc in sleep state
    -            DBG_ATTEN_DEEP_SLP: u4,
    -            /// DBG_ATTEN when rtc in monitor state
    -            DBG_ATTEN_MONITOR: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -        }), base_address + 0x7c);
    -
    -        /// address: 0x60008080
    -        /// rtc configure register
    -        pub const RTC_CNTL = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            /// software enable digital regulator cali
    -            DIG_REG_CAL_EN: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            /// SCK_DCAP
    -            SCK_DCAP: u8,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            /// RTC_DBOOST force power down
    -            DBOOST_FORCE_PD: u1,
    -            /// RTC_DBOOST force power up
    -            DBOOST_FORCE_PU: u1,
    -            /// RTC_REG force power down (for RTC_REG power down means decrease the voltage to
    -            /// 0.8v or lower )
    -            REGULATOR_FORCE_PD: u1,
    -            /// RTC_REG force power up
    -            REGULATOR_FORCE_PU: u1,
    -        }), base_address + 0x80);
    -
    -        /// address: 0x60008084
    -        /// rtc configure register
    -        pub const PWC = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            /// rtc pad force hold
    -            RTC_PAD_FORCE_HOLD: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -        }), base_address + 0x84);
    -
    -        /// address: 0x60008088
    -        /// rtc configure register
    -        pub const DIG_PWC = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// vdd_spi drv's software value
    -            VDD_SPI_PWR_DRV: u2,
    -            /// vdd_spi drv use software value
    -            VDD_SPI_PWR_FORCE: u1,
    -            /// memories in digital core force PD in sleep
    -            LSLP_MEM_FORCE_PD: u1,
    -            /// memories in digital core force PU in sleep
    -            LSLP_MEM_FORCE_PU: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            /// bt force power down
    -            BT_FORCE_PD: u1,
    -            /// bt force power up
    -            BT_FORCE_PU: u1,
    -            /// digital peri force power down
    -            DG_PERI_FORCE_PD: u1,
    -            /// digital peri force power up
    -            DG_PERI_FORCE_PU: u1,
    -            /// fastmemory retention mode in sleep
    -            RTC_FASTMEM_FORCE_LPD: u1,
    -            /// fastmemory donlt entry retention mode in sleep
    -            RTC_FASTMEM_FORCE_LPU: u1,
    -            /// wifi force power down
    -            WIFI_FORCE_PD: u1,
    -            /// wifi force power up
    -            WIFI_FORCE_PU: u1,
    -            /// digital core force power down
    -            DG_WRAP_FORCE_PD: u1,
    -            /// digital core force power up
    -            DG_WRAP_FORCE_PU: u1,
    -            /// cpu core force power down
    -            CPU_TOP_FORCE_PD: u1,
    -            /// cpu force power up
    -            CPU_TOP_FORCE_PU: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            /// enable power down bt in sleep
    -            BT_PD_EN: u1,
    -            /// enable power down digital peri in sleep
    -            DG_PERI_PD_EN: u1,
    -            /// enable power down cpu in sleep
    -            CPU_TOP_PD_EN: u1,
    -            /// enable power down wifi in sleep
    -            WIFI_PD_EN: u1,
    -            /// enable power down digital wrap in sleep
    -            DG_WRAP_PD_EN: u1,
    -        }), base_address + 0x88);
    -
    -        /// address: 0x6000808c
    -        /// rtc configure register
    -        pub const DIG_ISO = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            /// DIG_ISO force off
    -            FORCE_OFF: u1,
    -            /// DIG_ISO force on
    -            FORCE_ON: u1,
    -            /// read only register to indicate digital pad auto-hold status
    -            DG_PAD_AUTOHOLD: u1,
    -            /// wtite only register to clear digital pad auto-hold
    -            CLR_DG_PAD_AUTOHOLD: u1,
    -            /// digital pad enable auto-hold
    -            DG_PAD_AUTOHOLD_EN: u1,
    -            /// digital pad force no ISO
    -            DG_PAD_FORCE_NOISO: u1,
    -            /// digital pad force ISO
    -            DG_PAD_FORCE_ISO: u1,
    -            /// digital pad force un-hold
    -            DG_PAD_FORCE_UNHOLD: u1,
    -            /// digital pad force hold
    -            DG_PAD_FORCE_HOLD: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            /// bt force ISO
    -            BT_FORCE_ISO: u1,
    -            /// bt force no ISO
    -            BT_FORCE_NOISO: u1,
    -            /// Digital peri force ISO
    -            DG_PERI_FORCE_ISO: u1,
    -            /// digital peri force no ISO
    -            DG_PERI_FORCE_NOISO: u1,
    -            /// cpu force ISO
    -            CPU_TOP_FORCE_ISO: u1,
    -            /// cpu force no ISO
    -            CPU_TOP_FORCE_NOISO: u1,
    -            /// wifi force ISO
    -            WIFI_FORCE_ISO: u1,
    -            /// wifi force no ISO
    -            WIFI_FORCE_NOISO: u1,
    -            /// digital core force ISO
    -            DG_WRAP_FORCE_ISO: u1,
    -            /// digital core force no ISO
    -            DG_WRAP_FORCE_NOISO: u1,
    -        }), base_address + 0x8c);
    -
    -        /// address: 0x60008090
    -        /// rtc configure register
    -        pub const WDTCONFIG0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// chip reset siginal pulse width
    -            WDT_CHIP_RESET_WIDTH: u8,
    -            /// wdt reset whole chip enable
    -            WDT_CHIP_RESET_EN: u1,
    -            /// pause WDT in sleep
    -            WDT_PAUSE_IN_SLP: u1,
    -            /// enable WDT reset APP CPU
    -            WDT_APPCPU_RESET_EN: u1,
    -            /// enable WDT reset PRO CPU
    -            WDT_PROCPU_RESET_EN: u1,
    -            /// enable WDT in flash boot
    -            WDT_FLASHBOOT_MOD_EN: u1,
    -            /// system reset counter length
    -            WDT_SYS_RESET_LENGTH: u3,
    -            /// CPU reset counter length
    -            WDT_CPU_RESET_LENGTH: u3,
    -            /// 1: interrupt stage en
    -            WDT_STG3: u3,
    -            /// 1: interrupt stage en
    -            WDT_STG2: u3,
    -            /// 1: interrupt stage en
    -            WDT_STG1: u3,
    -            /// 1: interrupt stage en
    -            WDT_STG0: u3,
    -            /// enable rtc wdt
    -            WDT_EN: u1,
    -        }), base_address + 0x90);
    -
    -        /// address: 0x60008094
    -        /// rtc configure register
    -        pub const WDTCONFIG1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// the hold time of stage0
    -            WDT_STG0_HOLD: u32,
    -        }), base_address + 0x94);
    -
    -        /// address: 0x60008098
    -        /// rtc configure register
    -        pub const WDTCONFIG2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// the hold time of stage1
    -            WDT_STG1_HOLD: u32,
    -        }), base_address + 0x98);
    -
    -        /// address: 0x6000809c
    -        /// rtc configure register
    -        pub const WDTCONFIG3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// the hold time of stage2
    -            WDT_STG2_HOLD: u32,
    -        }), base_address + 0x9c);
    -
    -        /// address: 0x600080a0
    -        /// rtc configure register
    -        pub const WDTCONFIG4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// the hold time of stage3
    -            WDT_STG3_HOLD: u32,
    -        }), base_address + 0xa0);
    -
    -        /// address: 0x600080a4
    -        /// rtc configure register
    -        pub const WDTFEED = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            reserved25: u1,
    -            reserved26: u1,
    -            reserved27: u1,
    -            reserved28: u1,
    -            reserved29: u1,
    -            reserved30: u1,
    -            /// sw feed rtc wdt
    -            RTC_WDT_FEED: u1,
    -        }), base_address + 0xa4);
    -
    -        /// address: 0x600080a8
    -        /// rtc configure register
    -        pub const WDTWPROTECT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// the key of rtc wdt
    -            WDT_WKEY: u32,
    -        }), base_address + 0xa8);
    -
    -        /// address: 0x600080ac
    -        /// rtc configure register
    -        pub const SWD_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// swd reset flag
    -            SWD_RESET_FLAG: u1,
    -            /// swd interrupt for feeding
    -            SWD_FEED_INT: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            /// Bypass swd rst
    -            SWD_BYPASS_RST: u1,
    -            /// adjust signal width send to swd
    -            SWD_SIGNAL_WIDTH: u10,
    -            /// reset swd reset flag
    -            SWD_RST_FLAG_CLR: u1,
    -            /// Sw feed swd
    -            SWD_FEED: u1,
    -            /// disabel SWD
    -            SWD_DISABLE: u1,
    -            /// automatically feed swd when int comes
    -            SWD_AUTO_FEED_EN: u1,
    -        }), base_address + 0xac);
    -
    -        /// address: 0x600080b0
    -        /// rtc configure register
    -        pub const SWD_WPROTECT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// the key of super wdt
    -            SWD_WKEY: u32,
    -        }), base_address + 0xb0);
    -
    -        /// address: 0x600080b4
    -        /// rtc configure register
    -        pub const SW_CPU_STALL = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            /// {reg_sw_stall_appcpu_c1[5:0]
    -            SW_STALL_APPCPU_C1: u6,
    -            /// stall cpu by software
    -            SW_STALL_PROCPU_C1: u6,
    -        }), base_address + 0xb4);
    -
    -        /// address: 0x600080b8
    -        /// rtc configure register
    -        pub const STORE4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reserved register
    -            RTC_SCRATCH4: u32,
    -        }), base_address + 0xb8);
    -
    -        /// address: 0x600080bc
    -        /// rtc configure register
    -        pub const STORE5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reserved register
    -            RTC_SCRATCH5: u32,
    -        }), base_address + 0xbc);
    -
    -        /// address: 0x600080c0
    -        /// rtc configure register
    -        pub const STORE6 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reserved register
    -            RTC_SCRATCH6: u32,
    -        }), base_address + 0xc0);
    -
    -        /// address: 0x600080c4
    -        /// rtc configure register
    -        pub const STORE7 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reserved register
    -            RTC_SCRATCH7: u32,
    -        }), base_address + 0xc4);
    -
    -        /// address: 0x600080c8
    -        /// rtc configure register
    -        pub const LOW_POWER_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// rom0 power down
    -            XPD_ROM0: u1,
    -            reserved0: u1,
    -            /// External DCDC power down
    -            XPD_DIG_DCDC: u1,
    -            /// rtc peripheral iso
    -            RTC_PERI_ISO: u1,
    -            /// rtc peripheral power down
    -            XPD_RTC_PERI: u1,
    -            /// wifi iso
    -            WIFI_ISO: u1,
    -            /// wifi wrap power down
    -            XPD_WIFI: u1,
    -            /// digital wrap iso
    -            DIG_ISO: u1,
    -            /// digital wrap power down
    -            XPD_DIG: u1,
    -            /// touch should start to work
    -            RTC_TOUCH_STATE_START: u1,
    -            /// touch is about to working. Switch rtc main state
    -            RTC_TOUCH_STATE_SWITCH: u1,
    -            /// touch is in sleep state
    -            RTC_TOUCH_STATE_SLP: u1,
    -            /// touch is done
    -            RTC_TOUCH_STATE_DONE: u1,
    -            /// ulp/cocpu should start to work
    -            RTC_COCPU_STATE_START: u1,
    -            /// ulp/cocpu is about to working. Switch rtc main state
    -            RTC_COCPU_STATE_SWITCH: u1,
    -            /// ulp/cocpu is in sleep state
    -            RTC_COCPU_STATE_SLP: u1,
    -            /// ulp/cocpu is done
    -            RTC_COCPU_STATE_DONE: u1,
    -            /// no use any more
    -            RTC_MAIN_STATE_XTAL_ISO: u1,
    -            /// rtc main state machine is in states that pll should be running
    -            RTC_MAIN_STATE_PLL_ON: u1,
    -            /// rtc is ready to receive wake up trigger from wake up source
    -            RTC_RDY_FOR_WAKEUP: u1,
    -            /// rtc main state machine has been waited for some cycles
    -            RTC_MAIN_STATE_WAIT_END: u1,
    -            /// rtc main state machine is in the states of wakeup process
    -            RTC_IN_WAKEUP_STATE: u1,
    -            /// rtc main state machine is in the states of low power
    -            RTC_IN_LOW_POWER_STATE: u1,
    -            /// rtc main state machine is in wait 8m state
    -            RTC_MAIN_STATE_IN_WAIT_8M: u1,
    -            /// rtc main state machine is in wait pll state
    -            RTC_MAIN_STATE_IN_WAIT_PLL: u1,
    -            /// rtc main state machine is in wait xtal state
    -            RTC_MAIN_STATE_IN_WAIT_XTL: u1,
    -            /// rtc main state machine is in sleep state
    -            RTC_MAIN_STATE_IN_SLP: u1,
    -            /// rtc main state machine is in idle state
    -            RTC_MAIN_STATE_IN_IDLE: u1,
    -            /// rtc main state machine status
    -            RTC_MAIN_STATE: u4,
    -        }), base_address + 0xc8);
    -
    -        /// address: 0x600080cc
    -        /// rtc configure register
    -        pub const DIAG0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            RTC_LOW_POWER_DIAG1: u32,
    -        }), base_address + 0xcc);
    -
    -        /// address: 0x600080d0
    -        /// rtc configure register
    -        pub const PAD_HOLD = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// the hold configure of rtc gpio0
    -            RTC_GPIO_PIN0_HOLD: u1,
    -            /// the hold configure of rtc gpio1
    -            RTC_GPIO_PIN1_HOLD: u1,
    -            /// the hold configure of rtc gpio2
    -            RTC_GPIO_PIN2_HOLD: u1,
    -            /// the hold configure of rtc gpio3
    -            RTC_GPIO_PIN3_HOLD: u1,
    -            /// the hold configure of rtc gpio4
    -            RTC_GPIO_PIN4_HOLD: u1,
    -            /// the hold configure of rtc gpio5
    -            RTC_GPIO_PIN5_HOLD: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -        }), base_address + 0xd0);
    -
    -        /// address: 0x600080d4
    -        /// rtc configure register
    -        pub const DIG_PAD_HOLD = @intToPtr(*volatile u32, base_address + 0xd4);
    -
    -        /// address: 0x600080d8
    -        /// rtc configure register
    -        pub const BROWN_OUT = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// brown out interrupt wait cycles
    -            INT_WAIT: u10,
    -            /// enable close flash when brown out happens
    -            CLOSE_FLASH_ENA: u1,
    -            /// enable power down RF when brown out happens
    -            PD_RF_ENA: u1,
    -            /// brown out reset wait cycles
    -            RST_WAIT: u10,
    -            /// enable brown out reset
    -            RST_ENA: u1,
    -            /// 1: 4-pos reset
    -            RST_SEL: u1,
    -            /// brown_out origin reset enable
    -            ANA_RST_EN: u1,
    -            /// clear brown out counter
    -            CNT_CLR: u1,
    -            /// enable brown out
    -            ENA: u1,
    -            /// the flag of brown det from analog
    -            DET: u1,
    -        }), base_address + 0xd8);
    -
    -        /// address: 0x600080dc
    -        /// rtc configure register
    -        pub const TIME_LOW1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// RTC timer low 32 bits
    -            RTC_TIMER_VALUE1_LOW: u32,
    -        }), base_address + 0xdc);
    -
    -        /// address: 0x600080e0
    -        /// rtc configure register
    -        pub const TIME_HIGH1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// RTC timer high 16 bits
    -            RTC_TIMER_VALUE1_HIGH: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0xe0);
    -
    -        /// address: 0x600080e4
    -        /// rtc configure register
    -        pub const XTAL32K_CLK_FACTOR = @intToPtr(*volatile u32, base_address + 0xe4);
    -
    -        /// address: 0x600080e8
    -        /// rtc configure register
    -        pub const XTAL32K_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// cycles to wait to return noral xtal 32k
    -            XTAL32K_RETURN_WAIT: u4,
    -            /// cycles to wait to repower on xtal 32k
    -            XTAL32K_RESTART_WAIT: u16,
    -            /// If no clock detected for this amount of time
    -            XTAL32K_WDT_TIMEOUT: u8,
    -            /// if restarted xtal32k period is smaller than this
    -            XTAL32K_STABLE_THRES: u4,
    -        }), base_address + 0xe8);
    -
    -        /// address: 0x600080ec
    -        /// rtc configure register
    -        pub const USB_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            /// disable io_mux reset
    -            IO_MUX_RESET_DISABLE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -        }), base_address + 0xec);
    -
    -        /// address: 0x600080f0
    -        /// RTC_CNTL_RTC_SLP_REJECT_CAUSE_REG
    -        pub const SLP_REJECT_CAUSE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// sleep reject cause
    -            REJECT_CAUSE: u18,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0xf0);
    -
    -        /// address: 0x600080f4
    -        /// rtc configure register
    -        pub const OPTION1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// force chip entry download mode
    -            FORCE_DOWNLOAD_BOOT: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0xf4);
    -
    -        /// address: 0x600080f8
    -        /// RTC_CNTL_RTC_SLP_WAKEUP_CAUSE_REG
    -        pub const SLP_WAKEUP_CAUSE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// sleep wakeup cause
    -            WAKEUP_CAUSE: u17,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -        }), base_address + 0xf8);
    -
    -        /// address: 0x600080fc
    -        /// rtc configure register
    -        pub const ULP_CP_TIMER_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            /// sleep cycles for ULP-coprocessor timer
    -            ULP_CP_TIMER_SLP_CYCLE: u24,
    -        }), base_address + 0xfc);
    -
    -        /// address: 0x60008100
    -        /// rtc configure register
    -        pub const INT_ENA_RTC_W1TS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// enable sleep wakeup interrupt
    -            SLP_WAKEUP_INT_ENA_W1TS: u1,
    -            /// enable sleep reject interrupt
    -            SLP_REJECT_INT_ENA_W1TS: u1,
    -            reserved0: u1,
    -            /// enable RTC WDT interrupt
    -            RTC_WDT_INT_ENA_W1TS: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            /// enable brown out interrupt
    -            RTC_BROWN_OUT_INT_ENA_W1TS: u1,
    -            /// enable RTC main timer interrupt
    -            RTC_MAIN_TIMER_INT_ENA_W1TS: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            /// enable super watch dog interrupt
    -            RTC_SWD_INT_ENA_W1TS: u1,
    -            /// enable xtal32k_dead interrupt
    -            RTC_XTAL32K_DEAD_INT_ENA_W1TS: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            /// enbale gitch det interrupt
    -            RTC_GLITCH_DET_INT_ENA_W1TS: u1,
    -            /// enbale bbpll cal interrupt
    -            RTC_BBPLL_CAL_INT_ENA_W1TS: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -        }), base_address + 0x100);
    -
    -        /// address: 0x60008104
    -        /// rtc configure register
    -        pub const INT_ENA_RTC_W1TC = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// clear sleep wakeup interrupt enable
    -            SLP_WAKEUP_INT_ENA_W1TC: u1,
    -            /// clear sleep reject interrupt enable
    -            SLP_REJECT_INT_ENA_W1TC: u1,
    -            reserved0: u1,
    -            /// clear RTC WDT interrupt enable
    -            RTC_WDT_INT_ENA_W1TC: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            /// clear brown out interrupt enable
    -            RTC_BROWN_OUT_INT_ENA_W1TC: u1,
    -            /// Clear RTC main timer interrupt enable
    -            RTC_MAIN_TIMER_INT_ENA_W1TC: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            /// clear super watch dog interrupt enable
    -            RTC_SWD_INT_ENA_W1TC: u1,
    -            /// clear xtal32k_dead interrupt enable
    -            RTC_XTAL32K_DEAD_INT_ENA_W1TC: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            /// clear gitch det interrupt enable
    -            RTC_GLITCH_DET_INT_ENA_W1TC: u1,
    -            /// clear bbpll cal interrupt enable
    -            RTC_BBPLL_CAL_INT_ENA_W1TC: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -        }), base_address + 0x104);
    -
    -        /// address: 0x60008108
    -        /// rtc configure register
    -        pub const RETENTION_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            /// Retention clk sel
    -            RETENTION_CLK_SEL: u1,
    -            /// Retention done wait time
    -            RETENTION_DONE_WAIT: u3,
    -            /// Retention clkoff wait time
    -            RETENTION_CLKOFF_WAIT: u4,
    -            /// enable cpu retention when light sleep
    -            RETENTION_EN: u1,
    -            /// wait cycles for rention operation
    -            RETENTION_WAIT: u5,
    -        }), base_address + 0x108);
    -
    -        /// address: 0x6000810c
    -        /// rtc configure register
    -        pub const FIB_SEL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// select use analog fib signal
    -            RTC_FIB_SEL: u3,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -        }), base_address + 0x10c);
    -
    -        /// address: 0x60008110
    -        /// rtc configure register
    -        pub const GPIO_WAKEUP = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// rtc gpio wakeup flag
    -            RTC_GPIO_WAKEUP_STATUS: u6,
    -            /// clear rtc gpio wakeup flag
    -            RTC_GPIO_WAKEUP_STATUS_CLR: u1,
    -            /// enable rtc io clk gate
    -            RTC_GPIO_PIN_CLK_GATE: u1,
    -            /// configure gpio wakeup type
    -            RTC_GPIO_PIN5_INT_TYPE: u3,
    -            /// configure gpio wakeup type
    -            RTC_GPIO_PIN4_INT_TYPE: u3,
    -            /// configure gpio wakeup type
    -            RTC_GPIO_PIN3_INT_TYPE: u3,
    -            /// configure gpio wakeup type
    -            RTC_GPIO_PIN2_INT_TYPE: u3,
    -            /// configure gpio wakeup type
    -            RTC_GPIO_PIN1_INT_TYPE: u3,
    -            /// configure gpio wakeup type
    -            RTC_GPIO_PIN0_INT_TYPE: u3,
    -            /// enable wakeup from rtc gpio5
    -            RTC_GPIO_PIN5_WAKEUP_ENABLE: u1,
    -            /// enable wakeup from rtc gpio4
    -            RTC_GPIO_PIN4_WAKEUP_ENABLE: u1,
    -            /// enable wakeup from rtc gpio3
    -            RTC_GPIO_PIN3_WAKEUP_ENABLE: u1,
    -            /// enable wakeup from rtc gpio2
    -            RTC_GPIO_PIN2_WAKEUP_ENABLE: u1,
    -            /// enable wakeup from rtc gpio1
    -            RTC_GPIO_PIN1_WAKEUP_ENABLE: u1,
    -            /// enable wakeup from rtc gpio0
    -            RTC_GPIO_PIN0_WAKEUP_ENABLE: u1,
    -        }), base_address + 0x110);
    -
    -        /// address: 0x60008114
    -        /// rtc configure register
    -        pub const DBG_SEL = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            /// use for debug
    -            RTC_DEBUG_12M_NO_GATING: u1,
    -            /// use for debug
    -            RTC_DEBUG_BIT_SEL: u5,
    -            /// use for debug
    -            RTC_DEBUG_SEL0: u5,
    -            /// use for debug
    -            RTC_DEBUG_SEL1: u5,
    -            /// use for debug
    -            RTC_DEBUG_SEL2: u5,
    -            /// use for debug
    -            RTC_DEBUG_SEL3: u5,
    -            /// use for debug
    -            RTC_DEBUG_SEL4: u5,
    -        }), base_address + 0x114);
    -
    -        /// address: 0x60008118
    -        /// rtc configure register
    -        pub const DBG_MAP = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// use for debug
    -            RTC_GPIO_PIN5_MUX_SEL: u1,
    -            /// use for debug
    -            RTC_GPIO_PIN4_MUX_SEL: u1,
    -            /// use for debug
    -            RTC_GPIO_PIN3_MUX_SEL: u1,
    -            /// use for debug
    -            RTC_GPIO_PIN2_MUX_SEL: u1,
    -            /// use for debug
    -            RTC_GPIO_PIN1_MUX_SEL: u1,
    -            /// use for debug
    -            RTC_GPIO_PIN0_MUX_SEL: u1,
    -            /// use for debug
    -            RTC_GPIO_PIN5_FUN_SEL: u4,
    -            /// use for debug
    -            RTC_GPIO_PIN4_FUN_SEL: u4,
    -            /// use for debug
    -            RTC_GPIO_PIN3_FUN_SEL: u4,
    -            /// use for debug
    -            RTC_GPIO_PIN2_FUN_SEL: u4,
    -            /// use for debug
    -            RTC_GPIO_PIN1_FUN_SEL: u4,
    -            /// use for debug
    -            RTC_GPIO_PIN0_FUN_SEL: u4,
    -        }), base_address + 0x118);
    -
    -        /// address: 0x6000811c
    -        /// rtc configure register
    -        pub const SENSOR_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            reserved25: u1,
    -            reserved26: u1,
    -            /// reg_sar2_pwdet_cct
    -            SAR2_PWDET_CCT: u3,
    -            /// force power up SAR
    -            FORCE_XPD_SAR: u2,
    -        }), base_address + 0x11c);
    -
    -        /// address: 0x60008120
    -        /// rtc configure register
    -        pub const DBG_SAR_SEL = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            reserved25: u1,
    -            reserved26: u1,
    -            /// use for debug
    -            SAR_DEBUG_SEL: u5,
    -        }), base_address + 0x120);
    -
    -        /// address: 0x60008124
    -        /// rtc configure register
    -        pub const PG_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            reserved25: u1,
    -            /// power glitch desense
    -            POWER_GLITCH_DSENSE: u2,
    -            /// force disable power glitch
    -            POWER_GLITCH_FORCE_PD: u1,
    -            /// force enable power glitch
    -            POWER_GLITCH_FORCE_PU: u1,
    -            /// use efuse value control power glitch enable
    -            POWER_GLITCH_EFUSE_SEL: u1,
    -            /// enable power glitch
    -            POWER_GLITCH_EN: u1,
    -        }), base_address + 0x124);
    -
    -        /// address: 0x600081fc
    -        /// rtc configure register
    -        pub const DATE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// verision
    -            RTC_CNTL_DATE: u28,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -        }), base_address + 0x1fc);
    -    };
    -
    -    /// Sensitive
    -    pub const SENSITIVE = struct {
    -        pub const base_address = 0x600c1000;
    -
    -        /// address: 0x600c1000
    -        /// SENSITIVE_ROM_TABLE_LOCK_REG
    -        pub const ROM_TABLE_LOCK = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x0);
    -
    -        /// address: 0x600c1004
    -        /// SENSITIVE_ROM_TABLE_REG
    -        pub const ROM_TABLE = @intToPtr(*volatile u32, base_address + 0x4);
    -
    -        /// address: 0x600c1008
    -        /// SENSITIVE_PRIVILEGE_MODE_SEL_LOCK_REG
    -        pub const PRIVILEGE_MODE_SEL_LOCK = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x8);
    -
    -        /// address: 0x600c100c
    -        /// SENSITIVE_PRIVILEGE_MODE_SEL_REG
    -        pub const PRIVILEGE_MODE_SEL = @intToPtr(*volatile MmioInt(32, u1), base_address + 0xc);
    -
    -        /// address: 0x600c1010
    -        /// SENSITIVE_APB_PERIPHERAL_ACCESS_0_REG
    -        pub const APB_PERIPHERAL_ACCESS_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// apb_peripheral_access_lock
    -            APB_PERIPHERAL_ACCESS_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x10);
    -
    -        /// address: 0x600c1014
    -        /// SENSITIVE_APB_PERIPHERAL_ACCESS_1_REG
    -        pub const APB_PERIPHERAL_ACCESS_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// apb_peripheral_access_split_burst
    -            APB_PERIPHERAL_ACCESS_SPLIT_BURST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x14);
    -
    -        /// address: 0x600c1018
    -        /// SENSITIVE_INTERNAL_SRAM_USAGE_0_REG
    -        pub const INTERNAL_SRAM_USAGE_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// internal_sram_usage_lock
    -            INTERNAL_SRAM_USAGE_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x600c101c
    -        /// SENSITIVE_INTERNAL_SRAM_USAGE_1_REG
    -        pub const INTERNAL_SRAM_USAGE_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// internal_sram_usage_cpu_cache
    -            INTERNAL_SRAM_USAGE_CPU_CACHE: u1,
    -            /// internal_sram_usage_cpu_sram
    -            INTERNAL_SRAM_USAGE_CPU_SRAM: u3,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x600c1020
    -        /// SENSITIVE_INTERNAL_SRAM_USAGE_3_REG
    -        pub const INTERNAL_SRAM_USAGE_3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// internal_sram_usage_mac_dump_sram
    -            INTERNAL_SRAM_USAGE_MAC_DUMP_SRAM: u3,
    -            /// internal_sram_alloc_mac_dump
    -            INTERNAL_SRAM_ALLOC_MAC_DUMP: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x20);
    -
    -        /// address: 0x600c1024
    -        /// SENSITIVE_INTERNAL_SRAM_USAGE_4_REG
    -        pub const INTERNAL_SRAM_USAGE_4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// internal_sram_usage_log_sram
    -            INTERNAL_SRAM_USAGE_LOG_SRAM: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x24);
    -
    -        /// address: 0x600c1028
    -        /// SENSITIVE_CACHE_TAG_ACCESS_0_REG
    -        pub const CACHE_TAG_ACCESS_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// cache_tag_access_lock
    -            CACHE_TAG_ACCESS_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x28);
    -
    -        /// address: 0x600c102c
    -        /// SENSITIVE_CACHE_TAG_ACCESS_1_REG
    -        pub const CACHE_TAG_ACCESS_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// pro_i_tag_rd_acs
    -            PRO_I_TAG_RD_ACS: u1,
    -            /// pro_i_tag_wr_acs
    -            PRO_I_TAG_WR_ACS: u1,
    -            /// pro_d_tag_rd_acs
    -            PRO_D_TAG_RD_ACS: u1,
    -            /// pro_d_tag_wr_acs
    -            PRO_D_TAG_WR_ACS: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x2c);
    -
    -        /// address: 0x600c1030
    -        /// SENSITIVE_CACHE_MMU_ACCESS_0_REG
    -        pub const CACHE_MMU_ACCESS_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// cache_mmu_access_lock
    -            CACHE_MMU_ACCESS_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x30);
    -
    -        /// address: 0x600c1034
    -        /// SENSITIVE_CACHE_MMU_ACCESS_1_REG
    -        pub const CACHE_MMU_ACCESS_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// pro_mmu_rd_acs
    -            PRO_MMU_RD_ACS: u1,
    -            /// pro_mmu_wr_acs
    -            PRO_MMU_WR_ACS: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x34);
    -
    -        /// address: 0x600c1038
    -        /// SENSITIVE_DMA_APBPERI_SPI2_PMS_CONSTRAIN_0_REG
    -        pub const DMA_APBPERI_SPI2_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// dma_apbperi_spi2_pms_constrain_lock
    -            DMA_APBPERI_SPI2_PMS_CONSTRAIN_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x38);
    -
    -        /// address: 0x600c103c
    -        /// SENSITIVE_DMA_APBPERI_SPI2_PMS_CONSTRAIN_1_REG
    -        pub const DMA_APBPERI_SPI2_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// dma_apbperi_spi2_pms_constrain_sram_world_0_pms_0
    -            DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    -            /// dma_apbperi_spi2_pms_constrain_sram_world_0_pms_1
    -            DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    -            /// dma_apbperi_spi2_pms_constrain_sram_world_0_pms_2
    -            DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    -            /// dma_apbperi_spi2_pms_constrain_sram_world_0_pms_3
    -            DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// dma_apbperi_spi2_pms_constrain_sram_world_1_pms_0
    -            DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    -            /// dma_apbperi_spi2_pms_constrain_sram_world_1_pms_1
    -            DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    -            /// dma_apbperi_spi2_pms_constrain_sram_world_1_pms_2
    -            DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    -            /// dma_apbperi_spi2_pms_constrain_sram_world_1_pms_3
    -            DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x3c);
    -
    -        /// address: 0x600c1040
    -        /// SENSITIVE_DMA_APBPERI_UCHI0_PMS_CONSTRAIN_0_REG
    -        pub const DMA_APBPERI_UCHI0_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// dma_apbperi_uchi0_pms_constrain_lock
    -            DMA_APBPERI_UCHI0_PMS_CONSTRAIN_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x40);
    -
    -        /// address: 0x600c1044
    -        /// SENSITIVE_DMA_APBPERI_UCHI0_PMS_CONSTRAIN_1_REG
    -        pub const DMA_APBPERI_UCHI0_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_0
    -            DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    -            /// dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_1
    -            DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    -            /// dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_2
    -            DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    -            /// dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_3
    -            DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_0
    -            DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    -            /// dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_1
    -            DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    -            /// dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_2
    -            DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    -            /// dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_3
    -            DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x44);
    -
    -        /// address: 0x600c1048
    -        /// SENSITIVE_DMA_APBPERI_I2S0_PMS_CONSTRAIN_0_REG
    -        pub const DMA_APBPERI_I2S0_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// dma_apbperi_i2s0_pms_constrain_lock
    -            DMA_APBPERI_I2S0_PMS_CONSTRAIN_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x48);
    -
    -        /// address: 0x600c104c
    -        /// SENSITIVE_DMA_APBPERI_I2S0_PMS_CONSTRAIN_1_REG
    -        pub const DMA_APBPERI_I2S0_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_0
    -            DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    -            /// dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_1
    -            DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    -            /// dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_2
    -            DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    -            /// dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_3
    -            DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_0
    -            DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    -            /// dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_1
    -            DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    -            /// dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_2
    -            DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    -            /// dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_3
    -            DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x4c);
    -
    -        /// address: 0x600c1050
    -        /// SENSITIVE_DMA_APBPERI_MAC_PMS_CONSTRAIN_0_REG
    -        pub const DMA_APBPERI_MAC_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// dma_apbperi_mac_pms_constrain_lock
    -            DMA_APBPERI_MAC_PMS_CONSTRAIN_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x50);
    -
    -        /// address: 0x600c1054
    -        /// SENSITIVE_DMA_APBPERI_MAC_PMS_CONSTRAIN_1_REG
    -        pub const DMA_APBPERI_MAC_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// dma_apbperi_mac_pms_constrain_sram_world_0_pms_0
    -            DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    -            /// dma_apbperi_mac_pms_constrain_sram_world_0_pms_1
    -            DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    -            /// dma_apbperi_mac_pms_constrain_sram_world_0_pms_2
    -            DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    -            /// dma_apbperi_mac_pms_constrain_sram_world_0_pms_3
    -            DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// dma_apbperi_mac_pms_constrain_sram_world_1_pms_0
    -            DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    -            /// dma_apbperi_mac_pms_constrain_sram_world_1_pms_1
    -            DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    -            /// dma_apbperi_mac_pms_constrain_sram_world_1_pms_2
    -            DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    -            /// dma_apbperi_mac_pms_constrain_sram_world_1_pms_3
    -            DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x54);
    -
    -        /// address: 0x600c1058
    -        /// SENSITIVE_DMA_APBPERI_BACKUP_PMS_CONSTRAIN_0_REG
    -        pub const DMA_APBPERI_BACKUP_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// dma_apbperi_backup_pms_constrain_lock
    -            DMA_APBPERI_BACKUP_PMS_CONSTRAIN_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x58);
    -
    -        /// address: 0x600c105c
    -        /// SENSITIVE_DMA_APBPERI_BACKUP_PMS_CONSTRAIN_1_REG
    -        pub const DMA_APBPERI_BACKUP_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// dma_apbperi_backup_pms_constrain_sram_world_0_pms_0
    -            DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    -            /// dma_apbperi_backup_pms_constrain_sram_world_0_pms_1
    -            DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    -            /// dma_apbperi_backup_pms_constrain_sram_world_0_pms_2
    -            DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    -            /// dma_apbperi_backup_pms_constrain_sram_world_0_pms_3
    -            DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// dma_apbperi_backup_pms_constrain_sram_world_1_pms_0
    -            DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    -            /// dma_apbperi_backup_pms_constrain_sram_world_1_pms_1
    -            DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    -            /// dma_apbperi_backup_pms_constrain_sram_world_1_pms_2
    -            DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    -            /// dma_apbperi_backup_pms_constrain_sram_world_1_pms_3
    -            DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x5c);
    -
    -        /// address: 0x600c1060
    -        /// SENSITIVE_DMA_APBPERI_LC_PMS_CONSTRAIN_0_REG
    -        pub const DMA_APBPERI_LC_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// dma_apbperi_lc_pms_constrain_lock
    -            DMA_APBPERI_LC_PMS_CONSTRAIN_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x60);
    -
    -        /// address: 0x600c1064
    -        /// SENSITIVE_DMA_APBPERI_LC_PMS_CONSTRAIN_1_REG
    -        pub const DMA_APBPERI_LC_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// dma_apbperi_lc_pms_constrain_sram_world_0_pms_0
    -            DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    -            /// dma_apbperi_lc_pms_constrain_sram_world_0_pms_1
    -            DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    -            /// dma_apbperi_lc_pms_constrain_sram_world_0_pms_2
    -            DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    -            /// dma_apbperi_lc_pms_constrain_sram_world_0_pms_3
    -            DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// dma_apbperi_lc_pms_constrain_sram_world_1_pms_0
    -            DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    -            /// dma_apbperi_lc_pms_constrain_sram_world_1_pms_1
    -            DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    -            /// dma_apbperi_lc_pms_constrain_sram_world_1_pms_2
    -            DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    -            /// dma_apbperi_lc_pms_constrain_sram_world_1_pms_3
    -            DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x64);
    -
    -        /// address: 0x600c1068
    -        /// SENSITIVE_DMA_APBPERI_AES_PMS_CONSTRAIN_0_REG
    -        pub const DMA_APBPERI_AES_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// dma_apbperi_aes_pms_constrain_lock
    -            DMA_APBPERI_AES_PMS_CONSTRAIN_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x68);
    -
    -        /// address: 0x600c106c
    -        /// SENSITIVE_DMA_APBPERI_AES_PMS_CONSTRAIN_1_REG
    -        pub const DMA_APBPERI_AES_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// dma_apbperi_aes_pms_constrain_sram_world_0_pms_0
    -            DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    -            /// dma_apbperi_aes_pms_constrain_sram_world_0_pms_1
    -            DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    -            /// dma_apbperi_aes_pms_constrain_sram_world_0_pms_2
    -            DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    -            /// dma_apbperi_aes_pms_constrain_sram_world_0_pms_3
    -            DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// dma_apbperi_aes_pms_constrain_sram_world_1_pms_0
    -            DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    -            /// dma_apbperi_aes_pms_constrain_sram_world_1_pms_1
    -            DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    -            /// dma_apbperi_aes_pms_constrain_sram_world_1_pms_2
    -            DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    -            /// dma_apbperi_aes_pms_constrain_sram_world_1_pms_3
    -            DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x6c);
    -
    -        /// address: 0x600c1070
    -        /// SENSITIVE_DMA_APBPERI_SHA_PMS_CONSTRAIN_0_REG
    -        pub const DMA_APBPERI_SHA_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// dma_apbperi_sha_pms_constrain_lock
    -            DMA_APBPERI_SHA_PMS_CONSTRAIN_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x70);
    -
    -        /// address: 0x600c1074
    -        /// SENSITIVE_DMA_APBPERI_SHA_PMS_CONSTRAIN_1_REG
    -        pub const DMA_APBPERI_SHA_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// dma_apbperi_sha_pms_constrain_sram_world_0_pms_0
    -            DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    -            /// dma_apbperi_sha_pms_constrain_sram_world_0_pms_1
    -            DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    -            /// dma_apbperi_sha_pms_constrain_sram_world_0_pms_2
    -            DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    -            /// dma_apbperi_sha_pms_constrain_sram_world_0_pms_3
    -            DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// dma_apbperi_sha_pms_constrain_sram_world_1_pms_0
    -            DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    -            /// dma_apbperi_sha_pms_constrain_sram_world_1_pms_1
    -            DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    -            /// dma_apbperi_sha_pms_constrain_sram_world_1_pms_2
    -            DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    -            /// dma_apbperi_sha_pms_constrain_sram_world_1_pms_3
    -            DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x74);
    -
    -        /// address: 0x600c1078
    -        /// SENSITIVE_DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_0_REG
    -        pub const DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// dma_apbperi_adc_dac_pms_constrain_lock
    -            DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x78);
    -
    -        /// address: 0x600c107c
    -        /// SENSITIVE_DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_1_REG
    -        pub const DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_0
    -            DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    -            /// dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_1
    -            DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    -            /// dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_2
    -            DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    -            /// dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_3
    -            DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_0
    -            DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    -            /// dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_1
    -            DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    -            /// dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_2
    -            DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    -            /// dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_3
    -            DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x7c);
    -
    -        /// address: 0x600c1080
    -        /// SENSITIVE_DMA_APBPERI_PMS_MONITOR_0_REG
    -        pub const DMA_APBPERI_PMS_MONITOR_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// dma_apbperi_pms_monitor_lock
    -            DMA_APBPERI_PMS_MONITOR_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x80);
    -
    -        /// address: 0x600c1084
    -        /// SENSITIVE_DMA_APBPERI_PMS_MONITOR_1_REG
    -        pub const DMA_APBPERI_PMS_MONITOR_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// dma_apbperi_pms_monitor_violate_clr
    -            DMA_APBPERI_PMS_MONITOR_VIOLATE_CLR: u1,
    -            /// dma_apbperi_pms_monitor_violate_en
    -            DMA_APBPERI_PMS_MONITOR_VIOLATE_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x84);
    -
    -        /// address: 0x600c1088
    -        /// SENSITIVE_DMA_APBPERI_PMS_MONITOR_2_REG
    -        pub const DMA_APBPERI_PMS_MONITOR_2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// dma_apbperi_pms_monitor_violate_intr
    -            DMA_APBPERI_PMS_MONITOR_VIOLATE_INTR: u1,
    -            /// dma_apbperi_pms_monitor_violate_status_world
    -            DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_WORLD: u2,
    -            /// dma_apbperi_pms_monitor_violate_status_addr
    -            DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_ADDR: u24,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -        }), base_address + 0x88);
    -
    -        /// address: 0x600c108c
    -        /// SENSITIVE_DMA_APBPERI_PMS_MONITOR_3_REG
    -        pub const DMA_APBPERI_PMS_MONITOR_3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// dma_apbperi_pms_monitor_violate_status_wr
    -            DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_WR: u1,
    -            /// dma_apbperi_pms_monitor_violate_status_byteen
    -            DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_BYTEEN: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -        }), base_address + 0x8c);
    -
    -        /// address: 0x600c1090
    -        /// SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_0_REG
    -        pub const CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_x_iram0_dram0_dma_split_line_constrain_lock
    -            CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x90);
    -
    -        /// address: 0x600c1094
    -        /// SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_1_REG
    -        pub const CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_x_iram0_dram0_dma_sram_category_0
    -            CORE_X_IRAM0_DRAM0_DMA_SRAM_CATEGORY_0: u2,
    -            /// core_x_iram0_dram0_dma_sram_category_1
    -            CORE_X_IRAM0_DRAM0_DMA_SRAM_CATEGORY_1: u2,
    -            /// core_x_iram0_dram0_dma_sram_category_2
    -            CORE_X_IRAM0_DRAM0_DMA_SRAM_CATEGORY_2: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            /// core_x_iram0_dram0_dma_sram_splitaddr
    -            CORE_X_IRAM0_DRAM0_DMA_SRAM_SPLITADDR: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -        }), base_address + 0x94);
    -
    -        /// address: 0x600c1098
    -        /// SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_2_REG
    -        pub const CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_x_iram0_sram_line_0_category_0
    -            CORE_X_IRAM0_SRAM_LINE_0_CATEGORY_0: u2,
    -            /// core_x_iram0_sram_line_0_category_1
    -            CORE_X_IRAM0_SRAM_LINE_0_CATEGORY_1: u2,
    -            /// core_x_iram0_sram_line_0_category_2
    -            CORE_X_IRAM0_SRAM_LINE_0_CATEGORY_2: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            /// core_x_iram0_sram_line_0_splitaddr
    -            CORE_X_IRAM0_SRAM_LINE_0_SPLITADDR: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -        }), base_address + 0x98);
    -
    -        /// address: 0x600c109c
    -        /// SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_3_REG
    -        pub const CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_x_iram0_sram_line_1_category_0
    -            CORE_X_IRAM0_SRAM_LINE_1_CATEGORY_0: u2,
    -            /// core_x_iram0_sram_line_1_category_1
    -            CORE_X_IRAM0_SRAM_LINE_1_CATEGORY_1: u2,
    -            /// core_x_iram0_sram_line_1_category_2
    -            CORE_X_IRAM0_SRAM_LINE_1_CATEGORY_2: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            /// core_x_iram0_sram_line_1_splitaddr
    -            CORE_X_IRAM0_SRAM_LINE_1_SPLITADDR: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -        }), base_address + 0x9c);
    -
    -        /// address: 0x600c10a0
    -        /// SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_4_REG
    -        pub const CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_x_dram0_dma_sram_line_0_category_0
    -            CORE_X_DRAM0_DMA_SRAM_LINE_0_CATEGORY_0: u2,
    -            /// core_x_dram0_dma_sram_line_0_category_1
    -            CORE_X_DRAM0_DMA_SRAM_LINE_0_CATEGORY_1: u2,
    -            /// core_x_dram0_dma_sram_line_0_category_2
    -            CORE_X_DRAM0_DMA_SRAM_LINE_0_CATEGORY_2: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            /// core_x_dram0_dma_sram_line_0_splitaddr
    -            CORE_X_DRAM0_DMA_SRAM_LINE_0_SPLITADDR: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -        }), base_address + 0xa0);
    -
    -        /// address: 0x600c10a4
    -        /// SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_5_REG
    -        pub const CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_x_dram0_dma_sram_line_1_category_0
    -            CORE_X_DRAM0_DMA_SRAM_LINE_1_CATEGORY_0: u2,
    -            /// core_x_dram0_dma_sram_line_1_category_1
    -            CORE_X_DRAM0_DMA_SRAM_LINE_1_CATEGORY_1: u2,
    -            /// core_x_dram0_dma_sram_line_1_category_2
    -            CORE_X_DRAM0_DMA_SRAM_LINE_1_CATEGORY_2: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            /// core_x_dram0_dma_sram_line_1_splitaddr
    -            CORE_X_DRAM0_DMA_SRAM_LINE_1_SPLITADDR: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -        }), base_address + 0xa4);
    -
    -        /// address: 0x600c10a8
    -        /// SENSITIVE_CORE_X_IRAM0_PMS_CONSTRAIN_0_REG
    -        pub const CORE_X_IRAM0_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_x_iram0_pms_constrain_lock
    -            CORE_X_IRAM0_PMS_CONSTRAIN_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0xa8);
    -
    -        /// address: 0x600c10ac
    -        /// SENSITIVE_CORE_X_IRAM0_PMS_CONSTRAIN_1_REG
    -        pub const CORE_X_IRAM0_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_x_iram0_pms_constrain_sram_world_1_pms_0
    -            CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u3,
    -            /// core_x_iram0_pms_constrain_sram_world_1_pms_1
    -            CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u3,
    -            /// core_x_iram0_pms_constrain_sram_world_1_pms_2
    -            CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u3,
    -            /// core_x_iram0_pms_constrain_sram_world_1_pms_3
    -            CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u3,
    -            /// core_x_iram0_pms_constrain_sram_world_1_cachedataarray_pms_0
    -            CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_CACHEDATAARRAY_PMS_0: u3,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            /// core_x_iram0_pms_constrain_rom_world_1_pms
    -            CORE_X_IRAM0_PMS_CONSTRAIN_ROM_WORLD_1_PMS: u3,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -        }), base_address + 0xac);
    -
    -        /// address: 0x600c10b0
    -        /// SENSITIVE_CORE_X_IRAM0_PMS_CONSTRAIN_2_REG
    -        pub const CORE_X_IRAM0_PMS_CONSTRAIN_2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_x_iram0_pms_constrain_sram_world_0_pms_0
    -            CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u3,
    -            /// core_x_iram0_pms_constrain_sram_world_0_pms_1
    -            CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u3,
    -            /// core_x_iram0_pms_constrain_sram_world_0_pms_2
    -            CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u3,
    -            /// core_x_iram0_pms_constrain_sram_world_0_pms_3
    -            CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u3,
    -            /// core_x_iram0_pms_constrain_sram_world_0_cachedataarray_pms_0
    -            CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_CACHEDATAARRAY_PMS_0: u3,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            /// core_x_iram0_pms_constrain_rom_world_0_pms
    -            CORE_X_IRAM0_PMS_CONSTRAIN_ROM_WORLD_0_PMS: u3,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -        }), base_address + 0xb0);
    -
    -        /// address: 0x600c10b4
    -        /// SENSITIVE_CORE_0_IRAM0_PMS_MONITOR_0_REG
    -        pub const CORE_0_IRAM0_PMS_MONITOR_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_0_iram0_pms_monitor_lock
    -            CORE_0_IRAM0_PMS_MONITOR_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0xb4);
    -
    -        /// address: 0x600c10b8
    -        /// SENSITIVE_CORE_0_IRAM0_PMS_MONITOR_1_REG
    -        pub const CORE_0_IRAM0_PMS_MONITOR_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_0_iram0_pms_monitor_violate_clr
    -            CORE_0_IRAM0_PMS_MONITOR_VIOLATE_CLR: u1,
    -            /// core_0_iram0_pms_monitor_violate_en
    -            CORE_0_IRAM0_PMS_MONITOR_VIOLATE_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0xb8);
    -
    -        /// address: 0x600c10bc
    -        /// SENSITIVE_CORE_0_IRAM0_PMS_MONITOR_2_REG
    -        pub const CORE_0_IRAM0_PMS_MONITOR_2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_0_iram0_pms_monitor_violate_intr
    -            CORE_0_IRAM0_PMS_MONITOR_VIOLATE_INTR: u1,
    -            /// core_0_iram0_pms_monitor_violate_status_wr
    -            CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_WR: u1,
    -            /// core_0_iram0_pms_monitor_violate_status_loadstore
    -            CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_LOADSTORE: u1,
    -            /// core_0_iram0_pms_monitor_violate_status_world
    -            CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_WORLD: u2,
    -            /// core_0_iram0_pms_monitor_violate_status_addr
    -            CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_ADDR: u24,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -        }), base_address + 0xbc);
    -
    -        /// address: 0x600c10c0
    -        /// SENSITIVE_CORE_X_DRAM0_PMS_CONSTRAIN_0_REG
    -        pub const CORE_X_DRAM0_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_x_dram0_pms_constrain_lock
    -            CORE_X_DRAM0_PMS_CONSTRAIN_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0xc0);
    -
    -        /// address: 0x600c10c4
    -        /// SENSITIVE_CORE_X_DRAM0_PMS_CONSTRAIN_1_REG
    -        pub const CORE_X_DRAM0_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_x_dram0_pms_constrain_sram_world_0_pms_0
    -            CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    -            /// core_x_dram0_pms_constrain_sram_world_0_pms_1
    -            CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    -            /// core_x_dram0_pms_constrain_sram_world_0_pms_2
    -            CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    -            /// core_x_dram0_pms_constrain_sram_world_0_pms_3
    -            CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// core_x_dram0_pms_constrain_sram_world_1_pms_0
    -            CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    -            /// core_x_dram0_pms_constrain_sram_world_1_pms_1
    -            CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    -            /// core_x_dram0_pms_constrain_sram_world_1_pms_2
    -            CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    -            /// core_x_dram0_pms_constrain_sram_world_1_pms_3
    -            CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            /// core_x_dram0_pms_constrain_rom_world_0_pms
    -            CORE_X_DRAM0_PMS_CONSTRAIN_ROM_WORLD_0_PMS: u2,
    -            /// core_x_dram0_pms_constrain_rom_world_1_pms
    -            CORE_X_DRAM0_PMS_CONSTRAIN_ROM_WORLD_1_PMS: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -        }), base_address + 0xc4);
    -
    -        /// address: 0x600c10c8
    -        /// SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_0_REG
    -        pub const CORE_0_DRAM0_PMS_MONITOR_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_0_dram0_pms_monitor_lock
    -            CORE_0_DRAM0_PMS_MONITOR_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0xc8);
    -
    -        /// address: 0x600c10cc
    -        /// SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_1_REG
    -        pub const CORE_0_DRAM0_PMS_MONITOR_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_0_dram0_pms_monitor_violate_clr
    -            CORE_0_DRAM0_PMS_MONITOR_VIOLATE_CLR: u1,
    -            /// core_0_dram0_pms_monitor_violate_en
    -            CORE_0_DRAM0_PMS_MONITOR_VIOLATE_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0xcc);
    -
    -        /// address: 0x600c10d0
    -        /// SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_2_REG
    -        pub const CORE_0_DRAM0_PMS_MONITOR_2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_0_dram0_pms_monitor_violate_intr
    -            CORE_0_DRAM0_PMS_MONITOR_VIOLATE_INTR: u1,
    -            /// core_0_dram0_pms_monitor_violate_status_lock
    -            CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_LOCK: u1,
    -            /// core_0_dram0_pms_monitor_violate_status_world
    -            CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_WORLD: u2,
    -            /// core_0_dram0_pms_monitor_violate_status_addr
    -            CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_ADDR: u24,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -        }), base_address + 0xd0);
    -
    -        /// address: 0x600c10d4
    -        /// SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_3_REG
    -        pub const CORE_0_DRAM0_PMS_MONITOR_3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_0_dram0_pms_monitor_violate_status_wr
    -            CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_WR: u1,
    -            /// core_0_dram0_pms_monitor_violate_status_byteen
    -            CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_BYTEEN: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -        }), base_address + 0xd4);
    -
    -        /// address: 0x600c10d8
    -        /// SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_0_REG
    -        pub const CORE_0_PIF_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_0_pif_pms_constrain_lock
    -            CORE_0_PIF_PMS_CONSTRAIN_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0xd8);
    -
    -        /// address: 0x600c10dc
    -        /// SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_1_REG
    -        pub const CORE_0_PIF_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_0_pif_pms_constrain_world_0_uart
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_UART: u2,
    -            /// core_0_pif_pms_constrain_world_0_g0spi_1
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_G0SPI_1: u2,
    -            /// core_0_pif_pms_constrain_world_0_g0spi_0
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_G0SPI_0: u2,
    -            /// core_0_pif_pms_constrain_world_0_gpio
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_GPIO: u2,
    -            /// core_0_pif_pms_constrain_world_0_fe2
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_FE2: u2,
    -            /// core_0_pif_pms_constrain_world_0_fe
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_FE: u2,
    -            /// core_0_pif_pms_constrain_world_0_timer
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_TIMER: u2,
    -            /// core_0_pif_pms_constrain_world_0_rtc
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_RTC: u2,
    -            /// core_0_pif_pms_constrain_world_0_io_mux
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_IO_MUX: u2,
    -            /// core_0_pif_pms_constrain_world_0_wdg
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_WDG: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// core_0_pif_pms_constrain_world_0_misc
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_MISC: u2,
    -            /// core_0_pif_pms_constrain_world_0_i2c
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_I2C: u2,
    -            reserved4: u1,
    -            reserved5: u1,
    -            /// core_0_pif_pms_constrain_world_0_uart1
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_UART1: u2,
    -        }), base_address + 0xdc);
    -
    -        /// address: 0x600c10e0
    -        /// SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_2_REG
    -        pub const CORE_0_PIF_PMS_CONSTRAIN_2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_0_pif_pms_constrain_world_0_bt
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_BT: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// core_0_pif_pms_constrain_world_0_i2c_ext0
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_I2C_EXT0: u2,
    -            /// core_0_pif_pms_constrain_world_0_uhci0
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_UHCI0: u2,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// core_0_pif_pms_constrain_world_0_rmt
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_RMT: u2,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            /// core_0_pif_pms_constrain_world_0_ledc
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_LEDC: u2,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            /// core_0_pif_pms_constrain_world_0_bb
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_BB: u2,
    -            reserved12: u1,
    -            reserved13: u1,
    -            /// core_0_pif_pms_constrain_world_0_timergroup
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_TIMERGROUP: u2,
    -            /// core_0_pif_pms_constrain_world_0_timergroup1
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_TIMERGROUP1: u2,
    -            /// core_0_pif_pms_constrain_world_0_systimer
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SYSTIMER: u2,
    -        }), base_address + 0xe0);
    -
    -        /// address: 0x600c10e4
    -        /// SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_3_REG
    -        pub const CORE_0_PIF_PMS_CONSTRAIN_3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_0_pif_pms_constrain_world_0_spi_2
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SPI_2: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// core_0_pif_pms_constrain_world_0_apb_ctrl
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_APB_CTRL: u2,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            /// core_0_pif_pms_constrain_world_0_can
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CAN: u2,
    -            reserved6: u1,
    -            reserved7: u1,
    -            /// core_0_pif_pms_constrain_world_0_i2s1
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_I2S1: u2,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            /// core_0_pif_pms_constrain_world_0_rwbt
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_RWBT: u2,
    -            reserved14: u1,
    -            reserved15: u1,
    -            /// core_0_pif_pms_constrain_world_0_wifimac
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_WIFIMAC: u2,
    -            /// core_0_pif_pms_constrain_world_0_pwr
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_PWR: u2,
    -            padding0: u1,
    -            padding1: u1,
    -        }), base_address + 0xe4);
    -
    -        /// address: 0x600c10e8
    -        /// SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_4_REG
    -        pub const CORE_0_PIF_PMS_CONSTRAIN_4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// core_0_pif_pms_constrain_world_0_usb_wrap
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_USB_WRAP: u2,
    -            /// core_0_pif_pms_constrain_world_0_crypto_peri
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CRYPTO_PERI: u2,
    -            /// core_0_pif_pms_constrain_world_0_crypto_dma
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CRYPTO_DMA: u2,
    -            /// core_0_pif_pms_constrain_world_0_apb_adc
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_APB_ADC: u2,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// core_0_pif_pms_constrain_world_0_bt_pwr
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_BT_PWR: u2,
    -            /// core_0_pif_pms_constrain_world_0_usb_device
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_USB_DEVICE: u2,
    -            /// core_0_pif_pms_constrain_world_0_system
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SYSTEM: u2,
    -            /// core_0_pif_pms_constrain_world_0_sensitive
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SENSITIVE: u2,
    -            /// core_0_pif_pms_constrain_world_0_interrupt
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_INTERRUPT: u2,
    -            /// core_0_pif_pms_constrain_world_0_dma_copy
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_DMA_COPY: u2,
    -            /// core_0_pif_pms_constrain_world_0_cache_config
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CACHE_CONFIG: u2,
    -            /// core_0_pif_pms_constrain_world_0_ad
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_AD: u2,
    -            /// core_0_pif_pms_constrain_world_0_dio
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_DIO: u2,
    -            /// core_0_pif_pms_constrain_world_0_world_controller
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_WORLD_CONTROLLER: u2,
    -        }), base_address + 0xe8);
    -
    -        /// address: 0x600c10ec
    -        /// SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_5_REG
    -        pub const CORE_0_PIF_PMS_CONSTRAIN_5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_0_pif_pms_constrain_world_1_uart
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_UART: u2,
    -            /// core_0_pif_pms_constrain_world_1_g0spi_1
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_G0SPI_1: u2,
    -            /// core_0_pif_pms_constrain_world_1_g0spi_0
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_G0SPI_0: u2,
    -            /// core_0_pif_pms_constrain_world_1_gpio
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_GPIO: u2,
    -            /// core_0_pif_pms_constrain_world_1_fe2
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_FE2: u2,
    -            /// core_0_pif_pms_constrain_world_1_fe
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_FE: u2,
    -            /// core_0_pif_pms_constrain_world_1_timer
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_TIMER: u2,
    -            /// core_0_pif_pms_constrain_world_1_rtc
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_RTC: u2,
    -            /// core_0_pif_pms_constrain_world_1_io_mux
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_IO_MUX: u2,
    -            /// core_0_pif_pms_constrain_world_1_wdg
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_WDG: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// core_0_pif_pms_constrain_world_1_misc
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_MISC: u2,
    -            /// core_0_pif_pms_constrain_world_1_i2c
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_I2C: u2,
    -            reserved4: u1,
    -            reserved5: u1,
    -            /// core_0_pif_pms_constrain_world_1_uart1
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_UART1: u2,
    -        }), base_address + 0xec);
    -
    -        /// address: 0x600c10f0
    -        /// SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_6_REG
    -        pub const CORE_0_PIF_PMS_CONSTRAIN_6 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_0_pif_pms_constrain_world_1_bt
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_BT: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// core_0_pif_pms_constrain_world_1_i2c_ext0
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_I2C_EXT0: u2,
    -            /// core_0_pif_pms_constrain_world_1_uhci0
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_UHCI0: u2,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// core_0_pif_pms_constrain_world_1_rmt
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_RMT: u2,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            /// core_0_pif_pms_constrain_world_1_ledc
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_LEDC: u2,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            /// core_0_pif_pms_constrain_world_1_bb
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_BB: u2,
    -            reserved12: u1,
    -            reserved13: u1,
    -            /// core_0_pif_pms_constrain_world_1_timergroup
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_TIMERGROUP: u2,
    -            /// core_0_pif_pms_constrain_world_1_timergroup1
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_TIMERGROUP1: u2,
    -            /// core_0_pif_pms_constrain_world_1_systimer
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SYSTIMER: u2,
    -        }), base_address + 0xf0);
    -
    -        /// address: 0x600c10f4
    -        /// SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_7_REG
    -        pub const CORE_0_PIF_PMS_CONSTRAIN_7 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_0_pif_pms_constrain_world_1_spi_2
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SPI_2: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// core_0_pif_pms_constrain_world_1_apb_ctrl
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_APB_CTRL: u2,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            /// core_0_pif_pms_constrain_world_1_can
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CAN: u2,
    -            reserved6: u1,
    -            reserved7: u1,
    -            /// core_0_pif_pms_constrain_world_1_i2s1
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_I2S1: u2,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            /// core_0_pif_pms_constrain_world_1_rwbt
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_RWBT: u2,
    -            reserved14: u1,
    -            reserved15: u1,
    -            /// core_0_pif_pms_constrain_world_1_wifimac
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_WIFIMAC: u2,
    -            /// core_0_pif_pms_constrain_world_1_pwr
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_PWR: u2,
    -            padding0: u1,
    -            padding1: u1,
    -        }), base_address + 0xf4);
    -
    -        /// address: 0x600c10f8
    -        /// SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_8_REG
    -        pub const CORE_0_PIF_PMS_CONSTRAIN_8 = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// core_0_pif_pms_constrain_world_1_usb_wrap
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_USB_WRAP: u2,
    -            /// core_0_pif_pms_constrain_world_1_crypto_peri
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CRYPTO_PERI: u2,
    -            /// core_0_pif_pms_constrain_world_1_crypto_dma
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CRYPTO_DMA: u2,
    -            /// core_0_pif_pms_constrain_world_1_apb_adc
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_APB_ADC: u2,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// core_0_pif_pms_constrain_world_1_bt_pwr
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_BT_PWR: u2,
    -            /// core_0_pif_pms_constrain_world_1_usb_device
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_USB_DEVICE: u2,
    -            /// core_0_pif_pms_constrain_world_1_system
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SYSTEM: u2,
    -            /// core_0_pif_pms_constrain_world_1_sensitive
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SENSITIVE: u2,
    -            /// core_0_pif_pms_constrain_world_1_interrupt
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_INTERRUPT: u2,
    -            /// core_0_pif_pms_constrain_world_1_dma_copy
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_DMA_COPY: u2,
    -            /// core_0_pif_pms_constrain_world_1_cache_config
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CACHE_CONFIG: u2,
    -            /// core_0_pif_pms_constrain_world_1_ad
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_AD: u2,
    -            /// core_0_pif_pms_constrain_world_1_dio
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_DIO: u2,
    -            /// core_0_pif_pms_constrain_world_1_world_controller
    -            CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_WORLD_CONTROLLER: u2,
    -        }), base_address + 0xf8);
    -
    -        /// address: 0x600c10fc
    -        /// SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_9_REG
    -        pub const CORE_0_PIF_PMS_CONSTRAIN_9 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_0_pif_pms_constrain_rtcfast_spltaddr_world_0
    -            CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_SPLTADDR_WORLD_0: u11,
    -            /// core_0_pif_pms_constrain_rtcfast_spltaddr_world_1
    -            CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_SPLTADDR_WORLD_1: u11,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -        }), base_address + 0xfc);
    -
    -        /// address: 0x600c1100
    -        /// SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_10_REG
    -        pub const CORE_0_PIF_PMS_CONSTRAIN_10 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_0_pif_pms_constrain_rtcfast_world_0_l
    -            CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_0_L: u3,
    -            /// core_0_pif_pms_constrain_rtcfast_world_0_h
    -            CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_0_H: u3,
    -            /// core_0_pif_pms_constrain_rtcfast_world_1_l
    -            CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_1_L: u3,
    -            /// core_0_pif_pms_constrain_rtcfast_world_1_h
    -            CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_1_H: u3,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0x100);
    -
    -        /// address: 0x600c1104
    -        /// SENSITIVE_REGION_PMS_CONSTRAIN_0_REG
    -        pub const REGION_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// region_pms_constrain_lock
    -            REGION_PMS_CONSTRAIN_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x104);
    -
    -        /// address: 0x600c1108
    -        /// SENSITIVE_REGION_PMS_CONSTRAIN_1_REG
    -        pub const REGION_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// region_pms_constrain_world_0_area_0
    -            REGION_PMS_CONSTRAIN_WORLD_0_AREA_0: u2,
    -            /// region_pms_constrain_world_0_area_1
    -            REGION_PMS_CONSTRAIN_WORLD_0_AREA_1: u2,
    -            /// region_pms_constrain_world_0_area_2
    -            REGION_PMS_CONSTRAIN_WORLD_0_AREA_2: u2,
    -            /// region_pms_constrain_world_0_area_3
    -            REGION_PMS_CONSTRAIN_WORLD_0_AREA_3: u2,
    -            /// region_pms_constrain_world_0_area_4
    -            REGION_PMS_CONSTRAIN_WORLD_0_AREA_4: u2,
    -            /// region_pms_constrain_world_0_area_5
    -            REGION_PMS_CONSTRAIN_WORLD_0_AREA_5: u2,
    -            /// region_pms_constrain_world_0_area_6
    -            REGION_PMS_CONSTRAIN_WORLD_0_AREA_6: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -        }), base_address + 0x108);
    -
    -        /// address: 0x600c110c
    -        /// SENSITIVE_REGION_PMS_CONSTRAIN_2_REG
    -        pub const REGION_PMS_CONSTRAIN_2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// region_pms_constrain_world_1_area_0
    -            REGION_PMS_CONSTRAIN_WORLD_1_AREA_0: u2,
    -            /// region_pms_constrain_world_1_area_1
    -            REGION_PMS_CONSTRAIN_WORLD_1_AREA_1: u2,
    -            /// region_pms_constrain_world_1_area_2
    -            REGION_PMS_CONSTRAIN_WORLD_1_AREA_2: u2,
    -            /// region_pms_constrain_world_1_area_3
    -            REGION_PMS_CONSTRAIN_WORLD_1_AREA_3: u2,
    -            /// region_pms_constrain_world_1_area_4
    -            REGION_PMS_CONSTRAIN_WORLD_1_AREA_4: u2,
    -            /// region_pms_constrain_world_1_area_5
    -            REGION_PMS_CONSTRAIN_WORLD_1_AREA_5: u2,
    -            /// region_pms_constrain_world_1_area_6
    -            REGION_PMS_CONSTRAIN_WORLD_1_AREA_6: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -        }), base_address + 0x10c);
    -
    -        /// address: 0x600c1110
    -        /// SENSITIVE_REGION_PMS_CONSTRAIN_3_REG
    -        pub const REGION_PMS_CONSTRAIN_3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// region_pms_constrain_addr_0
    -            REGION_PMS_CONSTRAIN_ADDR_0: u30,
    -            padding0: u1,
    -            padding1: u1,
    -        }), base_address + 0x110);
    -
    -        /// address: 0x600c1114
    -        /// SENSITIVE_REGION_PMS_CONSTRAIN_4_REG
    -        pub const REGION_PMS_CONSTRAIN_4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// region_pms_constrain_addr_1
    -            REGION_PMS_CONSTRAIN_ADDR_1: u30,
    -            padding0: u1,
    -            padding1: u1,
    -        }), base_address + 0x114);
    -
    -        /// address: 0x600c1118
    -        /// SENSITIVE_REGION_PMS_CONSTRAIN_5_REG
    -        pub const REGION_PMS_CONSTRAIN_5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// region_pms_constrain_addr_2
    -            REGION_PMS_CONSTRAIN_ADDR_2: u30,
    -            padding0: u1,
    -            padding1: u1,
    -        }), base_address + 0x118);
    -
    -        /// address: 0x600c111c
    -        /// SENSITIVE_REGION_PMS_CONSTRAIN_6_REG
    -        pub const REGION_PMS_CONSTRAIN_6 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// region_pms_constrain_addr_3
    -            REGION_PMS_CONSTRAIN_ADDR_3: u30,
    -            padding0: u1,
    -            padding1: u1,
    -        }), base_address + 0x11c);
    -
    -        /// address: 0x600c1120
    -        /// SENSITIVE_REGION_PMS_CONSTRAIN_7_REG
    -        pub const REGION_PMS_CONSTRAIN_7 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// region_pms_constrain_addr_4
    -            REGION_PMS_CONSTRAIN_ADDR_4: u30,
    -            padding0: u1,
    -            padding1: u1,
    -        }), base_address + 0x120);
    -
    -        /// address: 0x600c1124
    -        /// SENSITIVE_REGION_PMS_CONSTRAIN_8_REG
    -        pub const REGION_PMS_CONSTRAIN_8 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// region_pms_constrain_addr_5
    -            REGION_PMS_CONSTRAIN_ADDR_5: u30,
    -            padding0: u1,
    -            padding1: u1,
    -        }), base_address + 0x124);
    -
    -        /// address: 0x600c1128
    -        /// SENSITIVE_REGION_PMS_CONSTRAIN_9_REG
    -        pub const REGION_PMS_CONSTRAIN_9 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// region_pms_constrain_addr_6
    -            REGION_PMS_CONSTRAIN_ADDR_6: u30,
    -            padding0: u1,
    -            padding1: u1,
    -        }), base_address + 0x128);
    -
    -        /// address: 0x600c112c
    -        /// SENSITIVE_REGION_PMS_CONSTRAIN_10_REG
    -        pub const REGION_PMS_CONSTRAIN_10 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// region_pms_constrain_addr_7
    -            REGION_PMS_CONSTRAIN_ADDR_7: u30,
    -            padding0: u1,
    -            padding1: u1,
    -        }), base_address + 0x12c);
    -
    -        /// address: 0x600c1130
    -        /// SENSITIVE_CORE_0_PIF_PMS_MONITOR_0_REG
    -        pub const CORE_0_PIF_PMS_MONITOR_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_0_pif_pms_monitor_lock
    -            CORE_0_PIF_PMS_MONITOR_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x130);
    -
    -        /// address: 0x600c1134
    -        /// SENSITIVE_CORE_0_PIF_PMS_MONITOR_1_REG
    -        pub const CORE_0_PIF_PMS_MONITOR_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_0_pif_pms_monitor_violate_clr
    -            CORE_0_PIF_PMS_MONITOR_VIOLATE_CLR: u1,
    -            /// core_0_pif_pms_monitor_violate_en
    -            CORE_0_PIF_PMS_MONITOR_VIOLATE_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x134);
    -
    -        /// address: 0x600c1138
    -        /// SENSITIVE_CORE_0_PIF_PMS_MONITOR_2_REG
    -        pub const CORE_0_PIF_PMS_MONITOR_2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_0_pif_pms_monitor_violate_intr
    -            CORE_0_PIF_PMS_MONITOR_VIOLATE_INTR: u1,
    -            /// core_0_pif_pms_monitor_violate_status_hport_0
    -            CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HPORT_0: u1,
    -            /// core_0_pif_pms_monitor_violate_status_hsize
    -            CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HSIZE: u3,
    -            /// core_0_pif_pms_monitor_violate_status_hwrite
    -            CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HWRITE: u1,
    -            /// core_0_pif_pms_monitor_violate_status_hworld
    -            CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HWORLD: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x138);
    -
    -        /// address: 0x600c113c
    -        /// SENSITIVE_CORE_0_PIF_PMS_MONITOR_3_REG
    -        pub const CORE_0_PIF_PMS_MONITOR_3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_0_pif_pms_monitor_violate_status_haddr
    -            CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HADDR: u32,
    -        }), base_address + 0x13c);
    -
    -        /// address: 0x600c1140
    -        /// SENSITIVE_CORE_0_PIF_PMS_MONITOR_4_REG
    -        pub const CORE_0_PIF_PMS_MONITOR_4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_0_pif_pms_monitor_nonword_violate_clr
    -            CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_CLR: u1,
    -            /// core_0_pif_pms_monitor_nonword_violate_en
    -            CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x140);
    -
    -        /// address: 0x600c1144
    -        /// SENSITIVE_CORE_0_PIF_PMS_MONITOR_5_REG
    -        pub const CORE_0_PIF_PMS_MONITOR_5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_0_pif_pms_monitor_nonword_violate_intr
    -            CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_INTR: u1,
    -            /// core_0_pif_pms_monitor_nonword_violate_status_hsize
    -            CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_STATUS_HSIZE: u2,
    -            /// core_0_pif_pms_monitor_nonword_violate_status_hworld
    -            CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_STATUS_HWORLD: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -        }), base_address + 0x144);
    -
    -        /// address: 0x600c1148
    -        /// SENSITIVE_CORE_0_PIF_PMS_MONITOR_6_REG
    -        pub const CORE_0_PIF_PMS_MONITOR_6 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// core_0_pif_pms_monitor_nonword_violate_status_haddr
    -            CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_STATUS_HADDR: u32,
    -        }), base_address + 0x148);
    -
    -        /// address: 0x600c114c
    -        /// SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_0_REG
    -        pub const BACKUP_BUS_PMS_CONSTRAIN_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// backup_bus_pms_constrain_lock
    -            BACKUP_BUS_PMS_CONSTRAIN_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x14c);
    -
    -        /// address: 0x600c1150
    -        /// SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_1_REG
    -        pub const BACKUP_BUS_PMS_CONSTRAIN_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// backup_bus_pms_constrain_uart
    -            BACKUP_BUS_PMS_CONSTRAIN_UART: u2,
    -            /// backup_bus_pms_constrain_g0spi_1
    -            BACKUP_BUS_PMS_CONSTRAIN_G0SPI_1: u2,
    -            /// backup_bus_pms_constrain_g0spi_0
    -            BACKUP_BUS_PMS_CONSTRAIN_G0SPI_0: u2,
    -            /// backup_bus_pms_constrain_gpio
    -            BACKUP_BUS_PMS_CONSTRAIN_GPIO: u2,
    -            /// backup_bus_pms_constrain_fe2
    -            BACKUP_BUS_PMS_CONSTRAIN_FE2: u2,
    -            /// backup_bus_pms_constrain_fe
    -            BACKUP_BUS_PMS_CONSTRAIN_FE: u2,
    -            /// backup_bus_pms_constrain_timer
    -            BACKUP_BUS_PMS_CONSTRAIN_TIMER: u2,
    -            /// backup_bus_pms_constrain_rtc
    -            BACKUP_BUS_PMS_CONSTRAIN_RTC: u2,
    -            /// backup_bus_pms_constrain_io_mux
    -            BACKUP_BUS_PMS_CONSTRAIN_IO_MUX: u2,
    -            /// backup_bus_pms_constrain_wdg
    -            BACKUP_BUS_PMS_CONSTRAIN_WDG: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// backup_bus_pms_constrain_misc
    -            BACKUP_BUS_PMS_CONSTRAIN_MISC: u2,
    -            /// backup_bus_pms_constrain_i2c
    -            BACKUP_BUS_PMS_CONSTRAIN_I2C: u2,
    -            reserved4: u1,
    -            reserved5: u1,
    -            /// backup_bus_pms_constrain_uart1
    -            BACKUP_BUS_PMS_CONSTRAIN_UART1: u2,
    -        }), base_address + 0x150);
    -
    -        /// address: 0x600c1154
    -        /// SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_2_REG
    -        pub const BACKUP_BUS_PMS_CONSTRAIN_2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// backup_bus_pms_constrain_bt
    -            BACKUP_BUS_PMS_CONSTRAIN_BT: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// backup_bus_pms_constrain_i2c_ext0
    -            BACKUP_BUS_PMS_CONSTRAIN_I2C_EXT0: u2,
    -            /// backup_bus_pms_constrain_uhci0
    -            BACKUP_BUS_PMS_CONSTRAIN_UHCI0: u2,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// backup_bus_pms_constrain_rmt
    -            BACKUP_BUS_PMS_CONSTRAIN_RMT: u2,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            /// backup_bus_pms_constrain_ledc
    -            BACKUP_BUS_PMS_CONSTRAIN_LEDC: u2,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            /// backup_bus_pms_constrain_bb
    -            BACKUP_BUS_PMS_CONSTRAIN_BB: u2,
    -            reserved12: u1,
    -            reserved13: u1,
    -            /// backup_bus_pms_constrain_timergroup
    -            BACKUP_BUS_PMS_CONSTRAIN_TIMERGROUP: u2,
    -            /// backup_bus_pms_constrain_timergroup1
    -            BACKUP_BUS_PMS_CONSTRAIN_TIMERGROUP1: u2,
    -            /// backup_bus_pms_constrain_systimer
    -            BACKUP_BUS_PMS_CONSTRAIN_SYSTIMER: u2,
    -        }), base_address + 0x154);
    -
    -        /// address: 0x600c1158
    -        /// SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_3_REG
    -        pub const BACKUP_BUS_PMS_CONSTRAIN_3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// backup_bus_pms_constrain_spi_2
    -            BACKUP_BUS_PMS_CONSTRAIN_SPI_2: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// backup_bus_pms_constrain_apb_ctrl
    -            BACKUP_BUS_PMS_CONSTRAIN_APB_CTRL: u2,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            /// backup_bus_pms_constrain_can
    -            BACKUP_BUS_PMS_CONSTRAIN_CAN: u2,
    -            reserved6: u1,
    -            reserved7: u1,
    -            /// backup_bus_pms_constrain_i2s1
    -            BACKUP_BUS_PMS_CONSTRAIN_I2S1: u2,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            /// backup_bus_pms_constrain_rwbt
    -            BACKUP_BUS_PMS_CONSTRAIN_RWBT: u2,
    -            reserved14: u1,
    -            reserved15: u1,
    -            /// backup_bus_pms_constrain_wifimac
    -            BACKUP_BUS_PMS_CONSTRAIN_WIFIMAC: u2,
    -            /// backup_bus_pms_constrain_pwr
    -            BACKUP_BUS_PMS_CONSTRAIN_PWR: u2,
    -            padding0: u1,
    -            padding1: u1,
    -        }), base_address + 0x158);
    -
    -        /// address: 0x600c115c
    -        /// SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_4_REG
    -        pub const BACKUP_BUS_PMS_CONSTRAIN_4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// backup_bus_pms_constrain_usb_wrap
    -            BACKUP_BUS_PMS_CONSTRAIN_USB_WRAP: u2,
    -            /// backup_bus_pms_constrain_crypto_peri
    -            BACKUP_BUS_PMS_CONSTRAIN_CRYPTO_PERI: u2,
    -            /// backup_bus_pms_constrain_crypto_dma
    -            BACKUP_BUS_PMS_CONSTRAIN_CRYPTO_DMA: u2,
    -            /// backup_bus_pms_constrain_apb_adc
    -            BACKUP_BUS_PMS_CONSTRAIN_APB_ADC: u2,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// backup_bus_pms_constrain_bt_pwr
    -            BACKUP_BUS_PMS_CONSTRAIN_BT_PWR: u2,
    -            /// backup_bus_pms_constrain_usb_device
    -            BACKUP_BUS_PMS_CONSTRAIN_USB_DEVICE: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x15c);
    -
    -        /// address: 0x600c1160
    -        /// SENSITIVE_BACKUP_BUS_PMS_MONITOR_0_REG
    -        pub const BACKUP_BUS_PMS_MONITOR_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// backup_bus_pms_monitor_lock
    -            BACKUP_BUS_PMS_MONITOR_LOCK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x160);
    -
    -        /// address: 0x600c1164
    -        /// SENSITIVE_BACKUP_BUS_PMS_MONITOR_1_REG
    -        pub const BACKUP_BUS_PMS_MONITOR_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// backup_bus_pms_monitor_violate_clr
    -            BACKUP_BUS_PMS_MONITOR_VIOLATE_CLR: u1,
    -            /// backup_bus_pms_monitor_violate_en
    -            BACKUP_BUS_PMS_MONITOR_VIOLATE_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x164);
    -
    -        /// address: 0x600c1168
    -        /// SENSITIVE_BACKUP_BUS_PMS_MONITOR_2_REG
    -        pub const BACKUP_BUS_PMS_MONITOR_2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// backup_bus_pms_monitor_violate_intr
    -            BACKUP_BUS_PMS_MONITOR_VIOLATE_INTR: u1,
    -            /// backup_bus_pms_monitor_violate_status_htrans
    -            BACKUP_BUS_PMS_MONITOR_VIOLATE_STATUS_HTRANS: u2,
    -            /// backup_bus_pms_monitor_violate_status_hsize
    -            BACKUP_BUS_PMS_MONITOR_VIOLATE_STATUS_HSIZE: u3,
    -            /// backup_bus_pms_monitor_violate_status_hwrite
    -            BACKUP_BUS_PMS_MONITOR_VIOLATE_STATUS_HWRITE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x168);
    -
    -        /// address: 0x600c116c
    -        /// SENSITIVE_BACKUP_BUS_PMS_MONITOR_3_REG
    -        pub const BACKUP_BUS_PMS_MONITOR_3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// backup_bus_pms_monitor_violate_haddr
    -            BACKUP_BUS_PMS_MONITOR_VIOLATE_HADDR: u32,
    -        }), base_address + 0x16c);
    -
    -        /// address: 0x600c1170
    -        /// SENSITIVE_CLOCK_GATE_REG
    -        pub const CLOCK_GATE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// clk_en
    -            CLK_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x170);
    -
    -        /// address: 0x600c1ffc
    -        /// SENSITIVE_DATE_REG
    -        pub const DATE = @intToPtr(*volatile MmioInt(32, u28), base_address + 0xffc);
    -    };
    -
    -    /// SHA (Secure Hash Algorithm) Accelerator
    -    pub const SHA = struct {
    -        pub const base_address = 0x6003b000;
    -
    -        /// address: 0x6003b000
    -        /// Initial configuration register.
    -        pub const MODE = @intToPtr(*volatile MmioInt(32, u3), base_address + 0x0);
    -
    -        /// address: 0x6003b004
    -        /// SHA 512/t configuration register 0.
    -        pub const T_STRING = @intToPtr(*volatile u32, base_address + 0x4);
    -
    -        /// address: 0x6003b008
    -        /// SHA 512/t configuration register 1.
    -        pub const T_LENGTH = @intToPtr(*volatile MmioInt(32, u6), base_address + 0x8);
    -
    -        /// address: 0x6003b00c
    -        /// DMA configuration register 0.
    -        pub const DMA_BLOCK_NUM = @intToPtr(*volatile MmioInt(32, u6), base_address + 0xc);
    -
    -        /// address: 0x6003b010
    -        /// Typical SHA configuration register 0.
    -        pub const START = @intToPtr(*volatile MmioInt(32, u31), base_address + 0x10);
    -
    -        /// address: 0x6003b014
    -        /// Typical SHA configuration register 1.
    -        pub const CONTINUE = @intToPtr(*volatile MmioInt(32, u31), base_address + 0x14);
    -
    -        /// address: 0x6003b018
    -        /// Busy register.
    -        pub const BUSY = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Sha busy state. 1'b0: idle. 1'b1: busy.
    -            STATE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x6003b01c
    -        /// DMA configuration register 1.
    -        pub const DMA_START = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x1c);
    -
    -        /// address: 0x6003b020
    -        /// DMA configuration register 2.
    -        pub const DMA_CONTINUE = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x20);
    -
    -        /// address: 0x6003b024
    -        /// Interrupt clear register.
    -        pub const CLEAR_IRQ = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Clear sha interrupt.
    -            CLEAR_INTERRUPT: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x24);
    -
    -        /// address: 0x6003b028
    -        /// Interrupt enable register.
    -        pub const IRQ_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Sha interrupt enable register. 1'b0: disable(default). 1'b1: enable.
    -            INTERRUPT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x28);
    -
    -        /// address: 0x6003b02c
    -        /// Date register.
    -        pub const DATE = @intToPtr(*volatile MmioInt(32, u30), base_address + 0x2c);
    -
    -        /// address: 0x6003b040
    -        /// Sha H memory which contains intermediate hash or finial hash.
    -        pub const H_MEM = @intToPtr(*volatile [64]u8, base_address + 0x40);
    -
    -        /// address: 0x6003b080
    -        /// Sha M memory which contains message.
    -        pub const M_MEM = @intToPtr(*volatile [64]u8, base_address + 0x80);
    -    };
    -
    -    /// SPI (Serial Peripheral Interface) Controller
    -    pub const SPI0 = struct {
    -        pub const base_address = 0x60003000;
    -
    -        /// address: 0x60003008
    -        /// SPI0 control register.
    -        pub const CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            /// In the dummy phase the signal level of spi is output by the spi controller.
    -            FDUMMY_OUT: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            /// Apply 2 signals during command phase 1:enable 0: disable
    -            FCMD_DUAL: u1,
    -            /// Apply 4 signals during command phase 1:enable 0: disable
    -            FCMD_QUAD: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            /// This bit enable the bits: spi_mem_fread_qio, spi_mem_fread_dio,
    -            /// spi_mem_fread_qout and spi_mem_fread_dout. 1: enable 0: disable.
    -            FASTRD_MODE: u1,
    -            /// In the read operations, read-data phase apply 2 signals. 1: enable 0: disable.
    -            FREAD_DUAL: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            /// The bit is used to set MISO line polarity, 1: high 0, low
    -            Q_POL: u1,
    -            /// The bit is used to set MOSI line polarity, 1: high 0, low
    -            D_POL: u1,
    -            /// In the read operations read-data phase apply 4 signals. 1: enable 0: disable.
    -            FREAD_QUAD: u1,
    -            /// Write protect signal output when SPI is idle. 1: output high, 0: output low.
    -            WP: u1,
    -            reserved13: u1,
    -            /// In the read operations address phase and read-data phase apply 2 signals. 1:
    -            /// enable 0: disable.
    -            FREAD_DIO: u1,
    -            /// In the read operations address phase and read-data phase apply 4 signals. 1:
    -            /// enable 0: disable.
    -            FREAD_QIO: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x6000300c
    -        /// SPI0 control1 register.
    -        pub const CTRL1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// SPI clock mode bits. 0: SPI clock is off when CS inactive 1: SPI clock is
    -            /// delayed one cycle after CS inactive 2: SPI clock is delayed two cycles after CS
    -            /// inactive 3: SPI clock is alwasy on.
    -            CLK_MODE: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            reserved25: u1,
    -            reserved26: u1,
    -            reserved27: u1,
    -            /// SPI0 RX FIFO reset signal.
    -            RXFIFO_RST: u1,
    -            padding0: u1,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x60003010
    -        /// SPI0 control2 register.
    -        pub const CTRL2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// (cycles-1) of prepare phase by spi clock this bits are combined with
    -            /// spi_mem_cs_setup bit.
    -            CS_SETUP_TIME: u5,
    -            /// Spi cs signal is delayed to inactive by spi clock this bits are combined with
    -            /// spi_mem_cs_hold bit.
    -            CS_HOLD_TIME: u5,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            /// These bits are used to set the minimum CS high time tSHSL between SPI burst
    -            /// transfer when accesses to flash. tSHSL is (SPI_MEM_CS_HOLD_DELAY[5:0] + 1) MSPI
    -            /// core clock cycles.
    -            CS_HOLD_DELAY: u6,
    -            /// The FSM will be reset.
    -            SYNC_RESET: u1,
    -        }), base_address + 0x10);
    -
    -        /// address: 0x60003014
    -        /// SPI clock division control register.
    -        pub const CLOCK = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// In the master mode it must be equal to spi_mem_clkcnt_N.
    -            CLKCNT_L: u8,
    -            /// In the master mode it must be floor((spi_mem_clkcnt_N+1)/2-1).
    -            CLKCNT_H: u8,
    -            /// In the master mode it is the divider of spi_mem_clk. So spi_mem_clk frequency is
    -            /// system/(spi_mem_clkcnt_N+1)
    -            CLKCNT_N: u8,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            /// Set this bit in 1-division mode.
    -            CLK_EQU_SYSCLK: u1,
    -        }), base_address + 0x14);
    -
    -        /// address: 0x60003018
    -        /// SPI0 user register.
    -        pub const USER = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            /// spi cs keep low when spi is in done phase. 1: enable 0: disable.
    -            CS_HOLD: u1,
    -            /// spi cs is enable when spi is in prepare phase. 1: enable 0: disable.
    -            CS_SETUP: u1,
    -            reserved6: u1,
    -            /// the bit combined with spi_mem_mosi_delay_mode bits to set mosi signal delay
    -            /// mode.
    -            CK_OUT_EDGE: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            /// spi clock is disable in dummy phase when the bit is enable.
    -            USR_DUMMY_IDLE: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            /// This bit enable the dummy phase of an operation.
    -            USR_DUMMY: u1,
    -            padding0: u1,
    -            padding1: u1,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x6000301c
    -        /// SPI0 user1 register.
    -        pub const USER1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The length in spi_mem_clk cycles of dummy phase. The register value shall be
    -            /// (cycle_num-1).
    -            USR_DUMMY_CYCLELEN: u6,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            /// The length in bits of address phase. The register value shall be (bit_num-1).
    -            USR_ADDR_BITLEN: u6,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x60003020
    -        /// SPI0 user2 register.
    -        pub const USER2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of command.
    -            USR_COMMAND_VALUE: u16,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            /// The length in bits of command phase. The register value shall be (bit_num-1)
    -            USR_COMMAND_BITLEN: u4,
    -        }), base_address + 0x20);
    -
    -        /// address: 0x6000302c
    -        /// SPI0 read control register.
    -        pub const RD_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            /// Mode bits in the flash fast read mode it is combined with spi_mem_fastrd_mode
    -            /// bit.
    -            WB_MODE: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -        }), base_address + 0x2c);
    -
    -        /// address: 0x60003034
    -        /// SPI0 misc register
    -        pub const MISC = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            /// The bit is used to indicate the spi0_mst_st controlled transmitting is done.
    -            TRANS_END: u1,
    -            /// The bit is used to enable the interrupt of spi0_mst_st controlled transmitting
    -            /// is done.
    -            TRANS_END_INT_ENA: u1,
    -            /// The bit is used to indicate the spi0_slv_st controlled transmitting is done.
    -            CSPI_ST_TRANS_END: u1,
    -            /// The bit is used to enable the interrupt of spi0_slv_st controlled transmitting
    -            /// is done.
    -            CSPI_ST_TRANS_END_INT_ENA: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            /// 1: spi clk line is high when idle 0: spi clk line is low when idle
    -            CK_IDLE_EDGE: u1,
    -            /// spi cs line keep low when the bit is set.
    -            CS_KEEP_ACTIVE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x34);
    -
    -        /// address: 0x6000303c
    -        /// SPI0 bit mode control register.
    -        pub const CACHE_FCTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// For SPI0, Cache access enable, 1: enable, 0:disable.
    -            CACHE_REQ_EN: u1,
    -            /// For SPI0, cache read flash with 4 bytes address, 1: enable, 0:disable.
    -            CACHE_USR_ADDR_4BYTE: u1,
    -            /// For SPI0, cache read flash for user define command, 1: enable, 0:disable.
    -            CACHE_FLASH_USR_CMD: u1,
    -            /// For SPI0 flash, din phase apply 2 signals. 1: enable 0: disable. The bit is the
    -            /// same with spi_mem_fread_dio.
    -            FDIN_DUAL: u1,
    -            /// For SPI0 flash, dout phase apply 2 signals. 1: enable 0: disable. The bit is the
    -            /// same with spi_mem_fread_dio.
    -            FDOUT_DUAL: u1,
    -            /// For SPI0 flash, address phase apply 2 signals. 1: enable 0: disable. The bit is
    -            /// the same with spi_mem_fread_dio.
    -            FADDR_DUAL: u1,
    -            /// For SPI0 flash, din phase apply 4 signals. 1: enable 0: disable. The bit is the
    -            /// same with spi_mem_fread_qio.
    -            FDIN_QUAD: u1,
    -            /// For SPI0 flash, dout phase apply 4 signals. 1: enable 0: disable. The bit is the
    -            /// same with spi_mem_fread_qio.
    -            FDOUT_QUAD: u1,
    -            /// For SPI0 flash, address phase apply 4 signals. 1: enable 0: disable. The bit is
    -            /// the same with spi_mem_fread_qio.
    -            FADDR_QUAD: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0x3c);
    -
    -        /// address: 0x60003054
    -        /// SPI0 FSM status register
    -        pub const FSM = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The current status of SPI0 slave FSM: spi0_slv_st. 0: idle state, 1: preparation
    -            /// state, 2: send command state, 3: send address state, 4: wait state, 5: read data
    -            /// state, 6:write data state, 7: done state, 8: read data end state.
    -            CSPI_ST: u4,
    -            /// The current status of SPI0 master FSM: spi0_mst_st. 0: idle state,
    -            /// 1:EM_CACHE_GRANT , 2: program/erase suspend state, 3: SPI0 read data state, 4:
    -            /// wait cache/EDMA sent data is stored in SPI0 TX FIFO, 5: SPI0 write data state.
    -            EM_ST: u3,
    -            /// The lock delay time of SPI0/1 arbiter by spi0_slv_st, after PER is sent by SPI1.
    -            CSPI_LOCK_DELAY_TIME: u5,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0x54);
    -
    -        /// address: 0x600030a8
    -        /// SPI0 timing calibration register
    -        pub const TIMING_CALI = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The bit is used to enable timing adjust clock for all reading operations.
    -            TIMING_CLK_ENA: u1,
    -            /// The bit is used to enable timing auto-calibration for all reading operations.
    -            TIMING_CALI: u1,
    -            /// add extra dummy spi clock cycle length for spi clock calibration.
    -            EXTRA_DUMMY_CYCLELEN: u3,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -        }), base_address + 0xa8);
    -
    -        /// address: 0x600030ac
    -        /// SPI0 input delay mode control register
    -        pub const DIN_MODE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// the input signals are delayed by system clock cycles, 0: input without delayed,
    -            /// 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3:
    -            /// input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input
    -            /// with the spi_clk high edge, 6: input with the spi_clk low edge
    -            DIN0_MODE: u2,
    -            /// the input signals are delayed by system clock cycles, 0: input without delayed,
    -            /// 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3:
    -            /// input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input
    -            /// with the spi_clk high edge, 6: input with the spi_clk low edge
    -            DIN1_MODE: u2,
    -            /// the input signals are delayed by system clock cycles, 0: input without delayed,
    -            /// 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3:
    -            /// input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input
    -            /// with the spi_clk high edge, 6: input with the spi_clk low edge
    -            DIN2_MODE: u2,
    -            /// the input signals are delayed by system clock cycles, 0: input without delayed,
    -            /// 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3:
    -            /// input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input
    -            /// with the spi_clk high edge, 6: input with the spi_clk low edge
    -            DIN3_MODE: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0xac);
    -
    -        /// address: 0x600030b0
    -        /// SPI0 input delay number control register
    -        pub const DIN_NUM = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1:
    -            /// delayed by 2 cycles,...
    -            DIN0_NUM: u2,
    -            /// the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1:
    -            /// delayed by 2 cycles,...
    -            DIN1_NUM: u2,
    -            /// the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1:
    -            /// delayed by 2 cycles,...
    -            DIN2_NUM: u2,
    -            /// the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1:
    -            /// delayed by 2 cycles,...
    -            DIN3_NUM: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0xb0);
    -
    -        /// address: 0x600030b4
    -        /// SPI0 output delay mode control register
    -        pub const DOUT_MODE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// the output signals are delayed by system clock cycles, 0: output without
    -            /// delayed, 1: output with the posedge of clk_apb,2 output with the negedge of
    -            /// clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of
    -            /// clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low
    -            /// edge
    -            DOUT0_MODE: u1,
    -            /// the output signals are delayed by system clock cycles, 0: output without
    -            /// delayed, 1: output with the posedge of clk_apb,2 output with the negedge of
    -            /// clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of
    -            /// clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low
    -            /// edge
    -            DOUT1_MODE: u1,
    -            /// the output signals are delayed by system clock cycles, 0: output without
    -            /// delayed, 1: output with the posedge of clk_apb,2 output with the negedge of
    -            /// clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of
    -            /// clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low
    -            /// edge
    -            DOUT2_MODE: u1,
    -            /// the output signals are delayed by system clock cycles, 0: output without
    -            /// delayed, 1: output with the posedge of clk_apb,2 output with the negedge of
    -            /// clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of
    -            /// clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low
    -            /// edge
    -            DOUT3_MODE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0xb4);
    -
    -        /// address: 0x600030dc
    -        /// SPI0 clk_gate register
    -        pub const CLOCK_GATE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Register clock gate enable signal. 1: Enable. 0: Disable.
    -            CLK_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0xdc);
    -
    -        /// address: 0x600030e0
    -        /// SPI0 module clock select register
    -        pub const CORE_CLK_SEL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// When the digital system clock selects PLL clock and the frequency of PLL clock
    -            /// is 480MHz, the value of reg_spi01_clk_sel: 0: SPI0/1 module clock (clk) is
    -            /// 80MHz. 1: SPI0/1 module clock (clk) is 120MHz. 2: SPI0/1 module clock (clk)
    -            /// 160MHz. 3: Not used. When the digital system clock selects PLL clock and the
    -            /// frequency of PLL clock is 320MHz, the value of reg_spi01_clk_sel: 0: SPI0/1
    -            /// module clock (clk) is 80MHz. 1: SPI0/1 module clock (clk) is 80MHz. 2: SPI0/1
    -            /// module clock (clk) 160MHz. 3: Not used.
    -            SPI01_CLK_SEL: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0xe0);
    -
    -        /// address: 0x600033fc
    -        /// Version control register
    -        pub const DATE = @intToPtr(*volatile MmioInt(32, u28), base_address + 0x3fc);
    -    };
    -
    -    /// SPI (Serial Peripheral Interface) Controller
    -    pub const SPI1 = struct {
    -        pub const base_address = 0x60002000;
    -
    -        /// address: 0x60002000
    -        /// SPI1 memory command register
    -        pub const CMD = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The current status of SPI1 master FSM.
    -            SPI1_MST_ST: u4,
    -            /// The current status of SPI1 slave FSM: mspi_st. 0: idle state, 1: preparation
    -            /// state, 2: send command state, 3: send address state, 4: wait state, 5: read data
    -            /// state, 6:write data state, 7: done state, 8: read data end state.
    -            MSPI_ST: u4,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            /// In user mode, it is set to indicate that program/erase operation will be
    -            /// triggered. The bit is combined with spi_mem_usr bit. The bit will be cleared
    -            /// once the operation done.1: enable 0: disable.
    -            FLASH_PE: u1,
    -            /// User define command enable. An operation will be triggered when the bit is set.
    -            /// The bit will be cleared once the operation done.1: enable 0: disable.
    -            USR: u1,
    -            /// Drive Flash into high performance mode. The bit will be cleared once the
    -            /// operation done.1: enable 0: disable.
    -            FLASH_HPM: u1,
    -            /// This bit combined with reg_resandres bit releases Flash from the power-down
    -            /// state or high performance mode and obtains the devices ID. The bit will be
    -            /// cleared once the operation done.1: enable 0: disable.
    -            FLASH_RES: u1,
    -            /// Drive Flash into power down. An operation will be triggered when the bit is set.
    -            /// The bit will be cleared once the operation done.1: enable 0: disable.
    -            FLASH_DP: u1,
    -            /// Chip erase enable. Chip erase operation will be triggered when the bit is set.
    -            /// The bit will be cleared once the operation done.1: enable 0: disable.
    -            FLASH_CE: u1,
    -            /// Block erase enable(32KB) . Block erase operation will be triggered when the bit
    -            /// is set. The bit will be cleared once the operation done.1: enable 0: disable.
    -            FLASH_BE: u1,
    -            /// Sector erase enable(4KB). Sector erase operation will be triggered when the bit
    -            /// is set. The bit will be cleared once the operation done.1: enable 0: disable.
    -            FLASH_SE: u1,
    -            /// Page program enable(1 byte ~256 bytes data to be programmed). Page program
    -            /// operation will be triggered when the bit is set. The bit will be cleared once
    -            /// the operation done .1: enable 0: disable.
    -            FLASH_PP: u1,
    -            /// Write status register enable. Write status operation will be triggered when the
    -            /// bit is set. The bit will be cleared once the operation done.1: enable 0:
    -            /// disable.
    -            FLASH_WRSR: u1,
    -            /// Read status register-1. Read status operation will be triggered when the bit is
    -            /// set. The bit will be cleared once the operation done.1: enable 0: disable.
    -            FLASH_RDSR: u1,
    -            /// Read JEDEC ID . Read ID command will be sent when the bit is set. The bit will
    -            /// be cleared once the operation done. 1: enable 0: disable.
    -            FLASH_RDID: u1,
    -            /// Write flash disable. Write disable command will be sent when the bit is set. The
    -            /// bit will be cleared once the operation done. 1: enable 0: disable.
    -            FLASH_WRDI: u1,
    -            /// Write flash enable. Write enable command will be sent when the bit is set. The
    -            /// bit will be cleared once the operation done. 1: enable 0: disable.
    -            FLASH_WREN: u1,
    -            /// Read flash enable. Read flash operation will be triggered when the bit is set.
    -            /// The bit will be cleared once the operation done. 1: enable 0: disable.
    -            FLASH_READ: u1,
    -        }), base_address + 0x0);
    -
    -        /// address: 0x60002004
    -        /// SPI1 address register
    -        pub const ADDR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// In user mode, it is the memory address. other then the bit0-bit23 is the memory
    -            /// address, the bit24-bit31 are the byte length of a transfer.
    -            USR_ADDR_VALUE: u32,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x60002008
    -        /// SPI1 control register.
    -        pub const CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            /// In the dummy phase the signal level of spi is output by the spi controller.
    -            FDUMMY_OUT: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            /// Apply 2 signals during command phase 1:enable 0: disable
    -            FCMD_DUAL: u1,
    -            /// Apply 4 signals during command phase 1:enable 0: disable
    -            FCMD_QUAD: u1,
    -            reserved6: u1,
    -            /// For SPI1, initialize crc32 module before writing encrypted data to flash. Active
    -            /// low.
    -            FCS_CRC_EN: u1,
    -            /// For SPI1, enable crc32 when writing encrypted data to flash. 1: enable 0:disable
    -            TX_CRC_EN: u1,
    -            reserved7: u1,
    -            /// This bit enable the bits: spi_mem_fread_qio, spi_mem_fread_dio,
    -            /// spi_mem_fread_qout and spi_mem_fread_dout. 1: enable 0: disable.
    -            FASTRD_MODE: u1,
    -            /// In the read operations, read-data phase apply 2 signals. 1: enable 0: disable.
    -            FREAD_DUAL: u1,
    -            /// The Device ID is read out to SPI_MEM_RD_STATUS register, this bit combine with
    -            /// spi_mem_flash_res bit. 1: enable 0: disable.
    -            RESANDRES: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            /// The bit is used to set MISO line polarity, 1: high 0, low
    -            Q_POL: u1,
    -            /// The bit is used to set MOSI line polarity, 1: high 0, low
    -            D_POL: u1,
    -            /// In the read operations read-data phase apply 4 signals. 1: enable 0: disable.
    -            FREAD_QUAD: u1,
    -            /// Write protect signal output when SPI is idle. 1: output high, 0: output low.
    -            WP: u1,
    -            /// two bytes data will be written to status register when it is set. 1: enable 0:
    -            /// disable.
    -            WRSR_2B: u1,
    -            /// In the read operations address phase and read-data phase apply 2 signals. 1:
    -            /// enable 0: disable.
    -            FREAD_DIO: u1,
    -            /// In the read operations address phase and read-data phase apply 4 signals. 1:
    -            /// enable 0: disable.
    -            FREAD_QIO: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x6000200c
    -        /// SPI1 control1 register.
    -        pub const CTRL1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// SPI clock mode bits. 0: SPI clock is off when CS inactive 1: SPI clock is
    -            /// delayed one cycle after CS inactive 2: SPI clock is delayed two cycles after CS
    -            /// inactive 3: SPI clock is alwasy on.
    -            CLK_MODE: u2,
    -            /// After RES/DP/HPM command is sent, SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] *
    -            /// 512) SPI_CLK cycles.
    -            CS_HOLD_DLY_RES: u10,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x60002010
    -        /// SPI1 control2 register.
    -        pub const CTRL2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            reserved25: u1,
    -            reserved26: u1,
    -            reserved27: u1,
    -            reserved28: u1,
    -            reserved29: u1,
    -            reserved30: u1,
    -            /// The FSM will be reset.
    -            SYNC_RESET: u1,
    -        }), base_address + 0x10);
    -
    -        /// address: 0x60002014
    -        /// SPI1 clock division control register.
    -        pub const CLOCK = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// In the master mode it must be equal to spi_mem_clkcnt_N.
    -            CLKCNT_L: u8,
    -            /// In the master mode it must be floor((spi_mem_clkcnt_N+1)/2-1).
    -            CLKCNT_H: u8,
    -            /// In the master mode it is the divider of spi_mem_clk. So spi_mem_clk frequency is
    -            /// system/(spi_mem_clkcnt_N+1)
    -            CLKCNT_N: u8,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            /// reserved
    -            CLK_EQU_SYSCLK: u1,
    -        }), base_address + 0x14);
    -
    -        /// address: 0x60002018
    -        /// SPI1 user register.
    -        pub const USER = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            /// the bit combined with spi_mem_mosi_delay_mode bits to set mosi signal delay
    -            /// mode.
    -            CK_OUT_EDGE: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            /// In the write operations read-data phase apply 2 signals
    -            FWRITE_DUAL: u1,
    -            /// In the write operations read-data phase apply 4 signals
    -            FWRITE_QUAD: u1,
    -            /// In the write operations address phase and read-data phase apply 2 signals.
    -            FWRITE_DIO: u1,
    -            /// In the write operations address phase and read-data phase apply 4 signals.
    -            FWRITE_QIO: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            /// read-data phase only access to high-part of the buffer spi_mem_w8~spi_mem_w15.
    -            /// 1: enable 0: disable.
    -            USR_MISO_HIGHPART: u1,
    -            /// write-data phase only access to high-part of the buffer spi_mem_w8~spi_mem_w15.
    -            /// 1: enable 0: disable.
    -            USR_MOSI_HIGHPART: u1,
    -            /// SPI clock is disable in dummy phase when the bit is enable.
    -            USR_DUMMY_IDLE: u1,
    -            /// This bit enable the write-data phase of an operation.
    -            USR_MOSI: u1,
    -            /// This bit enable the read-data phase of an operation.
    -            USR_MISO: u1,
    -            /// This bit enable the dummy phase of an operation.
    -            USR_DUMMY: u1,
    -            /// This bit enable the address phase of an operation.
    -            USR_ADDR: u1,
    -            /// This bit enable the command phase of an operation.
    -            USR_COMMAND: u1,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x6000201c
    -        /// SPI1 user1 register.
    -        pub const USER1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The length in spi_mem_clk cycles of dummy phase. The register value shall be
    -            /// (cycle_num-1).
    -            USR_DUMMY_CYCLELEN: u6,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            /// The length in bits of address phase. The register value shall be (bit_num-1).
    -            USR_ADDR_BITLEN: u6,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x60002020
    -        /// SPI1 user2 register.
    -        pub const USER2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of command.
    -            USR_COMMAND_VALUE: u16,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            /// The length in bits of command phase. The register value shall be (bit_num-1)
    -            USR_COMMAND_BITLEN: u4,
    -        }), base_address + 0x20);
    -
    -        /// address: 0x60002024
    -        /// SPI1 send data bit length control register.
    -        pub const MOSI_DLEN = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The length in bits of write-data. The register value shall be (bit_num-1).
    -            USR_MOSI_DBITLEN: u10,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -        }), base_address + 0x24);
    -
    -        /// address: 0x60002028
    -        /// SPI1 receive data bit length control register.
    -        pub const MISO_DLEN = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The length in bits of read-data. The register value shall be (bit_num-1).
    -            USR_MISO_DBITLEN: u10,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -        }), base_address + 0x28);
    -
    -        /// address: 0x6000202c
    -        /// SPI1 status register.
    -        pub const RD_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value is stored when set spi_mem_flash_rdsr bit and spi_mem_flash_res bit.
    -            STATUS: u16,
    -            /// Mode bits in the flash fast read mode it is combined with spi_mem_fastrd_mode
    -            /// bit.
    -            WB_MODE: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -        }), base_address + 0x2c);
    -
    -        /// address: 0x60002034
    -        /// SPI1 misc register
    -        pub const MISC = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// SPI_CS0 pin enable, 1: disable SPI_CS0, 0: SPI_CS0 pin is active to select SPI
    -            /// device, such as flash, external RAM and so on.
    -            CS0_DIS: u1,
    -            /// SPI_CS1 pin enable, 1: disable SPI_CS1, 0: SPI_CS1 pin is active to select SPI
    -            /// device, such as flash, external RAM and so on.
    -            CS1_DIS: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            /// 1: spi clk line is high when idle 0: spi clk line is low when idle
    -            CK_IDLE_EDGE: u1,
    -            /// spi cs line keep low when the bit is set.
    -            CS_KEEP_ACTIVE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x34);
    -
    -        /// address: 0x60002038
    -        /// SPI1 TX CRC data register.
    -        pub const TX_CRC = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// For SPI1, the value of crc32.
    -            DATA: u32,
    -        }), base_address + 0x38);
    -
    -        /// address: 0x6000203c
    -        /// SPI1 bit mode control register.
    -        pub const CACHE_FCTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            /// For SPI1, cache read flash with 4 bytes address, 1: enable, 0:disable.
    -            CACHE_USR_ADDR_4BYTE: u1,
    -            reserved1: u1,
    -            /// For SPI1, din phase apply 2 signals. 1: enable 0: disable. The bit is the same
    -            /// with spi_mem_fread_dio.
    -            FDIN_DUAL: u1,
    -            /// For SPI1, dout phase apply 2 signals. 1: enable 0: disable. The bit is the same
    -            /// with spi_mem_fread_dio.
    -            FDOUT_DUAL: u1,
    -            /// For SPI1, address phase apply 2 signals. 1: enable 0: disable. The bit is the
    -            /// same with spi_mem_fread_dio.
    -            FADDR_DUAL: u1,
    -            /// For SPI1, din phase apply 4 signals. 1: enable 0: disable. The bit is the same
    -            /// with spi_mem_fread_qio.
    -            FDIN_QUAD: u1,
    -            /// For SPI1, dout phase apply 4 signals. 1: enable 0: disable. The bit is the same
    -            /// with spi_mem_fread_qio.
    -            FDOUT_QUAD: u1,
    -            /// For SPI1, address phase apply 4 signals. 1: enable 0: disable. The bit is the
    -            /// same with spi_mem_fread_qio.
    -            FADDR_QUAD: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0x3c);
    -
    -        /// address: 0x60002058
    -        /// SPI1 memory data buffer0
    -        pub const W0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF0: u32,
    -        }), base_address + 0x58);
    -
    -        /// address: 0x6000205c
    -        /// SPI1 memory data buffer1
    -        pub const W1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF1: u32,
    -        }), base_address + 0x5c);
    -
    -        /// address: 0x60002060
    -        /// SPI1 memory data buffer2
    -        pub const W2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF2: u32,
    -        }), base_address + 0x60);
    -
    -        /// address: 0x60002064
    -        /// SPI1 memory data buffer3
    -        pub const W3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF3: u32,
    -        }), base_address + 0x64);
    -
    -        /// address: 0x60002068
    -        /// SPI1 memory data buffer4
    -        pub const W4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF4: u32,
    -        }), base_address + 0x68);
    -
    -        /// address: 0x6000206c
    -        /// SPI1 memory data buffer5
    -        pub const W5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF5: u32,
    -        }), base_address + 0x6c);
    -
    -        /// address: 0x60002070
    -        /// SPI1 memory data buffer6
    -        pub const W6 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF6: u32,
    -        }), base_address + 0x70);
    -
    -        /// address: 0x60002074
    -        /// SPI1 memory data buffer7
    -        pub const W7 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF7: u32,
    -        }), base_address + 0x74);
    -
    -        /// address: 0x60002078
    -        /// SPI1 memory data buffer8
    -        pub const W8 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF8: u32,
    -        }), base_address + 0x78);
    -
    -        /// address: 0x6000207c
    -        /// SPI1 memory data buffer9
    -        pub const W9 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF9: u32,
    -        }), base_address + 0x7c);
    -
    -        /// address: 0x60002080
    -        /// SPI1 memory data buffer10
    -        pub const W10 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF10: u32,
    -        }), base_address + 0x80);
    -
    -        /// address: 0x60002084
    -        /// SPI1 memory data buffer11
    -        pub const W11 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF11: u32,
    -        }), base_address + 0x84);
    -
    -        /// address: 0x60002088
    -        /// SPI1 memory data buffer12
    -        pub const W12 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF12: u32,
    -        }), base_address + 0x88);
    -
    -        /// address: 0x6000208c
    -        /// SPI1 memory data buffer13
    -        pub const W13 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF13: u32,
    -        }), base_address + 0x8c);
    -
    -        /// address: 0x60002090
    -        /// SPI1 memory data buffer14
    -        pub const W14 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF14: u32,
    -        }), base_address + 0x90);
    -
    -        /// address: 0x60002094
    -        /// SPI1 memory data buffer15
    -        pub const W15 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF15: u32,
    -        }), base_address + 0x94);
    -
    -        /// address: 0x60002098
    -        /// SPI1 wait idle control register
    -        pub const FLASH_WAITI_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            /// The dummy phase enable when wait flash idle (RDSR)
    -            WAITI_DUMMY: u1,
    -            /// The command to wait flash idle(RDSR).
    -            WAITI_CMD: u8,
    -            /// The dummy cycle length when wait flash idle(RDSR).
    -            WAITI_DUMMY_CYCLELEN: u6,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x98);
    -
    -        /// address: 0x6000209c
    -        /// SPI1 flash suspend control register
    -        pub const FLASH_SUS_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// program erase resume bit, program erase suspend operation will be triggered when
    -            /// the bit is set. The bit will be cleared once the operation done.1: enable 0:
    -            /// disable.
    -            FLASH_PER: u1,
    -            /// program erase suspend bit, program erase suspend operation will be triggered
    -            /// when the bit is set. The bit will be cleared once the operation done.1: enable
    -            /// 0: disable.
    -            FLASH_PES: u1,
    -            /// 1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4 or *128) SPI_CLK cycles after
    -            /// program erase resume command is sent. 0: SPI1 does not wait after program erase
    -            /// resume command is sent.
    -            FLASH_PER_WAIT_EN: u1,
    -            /// 1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4 or *128) SPI_CLK cycles after
    -            /// program erase suspend command is sent. 0: SPI1 does not wait after program erase
    -            /// suspend command is sent.
    -            FLASH_PES_WAIT_EN: u1,
    -            /// Set this bit to enable PES end triggers PER transfer option. If this bit is 0,
    -            /// application should send PER after PES is done.
    -            PES_PER_EN: u1,
    -            /// Set this bit to enable Auto-suspending function.
    -            FLASH_PES_EN: u1,
    -            /// The mask value when check SUS/SUS1/SUS2 status bit. If the read status value is
    -            /// status_in[15:0](only status_in[7:0] is valid when only one byte of data is read
    -            /// out, status_in[15:0] is valid when two bytes of data are read out),
    -            /// SUS/SUS1/SUS2 = status_in[15:0]^ SPI_MEM_PESR_END_MSK[15:0].
    -            PESR_END_MSK: u16,
    -            /// 1: Read two bytes when check flash SUS/SUS1/SUS2 status bit. 0: Read one byte
    -            /// when check flash SUS/SUS1/SUS2 status bit
    -            RD_SUS_2B: u1,
    -            /// 1: Both WIP and SUS/SUS1/SUS2 bits should be checked to insure the resume status
    -            /// of flash. 0: Only need to check WIP is 0.
    -            PER_END_EN: u1,
    -            /// 1: Both WIP and SUS/SUS1/SUS2 bits should be checked to insure the suspend
    -            /// status of flash. 0: Only need to check WIP is 0.
    -            PES_END_EN: u1,
    -            /// When SPI1 checks SUS/SUS1/SUS2 bits fail for SPI_MEM_SUS_TIMEOUT_CNT[6:0] times,
    -            /// it will be treated as check pass.
    -            SUS_TIMEOUT_CNT: u7,
    -        }), base_address + 0x9c);
    -
    -        /// address: 0x600020a0
    -        /// SPI1 flash suspend command register
    -        pub const FLASH_SUS_CMD = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Program/Erase resume command.
    -            FLASH_PER_COMMAND: u8,
    -            /// Program/Erase suspend command.
    -            FLASH_PES_COMMAND: u8,
    -            /// Flash SUS/SUS1/SUS2 status bit read command. The command should be sent when
    -            /// SUS/SUS1/SUS2 bit should be checked to insure the suspend or resume status of
    -            /// flash.
    -            WAIT_PESR_COMMAND: u16,
    -        }), base_address + 0xa0);
    -
    -        /// address: 0x600020a4
    -        /// SPI1 flash suspend status register
    -        pub const SUS_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The status of flash suspend, only used in SPI1.
    -            FLASH_SUS: u1,
    -            /// 1: SPI1 sends out SPI_MEM_WAIT_PESR_COMMAND[15:0] to check SUS/SUS1/SUS2 bit. 0:
    -            /// SPI1 sends out SPI_MEM_WAIT_PESR_COMMAND[7:0] to check SUS/SUS1/SUS2 bit.
    -            WAIT_PESR_CMD_2B: u1,
    -            /// 1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after HPM
    -            /// command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK
    -            /// cycles after HPM command is sent.
    -            FLASH_HPM_DLY_128: u1,
    -            /// 1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after RES
    -            /// command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK
    -            /// cycles after RES command is sent.
    -            FLASH_RES_DLY_128: u1,
    -            /// 1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after DP
    -            /// command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK
    -            /// cycles after DP command is sent.
    -            FLASH_DP_DLY_128: u1,
    -            /// Valid when SPI_MEM_FLASH_PER_WAIT_EN is 1. 1: SPI1 waits
    -            /// (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after PER command is sent.
    -            /// 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after PER
    -            /// command is sent.
    -            FLASH_PER_DLY_128: u1,
    -            /// Valid when SPI_MEM_FLASH_PES_WAIT_EN is 1. 1: SPI1 waits
    -            /// (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after PES command is sent.
    -            /// 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after PES
    -            /// command is sent.
    -            FLASH_PES_DLY_128: u1,
    -            /// 1: Enable SPI0 lock SPI0/1 arbiter option. 0: Disable it.
    -            SPI0_LOCK_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0xa4);
    -
    -        /// address: 0x600020a8
    -        /// SPI1 timing control register
    -        pub const TIMING_CALI = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            /// The bit is used to enable timing auto-calibration for all reading operations.
    -            TIMING_CALI: u1,
    -            /// add extra dummy spi clock cycle length for spi clock calibration.
    -            EXTRA_DUMMY_CYCLELEN: u3,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -        }), base_address + 0xa8);
    -
    -        /// address: 0x600020c0
    -        /// SPI1 interrupt enable register
    -        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The enable bit for SPI_MEM_PER_END_INT interrupt.
    -            PER_END_INT_ENA: u1,
    -            /// The enable bit for SPI_MEM_PES_END_INT interrupt.
    -            PES_END_INT_ENA: u1,
    -            /// The enable bit for SPI_MEM_WPE_END_INT interrupt.
    -            WPE_END_INT_ENA: u1,
    -            /// The enable bit for SPI_MEM_SLV_ST_END_INT interrupt.
    -            SLV_ST_END_INT_ENA: u1,
    -            /// The enable bit for SPI_MEM_MST_ST_END_INT interrupt.
    -            MST_ST_END_INT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -        }), base_address + 0xc0);
    -
    -        /// address: 0x600020c4
    -        /// SPI1 interrupt clear register
    -        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The clear bit for SPI_MEM_PER_END_INT interrupt.
    -            PER_END_INT_CLR: u1,
    -            /// The clear bit for SPI_MEM_PES_END_INT interrupt.
    -            PES_END_INT_CLR: u1,
    -            /// The clear bit for SPI_MEM_WPE_END_INT interrupt.
    -            WPE_END_INT_CLR: u1,
    -            /// The clear bit for SPI_MEM_SLV_ST_END_INT interrupt.
    -            SLV_ST_END_INT_CLR: u1,
    -            /// The clear bit for SPI_MEM_MST_ST_END_INT interrupt.
    -            MST_ST_END_INT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -        }), base_address + 0xc4);
    -
    -        /// address: 0x600020c8
    -        /// SPI1 interrupt raw register
    -        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The raw bit for SPI_MEM_PER_END_INT interrupt. 1: Triggered when Auto Resume
    -            /// command (0x7A) is sent and flash is resumed. 0: Others.
    -            PER_END_INT_RAW: u1,
    -            /// The raw bit for SPI_MEM_PES_END_INT interrupt.1: Triggered when Auto Suspend
    -            /// command (0x75) is sent and flash is suspended. 0: Others.
    -            PES_END_INT_RAW: u1,
    -            /// The raw bit for SPI_MEM_WPE_END_INT interrupt. 1: Triggered when
    -            /// WRSR/PP/SE/BE/CE is sent and flash is already idle. 0: Others.
    -            WPE_END_INT_RAW: u1,
    -            /// The raw bit for SPI_MEM_SLV_ST_END_INT interrupt. 1: Triggered when spi1_slv_st
    -            /// is changed from non idle state to idle state. It means that SPI_CS raises high.
    -            /// 0: Others
    -            SLV_ST_END_INT_RAW: u1,
    -            /// The raw bit for SPI_MEM_MST_ST_END_INT interrupt. 1: Triggered when spi1_mst_st
    -            /// is changed from non idle state to idle state. 0: Others.
    -            MST_ST_END_INT_RAW: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -        }), base_address + 0xc8);
    -
    -        /// address: 0x600020cc
    -        /// SPI1 interrupt status register
    -        pub const INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The status bit for SPI_MEM_PER_END_INT interrupt.
    -            PER_END_INT_ST: u1,
    -            /// The status bit for SPI_MEM_PES_END_INT interrupt.
    -            PES_END_INT_ST: u1,
    -            /// The status bit for SPI_MEM_WPE_END_INT interrupt.
    -            WPE_END_INT_ST: u1,
    -            /// The status bit for SPI_MEM_SLV_ST_END_INT interrupt.
    -            SLV_ST_END_INT_ST: u1,
    -            /// The status bit for SPI_MEM_MST_ST_END_INT interrupt.
    -            MST_ST_END_INT_ST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -        }), base_address + 0xcc);
    -
    -        /// address: 0x600020dc
    -        /// SPI1 clk_gate register
    -        pub const CLOCK_GATE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Register clock gate enable signal. 1: Enable. 0: Disable.
    -            CLK_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0xdc);
    -
    -        /// address: 0x600023fc
    -        /// Version control register
    -        pub const DATE = @intToPtr(*volatile MmioInt(32, u28), base_address + 0x3fc);
    -    };
    -
    -    /// SPI (Serial Peripheral Interface) Controller
    -    pub const SPI2 = struct {
    -        pub const base_address = 0x60024000;
    -
    -        /// address: 0x60024000
    -        /// Command control register
    -        pub const CMD = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Define the APB cycles of SPI_CONF state. Can be configured in CONF state.
    -            CONF_BITLEN: u18,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            /// Set this bit to synchronize SPI registers from APB clock domain into SPI module
    -            /// clock domain, which is only used in SPI master mode.
    -            UPDATE: u1,
    -            /// User define command enable. An operation will be triggered when the bit is set.
    -            /// The bit will be cleared once the operation done.1: enable 0: disable. Can not be
    -            /// changed by CONF_buf.
    -            USR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -        }), base_address + 0x0);
    -
    -        /// address: 0x60024004
    -        /// Address value register
    -        pub const ADDR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Address to slave. Can be configured in CONF state.
    -            USR_ADDR_VALUE: u32,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x60024008
    -        /// SPI control register
    -        pub const CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            /// In the dummy phase the signal level of spi is output by the spi controller. Can
    -            /// be configured in CONF state.
    -            DUMMY_OUT: u1,
    -            reserved3: u1,
    -            /// Apply 2 signals during addr phase 1:enable 0: disable. Can be configured in CONF
    -            /// state.
    -            FADDR_DUAL: u1,
    -            /// Apply 4 signals during addr phase 1:enable 0: disable. Can be configured in CONF
    -            /// state.
    -            FADDR_QUAD: u1,
    -            reserved4: u1,
    -            /// Apply 2 signals during command phase 1:enable 0: disable. Can be configured in
    -            /// CONF state.
    -            FCMD_DUAL: u1,
    -            /// Apply 4 signals during command phase 1:enable 0: disable. Can be configured in
    -            /// CONF state.
    -            FCMD_QUAD: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            /// In the read operations, read-data phase apply 2 signals. 1: enable 0: disable.
    -            /// Can be configured in CONF state.
    -            FREAD_DUAL: u1,
    -            /// In the read operations read-data phase apply 4 signals. 1: enable 0: disable.
    -            /// Can be configured in CONF state.
    -            FREAD_QUAD: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            /// The bit is used to set MISO line polarity, 1: high 0, low. Can be configured in
    -            /// CONF state.
    -            Q_POL: u1,
    -            /// The bit is used to set MOSI line polarity, 1: high 0, low. Can be configured in
    -            /// CONF state.
    -            D_POL: u1,
    -            /// SPI_HOLD output value when SPI is idle. 1: output high, 0: output low. Can be
    -            /// configured in CONF state.
    -            HOLD_POL: u1,
    -            /// Write protect signal output when SPI is idle. 1: output high, 0: output low. Can
    -            /// be configured in CONF state.
    -            WP_POL: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            /// In read-data (MISO) phase 1: LSB first 0: MSB first. Can be configured in CONF
    -            /// state.
    -            RD_BIT_ORDER: u1,
    -            /// In command address write-data (MOSI) phases 1: LSB firs 0: MSB first. Can be
    -            /// configured in CONF state.
    -            WR_BIT_ORDER: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x6002400c
    -        /// SPI clock control register
    -        pub const CLOCK = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// In the master mode it must be equal to spi_clkcnt_N. In the slave mode it must
    -            /// be 0. Can be configured in CONF state.
    -            CLKCNT_L: u6,
    -            /// In the master mode it must be floor((spi_clkcnt_N+1)/2-1). In the slave mode it
    -            /// must be 0. Can be configured in CONF state.
    -            CLKCNT_H: u6,
    -            /// In the master mode it is the divider of spi_clk. So spi_clk frequency is
    -            /// system/(spi_clkdiv_pre+1)/(spi_clkcnt_N+1). Can be configured in CONF state.
    -            CLKCNT_N: u6,
    -            /// In the master mode it is pre-divider of spi_clk. Can be configured in CONF
    -            /// state.
    -            CLKDIV_PRE: u4,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            /// In the master mode 1: spi_clk is eqaul to system 0: spi_clk is divided from
    -            /// system clock. Can be configured in CONF state.
    -            CLK_EQU_SYSCLK: u1,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x60024010
    -        /// SPI USER control register
    -        pub const USER = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set the bit to enable full duplex communication. 1: enable 0: disable. Can be
    -            /// configured in CONF state.
    -            DOUTDIN: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// Both for master mode and slave mode. 1: spi controller is in QPI mode. 0:
    -            /// others. Can be configured in CONF state.
    -            QPI_MODE: u1,
    -            reserved2: u1,
    -            /// In the slave mode, this bit can be used to change the polarity of tsck. 0: tsck
    -            /// = spi_ck_i. 1:tsck = !spi_ck_i.
    -            TSCK_I_EDGE: u1,
    -            /// spi cs keep low when spi is in done phase. 1: enable 0: disable. Can be
    -            /// configured in CONF state.
    -            CS_HOLD: u1,
    -            /// spi cs is enable when spi is in prepare phase. 1: enable 0: disable. Can be
    -            /// configured in CONF state.
    -            CS_SETUP: u1,
    -            /// In the slave mode, this bit can be used to change the polarity of rsck. 0: rsck
    -            /// = !spi_ck_i. 1:rsck = spi_ck_i.
    -            RSCK_I_EDGE: u1,
    -            /// the bit combined with spi_mosi_delay_mode bits to set mosi signal delay mode.
    -            /// Can be configured in CONF state.
    -            CK_OUT_EDGE: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            /// In the write operations read-data phase apply 2 signals. Can be configured in
    -            /// CONF state.
    -            FWRITE_DUAL: u1,
    -            /// In the write operations read-data phase apply 4 signals. Can be configured in
    -            /// CONF state.
    -            FWRITE_QUAD: u1,
    -            reserved5: u1,
    -            /// 1: Enable the DMA CONF phase of next seg-trans operation, which means seg-trans
    -            /// will continue. 0: The seg-trans will end after the current SPI seg-trans or this
    -            /// is not seg-trans mode. Can be configured in CONF state.
    -            USR_CONF_NXT: u1,
    -            reserved6: u1,
    -            /// Set the bit to enable 3-line half duplex communication mosi and miso signals
    -            /// share the same pin. 1: enable 0: disable. Can be configured in CONF state.
    -            SIO: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            /// read-data phase only access to high-part of the buffer spi_w8~spi_w15. 1: enable
    -            /// 0: disable. Can be configured in CONF state.
    -            USR_MISO_HIGHPART: u1,
    -            /// write-data phase only access to high-part of the buffer spi_w8~spi_w15. 1:
    -            /// enable 0: disable. Can be configured in CONF state.
    -            USR_MOSI_HIGHPART: u1,
    -            /// spi clock is disable in dummy phase when the bit is enable. Can be configured in
    -            /// CONF state.
    -            USR_DUMMY_IDLE: u1,
    -            /// This bit enable the write-data phase of an operation. Can be configured in CONF
    -            /// state.
    -            USR_MOSI: u1,
    -            /// This bit enable the read-data phase of an operation. Can be configured in CONF
    -            /// state.
    -            USR_MISO: u1,
    -            /// This bit enable the dummy phase of an operation. Can be configured in CONF
    -            /// state.
    -            USR_DUMMY: u1,
    -            /// This bit enable the address phase of an operation. Can be configured in CONF
    -            /// state.
    -            USR_ADDR: u1,
    -            /// This bit enable the command phase of an operation. Can be configured in CONF
    -            /// state.
    -            USR_COMMAND: u1,
    -        }), base_address + 0x10);
    -
    -        /// address: 0x60024014
    -        /// SPI USER control register 1
    -        pub const USER1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The length in spi_clk cycles of dummy phase. The register value shall be
    -            /// (cycle_num-1). Can be configured in CONF state.
    -            USR_DUMMY_CYCLELEN: u8,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            /// 1: SPI transfer is ended when SPI RX AFIFO wfull error is valid in GP-SPI master
    -            /// FD/HD-mode. 0: SPI transfer is not ended when SPI RX AFIFO wfull error is valid
    -            /// in GP-SPI master FD/HD-mode.
    -            MST_WFULL_ERR_END_EN: u1,
    -            /// (cycles+1) of prepare phase by spi clock this bits are combined with
    -            /// spi_cs_setup bit. Can be configured in CONF state.
    -            CS_SETUP_TIME: u5,
    -            /// delay cycles of cs pin by spi clock this bits are combined with spi_cs_hold bit.
    -            /// Can be configured in CONF state.
    -            CS_HOLD_TIME: u5,
    -            /// The length in bits of address phase. The register value shall be (bit_num-1).
    -            /// Can be configured in CONF state.
    -            USR_ADDR_BITLEN: u5,
    -        }), base_address + 0x14);
    -
    -        /// address: 0x60024018
    -        /// SPI USER control register 2
    -        pub const USER2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of command. Can be configured in CONF state.
    -            USR_COMMAND_VALUE: u16,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            /// 1: SPI transfer is ended when SPI TX AFIFO read empty error is valid in GP-SPI
    -            /// master FD/HD-mode. 0: SPI transfer is not ended when SPI TX AFIFO read empty
    -            /// error is valid in GP-SPI master FD/HD-mode.
    -            MST_REMPTY_ERR_END_EN: u1,
    -            /// The length in bits of command phase. The register value shall be (bit_num-1).
    -            /// Can be configured in CONF state.
    -            USR_COMMAND_BITLEN: u4,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x6002401c
    -        /// SPI data bit length control register
    -        pub const MS_DLEN = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The value of these bits is the configured SPI transmission data bit length in
    -            /// master mode DMA controlled transfer or CPU controlled transfer. The value is
    -            /// also the configured bit length in slave mode DMA RX controlled transfer. The
    -            /// register value shall be (bit_num-1). Can be configured in CONF state.
    -            MS_DATA_BITLEN: u18,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x60024020
    -        /// SPI misc register
    -        pub const MISC = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// SPI CS0 pin enable, 1: disable CS0, 0: spi_cs0 signal is from/to CS0 pin. Can be
    -            /// configured in CONF state.
    -            CS0_DIS: u1,
    -            /// SPI CS1 pin enable, 1: disable CS1, 0: spi_cs1 signal is from/to CS1 pin. Can be
    -            /// configured in CONF state.
    -            CS1_DIS: u1,
    -            /// SPI CS2 pin enable, 1: disable CS2, 0: spi_cs2 signal is from/to CS2 pin. Can be
    -            /// configured in CONF state.
    -            CS2_DIS: u1,
    -            /// SPI CS3 pin enable, 1: disable CS3, 0: spi_cs3 signal is from/to CS3 pin. Can be
    -            /// configured in CONF state.
    -            CS3_DIS: u1,
    -            /// SPI CS4 pin enable, 1: disable CS4, 0: spi_cs4 signal is from/to CS4 pin. Can be
    -            /// configured in CONF state.
    -            CS4_DIS: u1,
    -            /// SPI CS5 pin enable, 1: disable CS5, 0: spi_cs5 signal is from/to CS5 pin. Can be
    -            /// configured in CONF state.
    -            CS5_DIS: u1,
    -            /// 1: spi clk out disable, 0: spi clk out enable. Can be configured in CONF state.
    -            CK_DIS: u1,
    -            /// In the master mode the bits are the polarity of spi cs line, the value is
    -            /// equivalent to spi_cs ^ spi_master_cs_pol. Can be configured in CONF state.
    -            MASTER_CS_POL: u6,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            /// spi slave input cs polarity select. 1: inv 0: not change. Can be configured in
    -            /// CONF state.
    -            SLAVE_CS_POL: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            /// 1: spi clk line is high when idle 0: spi clk line is low when idle. Can be
    -            /// configured in CONF state.
    -            CK_IDLE_EDGE: u1,
    -            /// spi cs line keep low when the bit is set. Can be configured in CONF state.
    -            CS_KEEP_ACTIVE: u1,
    -            /// 1: spi quad input swap enable 0: spi quad input swap disable. Can be configured
    -            /// in CONF state.
    -            QUAD_DIN_PIN_SWAP: u1,
    -        }), base_address + 0x20);
    -
    -        /// address: 0x60024024
    -        /// SPI input delay mode configuration
    -        pub const DIN_MODE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// the input signals are delayed by SPI module clock cycles, 0: input without
    -            /// delayed, 1: input with the posedge of clk_apb,2 input with the negedge of
    -            /// clk_apb, 3: input with the spi_clk. Can be configured in CONF state.
    -            DIN0_MODE: u2,
    -            /// the input signals are delayed by SPI module clock cycles, 0: input without
    -            /// delayed, 1: input with the posedge of clk_apb,2 input with the negedge of
    -            /// clk_apb, 3: input with the spi_clk. Can be configured in CONF state.
    -            DIN1_MODE: u2,
    -            /// the input signals are delayed by SPI module clock cycles, 0: input without
    -            /// delayed, 1: input with the posedge of clk_apb,2 input with the negedge of
    -            /// clk_apb, 3: input with the spi_clk. Can be configured in CONF state.
    -            DIN2_MODE: u2,
    -            /// the input signals are delayed by SPI module clock cycles, 0: input without
    -            /// delayed, 1: input with the posedge of clk_apb,2 input with the negedge of
    -            /// clk_apb, 3: input with the spi_clk. Can be configured in CONF state.
    -            DIN3_MODE: u2,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            /// 1:enable hclk in SPI input timing module. 0: disable it. Can be configured in
    -            /// CONF state.
    -            TIMING_HCLK_ACTIVE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -        }), base_address + 0x24);
    -
    -        /// address: 0x60024028
    -        /// SPI input delay number configuration
    -        pub const DIN_NUM = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle,
    -            /// 1: delayed by 2 cycles,... Can be configured in CONF state.
    -            DIN0_NUM: u2,
    -            /// the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle,
    -            /// 1: delayed by 2 cycles,... Can be configured in CONF state.
    -            DIN1_NUM: u2,
    -            /// the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle,
    -            /// 1: delayed by 2 cycles,... Can be configured in CONF state.
    -            DIN2_NUM: u2,
    -            /// the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle,
    -            /// 1: delayed by 2 cycles,... Can be configured in CONF state.
    -            DIN3_NUM: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x28);
    -
    -        /// address: 0x6002402c
    -        /// SPI output delay mode configuration
    -        pub const DOUT_MODE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The output signal 0 is delayed by the SPI module clock, 0: output without
    -            /// delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can
    -            /// be configured in CONF state.
    -            DOUT0_MODE: u1,
    -            /// The output signal 1 is delayed by the SPI module clock, 0: output without
    -            /// delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can
    -            /// be configured in CONF state.
    -            DOUT1_MODE: u1,
    -            /// The output signal 2 is delayed by the SPI module clock, 0: output without
    -            /// delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can
    -            /// be configured in CONF state.
    -            DOUT2_MODE: u1,
    -            /// The output signal 3 is delayed by the SPI module clock, 0: output without
    -            /// delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can
    -            /// be configured in CONF state.
    -            DOUT3_MODE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x2c);
    -
    -        /// address: 0x60024030
    -        /// SPI DMA control register
    -        pub const DMA_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            /// Enable dma segment transfer in spi dma half slave mode. 1: enable. 0: disable.
    -            DMA_SLV_SEG_TRANS_EN: u1,
    -            /// 1: spi_dma_infifo_full_vld is cleared by spi slave cmd 5. 0:
    -            /// spi_dma_infifo_full_vld is cleared by spi_trans_done.
    -            SLV_RX_SEG_TRANS_CLR_EN: u1,
    -            /// 1: spi_dma_outfifo_empty_vld is cleared by spi slave cmd 6. 0:
    -            /// spi_dma_outfifo_empty_vld is cleared by spi_trans_done.
    -            SLV_TX_SEG_TRANS_CLR_EN: u1,
    -            /// 1: spi_dma_inlink_eof is set when the number of dma pushed data bytes is equal
    -            /// to the value of spi_slv/mst_dma_rd_bytelen[19:0] in spi dma transition. 0:
    -            /// spi_dma_inlink_eof is set by spi_trans_done in non-seg-trans or
    -            /// spi_dma_seg_trans_done in seg-trans.
    -            RX_EOF_EN: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            /// Set this bit to enable SPI DMA controlled receive data mode.
    -            DMA_RX_ENA: u1,
    -            /// Set this bit to enable SPI DMA controlled send data mode.
    -            DMA_TX_ENA: u1,
    -            /// Set this bit to reset RX AFIFO, which is used to receive data in SPI master and
    -            /// slave mode transfer.
    -            RX_AFIFO_RST: u1,
    -            /// Set this bit to reset BUF TX AFIFO, which is used send data out in SPI slave CPU
    -            /// controlled mode transfer and master mode transfer.
    -            BUF_AFIFO_RST: u1,
    -            /// Set this bit to reset DMA TX AFIFO, which is used to send data out in SPI slave
    -            /// DMA controlled mode transfer.
    -            DMA_AFIFO_RST: u1,
    -        }), base_address + 0x30);
    -
    -        /// address: 0x60024034
    -        /// SPI DMA interrupt enable register
    -        pub const DMA_INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The enable bit for SPI_DMA_INFIFO_FULL_ERR_INT interrupt.
    -            DMA_INFIFO_FULL_ERR_INT_ENA: u1,
    -            /// The enable bit for SPI_DMA_OUTFIFO_EMPTY_ERR_INT interrupt.
    -            DMA_OUTFIFO_EMPTY_ERR_INT_ENA: u1,
    -            /// The enable bit for SPI slave Ex_QPI interrupt.
    -            SLV_EX_QPI_INT_ENA: u1,
    -            /// The enable bit for SPI slave En_QPI interrupt.
    -            SLV_EN_QPI_INT_ENA: u1,
    -            /// The enable bit for SPI slave CMD7 interrupt.
    -            SLV_CMD7_INT_ENA: u1,
    -            /// The enable bit for SPI slave CMD8 interrupt.
    -            SLV_CMD8_INT_ENA: u1,
    -            /// The enable bit for SPI slave CMD9 interrupt.
    -            SLV_CMD9_INT_ENA: u1,
    -            /// The enable bit for SPI slave CMDA interrupt.
    -            SLV_CMDA_INT_ENA: u1,
    -            /// The enable bit for SPI_SLV_RD_DMA_DONE_INT interrupt.
    -            SLV_RD_DMA_DONE_INT_ENA: u1,
    -            /// The enable bit for SPI_SLV_WR_DMA_DONE_INT interrupt.
    -            SLV_WR_DMA_DONE_INT_ENA: u1,
    -            /// The enable bit for SPI_SLV_RD_BUF_DONE_INT interrupt.
    -            SLV_RD_BUF_DONE_INT_ENA: u1,
    -            /// The enable bit for SPI_SLV_WR_BUF_DONE_INT interrupt.
    -            SLV_WR_BUF_DONE_INT_ENA: u1,
    -            /// The enable bit for SPI_TRANS_DONE_INT interrupt.
    -            TRANS_DONE_INT_ENA: u1,
    -            /// The enable bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt.
    -            DMA_SEG_TRANS_DONE_INT_ENA: u1,
    -            /// The enable bit for SPI_SEG_MAGIC_ERR_INT interrupt.
    -            SEG_MAGIC_ERR_INT_ENA: u1,
    -            /// The enable bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt.
    -            SLV_BUF_ADDR_ERR_INT_ENA: u1,
    -            /// The enable bit for SPI_SLV_CMD_ERR_INT interrupt.
    -            SLV_CMD_ERR_INT_ENA: u1,
    -            /// The enable bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt.
    -            MST_RX_AFIFO_WFULL_ERR_INT_ENA: u1,
    -            /// The enable bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt.
    -            MST_TX_AFIFO_REMPTY_ERR_INT_ENA: u1,
    -            /// The enable bit for SPI_APP2_INT interrupt.
    -            APP2_INT_ENA: u1,
    -            /// The enable bit for SPI_APP1_INT interrupt.
    -            APP1_INT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -        }), base_address + 0x34);
    -
    -        /// address: 0x60024038
    -        /// SPI DMA interrupt clear register
    -        pub const DMA_INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The clear bit for SPI_DMA_INFIFO_FULL_ERR_INT interrupt.
    -            DMA_INFIFO_FULL_ERR_INT_CLR: u1,
    -            /// The clear bit for SPI_DMA_OUTFIFO_EMPTY_ERR_INT interrupt.
    -            DMA_OUTFIFO_EMPTY_ERR_INT_CLR: u1,
    -            /// The clear bit for SPI slave Ex_QPI interrupt.
    -            SLV_EX_QPI_INT_CLR: u1,
    -            /// The clear bit for SPI slave En_QPI interrupt.
    -            SLV_EN_QPI_INT_CLR: u1,
    -            /// The clear bit for SPI slave CMD7 interrupt.
    -            SLV_CMD7_INT_CLR: u1,
    -            /// The clear bit for SPI slave CMD8 interrupt.
    -            SLV_CMD8_INT_CLR: u1,
    -            /// The clear bit for SPI slave CMD9 interrupt.
    -            SLV_CMD9_INT_CLR: u1,
    -            /// The clear bit for SPI slave CMDA interrupt.
    -            SLV_CMDA_INT_CLR: u1,
    -            /// The clear bit for SPI_SLV_RD_DMA_DONE_INT interrupt.
    -            SLV_RD_DMA_DONE_INT_CLR: u1,
    -            /// The clear bit for SPI_SLV_WR_DMA_DONE_INT interrupt.
    -            SLV_WR_DMA_DONE_INT_CLR: u1,
    -            /// The clear bit for SPI_SLV_RD_BUF_DONE_INT interrupt.
    -            SLV_RD_BUF_DONE_INT_CLR: u1,
    -            /// The clear bit for SPI_SLV_WR_BUF_DONE_INT interrupt.
    -            SLV_WR_BUF_DONE_INT_CLR: u1,
    -            /// The clear bit for SPI_TRANS_DONE_INT interrupt.
    -            TRANS_DONE_INT_CLR: u1,
    -            /// The clear bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt.
    -            DMA_SEG_TRANS_DONE_INT_CLR: u1,
    -            /// The clear bit for SPI_SEG_MAGIC_ERR_INT interrupt.
    -            SEG_MAGIC_ERR_INT_CLR: u1,
    -            /// The clear bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt.
    -            SLV_BUF_ADDR_ERR_INT_CLR: u1,
    -            /// The clear bit for SPI_SLV_CMD_ERR_INT interrupt.
    -            SLV_CMD_ERR_INT_CLR: u1,
    -            /// The clear bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt.
    -            MST_RX_AFIFO_WFULL_ERR_INT_CLR: u1,
    -            /// The clear bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt.
    -            MST_TX_AFIFO_REMPTY_ERR_INT_CLR: u1,
    -            /// The clear bit for SPI_APP2_INT interrupt.
    -            APP2_INT_CLR: u1,
    -            /// The clear bit for SPI_APP1_INT interrupt.
    -            APP1_INT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -        }), base_address + 0x38);
    -
    -        /// address: 0x6002403c
    -        /// SPI DMA interrupt raw register
    -        pub const DMA_INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// 1: The current data rate of DMA Rx is smaller than that of SPI, which will lose
    -            /// the receive data. 0: Others.
    -            DMA_INFIFO_FULL_ERR_INT_RAW: u1,
    -            /// 1: The current data rate of DMA TX is smaller than that of SPI. SPI will stop in
    -            /// master mode and send out all 0 in slave mode. 0: Others.
    -            DMA_OUTFIFO_EMPTY_ERR_INT_RAW: u1,
    -            /// The raw bit for SPI slave Ex_QPI interrupt. 1: SPI slave mode Ex_QPI
    -            /// transmission is ended. 0: Others.
    -            SLV_EX_QPI_INT_RAW: u1,
    -            /// The raw bit for SPI slave En_QPI interrupt. 1: SPI slave mode En_QPI
    -            /// transmission is ended. 0: Others.
    -            SLV_EN_QPI_INT_RAW: u1,
    -            /// The raw bit for SPI slave CMD7 interrupt. 1: SPI slave mode CMD7 transmission is
    -            /// ended. 0: Others.
    -            SLV_CMD7_INT_RAW: u1,
    -            /// The raw bit for SPI slave CMD8 interrupt. 1: SPI slave mode CMD8 transmission is
    -            /// ended. 0: Others.
    -            SLV_CMD8_INT_RAW: u1,
    -            /// The raw bit for SPI slave CMD9 interrupt. 1: SPI slave mode CMD9 transmission is
    -            /// ended. 0: Others.
    -            SLV_CMD9_INT_RAW: u1,
    -            /// The raw bit for SPI slave CMDA interrupt. 1: SPI slave mode CMDA transmission is
    -            /// ended. 0: Others.
    -            SLV_CMDA_INT_RAW: u1,
    -            /// The raw bit for SPI_SLV_RD_DMA_DONE_INT interrupt. 1: SPI slave mode Rd_DMA
    -            /// transmission is ended. 0: Others.
    -            SLV_RD_DMA_DONE_INT_RAW: u1,
    -            /// The raw bit for SPI_SLV_WR_DMA_DONE_INT interrupt. 1: SPI slave mode Wr_DMA
    -            /// transmission is ended. 0: Others.
    -            SLV_WR_DMA_DONE_INT_RAW: u1,
    -            /// The raw bit for SPI_SLV_RD_BUF_DONE_INT interrupt. 1: SPI slave mode Rd_BUF
    -            /// transmission is ended. 0: Others.
    -            SLV_RD_BUF_DONE_INT_RAW: u1,
    -            /// The raw bit for SPI_SLV_WR_BUF_DONE_INT interrupt. 1: SPI slave mode Wr_BUF
    -            /// transmission is ended. 0: Others.
    -            SLV_WR_BUF_DONE_INT_RAW: u1,
    -            /// The raw bit for SPI_TRANS_DONE_INT interrupt. 1: SPI master mode transmission is
    -            /// ended. 0: others.
    -            TRANS_DONE_INT_RAW: u1,
    -            /// The raw bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt. 1: spi master DMA
    -            /// full-duplex/half-duplex seg-conf-trans ends or slave half-duplex seg-trans ends.
    -            /// And data has been pushed to corresponding memory. 0: seg-conf-trans or seg-trans
    -            /// is not ended or not occurred.
    -            DMA_SEG_TRANS_DONE_INT_RAW: u1,
    -            /// The raw bit for SPI_SEG_MAGIC_ERR_INT interrupt. 1: The magic value in CONF
    -            /// buffer is error in the DMA seg-conf-trans. 0: others.
    -            SEG_MAGIC_ERR_INT_RAW: u1,
    -            /// The raw bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt. 1: The accessing data
    -            /// address of the current SPI slave mode CPU controlled FD, Wr_BUF or Rd_BUF
    -            /// transmission is bigger than 63. 0: Others.
    -            SLV_BUF_ADDR_ERR_INT_RAW: u1,
    -            /// The raw bit for SPI_SLV_CMD_ERR_INT interrupt. 1: The slave command value in the
    -            /// current SPI slave HD mode transmission is not supported. 0: Others.
    -            SLV_CMD_ERR_INT_RAW: u1,
    -            /// The raw bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt. 1: There is a RX AFIFO
    -            /// write-full error when SPI inputs data in master mode. 0: Others.
    -            MST_RX_AFIFO_WFULL_ERR_INT_RAW: u1,
    -            /// The raw bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt. 1: There is a TX BUF
    -            /// AFIFO read-empty error when SPI outputs data in master mode. 0: Others.
    -            MST_TX_AFIFO_REMPTY_ERR_INT_RAW: u1,
    -            /// The raw bit for SPI_APP2_INT interrupt. The value is only controlled by
    -            /// application.
    -            APP2_INT_RAW: u1,
    -            /// The raw bit for SPI_APP1_INT interrupt. The value is only controlled by
    -            /// application.
    -            APP1_INT_RAW: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -        }), base_address + 0x3c);
    -
    -        /// address: 0x60024040
    -        /// SPI DMA interrupt status register
    -        pub const DMA_INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The status bit for SPI_DMA_INFIFO_FULL_ERR_INT interrupt.
    -            DMA_INFIFO_FULL_ERR_INT_ST: u1,
    -            /// The status bit for SPI_DMA_OUTFIFO_EMPTY_ERR_INT interrupt.
    -            DMA_OUTFIFO_EMPTY_ERR_INT_ST: u1,
    -            /// The status bit for SPI slave Ex_QPI interrupt.
    -            SLV_EX_QPI_INT_ST: u1,
    -            /// The status bit for SPI slave En_QPI interrupt.
    -            SLV_EN_QPI_INT_ST: u1,
    -            /// The status bit for SPI slave CMD7 interrupt.
    -            SLV_CMD7_INT_ST: u1,
    -            /// The status bit for SPI slave CMD8 interrupt.
    -            SLV_CMD8_INT_ST: u1,
    -            /// The status bit for SPI slave CMD9 interrupt.
    -            SLV_CMD9_INT_ST: u1,
    -            /// The status bit for SPI slave CMDA interrupt.
    -            SLV_CMDA_INT_ST: u1,
    -            /// The status bit for SPI_SLV_RD_DMA_DONE_INT interrupt.
    -            SLV_RD_DMA_DONE_INT_ST: u1,
    -            /// The status bit for SPI_SLV_WR_DMA_DONE_INT interrupt.
    -            SLV_WR_DMA_DONE_INT_ST: u1,
    -            /// The status bit for SPI_SLV_RD_BUF_DONE_INT interrupt.
    -            SLV_RD_BUF_DONE_INT_ST: u1,
    -            /// The status bit for SPI_SLV_WR_BUF_DONE_INT interrupt.
    -            SLV_WR_BUF_DONE_INT_ST: u1,
    -            /// The status bit for SPI_TRANS_DONE_INT interrupt.
    -            TRANS_DONE_INT_ST: u1,
    -            /// The status bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt.
    -            DMA_SEG_TRANS_DONE_INT_ST: u1,
    -            /// The status bit for SPI_SEG_MAGIC_ERR_INT interrupt.
    -            SEG_MAGIC_ERR_INT_ST: u1,
    -            /// The status bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt.
    -            SLV_BUF_ADDR_ERR_INT_ST: u1,
    -            /// The status bit for SPI_SLV_CMD_ERR_INT interrupt.
    -            SLV_CMD_ERR_INT_ST: u1,
    -            /// The status bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt.
    -            MST_RX_AFIFO_WFULL_ERR_INT_ST: u1,
    -            /// The status bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt.
    -            MST_TX_AFIFO_REMPTY_ERR_INT_ST: u1,
    -            /// The status bit for SPI_APP2_INT interrupt.
    -            APP2_INT_ST: u1,
    -            /// The status bit for SPI_APP1_INT interrupt.
    -            APP1_INT_ST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -        }), base_address + 0x40);
    -
    -        /// address: 0x60024098
    -        /// SPI CPU-controlled buffer0
    -        pub const W0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF0: u32,
    -        }), base_address + 0x98);
    -
    -        /// address: 0x6002409c
    -        /// SPI CPU-controlled buffer1
    -        pub const W1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF1: u32,
    -        }), base_address + 0x9c);
    -
    -        /// address: 0x600240a0
    -        /// SPI CPU-controlled buffer2
    -        pub const W2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF2: u32,
    -        }), base_address + 0xa0);
    -
    -        /// address: 0x600240a4
    -        /// SPI CPU-controlled buffer3
    -        pub const W3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF3: u32,
    -        }), base_address + 0xa4);
    -
    -        /// address: 0x600240a8
    -        /// SPI CPU-controlled buffer4
    -        pub const W4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF4: u32,
    -        }), base_address + 0xa8);
    -
    -        /// address: 0x600240ac
    -        /// SPI CPU-controlled buffer5
    -        pub const W5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF5: u32,
    -        }), base_address + 0xac);
    -
    -        /// address: 0x600240b0
    -        /// SPI CPU-controlled buffer6
    -        pub const W6 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF6: u32,
    -        }), base_address + 0xb0);
    -
    -        /// address: 0x600240b4
    -        /// SPI CPU-controlled buffer7
    -        pub const W7 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF7: u32,
    -        }), base_address + 0xb4);
    -
    -        /// address: 0x600240b8
    -        /// SPI CPU-controlled buffer8
    -        pub const W8 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF8: u32,
    -        }), base_address + 0xb8);
    -
    -        /// address: 0x600240bc
    -        /// SPI CPU-controlled buffer9
    -        pub const W9 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF9: u32,
    -        }), base_address + 0xbc);
    -
    -        /// address: 0x600240c0
    -        /// SPI CPU-controlled buffer10
    -        pub const W10 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF10: u32,
    -        }), base_address + 0xc0);
    -
    -        /// address: 0x600240c4
    -        /// SPI CPU-controlled buffer11
    -        pub const W11 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF11: u32,
    -        }), base_address + 0xc4);
    -
    -        /// address: 0x600240c8
    -        /// SPI CPU-controlled buffer12
    -        pub const W12 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF12: u32,
    -        }), base_address + 0xc8);
    -
    -        /// address: 0x600240cc
    -        /// SPI CPU-controlled buffer13
    -        pub const W13 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF13: u32,
    -        }), base_address + 0xcc);
    -
    -        /// address: 0x600240d0
    -        /// SPI CPU-controlled buffer14
    -        pub const W14 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF14: u32,
    -        }), base_address + 0xd0);
    -
    -        /// address: 0x600240d4
    -        /// SPI CPU-controlled buffer15
    -        pub const W15 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// data buffer
    -            BUF15: u32,
    -        }), base_address + 0xd4);
    -
    -        /// address: 0x600240e0
    -        /// SPI slave control register
    -        pub const SLAVE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// SPI clock mode bits. 0: SPI clock is off when CS inactive 1: SPI clock is
    -            /// delayed one cycle after CS inactive 2: SPI clock is delayed two cycles after CS
    -            /// inactive 3: SPI clock is alwasy on. Can be configured in CONF state.
    -            CLK_MODE: u2,
    -            /// {CPOL, CPHA},1: support spi clk mode 1 and 3, first edge output data B[0]/B[7].
    -            /// 0: support spi clk mode 0 and 2, first edge output data B[1]/B[6].
    -            CLK_MODE_13: u1,
    -            /// It saves half a cycle when tsck is the same as rsck. 1: output data at rsck
    -            /// posedge 0: output data at tsck posedge
    -            RSCK_DATA_OUT: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// 1: SPI_SLV_DATA_BITLEN stores data bit length of master-read-slave data length
    -            /// in DMA controlled mode(Rd_DMA). 0: others
    -            SLV_RDDMA_BITLEN_EN: u1,
    -            /// 1: SPI_SLV_DATA_BITLEN stores data bit length of master-write-to-slave data
    -            /// length in DMA controlled mode(Wr_DMA). 0: others
    -            SLV_WRDMA_BITLEN_EN: u1,
    -            /// 1: SPI_SLV_DATA_BITLEN stores data bit length of master-read-slave data length
    -            /// in CPU controlled mode(Rd_BUF). 0: others
    -            SLV_RDBUF_BITLEN_EN: u1,
    -            /// 1: SPI_SLV_DATA_BITLEN stores data bit length of master-write-to-slave data
    -            /// length in CPU controlled mode(Wr_BUF). 0: others
    -            SLV_WRBUF_BITLEN_EN: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            /// The magic value of BM table in master DMA seg-trans.
    -            DMA_SEG_MAGIC_VALUE: u4,
    -            /// Set SPI work mode. 1: slave mode 0: master mode.
    -            MODE: u1,
    -            /// Software reset enable, reset the spi clock line cs line and data lines. Can be
    -            /// configured in CONF state.
    -            SOFT_RESET: u1,
    -            /// 1: Enable the DMA CONF phase of current seg-trans operation, which means
    -            /// seg-trans will start. 0: This is not seg-trans mode.
    -            USR_CONF: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -        }), base_address + 0xe0);
    -
    -        /// address: 0x600240e4
    -        /// SPI slave control register 1
    -        pub const SLAVE1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The transferred data bit length in SPI slave FD and HD mode.
    -            SLV_DATA_BITLEN: u18,
    -            /// In the slave mode it is the value of command.
    -            SLV_LAST_COMMAND: u8,
    -            /// In the slave mode it is the value of address.
    -            SLV_LAST_ADDR: u6,
    -        }), base_address + 0xe4);
    -
    -        /// address: 0x600240e8
    -        /// SPI module clock and register clock control
    -        pub const CLK_GATE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set this bit to enable clk gate
    -            CLK_EN: u1,
    -            /// Set this bit to power on the SPI module clock.
    -            MST_CLK_ACTIVE: u1,
    -            /// This bit is used to select SPI module clock source in master mode. 1:
    -            /// PLL_CLK_80M. 0: XTAL CLK.
    -            MST_CLK_SEL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -        }), base_address + 0xe8);
    -
    -        /// address: 0x600240f0
    -        /// Version control
    -        pub const DATE = @intToPtr(*volatile MmioInt(32, u28), base_address + 0xf0);
    -    };
    -
    -    /// System
    -    pub const SYSTEM = struct {
    -        pub const base_address = 0x600c0000;
    -
    -        /// address: 0x600c0000
    -        /// cpu_peripheral clock gating register
    -        pub const CPU_PERI_CLK_EN = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            /// reg_clk_en_assist_debug
    -            CLK_EN_ASSIST_DEBUG: u1,
    -            /// reg_clk_en_dedicated_gpio
    -            CLK_EN_DEDICATED_GPIO: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x0);
    -
    -        /// address: 0x600c0004
    -        /// cpu_peripheral reset register
    -        pub const CPU_PERI_RST_EN = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            /// reg_rst_en_assist_debug
    -            RST_EN_ASSIST_DEBUG: u1,
    -            /// reg_rst_en_dedicated_gpio
    -            RST_EN_DEDICATED_GPIO: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x600c0008
    -        /// cpu clock config register
    -        pub const CPU_PER_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_cpuperiod_sel
    -            CPUPERIOD_SEL: u2,
    -            /// reg_pll_freq_sel
    -            PLL_FREQ_SEL: u1,
    -            /// reg_cpu_wait_mode_force_on
    -            CPU_WAIT_MODE_FORCE_ON: u1,
    -            /// reg_cpu_waiti_delay_num
    -            CPU_WAITI_DELAY_NUM: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x600c000c
    -        /// memory power down mask register
    -        pub const MEM_PD_MASK = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_lslp_mem_pd_mask
    -            LSLP_MEM_PD_MASK: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x600c0010
    -        /// peripheral clock gating register
    -        pub const PERIP_CLK_EN0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_timers_clk_en
    -            TIMERS_CLK_EN: u1,
    -            /// reg_spi01_clk_en
    -            SPI01_CLK_EN: u1,
    -            /// reg_uart_clk_en
    -            UART_CLK_EN: u1,
    -            /// reg_wdg_clk_en
    -            WDG_CLK_EN: u1,
    -            /// reg_i2s0_clk_en
    -            I2S0_CLK_EN: u1,
    -            /// reg_uart1_clk_en
    -            UART1_CLK_EN: u1,
    -            /// reg_spi2_clk_en
    -            SPI2_CLK_EN: u1,
    -            /// reg_ext0_clk_en
    -            I2C_EXT0_CLK_EN: u1,
    -            /// reg_uhci0_clk_en
    -            UHCI0_CLK_EN: u1,
    -            /// reg_rmt_clk_en
    -            RMT_CLK_EN: u1,
    -            /// reg_pcnt_clk_en
    -            PCNT_CLK_EN: u1,
    -            /// reg_ledc_clk_en
    -            LEDC_CLK_EN: u1,
    -            /// reg_uhci1_clk_en
    -            UHCI1_CLK_EN: u1,
    -            /// reg_timergroup_clk_en
    -            TIMERGROUP_CLK_EN: u1,
    -            /// reg_efuse_clk_en
    -            EFUSE_CLK_EN: u1,
    -            /// reg_timergroup1_clk_en
    -            TIMERGROUP1_CLK_EN: u1,
    -            /// reg_spi3_clk_en
    -            SPI3_CLK_EN: u1,
    -            /// reg_pwm0_clk_en
    -            PWM0_CLK_EN: u1,
    -            /// reg_ext1_clk_en
    -            EXT1_CLK_EN: u1,
    -            /// reg_can_clk_en
    -            CAN_CLK_EN: u1,
    -            /// reg_pwm1_clk_en
    -            PWM1_CLK_EN: u1,
    -            /// reg_i2s1_clk_en
    -            I2S1_CLK_EN: u1,
    -            /// reg_spi2_dma_clk_en
    -            SPI2_DMA_CLK_EN: u1,
    -            /// reg_usb_device_clk_en
    -            USB_DEVICE_CLK_EN: u1,
    -            /// reg_uart_mem_clk_en
    -            UART_MEM_CLK_EN: u1,
    -            /// reg_pwm2_clk_en
    -            PWM2_CLK_EN: u1,
    -            /// reg_pwm3_clk_en
    -            PWM3_CLK_EN: u1,
    -            /// reg_spi3_dma_clk_en
    -            SPI3_DMA_CLK_EN: u1,
    -            /// reg_apb_saradc_clk_en
    -            APB_SARADC_CLK_EN: u1,
    -            /// reg_systimer_clk_en
    -            SYSTIMER_CLK_EN: u1,
    -            /// reg_adc2_arb_clk_en
    -            ADC2_ARB_CLK_EN: u1,
    -            /// reg_spi4_clk_en
    -            SPI4_CLK_EN: u1,
    -        }), base_address + 0x10);
    -
    -        /// address: 0x600c0014
    -        /// peripheral clock gating register
    -        pub const PERIP_CLK_EN1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            /// reg_crypto_aes_clk_en
    -            CRYPTO_AES_CLK_EN: u1,
    -            /// reg_crypto_sha_clk_en
    -            CRYPTO_SHA_CLK_EN: u1,
    -            /// reg_crypto_rsa_clk_en
    -            CRYPTO_RSA_CLK_EN: u1,
    -            /// reg_crypto_ds_clk_en
    -            CRYPTO_DS_CLK_EN: u1,
    -            /// reg_crypto_hmac_clk_en
    -            CRYPTO_HMAC_CLK_EN: u1,
    -            /// reg_dma_clk_en
    -            DMA_CLK_EN: u1,
    -            /// reg_sdio_host_clk_en
    -            SDIO_HOST_CLK_EN: u1,
    -            /// reg_lcd_cam_clk_en
    -            LCD_CAM_CLK_EN: u1,
    -            /// reg_uart2_clk_en
    -            UART2_CLK_EN: u1,
    -            /// reg_tsens_clk_en
    -            TSENS_CLK_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x14);
    -
    -        /// address: 0x600c0018
    -        /// reserved
    -        pub const PERIP_RST_EN0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_timers_rst
    -            TIMERS_RST: u1,
    -            /// reg_spi01_rst
    -            SPI01_RST: u1,
    -            /// reg_uart_rst
    -            UART_RST: u1,
    -            /// reg_wdg_rst
    -            WDG_RST: u1,
    -            /// reg_i2s0_rst
    -            I2S0_RST: u1,
    -            /// reg_uart1_rst
    -            UART1_RST: u1,
    -            /// reg_spi2_rst
    -            SPI2_RST: u1,
    -            /// reg_ext0_rst
    -            I2C_EXT0_RST: u1,
    -            /// reg_uhci0_rst
    -            UHCI0_RST: u1,
    -            /// reg_rmt_rst
    -            RMT_RST: u1,
    -            /// reg_pcnt_rst
    -            PCNT_RST: u1,
    -            /// reg_ledc_rst
    -            LEDC_RST: u1,
    -            /// reg_uhci1_rst
    -            UHCI1_RST: u1,
    -            /// reg_timergroup_rst
    -            TIMERGROUP_RST: u1,
    -            /// reg_efuse_rst
    -            EFUSE_RST: u1,
    -            /// reg_timergroup1_rst
    -            TIMERGROUP1_RST: u1,
    -            /// reg_spi3_rst
    -            SPI3_RST: u1,
    -            /// reg_pwm0_rst
    -            PWM0_RST: u1,
    -            /// reg_ext1_rst
    -            EXT1_RST: u1,
    -            /// reg_can_rst
    -            CAN_RST: u1,
    -            /// reg_pwm1_rst
    -            PWM1_RST: u1,
    -            /// reg_i2s1_rst
    -            I2S1_RST: u1,
    -            /// reg_spi2_dma_rst
    -            SPI2_DMA_RST: u1,
    -            /// reg_usb_device_rst
    -            USB_DEVICE_RST: u1,
    -            /// reg_uart_mem_rst
    -            UART_MEM_RST: u1,
    -            /// reg_pwm2_rst
    -            PWM2_RST: u1,
    -            /// reg_pwm3_rst
    -            PWM3_RST: u1,
    -            /// reg_spi3_dma_rst
    -            SPI3_DMA_RST: u1,
    -            /// reg_apb_saradc_rst
    -            APB_SARADC_RST: u1,
    -            /// reg_systimer_rst
    -            SYSTIMER_RST: u1,
    -            /// reg_adc2_arb_rst
    -            ADC2_ARB_RST: u1,
    -            /// reg_spi4_rst
    -            SPI4_RST: u1,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x600c001c
    -        /// peripheral reset register
    -        pub const PERIP_RST_EN1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            /// reg_crypto_aes_rst
    -            CRYPTO_AES_RST: u1,
    -            /// reg_crypto_sha_rst
    -            CRYPTO_SHA_RST: u1,
    -            /// reg_crypto_rsa_rst
    -            CRYPTO_RSA_RST: u1,
    -            /// reg_crypto_ds_rst
    -            CRYPTO_DS_RST: u1,
    -            /// reg_crypto_hmac_rst
    -            CRYPTO_HMAC_RST: u1,
    -            /// reg_dma_rst
    -            DMA_RST: u1,
    -            /// reg_sdio_host_rst
    -            SDIO_HOST_RST: u1,
    -            /// reg_lcd_cam_rst
    -            LCD_CAM_RST: u1,
    -            /// reg_uart2_rst
    -            UART2_RST: u1,
    -            /// reg_tsens_rst
    -            TSENS_RST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x600c0020
    -        /// clock config register
    -        pub const BT_LPCK_DIV_INT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_bt_lpck_div_num
    -            BT_LPCK_DIV_NUM: u12,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0x20);
    -
    -        /// address: 0x600c0024
    -        /// clock config register
    -        pub const BT_LPCK_DIV_FRAC = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_bt_lpck_div_b
    -            BT_LPCK_DIV_B: u12,
    -            /// reg_bt_lpck_div_a
    -            BT_LPCK_DIV_A: u12,
    -            /// reg_lpclk_sel_rtc_slow
    -            LPCLK_SEL_RTC_SLOW: u1,
    -            /// reg_lpclk_sel_8m
    -            LPCLK_SEL_8M: u1,
    -            /// reg_lpclk_sel_xtal
    -            LPCLK_SEL_XTAL: u1,
    -            /// reg_lpclk_sel_xtal32k
    -            LPCLK_SEL_XTAL32K: u1,
    -            /// reg_lpclk_rtc_en
    -            LPCLK_RTC_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -        }), base_address + 0x24);
    -
    -        /// address: 0x600c0028
    -        /// interrupt generate register
    -        pub const CPU_INTR_FROM_CPU_0 = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x28);
    -
    -        /// address: 0x600c002c
    -        /// interrupt generate register
    -        pub const CPU_INTR_FROM_CPU_1 = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x2c);
    -
    -        /// address: 0x600c0030
    -        /// interrupt generate register
    -        pub const CPU_INTR_FROM_CPU_2 = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x30);
    -
    -        /// address: 0x600c0034
    -        /// interrupt generate register
    -        pub const CPU_INTR_FROM_CPU_3 = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x34);
    -
    -        /// address: 0x600c0038
    -        /// rsa memory power control register
    -        pub const RSA_PD_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_rsa_mem_pd
    -            RSA_MEM_PD: u1,
    -            /// reg_rsa_mem_force_pu
    -            RSA_MEM_FORCE_PU: u1,
    -            /// reg_rsa_mem_force_pd
    -            RSA_MEM_FORCE_PD: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -        }), base_address + 0x38);
    -
    -        /// address: 0x600c003c
    -        /// edma clcok and reset register
    -        pub const EDMA_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_edma_clk_on
    -            EDMA_CLK_ON: u1,
    -            /// reg_edma_reset
    -            EDMA_RESET: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x3c);
    -
    -        /// address: 0x600c0040
    -        /// cache control register
    -        pub const CACHE_CONTROL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_icache_clk_on
    -            ICACHE_CLK_ON: u1,
    -            /// reg_icache_reset
    -            ICACHE_RESET: u1,
    -            /// reg_dcache_clk_on
    -            DCACHE_CLK_ON: u1,
    -            /// reg_dcache_reset
    -            DCACHE_RESET: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x40);
    -
    -        /// address: 0x600c0044
    -        /// SYSTEM_EXTERNAL_DEVICE_ENCRYPT_DECRYPT_CONTROL_REG
    -        pub const EXTERNAL_DEVICE_ENCRYPT_DECRYPT_CONTROL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_enable_spi_manual_encrypt
    -            ENABLE_SPI_MANUAL_ENCRYPT: u1,
    -            /// reg_enable_download_db_encrypt
    -            ENABLE_DOWNLOAD_DB_ENCRYPT: u1,
    -            /// reg_enable_download_g0cb_decrypt
    -            ENABLE_DOWNLOAD_G0CB_DECRYPT: u1,
    -            /// reg_enable_download_manual_encrypt
    -            ENABLE_DOWNLOAD_MANUAL_ENCRYPT: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x44);
    -
    -        /// address: 0x600c0048
    -        /// fast memory config register
    -        pub const RTC_FASTMEM_CONFIG = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            /// reg_rtc_mem_crc_start
    -            RTC_MEM_CRC_START: u1,
    -            /// reg_rtc_mem_crc_addr
    -            RTC_MEM_CRC_ADDR: u11,
    -            /// reg_rtc_mem_crc_len
    -            RTC_MEM_CRC_LEN: u11,
    -            /// reg_rtc_mem_crc_finish
    -            RTC_MEM_CRC_FINISH: u1,
    -        }), base_address + 0x48);
    -
    -        /// address: 0x600c004c
    -        /// reserved
    -        pub const RTC_FASTMEM_CRC = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_rtc_mem_crc_res
    -            RTC_MEM_CRC_RES: u32,
    -        }), base_address + 0x4c);
    -
    -        /// address: 0x600c0050
    -        /// eco register
    -        pub const REDUNDANT_ECO_CTRL = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_redundant_eco_drive
    -            REDUNDANT_ECO_DRIVE: u1,
    -            /// reg_redundant_eco_result
    -            REDUNDANT_ECO_RESULT: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x50);
    -
    -        /// address: 0x600c0054
    -        /// clock gating register
    -        pub const CLOCK_GATE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_clk_en
    -            CLK_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x54);
    -
    -        /// address: 0x600c0058
    -        /// system clock config register
    -        pub const SYSCLK_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_pre_div_cnt
    -            PRE_DIV_CNT: u10,
    -            /// reg_soc_clk_sel
    -            SOC_CLK_SEL: u2,
    -            /// reg_clk_xtal_freq
    -            CLK_XTAL_FREQ: u7,
    -            /// reg_clk_div_en
    -            CLK_DIV_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x58);
    -
    -        /// address: 0x600c005c
    -        /// mem pvt register
    -        pub const MEM_PVT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_mem_path_len
    -            MEM_PATH_LEN: u4,
    -            /// reg_mem_err_cnt_clr
    -            MEM_ERR_CNT_CLR: u1,
    -            /// reg_mem_pvt_monitor_en
    -            MONITOR_EN: u1,
    -            /// reg_mem_timing_err_cnt
    -            MEM_TIMING_ERR_CNT: u16,
    -            /// reg_mem_vt_sel
    -            MEM_VT_SEL: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -        }), base_address + 0x5c);
    -
    -        /// address: 0x600c0060
    -        /// mem pvt register
    -        pub const COMB_PVT_LVT_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_comb_path_len_lvt
    -            COMB_PATH_LEN_LVT: u5,
    -            /// reg_comb_err_cnt_clr_lvt
    -            COMB_ERR_CNT_CLR_LVT: u1,
    -            /// reg_comb_pvt_monitor_en_lvt
    -            COMB_PVT_MONITOR_EN_LVT: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x60);
    -
    -        /// address: 0x600c0064
    -        /// mem pvt register
    -        pub const COMB_PVT_NVT_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_comb_path_len_nvt
    -            COMB_PATH_LEN_NVT: u5,
    -            /// reg_comb_err_cnt_clr_nvt
    -            COMB_ERR_CNT_CLR_NVT: u1,
    -            /// reg_comb_pvt_monitor_en_nvt
    -            COMB_PVT_MONITOR_EN_NVT: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x64);
    -
    -        /// address: 0x600c0068
    -        /// mem pvt register
    -        pub const COMB_PVT_HVT_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_comb_path_len_hvt
    -            COMB_PATH_LEN_HVT: u5,
    -            /// reg_comb_err_cnt_clr_hvt
    -            COMB_ERR_CNT_CLR_HVT: u1,
    -            /// reg_comb_pvt_monitor_en_hvt
    -            COMB_PVT_MONITOR_EN_HVT: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x68);
    -
    -        /// address: 0x600c006c
    -        /// mem pvt register
    -        pub const COMB_PVT_ERR_LVT_SITE0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_comb_timing_err_cnt_lvt_site0
    -            COMB_TIMING_ERR_CNT_LVT_SITE0: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x6c);
    -
    -        /// address: 0x600c0070
    -        /// mem pvt register
    -        pub const COMB_PVT_ERR_NVT_SITE0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_comb_timing_err_cnt_nvt_site0
    -            COMB_TIMING_ERR_CNT_NVT_SITE0: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x70);
    -
    -        /// address: 0x600c0074
    -        /// mem pvt register
    -        pub const COMB_PVT_ERR_HVT_SITE0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_comb_timing_err_cnt_hvt_site0
    -            COMB_TIMING_ERR_CNT_HVT_SITE0: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x74);
    -
    -        /// address: 0x600c0078
    -        /// mem pvt register
    -        pub const COMB_PVT_ERR_LVT_SITE1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_comb_timing_err_cnt_lvt_site1
    -            COMB_TIMING_ERR_CNT_LVT_SITE1: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x78);
    -
    -        /// address: 0x600c007c
    -        /// mem pvt register
    -        pub const COMB_PVT_ERR_NVT_SITE1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_comb_timing_err_cnt_nvt_site1
    -            COMB_TIMING_ERR_CNT_NVT_SITE1: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x7c);
    -
    -        /// address: 0x600c0080
    -        /// mem pvt register
    -        pub const COMB_PVT_ERR_HVT_SITE1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_comb_timing_err_cnt_hvt_site1
    -            COMB_TIMING_ERR_CNT_HVT_SITE1: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x80);
    -
    -        /// address: 0x600c0084
    -        /// mem pvt register
    -        pub const COMB_PVT_ERR_LVT_SITE2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_comb_timing_err_cnt_lvt_site2
    -            COMB_TIMING_ERR_CNT_LVT_SITE2: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x84);
    -
    -        /// address: 0x600c0088
    -        /// mem pvt register
    -        pub const COMB_PVT_ERR_NVT_SITE2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_comb_timing_err_cnt_nvt_site2
    -            COMB_TIMING_ERR_CNT_NVT_SITE2: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x88);
    -
    -        /// address: 0x600c008c
    -        /// mem pvt register
    -        pub const COMB_PVT_ERR_HVT_SITE2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_comb_timing_err_cnt_hvt_site2
    -            COMB_TIMING_ERR_CNT_HVT_SITE2: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x8c);
    -
    -        /// address: 0x600c0090
    -        /// mem pvt register
    -        pub const COMB_PVT_ERR_LVT_SITE3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_comb_timing_err_cnt_lvt_site3
    -            COMB_TIMING_ERR_CNT_LVT_SITE3: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x90);
    -
    -        /// address: 0x600c0094
    -        /// mem pvt register
    -        pub const COMB_PVT_ERR_NVT_SITE3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_comb_timing_err_cnt_nvt_site3
    -            COMB_TIMING_ERR_CNT_NVT_SITE3: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x94);
    -
    -        /// address: 0x600c0098
    -        /// mem pvt register
    -        pub const COMB_PVT_ERR_HVT_SITE3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_comb_timing_err_cnt_hvt_site3
    -            COMB_TIMING_ERR_CNT_HVT_SITE3: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x98);
    -
    -        /// address: 0x600c0ffc
    -        /// Version register
    -        pub const SYSTEM_REG_DATE = @intToPtr(*volatile MmioInt(32, u28), base_address + 0xffc);
    -    };
    -
    -    /// System Timer
    -    pub const SYSTIMER = struct {
    -        pub const base_address = 0x60023000;
    -
    -        /// address: 0x60023000
    -        /// SYSTIMER_CONF.
    -        pub const CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// systimer clock force on
    -            SYSTIMER_CLK_FO: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            /// target2 work enable
    -            TARGET2_WORK_EN: u1,
    -            /// target1 work enable
    -            TARGET1_WORK_EN: u1,
    -            /// target0 work enable
    -            TARGET0_WORK_EN: u1,
    -            /// If timer unit1 is stalled when core1 stalled
    -            TIMER_UNIT1_CORE1_STALL_EN: u1,
    -            /// If timer unit1 is stalled when core0 stalled
    -            TIMER_UNIT1_CORE0_STALL_EN: u1,
    -            /// If timer unit0 is stalled when core1 stalled
    -            TIMER_UNIT0_CORE1_STALL_EN: u1,
    -            /// If timer unit0 is stalled when core0 stalled
    -            TIMER_UNIT0_CORE0_STALL_EN: u1,
    -            /// timer unit1 work enable
    -            TIMER_UNIT1_WORK_EN: u1,
    -            /// timer unit0 work enable
    -            TIMER_UNIT0_WORK_EN: u1,
    -            /// register file clk gating
    -            CLK_EN: u1,
    -        }), base_address + 0x0);
    -
    -        /// address: 0x60023004
    -        /// SYSTIMER_UNIT0_OP.
    -        pub const UNIT0_OP = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            reserved25: u1,
    -            reserved26: u1,
    -            reserved27: u1,
    -            reserved28: u1,
    -            /// reg_timer_unit0_value_valid
    -            TIMER_UNIT0_VALUE_VALID: u1,
    -            /// update timer_unit0
    -            TIMER_UNIT0_UPDATE: u1,
    -            padding0: u1,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x60023008
    -        /// SYSTIMER_UNIT1_OP.
    -        pub const UNIT1_OP = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            reserved25: u1,
    -            reserved26: u1,
    -            reserved27: u1,
    -            reserved28: u1,
    -            /// timer value is sync and valid
    -            TIMER_UNIT1_VALUE_VALID: u1,
    -            /// update timer unit1
    -            TIMER_UNIT1_UPDATE: u1,
    -            padding0: u1,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x6002300c
    -        /// SYSTIMER_UNIT0_LOAD_HI.
    -        pub const UNIT0_LOAD_HI = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// timer unit0 load high 32 bit
    -            TIMER_UNIT0_LOAD_HI: u20,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x60023010
    -        /// SYSTIMER_UNIT0_LOAD_LO.
    -        pub const UNIT0_LOAD_LO = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// timer unit0 load low 32 bit
    -            TIMER_UNIT0_LOAD_LO: u32,
    -        }), base_address + 0x10);
    -
    -        /// address: 0x60023014
    -        /// SYSTIMER_UNIT1_LOAD_HI.
    -        pub const UNIT1_LOAD_HI = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// timer unit1 load high 32 bit
    -            TIMER_UNIT1_LOAD_HI: u20,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x14);
    -
    -        /// address: 0x60023018
    -        /// SYSTIMER_UNIT1_LOAD_LO.
    -        pub const UNIT1_LOAD_LO = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// timer unit1 load low 32 bit
    -            TIMER_UNIT1_LOAD_LO: u32,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x6002301c
    -        /// SYSTIMER_TARGET0_HI.
    -        pub const TARGET0_HI = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// timer taget0 high 32 bit
    -            TIMER_TARGET0_HI: u20,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x60023020
    -        /// SYSTIMER_TARGET0_LO.
    -        pub const TARGET0_LO = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// timer taget0 low 32 bit
    -            TIMER_TARGET0_LO: u32,
    -        }), base_address + 0x20);
    -
    -        /// address: 0x60023024
    -        /// SYSTIMER_TARGET1_HI.
    -        pub const TARGET1_HI = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// timer taget1 high 32 bit
    -            TIMER_TARGET1_HI: u20,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x24);
    -
    -        /// address: 0x60023028
    -        /// SYSTIMER_TARGET1_LO.
    -        pub const TARGET1_LO = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// timer taget1 low 32 bit
    -            TIMER_TARGET1_LO: u32,
    -        }), base_address + 0x28);
    -
    -        /// address: 0x6002302c
    -        /// SYSTIMER_TARGET2_HI.
    -        pub const TARGET2_HI = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// timer taget2 high 32 bit
    -            TIMER_TARGET2_HI: u20,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x2c);
    -
    -        /// address: 0x60023030
    -        /// SYSTIMER_TARGET2_LO.
    -        pub const TARGET2_LO = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// timer taget2 low 32 bit
    -            TIMER_TARGET2_LO: u32,
    -        }), base_address + 0x30);
    -
    -        /// address: 0x60023034
    -        /// SYSTIMER_TARGET0_CONF.
    -        pub const TARGET0_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// target0 period
    -            TARGET0_PERIOD: u26,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// Set target0 to period mode
    -            TARGET0_PERIOD_MODE: u1,
    -            /// select which unit to compare
    -            TARGET0_TIMER_UNIT_SEL: u1,
    -        }), base_address + 0x34);
    -
    -        /// address: 0x60023038
    -        /// SYSTIMER_TARGET1_CONF.
    -        pub const TARGET1_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// target1 period
    -            TARGET1_PERIOD: u26,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// Set target1 to period mode
    -            TARGET1_PERIOD_MODE: u1,
    -            /// select which unit to compare
    -            TARGET1_TIMER_UNIT_SEL: u1,
    -        }), base_address + 0x38);
    -
    -        /// address: 0x6002303c
    -        /// SYSTIMER_TARGET2_CONF.
    -        pub const TARGET2_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// target2 period
    -            TARGET2_PERIOD: u26,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            /// Set target2 to period mode
    -            TARGET2_PERIOD_MODE: u1,
    -            /// select which unit to compare
    -            TARGET2_TIMER_UNIT_SEL: u1,
    -        }), base_address + 0x3c);
    -
    -        /// address: 0x60023040
    -        /// SYSTIMER_UNIT0_VALUE_HI.
    -        pub const UNIT0_VALUE_HI = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// timer read value high 32bit
    -            TIMER_UNIT0_VALUE_HI: u20,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x40);
    -
    -        /// address: 0x60023044
    -        /// SYSTIMER_UNIT0_VALUE_LO.
    -        pub const UNIT0_VALUE_LO = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// timer read value low 32bit
    -            TIMER_UNIT0_VALUE_LO: u32,
    -        }), base_address + 0x44);
    -
    -        /// address: 0x60023048
    -        /// SYSTIMER_UNIT1_VALUE_HI.
    -        pub const UNIT1_VALUE_HI = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// timer read value high 32bit
    -            TIMER_UNIT1_VALUE_HI: u20,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x48);
    -
    -        /// address: 0x6002304c
    -        /// SYSTIMER_UNIT1_VALUE_LO.
    -        pub const UNIT1_VALUE_LO = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// timer read value low 32bit
    -            TIMER_UNIT1_VALUE_LO: u32,
    -        }), base_address + 0x4c);
    -
    -        /// address: 0x60023050
    -        /// SYSTIMER_COMP0_LOAD.
    -        pub const COMP0_LOAD = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// timer comp0 load value
    -            TIMER_COMP0_LOAD: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x50);
    -
    -        /// address: 0x60023054
    -        /// SYSTIMER_COMP1_LOAD.
    -        pub const COMP1_LOAD = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// timer comp1 load value
    -            TIMER_COMP1_LOAD: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x54);
    -
    -        /// address: 0x60023058
    -        /// SYSTIMER_COMP2_LOAD.
    -        pub const COMP2_LOAD = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// timer comp2 load value
    -            TIMER_COMP2_LOAD: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x58);
    -
    -        /// address: 0x6002305c
    -        /// SYSTIMER_UNIT0_LOAD.
    -        pub const UNIT0_LOAD = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// timer unit0 load value
    -            TIMER_UNIT0_LOAD: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x5c);
    -
    -        /// address: 0x60023060
    -        /// SYSTIMER_UNIT1_LOAD.
    -        pub const UNIT1_LOAD = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// timer unit1 load value
    -            TIMER_UNIT1_LOAD: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x60);
    -
    -        /// address: 0x60023064
    -        /// SYSTIMER_INT_ENA.
    -        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// interupt0 enable
    -            TARGET0_INT_ENA: u1,
    -            /// interupt1 enable
    -            TARGET1_INT_ENA: u1,
    -            /// interupt2 enable
    -            TARGET2_INT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -        }), base_address + 0x64);
    -
    -        /// address: 0x60023068
    -        /// SYSTIMER_INT_RAW.
    -        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// interupt0 raw
    -            TARGET0_INT_RAW: u1,
    -            /// interupt1 raw
    -            TARGET1_INT_RAW: u1,
    -            /// interupt2 raw
    -            TARGET2_INT_RAW: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -        }), base_address + 0x68);
    -
    -        /// address: 0x6002306c
    -        /// SYSTIMER_INT_CLR.
    -        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// interupt0 clear
    -            TARGET0_INT_CLR: u1,
    -            /// interupt1 clear
    -            TARGET1_INT_CLR: u1,
    -            /// interupt2 clear
    -            TARGET2_INT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -        }), base_address + 0x6c);
    -
    -        /// address: 0x60023070
    -        /// SYSTIMER_INT_ST.
    -        pub const INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_target0_int_st
    -            TARGET0_INT_ST: u1,
    -            /// reg_target1_int_st
    -            TARGET1_INT_ST: u1,
    -            /// reg_target2_int_st
    -            TARGET2_INT_ST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -        }), base_address + 0x70);
    -
    -        /// address: 0x600230fc
    -        /// SYSTIMER_DATE.
    -        pub const DATE = @intToPtr(*volatile u32, base_address + 0xfc);
    -    };
    -
    -    /// Timer Group
    -    pub const TIMG0 = struct {
    -        pub const base_address = 0x6001f000;
    -
    -        /// address: 0x6001f000
    -        /// TIMG_T0CONFIG_REG.
    -        pub const T0CONFIG = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            /// reg_t0_use_xtal.
    -            T0_USE_XTAL: u1,
    -            /// reg_t0_alarm_en.
    -            T0_ALARM_EN: u1,
    -            reserved9: u1,
    -            /// reg_t0_divcnt_rst.
    -            T0_DIVCNT_RST: u1,
    -            /// reg_t0_divider.
    -            T0_DIVIDER: u16,
    -            /// reg_t0_autoreload.
    -            T0_AUTORELOAD: u1,
    -            /// reg_t0_increase.
    -            T0_INCREASE: u1,
    -            /// reg_t0_en.
    -            T0_EN: u1,
    -        }), base_address + 0x0);
    -
    -        /// address: 0x6001f004
    -        /// TIMG_T0LO_REG.
    -        pub const T0LO = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// t0_lo
    -            T0_LO: u32,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x6001f008
    -        /// TIMG_T0HI_REG.
    -        pub const T0HI = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// t0_hi
    -            T0_HI: u22,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x6001f00c
    -        /// TIMG_T0UPDATE_REG.
    -        pub const T0UPDATE = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            reserved25: u1,
    -            reserved26: u1,
    -            reserved27: u1,
    -            reserved28: u1,
    -            reserved29: u1,
    -            reserved30: u1,
    -            /// t0_update
    -            T0_UPDATE: u1,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x6001f010
    -        /// TIMG_T0ALARMLO_REG.
    -        pub const T0ALARMLO = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_t0_alarm_lo.
    -            T0_ALARM_LO: u32,
    -        }), base_address + 0x10);
    -
    -        /// address: 0x6001f014
    -        /// TIMG_T0ALARMHI_REG.
    -        pub const T0ALARMHI = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_t0_alarm_hi.
    -            T0_ALARM_HI: u22,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -        }), base_address + 0x14);
    -
    -        /// address: 0x6001f018
    -        /// TIMG_T0LOADLO_REG.
    -        pub const T0LOADLO = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_t0_load_lo.
    -            T0_LOAD_LO: u32,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x6001f01c
    -        /// TIMG_T0LOADHI_REG.
    -        pub const T0LOADHI = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_t0_load_hi.
    -            T0_LOAD_HI: u22,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x6001f020
    -        /// TIMG_T0LOAD_REG.
    -        pub const T0LOAD = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// t0_load
    -            T0_LOAD: u32,
    -        }), base_address + 0x20);
    -
    -        /// address: 0x6001f048
    -        /// TIMG_WDTCONFIG0_REG.
    -        pub const WDTCONFIG0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            /// reg_wdt_appcpu_reset_en.
    -            WDT_APPCPU_RESET_EN: u1,
    -            /// reg_wdt_procpu_reset_en.
    -            WDT_PROCPU_RESET_EN: u1,
    -            /// reg_wdt_flashboot_mod_en.
    -            WDT_FLASHBOOT_MOD_EN: u1,
    -            /// reg_wdt_sys_reset_length.
    -            WDT_SYS_RESET_LENGTH: u3,
    -            /// reg_wdt_cpu_reset_length.
    -            WDT_CPU_RESET_LENGTH: u3,
    -            /// reg_wdt_use_xtal.
    -            WDT_USE_XTAL: u1,
    -            /// reg_wdt_conf_update_en.
    -            WDT_CONF_UPDATE_EN: u1,
    -            /// reg_wdt_stg3.
    -            WDT_STG3: u2,
    -            /// reg_wdt_stg2.
    -            WDT_STG2: u2,
    -            /// reg_wdt_stg1.
    -            WDT_STG1: u2,
    -            /// reg_wdt_stg0.
    -            WDT_STG0: u2,
    -            /// reg_wdt_en.
    -            WDT_EN: u1,
    -        }), base_address + 0x48);
    -
    -        /// address: 0x6001f04c
    -        /// TIMG_WDTCONFIG1_REG.
    -        pub const WDTCONFIG1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_wdt_divcnt_rst.
    -            WDT_DIVCNT_RST: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            /// reg_wdt_clk_prescale.
    -            WDT_CLK_PRESCALE: u16,
    -        }), base_address + 0x4c);
    -
    -        /// address: 0x6001f050
    -        /// TIMG_WDTCONFIG2_REG.
    -        pub const WDTCONFIG2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_wdt_stg0_hold.
    -            WDT_STG0_HOLD: u32,
    -        }), base_address + 0x50);
    -
    -        /// address: 0x6001f054
    -        /// TIMG_WDTCONFIG3_REG.
    -        pub const WDTCONFIG3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_wdt_stg1_hold.
    -            WDT_STG1_HOLD: u32,
    -        }), base_address + 0x54);
    -
    -        /// address: 0x6001f058
    -        /// TIMG_WDTCONFIG4_REG.
    -        pub const WDTCONFIG4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_wdt_stg2_hold.
    -            WDT_STG2_HOLD: u32,
    -        }), base_address + 0x58);
    -
    -        /// address: 0x6001f05c
    -        /// TIMG_WDTCONFIG5_REG.
    -        pub const WDTCONFIG5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_wdt_stg3_hold.
    -            WDT_STG3_HOLD: u32,
    -        }), base_address + 0x5c);
    -
    -        /// address: 0x6001f060
    -        /// TIMG_WDTFEED_REG.
    -        pub const WDTFEED = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// wdt_feed
    -            WDT_FEED: u32,
    -        }), base_address + 0x60);
    -
    -        /// address: 0x6001f064
    -        /// TIMG_WDTWPROTECT_REG.
    -        pub const WDTWPROTECT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_wdt_wkey.
    -            WDT_WKEY: u32,
    -        }), base_address + 0x64);
    -
    -        /// address: 0x6001f068
    -        /// TIMG_RTCCALICFG_REG.
    -        pub const RTCCALICFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            /// reg_rtc_cali_start_cycling.
    -            RTC_CALI_START_CYCLING: u1,
    -            /// reg_rtc_cali_clk_sel.0:rtcslowclock.1:clk_80m.2:xtal_32k
    -            RTC_CALI_CLK_SEL: u2,
    -            /// rtc_cali_rdy
    -            RTC_CALI_RDY: u1,
    -            /// reg_rtc_cali_max.
    -            RTC_CALI_MAX: u15,
    -            /// reg_rtc_cali_start.
    -            RTC_CALI_START: u1,
    -        }), base_address + 0x68);
    -
    -        /// address: 0x6001f06c
    -        /// TIMG_RTCCALICFG1_REG.
    -        pub const RTCCALICFG1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// rtc_cali_cycling_data_vld
    -            RTC_CALI_CYCLING_DATA_VLD: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            /// rtc_cali_value
    -            RTC_CALI_VALUE: u25,
    -        }), base_address + 0x6c);
    -
    -        /// address: 0x6001f070
    -        /// INT_ENA_TIMG_REG
    -        pub const INT_ENA_TIMERS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// t0_int_ena
    -            T0_INT_ENA: u1,
    -            /// wdt_int_ena
    -            WDT_INT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x70);
    -
    -        /// address: 0x6001f074
    -        /// INT_RAW_TIMG_REG
    -        pub const INT_RAW_TIMERS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// t0_int_raw
    -            T0_INT_RAW: u1,
    -            /// wdt_int_raw
    -            WDT_INT_RAW: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x74);
    -
    -        /// address: 0x6001f078
    -        /// INT_ST_TIMG_REG
    -        pub const INT_ST_TIMERS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// t0_int_st
    -            T0_INT_ST: u1,
    -            /// wdt_int_st
    -            WDT_INT_ST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x78);
    -
    -        /// address: 0x6001f07c
    -        /// INT_CLR_TIMG_REG
    -        pub const INT_CLR_TIMERS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// t0_int_clr
    -            T0_INT_CLR: u1,
    -            /// wdt_int_clr
    -            WDT_INT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x7c);
    -
    -        /// address: 0x6001f080
    -        /// TIMG_RTCCALICFG2_REG.
    -        pub const RTCCALICFG2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// timeoutindicator
    -            RTC_CALI_TIMEOUT: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// reg_rtc_cali_timeout_rst_cnt.Cyclesthatreleasecalibrationtimeoutreset
    -            RTC_CALI_TIMEOUT_RST_CNT: u4,
    -            /// reg_rtc_cali_timeout_thres.timeoutifcalivaluecountsoverthreshold
    -            RTC_CALI_TIMEOUT_THRES: u25,
    -        }), base_address + 0x80);
    -
    -        /// address: 0x6001f0f8
    -        /// TIMG_NTIMG_DATE_REG.
    -        pub const NTIMG_DATE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_ntimers_date.
    -            NTIMGS_DATE: u28,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -        }), base_address + 0xf8);
    -
    -        /// address: 0x6001f0fc
    -        /// TIMG_REGCLK_REG.
    -        pub const REGCLK = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            reserved25: u1,
    -            reserved26: u1,
    -            reserved27: u1,
    -            reserved28: u1,
    -            /// reg_wdt_clk_is_active.
    -            WDT_CLK_IS_ACTIVE: u1,
    -            /// reg_timer_clk_is_active.
    -            TIMER_CLK_IS_ACTIVE: u1,
    -            /// reg_clk_en.
    -            CLK_EN: u1,
    -        }), base_address + 0xfc);
    -    };
    -
    -    /// Timer Group
    -    pub const TIMG1 = struct {
    -        pub const base_address = 0x60020000;
    -
    -        /// address: 0x60020000
    -        /// TIMG_T0CONFIG_REG.
    -        pub const T0CONFIG = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            /// reg_t0_use_xtal.
    -            T0_USE_XTAL: u1,
    -            /// reg_t0_alarm_en.
    -            T0_ALARM_EN: u1,
    -            reserved9: u1,
    -            /// reg_t0_divcnt_rst.
    -            T0_DIVCNT_RST: u1,
    -            /// reg_t0_divider.
    -            T0_DIVIDER: u16,
    -            /// reg_t0_autoreload.
    -            T0_AUTORELOAD: u1,
    -            /// reg_t0_increase.
    -            T0_INCREASE: u1,
    -            /// reg_t0_en.
    -            T0_EN: u1,
    -        }), base_address + 0x0);
    -
    -        /// address: 0x60020004
    -        /// TIMG_T0LO_REG.
    -        pub const T0LO = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// t0_lo
    -            T0_LO: u32,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x60020008
    -        /// TIMG_T0HI_REG.
    -        pub const T0HI = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// t0_hi
    -            T0_HI: u22,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x6002000c
    -        /// TIMG_T0UPDATE_REG.
    -        pub const T0UPDATE = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            reserved25: u1,
    -            reserved26: u1,
    -            reserved27: u1,
    -            reserved28: u1,
    -            reserved29: u1,
    -            reserved30: u1,
    -            /// t0_update
    -            T0_UPDATE: u1,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x60020010
    -        /// TIMG_T0ALARMLO_REG.
    -        pub const T0ALARMLO = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_t0_alarm_lo.
    -            T0_ALARM_LO: u32,
    -        }), base_address + 0x10);
    -
    -        /// address: 0x60020014
    -        /// TIMG_T0ALARMHI_REG.
    -        pub const T0ALARMHI = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_t0_alarm_hi.
    -            T0_ALARM_HI: u22,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -        }), base_address + 0x14);
    -
    -        /// address: 0x60020018
    -        /// TIMG_T0LOADLO_REG.
    -        pub const T0LOADLO = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_t0_load_lo.
    -            T0_LOAD_LO: u32,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x6002001c
    -        /// TIMG_T0LOADHI_REG.
    -        pub const T0LOADHI = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_t0_load_hi.
    -            T0_LOAD_HI: u22,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x60020020
    -        /// TIMG_T0LOAD_REG.
    -        pub const T0LOAD = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// t0_load
    -            T0_LOAD: u32,
    -        }), base_address + 0x20);
    -
    -        /// address: 0x60020048
    -        /// TIMG_WDTCONFIG0_REG.
    -        pub const WDTCONFIG0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            /// reg_wdt_appcpu_reset_en.
    -            WDT_APPCPU_RESET_EN: u1,
    -            /// reg_wdt_procpu_reset_en.
    -            WDT_PROCPU_RESET_EN: u1,
    -            /// reg_wdt_flashboot_mod_en.
    -            WDT_FLASHBOOT_MOD_EN: u1,
    -            /// reg_wdt_sys_reset_length.
    -            WDT_SYS_RESET_LENGTH: u3,
    -            /// reg_wdt_cpu_reset_length.
    -            WDT_CPU_RESET_LENGTH: u3,
    -            /// reg_wdt_use_xtal.
    -            WDT_USE_XTAL: u1,
    -            /// reg_wdt_conf_update_en.
    -            WDT_CONF_UPDATE_EN: u1,
    -            /// reg_wdt_stg3.
    -            WDT_STG3: u2,
    -            /// reg_wdt_stg2.
    -            WDT_STG2: u2,
    -            /// reg_wdt_stg1.
    -            WDT_STG1: u2,
    -            /// reg_wdt_stg0.
    -            WDT_STG0: u2,
    -            /// reg_wdt_en.
    -            WDT_EN: u1,
    -        }), base_address + 0x48);
    -
    -        /// address: 0x6002004c
    -        /// TIMG_WDTCONFIG1_REG.
    -        pub const WDTCONFIG1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_wdt_divcnt_rst.
    -            WDT_DIVCNT_RST: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            /// reg_wdt_clk_prescale.
    -            WDT_CLK_PRESCALE: u16,
    -        }), base_address + 0x4c);
    -
    -        /// address: 0x60020050
    -        /// TIMG_WDTCONFIG2_REG.
    -        pub const WDTCONFIG2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_wdt_stg0_hold.
    -            WDT_STG0_HOLD: u32,
    -        }), base_address + 0x50);
    -
    -        /// address: 0x60020054
    -        /// TIMG_WDTCONFIG3_REG.
    -        pub const WDTCONFIG3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_wdt_stg1_hold.
    -            WDT_STG1_HOLD: u32,
    -        }), base_address + 0x54);
    -
    -        /// address: 0x60020058
    -        /// TIMG_WDTCONFIG4_REG.
    -        pub const WDTCONFIG4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_wdt_stg2_hold.
    -            WDT_STG2_HOLD: u32,
    -        }), base_address + 0x58);
    -
    -        /// address: 0x6002005c
    -        /// TIMG_WDTCONFIG5_REG.
    -        pub const WDTCONFIG5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_wdt_stg3_hold.
    -            WDT_STG3_HOLD: u32,
    -        }), base_address + 0x5c);
    -
    -        /// address: 0x60020060
    -        /// TIMG_WDTFEED_REG.
    -        pub const WDTFEED = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// wdt_feed
    -            WDT_FEED: u32,
    -        }), base_address + 0x60);
    -
    -        /// address: 0x60020064
    -        /// TIMG_WDTWPROTECT_REG.
    -        pub const WDTWPROTECT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_wdt_wkey.
    -            WDT_WKEY: u32,
    -        }), base_address + 0x64);
    -
    -        /// address: 0x60020068
    -        /// TIMG_RTCCALICFG_REG.
    -        pub const RTCCALICFG = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            /// reg_rtc_cali_start_cycling.
    -            RTC_CALI_START_CYCLING: u1,
    -            /// reg_rtc_cali_clk_sel.0:rtcslowclock.1:clk_80m.2:xtal_32k
    -            RTC_CALI_CLK_SEL: u2,
    -            /// rtc_cali_rdy
    -            RTC_CALI_RDY: u1,
    -            /// reg_rtc_cali_max.
    -            RTC_CALI_MAX: u15,
    -            /// reg_rtc_cali_start.
    -            RTC_CALI_START: u1,
    -        }), base_address + 0x68);
    -
    -        /// address: 0x6002006c
    -        /// TIMG_RTCCALICFG1_REG.
    -        pub const RTCCALICFG1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// rtc_cali_cycling_data_vld
    -            RTC_CALI_CYCLING_DATA_VLD: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            /// rtc_cali_value
    -            RTC_CALI_VALUE: u25,
    -        }), base_address + 0x6c);
    -
    -        /// address: 0x60020070
    -        /// INT_ENA_TIMG_REG
    -        pub const INT_ENA_TIMERS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// t0_int_ena
    -            T0_INT_ENA: u1,
    -            /// wdt_int_ena
    -            WDT_INT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x70);
    -
    -        /// address: 0x60020074
    -        /// INT_RAW_TIMG_REG
    -        pub const INT_RAW_TIMERS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// t0_int_raw
    -            T0_INT_RAW: u1,
    -            /// wdt_int_raw
    -            WDT_INT_RAW: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x74);
    -
    -        /// address: 0x60020078
    -        /// INT_ST_TIMG_REG
    -        pub const INT_ST_TIMERS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// t0_int_st
    -            T0_INT_ST: u1,
    -            /// wdt_int_st
    -            WDT_INT_ST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x78);
    -
    -        /// address: 0x6002007c
    -        /// INT_CLR_TIMG_REG
    -        pub const INT_CLR_TIMERS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// t0_int_clr
    -            T0_INT_CLR: u1,
    -            /// wdt_int_clr
    -            WDT_INT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x7c);
    -
    -        /// address: 0x60020080
    -        /// TIMG_RTCCALICFG2_REG.
    -        pub const RTCCALICFG2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// timeoutindicator
    -            RTC_CALI_TIMEOUT: u1,
    -            reserved0: u1,
    -            reserved1: u1,
    -            /// reg_rtc_cali_timeout_rst_cnt.Cyclesthatreleasecalibrationtimeoutreset
    -            RTC_CALI_TIMEOUT_RST_CNT: u4,
    -            /// reg_rtc_cali_timeout_thres.timeoutifcalivaluecountsoverthreshold
    -            RTC_CALI_TIMEOUT_THRES: u25,
    -        }), base_address + 0x80);
    -
    -        /// address: 0x600200f8
    -        /// TIMG_NTIMG_DATE_REG.
    -        pub const NTIMG_DATE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// reg_ntimers_date.
    -            NTIMGS_DATE: u28,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -        }), base_address + 0xf8);
    -
    -        /// address: 0x600200fc
    -        /// TIMG_REGCLK_REG.
    -        pub const REGCLK = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            reserved8: u1,
    -            reserved9: u1,
    -            reserved10: u1,
    -            reserved11: u1,
    -            reserved12: u1,
    -            reserved13: u1,
    -            reserved14: u1,
    -            reserved15: u1,
    -            reserved16: u1,
    -            reserved17: u1,
    -            reserved18: u1,
    -            reserved19: u1,
    -            reserved20: u1,
    -            reserved21: u1,
    -            reserved22: u1,
    -            reserved23: u1,
    -            reserved24: u1,
    -            reserved25: u1,
    -            reserved26: u1,
    -            reserved27: u1,
    -            reserved28: u1,
    -            /// reg_wdt_clk_is_active.
    -            WDT_CLK_IS_ACTIVE: u1,
    -            /// reg_timer_clk_is_active.
    -            TIMER_CLK_IS_ACTIVE: u1,
    -            /// reg_clk_en.
    -            CLK_EN: u1,
    -        }), base_address + 0xfc);
    -    };
    -
    -    /// Two-Wire Automotive Interface
    -    pub const TWAI = struct {
    -        pub const base_address = 0x6002b000;
    -
    -        /// address: 0x6002b000
    -        /// Mode Register
    -        pub const MODE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This bit is used to configure the operating mode of the TWAI Controller. 1:
    -            /// Reset mode; 0: Operating mode.
    -            RESET_MODE: u1,
    -            /// 1: Listen only mode. In this mode the nodes will only receive messages from the
    -            /// bus, without generating the acknowledge signal nor updating the RX error
    -            /// counter.
    -            LISTEN_ONLY_MODE: u1,
    -            /// 1: Self test mode. In this mode the TX nodes can perform a successful
    -            /// transmission without receiving the acknowledge signal. This mode is often used
    -            /// to test a single node with the self reception request command.
    -            SELF_TEST_MODE: u1,
    -            /// This bit is used to configure the filter mode. 0: Dual filter mode; 1: Single
    -            /// filter mode.
    -            RX_FILTER_MODE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x0);
    -
    -        /// address: 0x6002b004
    -        /// Command Register
    -        pub const CMD = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set the bit to 1 to allow the driving nodes start transmission.
    -            TX_REQ: u1,
    -            /// Set the bit to 1 to cancel a pending transmission request.
    -            ABORT_TX: u1,
    -            /// Set the bit to 1 to release the RX buffer.
    -            RELEASE_BUF: u1,
    -            /// Set the bit to 1 to clear the data overrun status bit.
    -            CLR_OVERRUN: u1,
    -            /// Self reception request command. Set the bit to 1 to allow a message be
    -            /// transmitted and received simultaneously.
    -            SELF_RX_REQ: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x6002b008
    -        /// Status register
    -        pub const STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// 1: The data in the RX buffer is not empty, with at least one received data
    -            /// packet.
    -            RX_BUF_ST: u1,
    -            /// 1: The RX FIFO is full and data overrun has occurred.
    -            OVERRUN_ST: u1,
    -            /// 1: The TX buffer is empty, the CPU may write a message into it.
    -            TX_BUF_ST: u1,
    -            /// 1: The TWAI controller has successfully received a packet from the bus.
    -            TX_COMPLETE: u1,
    -            /// 1: The TWAI Controller is receiving a message from the bus.
    -            RX_ST: u1,
    -            /// 1: The TWAI Controller is transmitting a message to the bus.
    -            TX_ST: u1,
    -            /// 1: At least one of the RX/TX error counter has reached or exceeded the value set
    -            /// in register TWAI_ERR_WARNING_LIMIT_REG.
    -            ERR_ST: u1,
    -            /// 1: In bus-off status, the TWAI Controller is no longer involved in bus
    -            /// activities.
    -            BUS_OFF_ST: u1,
    -            /// This bit reflects whether the data packet in the RX FIFO is complete. 1: The
    -            /// current packet is missing; 0: The current packet is complete
    -            MISS_ST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x6002b00c
    -        /// Interrupt Register
    -        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Receive interrupt. If this bit is set to 1, it indicates there are messages to
    -            /// be handled in the RX FIFO.
    -            RX_INT_ST: u1,
    -            /// Transmit interrupt. If this bit is set to 1, it indicates the message
    -            /// transmitting mis- sion is finished and a new transmission is able to execute.
    -            TX_INT_ST: u1,
    -            /// Error warning interrupt. If this bit is set to 1, it indicates the error status
    -            /// signal and the bus-off status signal of Status register have changed (e.g.,
    -            /// switched from 0 to 1 or from 1 to 0).
    -            ERR_WARN_INT_ST: u1,
    -            /// Data overrun interrupt. If this bit is set to 1, it indicates a data overrun
    -            /// interrupt is generated in the RX FIFO.
    -            OVERRUN_INT_ST: u1,
    -            reserved0: u1,
    -            /// Error passive interrupt. If this bit is set to 1, it indicates the TWAI
    -            /// Controller is switched between error active status and error passive status due
    -            /// to the change of error counters.
    -            ERR_PASSIVE_INT_ST: u1,
    -            /// Arbitration lost interrupt. If this bit is set to 1, it indicates an arbitration
    -            /// lost interrupt is generated.
    -            ARB_LOST_INT_ST: u1,
    -            /// Error interrupt. If this bit is set to 1, it indicates an error is detected on
    -            /// the bus.
    -            BUS_ERR_INT_ST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x6002b010
    -        /// Interrupt Enable Register
    -        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set this bit to 1 to enable receive interrupt.
    -            RX_INT_ENA: u1,
    -            /// Set this bit to 1 to enable transmit interrupt.
    -            TX_INT_ENA: u1,
    -            /// Set this bit to 1 to enable error warning interrupt.
    -            ERR_WARN_INT_ENA: u1,
    -            /// Set this bit to 1 to enable data overrun interrupt.
    -            OVERRUN_INT_ENA: u1,
    -            reserved0: u1,
    -            /// Set this bit to 1 to enable error passive interrupt.
    -            ERR_PASSIVE_INT_ENA: u1,
    -            /// Set this bit to 1 to enable arbitration lost interrupt.
    -            ARB_LOST_INT_ENA: u1,
    -            /// Set this bit to 1 to enable error interrupt.
    -            BUS_ERR_INT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x10);
    -
    -        /// address: 0x6002b018
    -        /// Bus Timing Register 0
    -        pub const BUS_TIMING_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Baud Rate Prescaler, determines the frequency dividing ratio.
    -            BAUD_PRESC: u13,
    -            reserved0: u1,
    -            /// Synchronization Jump Width (SJW), 1 \verb+~+ 14 Tq wide.
    -            SYNC_JUMP_WIDTH: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x6002b01c
    -        /// Bus Timing Register 1
    -        pub const BUS_TIMING_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The width of PBS1.
    -            TIME_SEG1: u4,
    -            /// The width of PBS2.
    -            TIME_SEG2: u3,
    -            /// The number of sample points. 0: the bus is sampled once; 1: the bus is sampled
    -            /// three times
    -            TIME_SAMP: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x6002b02c
    -        /// Arbitration Lost Capture Register
    -        pub const ARB_LOST_CAP = @intToPtr(*volatile MmioInt(32, u5), base_address + 0x2c);
    -
    -        /// address: 0x6002b030
    -        /// Error Code Capture Register
    -        pub const ERR_CODE_CAP = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register contains information about the location of errors, see Table 181
    -            /// for details.
    -            ECC_SEGMENT: u5,
    -            /// This register contains information about transmission direction of the node when
    -            /// error occurs. 1: Error occurs when receiving a message; 0: Error occurs when
    -            /// transmitting a message
    -            ECC_DIRECTION: u1,
    -            /// This register contains information about error types: 00: bit error; 01: form
    -            /// error; 10: stuff error; 11: other type of error
    -            ECC_TYPE: u2,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x30);
    -
    -        /// address: 0x6002b034
    -        /// Error Warning Limit Register
    -        pub const ERR_WARNING_LIMIT = @intToPtr(*volatile MmioInt(32, u8), base_address + 0x34);
    -
    -        /// address: 0x6002b038
    -        /// Receive Error Counter Register
    -        pub const RX_ERR_CNT = @intToPtr(*volatile MmioInt(32, u8), base_address + 0x38);
    -
    -        /// address: 0x6002b03c
    -        /// Transmit Error Counter Register
    -        pub const TX_ERR_CNT = @intToPtr(*volatile MmioInt(32, u8), base_address + 0x3c);
    -
    -        /// address: 0x6002b040
    -        /// Data register 0
    -        pub const DATA_0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// In reset mode, it is acceptance code register 0 with R/W Permission. In
    -            /// operation mode, it stores the 0th byte information of the data to be transmitted
    -            /// under operating mode.
    -            TX_BYTE_0: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x40);
    -
    -        /// address: 0x6002b044
    -        /// Data register 1
    -        pub const DATA_1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// In reset mode, it is acceptance code register 1 with R/W Permission. In
    -            /// operation mode, it stores the 1st byte information of the data to be transmitted
    -            /// under operating mode.
    -            TX_BYTE_1: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x44);
    -
    -        /// address: 0x6002b048
    -        /// Data register 2
    -        pub const DATA_2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// In reset mode, it is acceptance code register 2 with R/W Permission. In
    -            /// operation mode, it stores the 2nd byte information of the data to be transmitted
    -            /// under operating mode.
    -            TX_BYTE_2: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x48);
    -
    -        /// address: 0x6002b04c
    -        /// Data register 3
    -        pub const DATA_3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// In reset mode, it is acceptance code register 3 with R/W Permission. In
    -            /// operation mode, it stores the 3rd byte information of the data to be transmitted
    -            /// under operating mode.
    -            TX_BYTE_3: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x4c);
    -
    -        /// address: 0x6002b050
    -        /// Data register 4
    -        pub const DATA_4 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// In reset mode, it is acceptance mask register 0 with R/W Permission. In
    -            /// operation mode, it stores the 4th byte information of the data to be transmitted
    -            /// under operating mode.
    -            TX_BYTE_4: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x50);
    -
    -        /// address: 0x6002b054
    -        /// Data register 5
    -        pub const DATA_5 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// In reset mode, it is acceptance mask register 1 with R/W Permission. In
    -            /// operation mode, it stores the 5th byte information of the data to be transmitted
    -            /// under operating mode.
    -            TX_BYTE_5: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x54);
    -
    -        /// address: 0x6002b058
    -        /// Data register 6
    -        pub const DATA_6 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// In reset mode, it is acceptance mask register 2 with R/W Permission. In
    -            /// operation mode, it stores the 6th byte information of the data to be transmitted
    -            /// under operating mode.
    -            TX_BYTE_6: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x58);
    -
    -        /// address: 0x6002b05c
    -        /// Data register 7
    -        pub const DATA_7 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// In reset mode, it is acceptance mask register 3 with R/W Permission. In
    -            /// operation mode, it stores the 7th byte information of the data to be transmitted
    -            /// under operating mode.
    -            TX_BYTE_7: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x5c);
    -
    -        /// address: 0x6002b060
    -        /// Data register 8
    -        pub const DATA_8 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stored the 8th byte information of the data to be transmitted under operating
    -            /// mode.
    -            TX_BYTE_8: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x60);
    -
    -        /// address: 0x6002b064
    -        /// Data register 9
    -        pub const DATA_9 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stored the 9th byte information of the data to be transmitted under operating
    -            /// mode.
    -            TX_BYTE_9: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x64);
    -
    -        /// address: 0x6002b068
    -        /// Data register 10
    -        pub const DATA_10 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stored the 10th byte information of the data to be transmitted under operating
    -            /// mode.
    -            TX_BYTE_10: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x68);
    -
    -        /// address: 0x6002b06c
    -        /// Data register 11
    -        pub const DATA_11 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stored the 11th byte information of the data to be transmitted under operating
    -            /// mode.
    -            TX_BYTE_11: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x6c);
    -
    -        /// address: 0x6002b070
    -        /// Data register 12
    -        pub const DATA_12 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stored the 12th byte information of the data to be transmitted under operating
    -            /// mode.
    -            TX_BYTE_12: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x70);
    -
    -        /// address: 0x6002b074
    -        /// Receive Message Counter Register
    -        pub const RX_MESSAGE_CNT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register reflects the number of messages available within the RX FIFO.
    -            RX_MESSAGE_COUNTER: u7,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -        }), base_address + 0x74);
    -
    -        /// address: 0x6002b07c
    -        /// Clock Divider register
    -        pub const CLOCK_DIVIDER = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// These bits are used to configure frequency dividing coefficients of the external
    -            /// CLKOUT pin.
    -            CD: u8,
    -            /// This bit can be configured under reset mode. 1: Disable the external CLKOUT pin;
    -            /// 0: Enable the external CLKOUT pin
    -            CLOCK_OFF: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0x7c);
    -    };
    -
    -    /// UART (Universal Asynchronous Receiver-Transmitter) Controller
    -    pub const UART0 = struct {
    -        pub const base_address = 0x60000000;
    -
    -        /// address: 0x60000000
    -        /// FIFO data register
    -        pub const FIFO = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// UART 0 accesses FIFO via this register.
    -            RXFIFO_RD_BYTE: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x0);
    -
    -        /// address: 0x60000004
    -        /// Raw interrupt status
    -        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This interrupt raw bit turns to high level when receiver receives more data than
    -            /// what rxfifo_full_thrhd specifies.
    -            RXFIFO_FULL_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when the amount of data in Tx-FIFO is
    -            /// less than what txfifo_empty_thrhd specifies .
    -            TXFIFO_EMPTY_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver detects a parity error
    -            /// in the data.
    -            PARITY_ERR_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver detects a data frame
    -            /// error .
    -            FRM_ERR_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver receives more data than
    -            /// the FIFO can store.
    -            RXFIFO_OVF_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver detects the edge change
    -            /// of DSRn signal.
    -            DSR_CHG_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver detects the edge change
    -            /// of CTSn signal.
    -            CTS_CHG_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver detects a 0 after the
    -            /// stop bit.
    -            BRK_DET_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver takes more time than
    -            /// rx_tout_thrhd to receive a byte.
    -            RXFIFO_TOUT_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver recevies Xon char when
    -            /// uart_sw_flow_con_en is set to 1.
    -            SW_XON_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver receives Xoff char when
    -            /// uart_sw_flow_con_en is set to 1.
    -            SW_XOFF_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver detects a glitch in the
    -            /// middle of a start bit.
    -            GLITCH_DET_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when transmitter completes sending
    -            /// NULL characters, after all data in Tx-FIFO are sent.
    -            TX_BRK_DONE_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when transmitter has kept the
    -            /// shortest duration after sending the last data.
    -            TX_BRK_IDLE_DONE_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when transmitter has send out all
    -            /// data in FIFO.
    -            TX_DONE_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver detects a parity error
    -            /// from the echo of transmitter in rs485 mode.
    -            RS485_PARITY_ERR_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver detects a data frame
    -            /// error from the echo of transmitter in rs485 mode.
    -            RS485_FRM_ERR_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when detects a clash between
    -            /// transmitter and receiver in rs485 mode.
    -            RS485_CLASH_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver detects the configured
    -            /// at_cmd char.
    -            AT_CMD_CHAR_DET_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when input rxd edge changes more
    -            /// times than what reg_active_threshold specifies in light sleeping mode.
    -            WAKEUP_INT_RAW: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x60000008
    -        /// Masked interrupt status
    -        pub const INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This is the status bit for rxfifo_full_int_raw when rxfifo_full_int_ena is set
    -            /// to 1.
    -            RXFIFO_FULL_INT_ST: u1,
    -            /// This is the status bit for txfifo_empty_int_raw when txfifo_empty_int_ena is set
    -            /// to 1.
    -            TXFIFO_EMPTY_INT_ST: u1,
    -            /// This is the status bit for parity_err_int_raw when parity_err_int_ena is set to
    -            /// 1.
    -            PARITY_ERR_INT_ST: u1,
    -            /// This is the status bit for frm_err_int_raw when frm_err_int_ena is set to 1.
    -            FRM_ERR_INT_ST: u1,
    -            /// This is the status bit for rxfifo_ovf_int_raw when rxfifo_ovf_int_ena is set to
    -            /// 1.
    -            RXFIFO_OVF_INT_ST: u1,
    -            /// This is the status bit for dsr_chg_int_raw when dsr_chg_int_ena is set to 1.
    -            DSR_CHG_INT_ST: u1,
    -            /// This is the status bit for cts_chg_int_raw when cts_chg_int_ena is set to 1.
    -            CTS_CHG_INT_ST: u1,
    -            /// This is the status bit for brk_det_int_raw when brk_det_int_ena is set to 1.
    -            BRK_DET_INT_ST: u1,
    -            /// This is the status bit for rxfifo_tout_int_raw when rxfifo_tout_int_ena is set
    -            /// to 1.
    -            RXFIFO_TOUT_INT_ST: u1,
    -            /// This is the status bit for sw_xon_int_raw when sw_xon_int_ena is set to 1.
    -            SW_XON_INT_ST: u1,
    -            /// This is the status bit for sw_xoff_int_raw when sw_xoff_int_ena is set to 1.
    -            SW_XOFF_INT_ST: u1,
    -            /// This is the status bit for glitch_det_int_raw when glitch_det_int_ena is set to
    -            /// 1.
    -            GLITCH_DET_INT_ST: u1,
    -            /// This is the status bit for tx_brk_done_int_raw when tx_brk_done_int_ena is set
    -            /// to 1.
    -            TX_BRK_DONE_INT_ST: u1,
    -            /// This is the stauts bit for tx_brk_idle_done_int_raw when
    -            /// tx_brk_idle_done_int_ena is set to 1.
    -            TX_BRK_IDLE_DONE_INT_ST: u1,
    -            /// This is the status bit for tx_done_int_raw when tx_done_int_ena is set to 1.
    -            TX_DONE_INT_ST: u1,
    -            /// This is the status bit for rs485_parity_err_int_raw when rs485_parity_int_ena is
    -            /// set to 1.
    -            RS485_PARITY_ERR_INT_ST: u1,
    -            /// This is the status bit for rs485_frm_err_int_raw when rs485_fm_err_int_ena is
    -            /// set to 1.
    -            RS485_FRM_ERR_INT_ST: u1,
    -            /// This is the status bit for rs485_clash_int_raw when rs485_clash_int_ena is set
    -            /// to 1.
    -            RS485_CLASH_INT_ST: u1,
    -            /// This is the status bit for at_cmd_det_int_raw when at_cmd_char_det_int_ena is
    -            /// set to 1.
    -            AT_CMD_CHAR_DET_INT_ST: u1,
    -            /// This is the status bit for uart_wakeup_int_raw when uart_wakeup_int_ena is set
    -            /// to 1.
    -            WAKEUP_INT_ST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x6000000c
    -        /// Interrupt enable bits
    -        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This is the enable bit for rxfifo_full_int_st register.
    -            RXFIFO_FULL_INT_ENA: u1,
    -            /// This is the enable bit for txfifo_empty_int_st register.
    -            TXFIFO_EMPTY_INT_ENA: u1,
    -            /// This is the enable bit for parity_err_int_st register.
    -            PARITY_ERR_INT_ENA: u1,
    -            /// This is the enable bit for frm_err_int_st register.
    -            FRM_ERR_INT_ENA: u1,
    -            /// This is the enable bit for rxfifo_ovf_int_st register.
    -            RXFIFO_OVF_INT_ENA: u1,
    -            /// This is the enable bit for dsr_chg_int_st register.
    -            DSR_CHG_INT_ENA: u1,
    -            /// This is the enable bit for cts_chg_int_st register.
    -            CTS_CHG_INT_ENA: u1,
    -            /// This is the enable bit for brk_det_int_st register.
    -            BRK_DET_INT_ENA: u1,
    -            /// This is the enable bit for rxfifo_tout_int_st register.
    -            RXFIFO_TOUT_INT_ENA: u1,
    -            /// This is the enable bit for sw_xon_int_st register.
    -            SW_XON_INT_ENA: u1,
    -            /// This is the enable bit for sw_xoff_int_st register.
    -            SW_XOFF_INT_ENA: u1,
    -            /// This is the enable bit for glitch_det_int_st register.
    -            GLITCH_DET_INT_ENA: u1,
    -            /// This is the enable bit for tx_brk_done_int_st register.
    -            TX_BRK_DONE_INT_ENA: u1,
    -            /// This is the enable bit for tx_brk_idle_done_int_st register.
    -            TX_BRK_IDLE_DONE_INT_ENA: u1,
    -            /// This is the enable bit for tx_done_int_st register.
    -            TX_DONE_INT_ENA: u1,
    -            /// This is the enable bit for rs485_parity_err_int_st register.
    -            RS485_PARITY_ERR_INT_ENA: u1,
    -            /// This is the enable bit for rs485_parity_err_int_st register.
    -            RS485_FRM_ERR_INT_ENA: u1,
    -            /// This is the enable bit for rs485_clash_int_st register.
    -            RS485_CLASH_INT_ENA: u1,
    -            /// This is the enable bit for at_cmd_char_det_int_st register.
    -            AT_CMD_CHAR_DET_INT_ENA: u1,
    -            /// This is the enable bit for uart_wakeup_int_st register.
    -            WAKEUP_INT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x60000010
    -        /// Interrupt clear bits
    -        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set this bit to clear the rxfifo_full_int_raw interrupt.
    -            RXFIFO_FULL_INT_CLR: u1,
    -            /// Set this bit to clear txfifo_empty_int_raw interrupt.
    -            TXFIFO_EMPTY_INT_CLR: u1,
    -            /// Set this bit to clear parity_err_int_raw interrupt.
    -            PARITY_ERR_INT_CLR: u1,
    -            /// Set this bit to clear frm_err_int_raw interrupt.
    -            FRM_ERR_INT_CLR: u1,
    -            /// Set this bit to clear rxfifo_ovf_int_raw interrupt.
    -            RXFIFO_OVF_INT_CLR: u1,
    -            /// Set this bit to clear the dsr_chg_int_raw interrupt.
    -            DSR_CHG_INT_CLR: u1,
    -            /// Set this bit to clear the cts_chg_int_raw interrupt.
    -            CTS_CHG_INT_CLR: u1,
    -            /// Set this bit to clear the brk_det_int_raw interrupt.
    -            BRK_DET_INT_CLR: u1,
    -            /// Set this bit to clear the rxfifo_tout_int_raw interrupt.
    -            RXFIFO_TOUT_INT_CLR: u1,
    -            /// Set this bit to clear the sw_xon_int_raw interrupt.
    -            SW_XON_INT_CLR: u1,
    -            /// Set this bit to clear the sw_xoff_int_raw interrupt.
    -            SW_XOFF_INT_CLR: u1,
    -            /// Set this bit to clear the glitch_det_int_raw interrupt.
    -            GLITCH_DET_INT_CLR: u1,
    -            /// Set this bit to clear the tx_brk_done_int_raw interrupt..
    -            TX_BRK_DONE_INT_CLR: u1,
    -            /// Set this bit to clear the tx_brk_idle_done_int_raw interrupt.
    -            TX_BRK_IDLE_DONE_INT_CLR: u1,
    -            /// Set this bit to clear the tx_done_int_raw interrupt.
    -            TX_DONE_INT_CLR: u1,
    -            /// Set this bit to clear the rs485_parity_err_int_raw interrupt.
    -            RS485_PARITY_ERR_INT_CLR: u1,
    -            /// Set this bit to clear the rs485_frm_err_int_raw interrupt.
    -            RS485_FRM_ERR_INT_CLR: u1,
    -            /// Set this bit to clear the rs485_clash_int_raw interrupt.
    -            RS485_CLASH_INT_CLR: u1,
    -            /// Set this bit to clear the at_cmd_char_det_int_raw interrupt.
    -            AT_CMD_CHAR_DET_INT_CLR: u1,
    -            /// Set this bit to clear the uart_wakeup_int_raw interrupt.
    -            WAKEUP_INT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x10);
    -
    -        /// address: 0x60000014
    -        /// Clock divider configuration
    -        pub const CLKDIV = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The integral part of the frequency divider factor.
    -            CLKDIV: u12,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            /// The decimal part of the frequency divider factor.
    -            FRAG: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -        }), base_address + 0x14);
    -
    -        /// address: 0x60000018
    -        /// Rx Filter configuration
    -        pub const RX_FILT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// when input pulse width is lower than this value, the pulse is ignored.
    -            GLITCH_FILT: u8,
    -            /// Set this bit to enable Rx signal filter.
    -            GLITCH_FILT_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x6000001c
    -        /// UART status register
    -        pub const STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the byte number of valid data in Rx-FIFO.
    -            RXFIFO_CNT: u10,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            /// The register represent the level value of the internal uart dsr signal.
    -            DSRN: u1,
    -            /// This register represent the level value of the internal uart cts signal.
    -            CTSN: u1,
    -            /// This register represent the level value of the internal uart rxd signal.
    -            RXD: u1,
    -            /// Stores the byte number of data in Tx-FIFO.
    -            TXFIFO_CNT: u10,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            /// This bit represents the level of the internal uart dtr signal.
    -            DTRN: u1,
    -            /// This bit represents the level of the internal uart rts signal.
    -            RTSN: u1,
    -            /// This bit represents the level of the internal uart txd signal.
    -            TXD: u1,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x60000020
    -        /// a
    -        pub const CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register is used to configure the parity check mode.
    -            PARITY: u1,
    -            /// Set this bit to enable uart parity check.
    -            PARITY_EN: u1,
    -            /// This register is used to set the length of data.
    -            BIT_NUM: u2,
    -            /// This register is used to set the length of stop bit.
    -            STOP_BIT_NUM: u2,
    -            /// This register is used to configure the software rts signal which is used in
    -            /// software flow control.
    -            SW_RTS: u1,
    -            /// This register is used to configure the software dtr signal which is used in
    -            /// software flow control.
    -            SW_DTR: u1,
    -            /// Set this bit to enbale transmitter to send NULL when the process of sending data
    -            /// is done.
    -            TXD_BRK: u1,
    -            /// Set this bit to enable IrDA loopback mode.
    -            IRDA_DPLX: u1,
    -            /// This is the start enable bit for IrDA transmitter.
    -            IRDA_TX_EN: u1,
    -            /// 1'h1: The IrDA transmitter's 11th bit is the same as 10th bit. 1'h0: Set IrDA
    -            /// transmitter's 11th bit to 0.
    -            IRDA_WCTL: u1,
    -            /// Set this bit to invert the level of IrDA transmitter.
    -            IRDA_TX_INV: u1,
    -            /// Set this bit to invert the level of IrDA receiver.
    -            IRDA_RX_INV: u1,
    -            /// Set this bit to enable uart loopback test mode.
    -            LOOPBACK: u1,
    -            /// Set this bit to enable flow control function for transmitter.
    -            TX_FLOW_EN: u1,
    -            /// Set this bit to enable IrDA protocol.
    -            IRDA_EN: u1,
    -            /// Set this bit to reset the uart receive-FIFO.
    -            RXFIFO_RST: u1,
    -            /// Set this bit to reset the uart transmit-FIFO.
    -            TXFIFO_RST: u1,
    -            /// Set this bit to inverse the level value of uart rxd signal.
    -            RXD_INV: u1,
    -            /// Set this bit to inverse the level value of uart cts signal.
    -            CTS_INV: u1,
    -            /// Set this bit to inverse the level value of uart dsr signal.
    -            DSR_INV: u1,
    -            /// Set this bit to inverse the level value of uart txd signal.
    -            TXD_INV: u1,
    -            /// Set this bit to inverse the level value of uart rts signal.
    -            RTS_INV: u1,
    -            /// Set this bit to inverse the level value of uart dtr signal.
    -            DTR_INV: u1,
    -            /// 1'h1: Force clock on for register. 1'h0: Support clock only when application
    -            /// writes registers.
    -            CLK_EN: u1,
    -            /// 1'h1: Receiver stops storing data into FIFO when data is wrong. 1'h0: Receiver
    -            /// stores the data even if the received data is wrong.
    -            ERR_WR_MASK: u1,
    -            /// This is the enable bit for detecting baudrate.
    -            AUTOBAUD_EN: u1,
    -            /// UART memory clock gate enable signal.
    -            MEM_CLK_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -        }), base_address + 0x20);
    -
    -        /// address: 0x60000024
    -        /// Configuration register 1
    -        pub const CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// It will produce rxfifo_full_int interrupt when receiver receives more data than
    -            /// this register value.
    -            RXFIFO_FULL_THRHD: u9,
    -            /// It will produce txfifo_empty_int interrupt when the data amount in Tx-FIFO is
    -            /// less than this register value.
    -            TXFIFO_EMPTY_THRHD: u9,
    -            /// Disable UART Rx data overflow detect.
    -            DIS_RX_DAT_OVF: u1,
    -            /// Set this bit to stop accumulating idle_cnt when hardware flow control works.
    -            RX_TOUT_FLOW_DIS: u1,
    -            /// This is the flow enable bit for UART receiver.
    -            RX_FLOW_EN: u1,
    -            /// This is the enble bit for uart receiver's timeout function.
    -            RX_TOUT_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -        }), base_address + 0x24);
    -
    -        /// address: 0x60000028
    -        /// Autobaud minimum low pulse duration register
    -        pub const LOWPULSE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the value of the minimum duration time of the low level
    -            /// pulse. It is used in baud rate-detect process.
    -            MIN_CNT: u12,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0x28);
    -
    -        /// address: 0x6000002c
    -        /// Autobaud minimum high pulse duration register
    -        pub const HIGHPULSE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the value of the maxinum duration time for the high level
    -            /// pulse. It is used in baud rate-detect process.
    -            MIN_CNT: u12,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0x2c);
    -
    -        /// address: 0x60000030
    -        /// Autobaud edge change count register
    -        pub const RXD_CNT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the count of rxd edge change. It is used in baud
    -            /// rate-detect process.
    -            RXD_EDGE_CNT: u10,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -        }), base_address + 0x30);
    -
    -        /// address: 0x60000034
    -        /// Software flow-control configuration
    -        pub const FLOW_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set this bit to enable software flow control. It is used with register sw_xon or
    -            /// sw_xoff.
    -            SW_FLOW_CON_EN: u1,
    -            /// Set this bit to remove flow control char from the received data.
    -            XONOFF_DEL: u1,
    -            /// Set this bit to enable the transmitter to go on sending data.
    -            FORCE_XON: u1,
    -            /// Set this bit to stop the transmitter from sending data.
    -            FORCE_XOFF: u1,
    -            /// Set this bit to send Xon char. It is cleared by hardware automatically.
    -            SEND_XON: u1,
    -            /// Set this bit to send Xoff char. It is cleared by hardware automatically.
    -            SEND_XOFF: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -        }), base_address + 0x34);
    -
    -        /// address: 0x60000038
    -        /// Sleep-mode configuration
    -        pub const SLEEP_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The uart is activated from light sleeping mode when the input rxd edge changes
    -            /// more times than this register value.
    -            ACTIVE_THRESHOLD: u10,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -        }), base_address + 0x38);
    -
    -        /// address: 0x6000003c
    -        /// Software flow-control character configuration
    -        pub const SWFC_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// When the data amount in Rx-FIFO is more than this register value with
    -            /// uart_sw_flow_con_en set to 1, it will send a Xoff char.
    -            XOFF_THRESHOLD: u9,
    -            /// This register stores the Xoff flow control char.
    -            XOFF_CHAR: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -        }), base_address + 0x3c);
    -
    -        /// address: 0x60000040
    -        /// Software flow-control character configuration
    -        pub const SWFC_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// When the data amount in Rx-FIFO is less than this register value with
    -            /// uart_sw_flow_con_en set to 1, it will send a Xon char.
    -            XON_THRESHOLD: u9,
    -            /// This register stores the Xon flow control char.
    -            XON_CHAR: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -        }), base_address + 0x40);
    -
    -        /// address: 0x60000044
    -        /// Tx Break character configuration
    -        pub const TXBRK_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register is used to configure the number of 0 to be sent after the process
    -            /// of sending data is done. It is active when txd_brk is set to 1.
    -            TX_BRK_NUM: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x44);
    -
    -        /// address: 0x60000048
    -        /// Frame-end idle configuration
    -        pub const IDLE_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// It will produce frame end signal when receiver takes more time to receive one
    -            /// byte data than this register value.
    -            RX_IDLE_THRHD: u10,
    -            /// This register is used to configure the duration time between transfers.
    -            TX_IDLE_NUM: u10,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x48);
    -
    -        /// address: 0x6000004c
    -        /// RS485 mode configuration
    -        pub const RS485_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set this bit to choose the rs485 mode.
    -            RS485_EN: u1,
    -            /// Set this bit to delay the stop bit by 1 bit.
    -            DL0_EN: u1,
    -            /// Set this bit to delay the stop bit by 1 bit.
    -            DL1_EN: u1,
    -            /// Set this bit to enable receiver could receive data when the transmitter is
    -            /// transmitting data in rs485 mode.
    -            RS485TX_RX_EN: u1,
    -            /// 1'h1: enable rs485 transmitter to send data when rs485 receiver line is busy.
    -            RS485RXBY_TX_EN: u1,
    -            /// This register is used to delay the receiver's internal data signal.
    -            RS485_RX_DLY_NUM: u1,
    -            /// This register is used to delay the transmitter's internal data signal.
    -            RS485_TX_DLY_NUM: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -        }), base_address + 0x4c);
    -
    -        /// address: 0x60000050
    -        /// Pre-sequence timing configuration
    -        pub const AT_CMD_PRECNT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register is used to configure the idle duration time before the first
    -            /// at_cmd is received by receiver.
    -            PRE_IDLE_NUM: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x50);
    -
    -        /// address: 0x60000054
    -        /// Post-sequence timing configuration
    -        pub const AT_CMD_POSTCNT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register is used to configure the duration time between the last at_cmd and
    -            /// the next data.
    -            POST_IDLE_NUM: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x54);
    -
    -        /// address: 0x60000058
    -        /// Timeout configuration
    -        pub const AT_CMD_GAPTOUT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register is used to configure the duration time between the at_cmd chars.
    -            RX_GAP_TOUT: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x58);
    -
    -        /// address: 0x6000005c
    -        /// AT escape sequence detection configuration
    -        pub const AT_CMD_CHAR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register is used to configure the content of at_cmd char.
    -            AT_CMD_CHAR: u8,
    -            /// This register is used to configure the num of continuous at_cmd chars received
    -            /// by receiver.
    -            CHAR_NUM: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x5c);
    -
    -        /// address: 0x60000060
    -        /// UART threshold and allocation configuration
    -        pub const MEM_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            /// This register is used to configure the amount of mem allocated for receive-FIFO.
    -            /// The default number is 128 bytes.
    -            RX_SIZE: u3,
    -            /// This register is used to configure the amount of mem allocated for
    -            /// transmit-FIFO. The default number is 128 bytes.
    -            TX_SIZE: u3,
    -            /// This register is used to configure the maximum amount of data that can be
    -            /// received when hardware flow control works.
    -            RX_FLOW_THRHD: u9,
    -            /// This register is used to configure the threshold time that receiver takes to
    -            /// receive one byte. The rxfifo_tout_int interrupt will be trigger when the
    -            /// receiver takes more time to receive one byte with rx_tout_en set to 1.
    -            RX_TOUT_THRHD: u10,
    -            /// Set this bit to force power down UART memory.
    -            MEM_FORCE_PD: u1,
    -            /// Set this bit to force power up UART memory.
    -            MEM_FORCE_PU: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -        }), base_address + 0x60);
    -
    -        /// address: 0x60000064
    -        /// Tx-FIFO write and read offset address.
    -        pub const MEM_TX_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the offset address in Tx-FIFO when software writes Tx-FIFO
    -            /// via APB.
    -            APB_TX_WADDR: u10,
    -            reserved0: u1,
    -            /// This register stores the offset address in Tx-FIFO when Tx-FSM reads data via
    -            /// Tx-FIFO_Ctrl.
    -            TX_RADDR: u10,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -        }), base_address + 0x64);
    -
    -        /// address: 0x60000068
    -        /// Rx-FIFO write and read offset address.
    -        pub const MEM_RX_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the offset address in RX-FIFO when software reads data from
    -            /// Rx-FIFO via APB. UART0 is 10'h100. UART1 is 10'h180.
    -            APB_RX_RADDR: u10,
    -            reserved0: u1,
    -            /// This register stores the offset address in Rx-FIFO when Rx-FIFO_Ctrl writes
    -            /// Rx-FIFO. UART0 is 10'h100. UART1 is 10'h180.
    -            RX_WADDR: u10,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -        }), base_address + 0x68);
    -
    -        /// address: 0x6000006c
    -        /// UART transmit and receive status.
    -        pub const FSM_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This is the status register of receiver.
    -            ST_URX_OUT: u4,
    -            /// This is the status register of transmitter.
    -            ST_UTX_OUT: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x6c);
    -
    -        /// address: 0x60000070
    -        /// Autobaud high pulse register
    -        pub const POSPULSE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the minimal input clock count between two positive edges.
    -            /// It is used in boudrate-detect process.
    -            POSEDGE_MIN_CNT: u12,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0x70);
    -
    -        /// address: 0x60000074
    -        /// Autobaud low pulse register
    -        pub const NEGPULSE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the minimal input clock count between two negative edges.
    -            /// It is used in boudrate-detect process.
    -            NEGEDGE_MIN_CNT: u12,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0x74);
    -
    -        /// address: 0x60000078
    -        /// UART core clock configuration
    -        pub const CLK_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The denominator of the frequency divider factor.
    -            SCLK_DIV_B: u6,
    -            /// The numerator of the frequency divider factor.
    -            SCLK_DIV_A: u6,
    -            /// The integral part of the frequency divider factor.
    -            SCLK_DIV_NUM: u8,
    -            /// UART clock source select. 1: 80Mhz, 2: 8Mhz, 3: XTAL.
    -            SCLK_SEL: u2,
    -            /// Set this bit to enable UART Tx/Rx clock.
    -            SCLK_EN: u1,
    -            /// Write 1 then write 0 to this bit, reset UART Tx/Rx.
    -            RST_CORE: u1,
    -            /// Set this bit to enable UART Tx clock.
    -            TX_SCLK_EN: u1,
    -            /// Set this bit to enable UART Rx clock.
    -            RX_SCLK_EN: u1,
    -            /// Write 1 then write 0 to this bit, reset UART Tx.
    -            TX_RST_CORE: u1,
    -            /// Write 1 then write 0 to this bit, reset UART Rx.
    -            RX_RST_CORE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -        }), base_address + 0x78);
    -
    -        /// address: 0x6000007c
    -        /// UART Version register
    -        pub const DATE = @intToPtr(*volatile u32, base_address + 0x7c);
    -
    -        /// address: 0x60000080
    -        /// UART ID register
    -        pub const ID = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register is used to configure the uart_id.
    -            ID: u30,
    -            /// This bit used to select synchronize mode. 1: Registers are auto synchronized
    -            /// into UART Core clock and UART core should be keep the same with APB clock. 0:
    -            /// After configure registers, software needs to write 1 to UART_REG_UPDATE to
    -            /// synchronize registers.
    -            HIGH_SPEED: u1,
    -            /// Software write 1 would synchronize registers into UART Core clock domain and
    -            /// would be cleared by hardware after synchronization is done.
    -            REG_UPDATE: u1,
    -        }), base_address + 0x80);
    -    };
    -
    -    /// UART (Universal Asynchronous Receiver-Transmitter) Controller
    -    pub const UART1 = struct {
    -        pub const base_address = 0x60010000;
    -
    -        /// address: 0x60010000
    -        /// FIFO data register
    -        pub const FIFO = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// UART 0 accesses FIFO via this register.
    -            RXFIFO_RD_BYTE: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x0);
    -
    -        /// address: 0x60010004
    -        /// Raw interrupt status
    -        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This interrupt raw bit turns to high level when receiver receives more data than
    -            /// what rxfifo_full_thrhd specifies.
    -            RXFIFO_FULL_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when the amount of data in Tx-FIFO is
    -            /// less than what txfifo_empty_thrhd specifies .
    -            TXFIFO_EMPTY_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver detects a parity error
    -            /// in the data.
    -            PARITY_ERR_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver detects a data frame
    -            /// error .
    -            FRM_ERR_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver receives more data than
    -            /// the FIFO can store.
    -            RXFIFO_OVF_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver detects the edge change
    -            /// of DSRn signal.
    -            DSR_CHG_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver detects the edge change
    -            /// of CTSn signal.
    -            CTS_CHG_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver detects a 0 after the
    -            /// stop bit.
    -            BRK_DET_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver takes more time than
    -            /// rx_tout_thrhd to receive a byte.
    -            RXFIFO_TOUT_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver recevies Xon char when
    -            /// uart_sw_flow_con_en is set to 1.
    -            SW_XON_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver receives Xoff char when
    -            /// uart_sw_flow_con_en is set to 1.
    -            SW_XOFF_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver detects a glitch in the
    -            /// middle of a start bit.
    -            GLITCH_DET_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when transmitter completes sending
    -            /// NULL characters, after all data in Tx-FIFO are sent.
    -            TX_BRK_DONE_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when transmitter has kept the
    -            /// shortest duration after sending the last data.
    -            TX_BRK_IDLE_DONE_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when transmitter has send out all
    -            /// data in FIFO.
    -            TX_DONE_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver detects a parity error
    -            /// from the echo of transmitter in rs485 mode.
    -            RS485_PARITY_ERR_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver detects a data frame
    -            /// error from the echo of transmitter in rs485 mode.
    -            RS485_FRM_ERR_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when detects a clash between
    -            /// transmitter and receiver in rs485 mode.
    -            RS485_CLASH_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when receiver detects the configured
    -            /// at_cmd char.
    -            AT_CMD_CHAR_DET_INT_RAW: u1,
    -            /// This interrupt raw bit turns to high level when input rxd edge changes more
    -            /// times than what reg_active_threshold specifies in light sleeping mode.
    -            WAKEUP_INT_RAW: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x60010008
    -        /// Masked interrupt status
    -        pub const INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This is the status bit for rxfifo_full_int_raw when rxfifo_full_int_ena is set
    -            /// to 1.
    -            RXFIFO_FULL_INT_ST: u1,
    -            /// This is the status bit for txfifo_empty_int_raw when txfifo_empty_int_ena is set
    -            /// to 1.
    -            TXFIFO_EMPTY_INT_ST: u1,
    -            /// This is the status bit for parity_err_int_raw when parity_err_int_ena is set to
    -            /// 1.
    -            PARITY_ERR_INT_ST: u1,
    -            /// This is the status bit for frm_err_int_raw when frm_err_int_ena is set to 1.
    -            FRM_ERR_INT_ST: u1,
    -            /// This is the status bit for rxfifo_ovf_int_raw when rxfifo_ovf_int_ena is set to
    -            /// 1.
    -            RXFIFO_OVF_INT_ST: u1,
    -            /// This is the status bit for dsr_chg_int_raw when dsr_chg_int_ena is set to 1.
    -            DSR_CHG_INT_ST: u1,
    -            /// This is the status bit for cts_chg_int_raw when cts_chg_int_ena is set to 1.
    -            CTS_CHG_INT_ST: u1,
    -            /// This is the status bit for brk_det_int_raw when brk_det_int_ena is set to 1.
    -            BRK_DET_INT_ST: u1,
    -            /// This is the status bit for rxfifo_tout_int_raw when rxfifo_tout_int_ena is set
    -            /// to 1.
    -            RXFIFO_TOUT_INT_ST: u1,
    -            /// This is the status bit for sw_xon_int_raw when sw_xon_int_ena is set to 1.
    -            SW_XON_INT_ST: u1,
    -            /// This is the status bit for sw_xoff_int_raw when sw_xoff_int_ena is set to 1.
    -            SW_XOFF_INT_ST: u1,
    -            /// This is the status bit for glitch_det_int_raw when glitch_det_int_ena is set to
    -            /// 1.
    -            GLITCH_DET_INT_ST: u1,
    -            /// This is the status bit for tx_brk_done_int_raw when tx_brk_done_int_ena is set
    -            /// to 1.
    -            TX_BRK_DONE_INT_ST: u1,
    -            /// This is the stauts bit for tx_brk_idle_done_int_raw when
    -            /// tx_brk_idle_done_int_ena is set to 1.
    -            TX_BRK_IDLE_DONE_INT_ST: u1,
    -            /// This is the status bit for tx_done_int_raw when tx_done_int_ena is set to 1.
    -            TX_DONE_INT_ST: u1,
    -            /// This is the status bit for rs485_parity_err_int_raw when rs485_parity_int_ena is
    -            /// set to 1.
    -            RS485_PARITY_ERR_INT_ST: u1,
    -            /// This is the status bit for rs485_frm_err_int_raw when rs485_fm_err_int_ena is
    -            /// set to 1.
    -            RS485_FRM_ERR_INT_ST: u1,
    -            /// This is the status bit for rs485_clash_int_raw when rs485_clash_int_ena is set
    -            /// to 1.
    -            RS485_CLASH_INT_ST: u1,
    -            /// This is the status bit for at_cmd_det_int_raw when at_cmd_char_det_int_ena is
    -            /// set to 1.
    -            AT_CMD_CHAR_DET_INT_ST: u1,
    -            /// This is the status bit for uart_wakeup_int_raw when uart_wakeup_int_ena is set
    -            /// to 1.
    -            WAKEUP_INT_ST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x6001000c
    -        /// Interrupt enable bits
    -        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This is the enable bit for rxfifo_full_int_st register.
    -            RXFIFO_FULL_INT_ENA: u1,
    -            /// This is the enable bit for txfifo_empty_int_st register.
    -            TXFIFO_EMPTY_INT_ENA: u1,
    -            /// This is the enable bit for parity_err_int_st register.
    -            PARITY_ERR_INT_ENA: u1,
    -            /// This is the enable bit for frm_err_int_st register.
    -            FRM_ERR_INT_ENA: u1,
    -            /// This is the enable bit for rxfifo_ovf_int_st register.
    -            RXFIFO_OVF_INT_ENA: u1,
    -            /// This is the enable bit for dsr_chg_int_st register.
    -            DSR_CHG_INT_ENA: u1,
    -            /// This is the enable bit for cts_chg_int_st register.
    -            CTS_CHG_INT_ENA: u1,
    -            /// This is the enable bit for brk_det_int_st register.
    -            BRK_DET_INT_ENA: u1,
    -            /// This is the enable bit for rxfifo_tout_int_st register.
    -            RXFIFO_TOUT_INT_ENA: u1,
    -            /// This is the enable bit for sw_xon_int_st register.
    -            SW_XON_INT_ENA: u1,
    -            /// This is the enable bit for sw_xoff_int_st register.
    -            SW_XOFF_INT_ENA: u1,
    -            /// This is the enable bit for glitch_det_int_st register.
    -            GLITCH_DET_INT_ENA: u1,
    -            /// This is the enable bit for tx_brk_done_int_st register.
    -            TX_BRK_DONE_INT_ENA: u1,
    -            /// This is the enable bit for tx_brk_idle_done_int_st register.
    -            TX_BRK_IDLE_DONE_INT_ENA: u1,
    -            /// This is the enable bit for tx_done_int_st register.
    -            TX_DONE_INT_ENA: u1,
    -            /// This is the enable bit for rs485_parity_err_int_st register.
    -            RS485_PARITY_ERR_INT_ENA: u1,
    -            /// This is the enable bit for rs485_parity_err_int_st register.
    -            RS485_FRM_ERR_INT_ENA: u1,
    -            /// This is the enable bit for rs485_clash_int_st register.
    -            RS485_CLASH_INT_ENA: u1,
    -            /// This is the enable bit for at_cmd_char_det_int_st register.
    -            AT_CMD_CHAR_DET_INT_ENA: u1,
    -            /// This is the enable bit for uart_wakeup_int_st register.
    -            WAKEUP_INT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x60010010
    -        /// Interrupt clear bits
    -        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set this bit to clear the rxfifo_full_int_raw interrupt.
    -            RXFIFO_FULL_INT_CLR: u1,
    -            /// Set this bit to clear txfifo_empty_int_raw interrupt.
    -            TXFIFO_EMPTY_INT_CLR: u1,
    -            /// Set this bit to clear parity_err_int_raw interrupt.
    -            PARITY_ERR_INT_CLR: u1,
    -            /// Set this bit to clear frm_err_int_raw interrupt.
    -            FRM_ERR_INT_CLR: u1,
    -            /// Set this bit to clear rxfifo_ovf_int_raw interrupt.
    -            RXFIFO_OVF_INT_CLR: u1,
    -            /// Set this bit to clear the dsr_chg_int_raw interrupt.
    -            DSR_CHG_INT_CLR: u1,
    -            /// Set this bit to clear the cts_chg_int_raw interrupt.
    -            CTS_CHG_INT_CLR: u1,
    -            /// Set this bit to clear the brk_det_int_raw interrupt.
    -            BRK_DET_INT_CLR: u1,
    -            /// Set this bit to clear the rxfifo_tout_int_raw interrupt.
    -            RXFIFO_TOUT_INT_CLR: u1,
    -            /// Set this bit to clear the sw_xon_int_raw interrupt.
    -            SW_XON_INT_CLR: u1,
    -            /// Set this bit to clear the sw_xoff_int_raw interrupt.
    -            SW_XOFF_INT_CLR: u1,
    -            /// Set this bit to clear the glitch_det_int_raw interrupt.
    -            GLITCH_DET_INT_CLR: u1,
    -            /// Set this bit to clear the tx_brk_done_int_raw interrupt..
    -            TX_BRK_DONE_INT_CLR: u1,
    -            /// Set this bit to clear the tx_brk_idle_done_int_raw interrupt.
    -            TX_BRK_IDLE_DONE_INT_CLR: u1,
    -            /// Set this bit to clear the tx_done_int_raw interrupt.
    -            TX_DONE_INT_CLR: u1,
    -            /// Set this bit to clear the rs485_parity_err_int_raw interrupt.
    -            RS485_PARITY_ERR_INT_CLR: u1,
    -            /// Set this bit to clear the rs485_frm_err_int_raw interrupt.
    -            RS485_FRM_ERR_INT_CLR: u1,
    -            /// Set this bit to clear the rs485_clash_int_raw interrupt.
    -            RS485_CLASH_INT_CLR: u1,
    -            /// Set this bit to clear the at_cmd_char_det_int_raw interrupt.
    -            AT_CMD_CHAR_DET_INT_CLR: u1,
    -            /// Set this bit to clear the uart_wakeup_int_raw interrupt.
    -            WAKEUP_INT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x10);
    -
    -        /// address: 0x60010014
    -        /// Clock divider configuration
    -        pub const CLKDIV = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The integral part of the frequency divider factor.
    -            CLKDIV: u12,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            reserved6: u1,
    -            reserved7: u1,
    -            /// The decimal part of the frequency divider factor.
    -            FRAG: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -        }), base_address + 0x14);
    -
    -        /// address: 0x60010018
    -        /// Rx Filter configuration
    -        pub const RX_FILT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// when input pulse width is lower than this value, the pulse is ignored.
    -            GLITCH_FILT: u8,
    -            /// Set this bit to enable Rx signal filter.
    -            GLITCH_FILT_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x6001001c
    -        /// UART status register
    -        pub const STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Stores the byte number of valid data in Rx-FIFO.
    -            RXFIFO_CNT: u10,
    -            reserved0: u1,
    -            reserved1: u1,
    -            reserved2: u1,
    -            /// The register represent the level value of the internal uart dsr signal.
    -            DSRN: u1,
    -            /// This register represent the level value of the internal uart cts signal.
    -            CTSN: u1,
    -            /// This register represent the level value of the internal uart rxd signal.
    -            RXD: u1,
    -            /// Stores the byte number of data in Tx-FIFO.
    -            TXFIFO_CNT: u10,
    -            reserved3: u1,
    -            reserved4: u1,
    -            reserved5: u1,
    -            /// This bit represents the level of the internal uart dtr signal.
    -            DTRN: u1,
    -            /// This bit represents the level of the internal uart rts signal.
    -            RTSN: u1,
    -            /// This bit represents the level of the internal uart txd signal.
    -            TXD: u1,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x60010020
    -        /// a
    -        pub const CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register is used to configure the parity check mode.
    -            PARITY: u1,
    -            /// Set this bit to enable uart parity check.
    -            PARITY_EN: u1,
    -            /// This register is used to set the length of data.
    -            BIT_NUM: u2,
    -            /// This register is used to set the length of stop bit.
    -            STOP_BIT_NUM: u2,
    -            /// This register is used to configure the software rts signal which is used in
    -            /// software flow control.
    -            SW_RTS: u1,
    -            /// This register is used to configure the software dtr signal which is used in
    -            /// software flow control.
    -            SW_DTR: u1,
    -            /// Set this bit to enbale transmitter to send NULL when the process of sending data
    -            /// is done.
    -            TXD_BRK: u1,
    -            /// Set this bit to enable IrDA loopback mode.
    -            IRDA_DPLX: u1,
    -            /// This is the start enable bit for IrDA transmitter.
    -            IRDA_TX_EN: u1,
    -            /// 1'h1: The IrDA transmitter's 11th bit is the same as 10th bit. 1'h0: Set IrDA
    -            /// transmitter's 11th bit to 0.
    -            IRDA_WCTL: u1,
    -            /// Set this bit to invert the level of IrDA transmitter.
    -            IRDA_TX_INV: u1,
    -            /// Set this bit to invert the level of IrDA receiver.
    -            IRDA_RX_INV: u1,
    -            /// Set this bit to enable uart loopback test mode.
    -            LOOPBACK: u1,
    -            /// Set this bit to enable flow control function for transmitter.
    -            TX_FLOW_EN: u1,
    -            /// Set this bit to enable IrDA protocol.
    -            IRDA_EN: u1,
    -            /// Set this bit to reset the uart receive-FIFO.
    -            RXFIFO_RST: u1,
    -            /// Set this bit to reset the uart transmit-FIFO.
    -            TXFIFO_RST: u1,
    -            /// Set this bit to inverse the level value of uart rxd signal.
    -            RXD_INV: u1,
    -            /// Set this bit to inverse the level value of uart cts signal.
    -            CTS_INV: u1,
    -            /// Set this bit to inverse the level value of uart dsr signal.
    -            DSR_INV: u1,
    -            /// Set this bit to inverse the level value of uart txd signal.
    -            TXD_INV: u1,
    -            /// Set this bit to inverse the level value of uart rts signal.
    -            RTS_INV: u1,
    -            /// Set this bit to inverse the level value of uart dtr signal.
    -            DTR_INV: u1,
    -            /// 1'h1: Force clock on for register. 1'h0: Support clock only when application
    -            /// writes registers.
    -            CLK_EN: u1,
    -            /// 1'h1: Receiver stops storing data into FIFO when data is wrong. 1'h0: Receiver
    -            /// stores the data even if the received data is wrong.
    -            ERR_WR_MASK: u1,
    -            /// This is the enable bit for detecting baudrate.
    -            AUTOBAUD_EN: u1,
    -            /// UART memory clock gate enable signal.
    -            MEM_CLK_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -        }), base_address + 0x20);
    -
    -        /// address: 0x60010024
    -        /// Configuration register 1
    -        pub const CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// It will produce rxfifo_full_int interrupt when receiver receives more data than
    -            /// this register value.
    -            RXFIFO_FULL_THRHD: u9,
    -            /// It will produce txfifo_empty_int interrupt when the data amount in Tx-FIFO is
    -            /// less than this register value.
    -            TXFIFO_EMPTY_THRHD: u9,
    -            /// Disable UART Rx data overflow detect.
    -            DIS_RX_DAT_OVF: u1,
    -            /// Set this bit to stop accumulating idle_cnt when hardware flow control works.
    -            RX_TOUT_FLOW_DIS: u1,
    -            /// This is the flow enable bit for UART receiver.
    -            RX_FLOW_EN: u1,
    -            /// This is the enble bit for uart receiver's timeout function.
    -            RX_TOUT_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -        }), base_address + 0x24);
    -
    -        /// address: 0x60010028
    -        /// Autobaud minimum low pulse duration register
    -        pub const LOWPULSE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the value of the minimum duration time of the low level
    -            /// pulse. It is used in baud rate-detect process.
    -            MIN_CNT: u12,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0x28);
    -
    -        /// address: 0x6001002c
    -        /// Autobaud minimum high pulse duration register
    -        pub const HIGHPULSE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the value of the maxinum duration time for the high level
    -            /// pulse. It is used in baud rate-detect process.
    -            MIN_CNT: u12,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0x2c);
    -
    -        /// address: 0x60010030
    -        /// Autobaud edge change count register
    -        pub const RXD_CNT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the count of rxd edge change. It is used in baud
    -            /// rate-detect process.
    -            RXD_EDGE_CNT: u10,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -        }), base_address + 0x30);
    -
    -        /// address: 0x60010034
    -        /// Software flow-control configuration
    -        pub const FLOW_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set this bit to enable software flow control. It is used with register sw_xon or
    -            /// sw_xoff.
    -            SW_FLOW_CON_EN: u1,
    -            /// Set this bit to remove flow control char from the received data.
    -            XONOFF_DEL: u1,
    -            /// Set this bit to enable the transmitter to go on sending data.
    -            FORCE_XON: u1,
    -            /// Set this bit to stop the transmitter from sending data.
    -            FORCE_XOFF: u1,
    -            /// Set this bit to send Xon char. It is cleared by hardware automatically.
    -            SEND_XON: u1,
    -            /// Set this bit to send Xoff char. It is cleared by hardware automatically.
    -            SEND_XOFF: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -        }), base_address + 0x34);
    -
    -        /// address: 0x60010038
    -        /// Sleep-mode configuration
    -        pub const SLEEP_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The uart is activated from light sleeping mode when the input rxd edge changes
    -            /// more times than this register value.
    -            ACTIVE_THRESHOLD: u10,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -        }), base_address + 0x38);
    -
    -        /// address: 0x6001003c
    -        /// Software flow-control character configuration
    -        pub const SWFC_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// When the data amount in Rx-FIFO is more than this register value with
    -            /// uart_sw_flow_con_en set to 1, it will send a Xoff char.
    -            XOFF_THRESHOLD: u9,
    -            /// This register stores the Xoff flow control char.
    -            XOFF_CHAR: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -        }), base_address + 0x3c);
    -
    -        /// address: 0x60010040
    -        /// Software flow-control character configuration
    -        pub const SWFC_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// When the data amount in Rx-FIFO is less than this register value with
    -            /// uart_sw_flow_con_en set to 1, it will send a Xon char.
    -            XON_THRESHOLD: u9,
    -            /// This register stores the Xon flow control char.
    -            XON_CHAR: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -        }), base_address + 0x40);
    -
    -        /// address: 0x60010044
    -        /// Tx Break character configuration
    -        pub const TXBRK_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register is used to configure the number of 0 to be sent after the process
    -            /// of sending data is done. It is active when txd_brk is set to 1.
    -            TX_BRK_NUM: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x44);
    -
    -        /// address: 0x60010048
    -        /// Frame-end idle configuration
    -        pub const IDLE_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// It will produce frame end signal when receiver takes more time to receive one
    -            /// byte data than this register value.
    -            RX_IDLE_THRHD: u10,
    -            /// This register is used to configure the duration time between transfers.
    -            TX_IDLE_NUM: u10,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -        }), base_address + 0x48);
    -
    -        /// address: 0x6001004c
    -        /// RS485 mode configuration
    -        pub const RS485_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set this bit to choose the rs485 mode.
    -            RS485_EN: u1,
    -            /// Set this bit to delay the stop bit by 1 bit.
    -            DL0_EN: u1,
    -            /// Set this bit to delay the stop bit by 1 bit.
    -            DL1_EN: u1,
    -            /// Set this bit to enable receiver could receive data when the transmitter is
    -            /// transmitting data in rs485 mode.
    -            RS485TX_RX_EN: u1,
    -            /// 1'h1: enable rs485 transmitter to send data when rs485 receiver line is busy.
    -            RS485RXBY_TX_EN: u1,
    -            /// This register is used to delay the receiver's internal data signal.
    -            RS485_RX_DLY_NUM: u1,
    -            /// This register is used to delay the transmitter's internal data signal.
    -            RS485_TX_DLY_NUM: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -        }), base_address + 0x4c);
    -
    -        /// address: 0x60010050
    -        /// Pre-sequence timing configuration
    -        pub const AT_CMD_PRECNT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register is used to configure the idle duration time before the first
    -            /// at_cmd is received by receiver.
    -            PRE_IDLE_NUM: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x50);
    -
    -        /// address: 0x60010054
    -        /// Post-sequence timing configuration
    -        pub const AT_CMD_POSTCNT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register is used to configure the duration time between the last at_cmd and
    -            /// the next data.
    -            POST_IDLE_NUM: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x54);
    -
    -        /// address: 0x60010058
    -        /// Timeout configuration
    -        pub const AT_CMD_GAPTOUT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register is used to configure the duration time between the at_cmd chars.
    -            RX_GAP_TOUT: u16,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x58);
    -
    -        /// address: 0x6001005c
    -        /// AT escape sequence detection configuration
    -        pub const AT_CMD_CHAR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register is used to configure the content of at_cmd char.
    -            AT_CMD_CHAR: u8,
    -            /// This register is used to configure the num of continuous at_cmd chars received
    -            /// by receiver.
    -            CHAR_NUM: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x5c);
    -
    -        /// address: 0x60010060
    -        /// UART threshold and allocation configuration
    -        pub const MEM_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            reserved0: u1,
    -            /// This register is used to configure the amount of mem allocated for receive-FIFO.
    -            /// The default number is 128 bytes.
    -            RX_SIZE: u3,
    -            /// This register is used to configure the amount of mem allocated for
    -            /// transmit-FIFO. The default number is 128 bytes.
    -            TX_SIZE: u3,
    -            /// This register is used to configure the maximum amount of data that can be
    -            /// received when hardware flow control works.
    -            RX_FLOW_THRHD: u9,
    -            /// This register is used to configure the threshold time that receiver takes to
    -            /// receive one byte. The rxfifo_tout_int interrupt will be trigger when the
    -            /// receiver takes more time to receive one byte with rx_tout_en set to 1.
    -            RX_TOUT_THRHD: u10,
    -            /// Set this bit to force power down UART memory.
    -            MEM_FORCE_PD: u1,
    -            /// Set this bit to force power up UART memory.
    -            MEM_FORCE_PU: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -        }), base_address + 0x60);
    -
    -        /// address: 0x60010064
    -        /// Tx-FIFO write and read offset address.
    -        pub const MEM_TX_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the offset address in Tx-FIFO when software writes Tx-FIFO
    -            /// via APB.
    -            APB_TX_WADDR: u10,
    -            reserved0: u1,
    -            /// This register stores the offset address in Tx-FIFO when Tx-FSM reads data via
    -            /// Tx-FIFO_Ctrl.
    -            TX_RADDR: u10,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -        }), base_address + 0x64);
    -
    -        /// address: 0x60010068
    -        /// Rx-FIFO write and read offset address.
    -        pub const MEM_RX_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the offset address in RX-FIFO when software reads data from
    -            /// Rx-FIFO via APB. UART0 is 10'h100. UART1 is 10'h180.
    -            APB_RX_RADDR: u10,
    -            reserved0: u1,
    -            /// This register stores the offset address in Rx-FIFO when Rx-FIFO_Ctrl writes
    -            /// Rx-FIFO. UART0 is 10'h100. UART1 is 10'h180.
    -            RX_WADDR: u10,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -        }), base_address + 0x68);
    -
    -        /// address: 0x6001006c
    -        /// UART transmit and receive status.
    -        pub const FSM_STATUS = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This is the status register of receiver.
    -            ST_URX_OUT: u4,
    -            /// This is the status register of transmitter.
    -            ST_UTX_OUT: u4,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x6c);
    -
    -        /// address: 0x60010070
    -        /// Autobaud high pulse register
    -        pub const POSPULSE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the minimal input clock count between two positive edges.
    -            /// It is used in boudrate-detect process.
    -            POSEDGE_MIN_CNT: u12,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0x70);
    -
    -        /// address: 0x60010074
    -        /// Autobaud low pulse register
    -        pub const NEGPULSE = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register stores the minimal input clock count between two negative edges.
    -            /// It is used in boudrate-detect process.
    -            NEGEDGE_MIN_CNT: u12,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0x74);
    -
    -        /// address: 0x60010078
    -        /// UART core clock configuration
    -        pub const CLK_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The denominator of the frequency divider factor.
    -            SCLK_DIV_B: u6,
    -            /// The numerator of the frequency divider factor.
    -            SCLK_DIV_A: u6,
    -            /// The integral part of the frequency divider factor.
    -            SCLK_DIV_NUM: u8,
    -            /// UART clock source select. 1: 80Mhz, 2: 8Mhz, 3: XTAL.
    -            SCLK_SEL: u2,
    -            /// Set this bit to enable UART Tx/Rx clock.
    -            SCLK_EN: u1,
    -            /// Write 1 then write 0 to this bit, reset UART Tx/Rx.
    -            RST_CORE: u1,
    -            /// Set this bit to enable UART Tx clock.
    -            TX_SCLK_EN: u1,
    -            /// Set this bit to enable UART Rx clock.
    -            RX_SCLK_EN: u1,
    -            /// Write 1 then write 0 to this bit, reset UART Tx.
    -            TX_RST_CORE: u1,
    -            /// Write 1 then write 0 to this bit, reset UART Rx.
    -            RX_RST_CORE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -        }), base_address + 0x78);
    -
    -        /// address: 0x6001007c
    -        /// UART Version register
    -        pub const DATE = @intToPtr(*volatile u32, base_address + 0x7c);
    -
    -        /// address: 0x60010080
    -        /// UART ID register
    -        pub const ID = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// This register is used to configure the uart_id.
    -            ID: u30,
    -            /// This bit used to select synchronize mode. 1: Registers are auto synchronized
    -            /// into UART Core clock and UART core should be keep the same with APB clock. 0:
    -            /// After configure registers, software needs to write 1 to UART_REG_UPDATE to
    -            /// synchronize registers.
    -            HIGH_SPEED: u1,
    -            /// Software write 1 would synchronize registers into UART Core clock domain and
    -            /// would be cleared by hardware after synchronization is done.
    -            REG_UPDATE: u1,
    -        }), base_address + 0x80);
    -    };
    -
    -    /// Universal Host Controller Interface
    -    pub const UHCI0 = struct {
    -        pub const base_address = 0x60014000;
    -
    -        /// address: 0x60014000
    -        /// a
    -        pub const CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Write 1, then write 0 to this bit to reset decode state machine.
    -            TX_RST: u1,
    -            /// Write 1, then write 0 to this bit to reset encode state machine.
    -            RX_RST: u1,
    -            /// Set this bit to link up HCI and UART0.
    -            UART0_CE: u1,
    -            /// Set this bit to link up HCI and UART1.
    -            UART1_CE: u1,
    -            reserved0: u1,
    -            /// Set this bit to separate the data frame using a special char.
    -            SEPER_EN: u1,
    -            /// Set this bit to encode the data packet with a formatting header.
    -            HEAD_EN: u1,
    -            /// Set this bit to enable UHCI to receive the 16 bit CRC.
    -            CRC_REC_EN: u1,
    -            /// If this bit is set to 1, UHCI will end the payload receiving process when UART
    -            /// has been in idle state.
    -            UART_IDLE_EOF_EN: u1,
    -            /// If this bit is set to 1, UHCI decoder receiving payload data is end when the
    -            /// receiving byte count has reached the specified value. The value is payload
    -            /// length indicated by UHCI packet header when UHCI_HEAD_EN is 1 or the value is
    -            /// configuration value when UHCI_HEAD_EN is 0. If this bit is set to 0, UHCI
    -            /// decoder receiving payload data is end when 0xc0 is received.
    -            LEN_EOF_EN: u1,
    -            /// Set this bit to enable data integrity checking by appending a 16 bit CCITT-CRC
    -            /// to end of the payload.
    -            ENCODE_CRC_EN: u1,
    -            /// 1'b1: Force clock on for register. 1'b0: Support clock only when application
    -            /// writes registers.
    -            CLK_EN: u1,
    -            /// If this bit is set to 1, UHCI will end payload receive process when NULL frame
    -            /// is received by UART.
    -            UART_RX_BRK_EOF_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x0);
    -
    -        /// address: 0x60014004
    -        /// a
    -        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            RX_START_INT_RAW: u1,
    -            /// a
    -            TX_START_INT_RAW: u1,
    -            /// a
    -            RX_HUNG_INT_RAW: u1,
    -            /// a
    -            TX_HUNG_INT_RAW: u1,
    -            /// a
    -            SEND_S_REG_Q_INT_RAW: u1,
    -            /// a
    -            SEND_A_REG_Q_INT_RAW: u1,
    -            /// This is the interrupt raw bit. Triggered when there are some errors in EOF in
    -            /// the
    -            OUT_EOF_INT_RAW: u1,
    -            /// Soft control int raw bit.
    -            APP_CTRL0_INT_RAW: u1,
    -            /// Soft control int raw bit.
    -            APP_CTRL1_INT_RAW: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x60014008
    -        /// a
    -        pub const INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            RX_START_INT_ST: u1,
    -            /// a
    -            TX_START_INT_ST: u1,
    -            /// a
    -            RX_HUNG_INT_ST: u1,
    -            /// a
    -            TX_HUNG_INT_ST: u1,
    -            /// a
    -            SEND_S_REG_Q_INT_ST: u1,
    -            /// a
    -            SEND_A_REG_Q_INT_ST: u1,
    -            /// a
    -            OUTLINK_EOF_ERR_INT_ST: u1,
    -            /// a
    -            APP_CTRL0_INT_ST: u1,
    -            /// a
    -            APP_CTRL1_INT_ST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x6001400c
    -        /// a
    -        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            RX_START_INT_ENA: u1,
    -            /// a
    -            TX_START_INT_ENA: u1,
    -            /// a
    -            RX_HUNG_INT_ENA: u1,
    -            /// a
    -            TX_HUNG_INT_ENA: u1,
    -            /// a
    -            SEND_S_REG_Q_INT_ENA: u1,
    -            /// a
    -            SEND_A_REG_Q_INT_ENA: u1,
    -            /// a
    -            OUTLINK_EOF_ERR_INT_ENA: u1,
    -            /// a
    -            APP_CTRL0_INT_ENA: u1,
    -            /// a
    -            APP_CTRL1_INT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x60014010
    -        /// a
    -        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            RX_START_INT_CLR: u1,
    -            /// a
    -            TX_START_INT_CLR: u1,
    -            /// a
    -            RX_HUNG_INT_CLR: u1,
    -            /// a
    -            TX_HUNG_INT_CLR: u1,
    -            /// a
    -            SEND_S_REG_Q_INT_CLR: u1,
    -            /// a
    -            SEND_A_REG_Q_INT_CLR: u1,
    -            /// a
    -            OUTLINK_EOF_ERR_INT_CLR: u1,
    -            /// a
    -            APP_CTRL0_INT_CLR: u1,
    -            /// a
    -            APP_CTRL1_INT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0x10);
    -
    -        /// address: 0x60014014
    -        /// a
    -        pub const CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            CHECK_SUM_EN: u1,
    -            /// a
    -            CHECK_SEQ_EN: u1,
    -            /// a
    -            CRC_DISABLE: u1,
    -            /// a
    -            SAVE_HEAD: u1,
    -            /// a
    -            TX_CHECK_SUM_RE: u1,
    -            /// a
    -            TX_ACK_NUM_RE: u1,
    -            reserved0: u1,
    -            /// a
    -            WAIT_SW_START: u1,
    -            /// a
    -            SW_START: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0x14);
    -
    -        /// address: 0x60014018
    -        /// a
    -        pub const STATE0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            RX_ERR_CAUSE: u3,
    -            /// a
    -            DECODE_STATE: u3,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x6001401c
    -        /// a
    -        pub const STATE1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            ENCODE_STATE: u3,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x60014020
    -        /// a
    -        pub const ESCAPE_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            TX_C0_ESC_EN: u1,
    -            /// a
    -            TX_DB_ESC_EN: u1,
    -            /// a
    -            TX_11_ESC_EN: u1,
    -            /// a
    -            TX_13_ESC_EN: u1,
    -            /// a
    -            RX_C0_ESC_EN: u1,
    -            /// a
    -            RX_DB_ESC_EN: u1,
    -            /// a
    -            RX_11_ESC_EN: u1,
    -            /// a
    -            RX_13_ESC_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x20);
    -
    -        /// address: 0x60014024
    -        /// a
    -        pub const HUNG_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            TXFIFO_TIMEOUT: u8,
    -            /// a
    -            TXFIFO_TIMEOUT_SHIFT: u3,
    -            /// a
    -            TXFIFO_TIMEOUT_ENA: u1,
    -            /// a
    -            RXFIFO_TIMEOUT: u8,
    -            /// a
    -            RXFIFO_TIMEOUT_SHIFT: u3,
    -            /// a
    -            RXFIFO_TIMEOUT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -        }), base_address + 0x24);
    -
    -        /// address: 0x60014028
    -        /// a
    -        pub const ACK_NUM = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            ACK_NUM: u3,
    -            /// a
    -            LOAD: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x28);
    -
    -        /// address: 0x6001402c
    -        /// a
    -        pub const RX_HEAD = @intToPtr(*volatile u32, base_address + 0x2c);
    -
    -        /// address: 0x60014030
    -        /// a
    -        pub const QUICK_SENT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SINGLE_SEND_NUM: u3,
    -            /// a
    -            SINGLE_SEND_EN: u1,
    -            /// a
    -            ALWAYS_SEND_NUM: u3,
    -            /// a
    -            ALWAYS_SEND_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x30);
    -
    -        /// address: 0x60014034
    -        /// a
    -        pub const REG_Q0_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q0_WORD0: u32,
    -        }), base_address + 0x34);
    -
    -        /// address: 0x60014038
    -        /// a
    -        pub const REG_Q0_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q0_WORD1: u32,
    -        }), base_address + 0x38);
    -
    -        /// address: 0x6001403c
    -        /// a
    -        pub const REG_Q1_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q1_WORD0: u32,
    -        }), base_address + 0x3c);
    -
    -        /// address: 0x60014040
    -        /// a
    -        pub const REG_Q1_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q1_WORD1: u32,
    -        }), base_address + 0x40);
    -
    -        /// address: 0x60014044
    -        /// a
    -        pub const REG_Q2_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q2_WORD0: u32,
    -        }), base_address + 0x44);
    -
    -        /// address: 0x60014048
    -        /// a
    -        pub const REG_Q2_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q2_WORD1: u32,
    -        }), base_address + 0x48);
    -
    -        /// address: 0x6001404c
    -        /// a
    -        pub const REG_Q3_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q3_WORD0: u32,
    -        }), base_address + 0x4c);
    -
    -        /// address: 0x60014050
    -        /// a
    -        pub const REG_Q3_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q3_WORD1: u32,
    -        }), base_address + 0x50);
    -
    -        /// address: 0x60014054
    -        /// a
    -        pub const REG_Q4_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q4_WORD0: u32,
    -        }), base_address + 0x54);
    -
    -        /// address: 0x60014058
    -        /// a
    -        pub const REG_Q4_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q4_WORD1: u32,
    -        }), base_address + 0x58);
    -
    -        /// address: 0x6001405c
    -        /// a
    -        pub const REG_Q5_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q5_WORD0: u32,
    -        }), base_address + 0x5c);
    -
    -        /// address: 0x60014060
    -        /// a
    -        pub const REG_Q5_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q5_WORD1: u32,
    -        }), base_address + 0x60);
    -
    -        /// address: 0x60014064
    -        /// a
    -        pub const REG_Q6_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q6_WORD0: u32,
    -        }), base_address + 0x64);
    -
    -        /// address: 0x60014068
    -        /// a
    -        pub const REG_Q6_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q6_WORD1: u32,
    -        }), base_address + 0x68);
    -
    -        /// address: 0x6001406c
    -        /// a
    -        pub const ESC_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEPER_CHAR: u8,
    -            /// a
    -            SEPER_ESC_CHAR0: u8,
    -            /// a
    -            SEPER_ESC_CHAR1: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -        }), base_address + 0x6c);
    -
    -        /// address: 0x60014070
    -        /// a
    -        pub const ESC_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            ESC_SEQ0: u8,
    -            /// a
    -            ESC_SEQ0_CHAR0: u8,
    -            /// a
    -            ESC_SEQ0_CHAR1: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -        }), base_address + 0x70);
    -
    -        /// address: 0x60014074
    -        /// a
    -        pub const ESC_CONF2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            ESC_SEQ1: u8,
    -            /// a
    -            ESC_SEQ1_CHAR0: u8,
    -            /// a
    -            ESC_SEQ1_CHAR1: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -        }), base_address + 0x74);
    -
    -        /// address: 0x60014078
    -        /// a
    -        pub const ESC_CONF3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            ESC_SEQ2: u8,
    -            /// a
    -            ESC_SEQ2_CHAR0: u8,
    -            /// a
    -            ESC_SEQ2_CHAR1: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -        }), base_address + 0x78);
    -
    -        /// address: 0x6001407c
    -        /// a
    -        pub const PKT_THRES = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            PKT_THRS: u13,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x7c);
    -
    -        /// address: 0x60014080
    -        /// a
    -        pub const DATE = @intToPtr(*volatile u32, base_address + 0x80);
    -    };
    -
    -    /// Universal Host Controller Interface
    -    pub const UHCI1 = struct {
    -        pub const base_address = 0x6000c000;
    -
    -        /// address: 0x6000c000
    -        /// a
    -        pub const CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Write 1, then write 0 to this bit to reset decode state machine.
    -            TX_RST: u1,
    -            /// Write 1, then write 0 to this bit to reset encode state machine.
    -            RX_RST: u1,
    -            /// Set this bit to link up HCI and UART0.
    -            UART0_CE: u1,
    -            /// Set this bit to link up HCI and UART1.
    -            UART1_CE: u1,
    -            reserved0: u1,
    -            /// Set this bit to separate the data frame using a special char.
    -            SEPER_EN: u1,
    -            /// Set this bit to encode the data packet with a formatting header.
    -            HEAD_EN: u1,
    -            /// Set this bit to enable UHCI to receive the 16 bit CRC.
    -            CRC_REC_EN: u1,
    -            /// If this bit is set to 1, UHCI will end the payload receiving process when UART
    -            /// has been in idle state.
    -            UART_IDLE_EOF_EN: u1,
    -            /// If this bit is set to 1, UHCI decoder receiving payload data is end when the
    -            /// receiving byte count has reached the specified value. The value is payload
    -            /// length indicated by UHCI packet header when UHCI_HEAD_EN is 1 or the value is
    -            /// configuration value when UHCI_HEAD_EN is 0. If this bit is set to 0, UHCI
    -            /// decoder receiving payload data is end when 0xc0 is received.
    -            LEN_EOF_EN: u1,
    -            /// Set this bit to enable data integrity checking by appending a 16 bit CCITT-CRC
    -            /// to end of the payload.
    -            ENCODE_CRC_EN: u1,
    -            /// 1'b1: Force clock on for register. 1'b0: Support clock only when application
    -            /// writes registers.
    -            CLK_EN: u1,
    -            /// If this bit is set to 1, UHCI will end payload receive process when NULL frame
    -            /// is received by UART.
    -            UART_RX_BRK_EOF_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x0);
    -
    -        /// address: 0x6000c004
    -        /// a
    -        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            RX_START_INT_RAW: u1,
    -            /// a
    -            TX_START_INT_RAW: u1,
    -            /// a
    -            RX_HUNG_INT_RAW: u1,
    -            /// a
    -            TX_HUNG_INT_RAW: u1,
    -            /// a
    -            SEND_S_REG_Q_INT_RAW: u1,
    -            /// a
    -            SEND_A_REG_Q_INT_RAW: u1,
    -            /// This is the interrupt raw bit. Triggered when there are some errors in EOF in
    -            /// the
    -            OUT_EOF_INT_RAW: u1,
    -            /// Soft control int raw bit.
    -            APP_CTRL0_INT_RAW: u1,
    -            /// Soft control int raw bit.
    -            APP_CTRL1_INT_RAW: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x6000c008
    -        /// a
    -        pub const INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            RX_START_INT_ST: u1,
    -            /// a
    -            TX_START_INT_ST: u1,
    -            /// a
    -            RX_HUNG_INT_ST: u1,
    -            /// a
    -            TX_HUNG_INT_ST: u1,
    -            /// a
    -            SEND_S_REG_Q_INT_ST: u1,
    -            /// a
    -            SEND_A_REG_Q_INT_ST: u1,
    -            /// a
    -            OUTLINK_EOF_ERR_INT_ST: u1,
    -            /// a
    -            APP_CTRL0_INT_ST: u1,
    -            /// a
    -            APP_CTRL1_INT_ST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x6000c00c
    -        /// a
    -        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            RX_START_INT_ENA: u1,
    -            /// a
    -            TX_START_INT_ENA: u1,
    -            /// a
    -            RX_HUNG_INT_ENA: u1,
    -            /// a
    -            TX_HUNG_INT_ENA: u1,
    -            /// a
    -            SEND_S_REG_Q_INT_ENA: u1,
    -            /// a
    -            SEND_A_REG_Q_INT_ENA: u1,
    -            /// a
    -            OUTLINK_EOF_ERR_INT_ENA: u1,
    -            /// a
    -            APP_CTRL0_INT_ENA: u1,
    -            /// a
    -            APP_CTRL1_INT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x6000c010
    -        /// a
    -        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            RX_START_INT_CLR: u1,
    -            /// a
    -            TX_START_INT_CLR: u1,
    -            /// a
    -            RX_HUNG_INT_CLR: u1,
    -            /// a
    -            TX_HUNG_INT_CLR: u1,
    -            /// a
    -            SEND_S_REG_Q_INT_CLR: u1,
    -            /// a
    -            SEND_A_REG_Q_INT_CLR: u1,
    -            /// a
    -            OUTLINK_EOF_ERR_INT_CLR: u1,
    -            /// a
    -            APP_CTRL0_INT_CLR: u1,
    -            /// a
    -            APP_CTRL1_INT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0x10);
    -
    -        /// address: 0x6000c014
    -        /// a
    -        pub const CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            CHECK_SUM_EN: u1,
    -            /// a
    -            CHECK_SEQ_EN: u1,
    -            /// a
    -            CRC_DISABLE: u1,
    -            /// a
    -            SAVE_HEAD: u1,
    -            /// a
    -            TX_CHECK_SUM_RE: u1,
    -            /// a
    -            TX_ACK_NUM_RE: u1,
    -            reserved0: u1,
    -            /// a
    -            WAIT_SW_START: u1,
    -            /// a
    -            SW_START: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -        }), base_address + 0x14);
    -
    -        /// address: 0x6000c018
    -        /// a
    -        pub const STATE0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            RX_ERR_CAUSE: u3,
    -            /// a
    -            DECODE_STATE: u3,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x6000c01c
    -        /// a
    -        pub const STATE1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            ENCODE_STATE: u3,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x6000c020
    -        /// a
    -        pub const ESCAPE_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            TX_C0_ESC_EN: u1,
    -            /// a
    -            TX_DB_ESC_EN: u1,
    -            /// a
    -            TX_11_ESC_EN: u1,
    -            /// a
    -            TX_13_ESC_EN: u1,
    -            /// a
    -            RX_C0_ESC_EN: u1,
    -            /// a
    -            RX_DB_ESC_EN: u1,
    -            /// a
    -            RX_11_ESC_EN: u1,
    -            /// a
    -            RX_13_ESC_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x20);
    -
    -        /// address: 0x6000c024
    -        /// a
    -        pub const HUNG_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            TXFIFO_TIMEOUT: u8,
    -            /// a
    -            TXFIFO_TIMEOUT_SHIFT: u3,
    -            /// a
    -            TXFIFO_TIMEOUT_ENA: u1,
    -            /// a
    -            RXFIFO_TIMEOUT: u8,
    -            /// a
    -            RXFIFO_TIMEOUT_SHIFT: u3,
    -            /// a
    -            RXFIFO_TIMEOUT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -        }), base_address + 0x24);
    -
    -        /// address: 0x6000c028
    -        /// a
    -        pub const ACK_NUM = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            ACK_NUM: u3,
    -            /// a
    -            LOAD: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x28);
    -
    -        /// address: 0x6000c02c
    -        /// a
    -        pub const RX_HEAD = @intToPtr(*volatile u32, base_address + 0x2c);
    -
    -        /// address: 0x6000c030
    -        /// a
    -        pub const QUICK_SENT = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SINGLE_SEND_NUM: u3,
    -            /// a
    -            SINGLE_SEND_EN: u1,
    -            /// a
    -            ALWAYS_SEND_NUM: u3,
    -            /// a
    -            ALWAYS_SEND_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x30);
    -
    -        /// address: 0x6000c034
    -        /// a
    -        pub const REG_Q0_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q0_WORD0: u32,
    -        }), base_address + 0x34);
    -
    -        /// address: 0x6000c038
    -        /// a
    -        pub const REG_Q0_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q0_WORD1: u32,
    -        }), base_address + 0x38);
    -
    -        /// address: 0x6000c03c
    -        /// a
    -        pub const REG_Q1_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q1_WORD0: u32,
    -        }), base_address + 0x3c);
    -
    -        /// address: 0x6000c040
    -        /// a
    -        pub const REG_Q1_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q1_WORD1: u32,
    -        }), base_address + 0x40);
    -
    -        /// address: 0x6000c044
    -        /// a
    -        pub const REG_Q2_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q2_WORD0: u32,
    -        }), base_address + 0x44);
    -
    -        /// address: 0x6000c048
    -        /// a
    -        pub const REG_Q2_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q2_WORD1: u32,
    -        }), base_address + 0x48);
    -
    -        /// address: 0x6000c04c
    -        /// a
    -        pub const REG_Q3_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q3_WORD0: u32,
    -        }), base_address + 0x4c);
    -
    -        /// address: 0x6000c050
    -        /// a
    -        pub const REG_Q3_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q3_WORD1: u32,
    -        }), base_address + 0x50);
    -
    -        /// address: 0x6000c054
    -        /// a
    -        pub const REG_Q4_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q4_WORD0: u32,
    -        }), base_address + 0x54);
    -
    -        /// address: 0x6000c058
    -        /// a
    -        pub const REG_Q4_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q4_WORD1: u32,
    -        }), base_address + 0x58);
    -
    -        /// address: 0x6000c05c
    -        /// a
    -        pub const REG_Q5_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q5_WORD0: u32,
    -        }), base_address + 0x5c);
    -
    -        /// address: 0x6000c060
    -        /// a
    -        pub const REG_Q5_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q5_WORD1: u32,
    -        }), base_address + 0x60);
    -
    -        /// address: 0x6000c064
    -        /// a
    -        pub const REG_Q6_WORD0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q6_WORD0: u32,
    -        }), base_address + 0x64);
    -
    -        /// address: 0x6000c068
    -        /// a
    -        pub const REG_Q6_WORD1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEND_Q6_WORD1: u32,
    -        }), base_address + 0x68);
    -
    -        /// address: 0x6000c06c
    -        /// a
    -        pub const ESC_CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            SEPER_CHAR: u8,
    -            /// a
    -            SEPER_ESC_CHAR0: u8,
    -            /// a
    -            SEPER_ESC_CHAR1: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -        }), base_address + 0x6c);
    -
    -        /// address: 0x6000c070
    -        /// a
    -        pub const ESC_CONF1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            ESC_SEQ0: u8,
    -            /// a
    -            ESC_SEQ0_CHAR0: u8,
    -            /// a
    -            ESC_SEQ0_CHAR1: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -        }), base_address + 0x70);
    -
    -        /// address: 0x6000c074
    -        /// a
    -        pub const ESC_CONF2 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            ESC_SEQ1: u8,
    -            /// a
    -            ESC_SEQ1_CHAR0: u8,
    -            /// a
    -            ESC_SEQ1_CHAR1: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -        }), base_address + 0x74);
    -
    -        /// address: 0x6000c078
    -        /// a
    -        pub const ESC_CONF3 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            ESC_SEQ2: u8,
    -            /// a
    -            ESC_SEQ2_CHAR0: u8,
    -            /// a
    -            ESC_SEQ2_CHAR1: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -        }), base_address + 0x78);
    -
    -        /// address: 0x6000c07c
    -        /// a
    -        pub const PKT_THRES = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// a
    -            PKT_THRS: u13,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -        }), base_address + 0x7c);
    -
    -        /// address: 0x6000c080
    -        /// a
    -        pub const DATE = @intToPtr(*volatile u32, base_address + 0x80);
    -    };
    -
    -    /// Full-speed USB Serial/JTAG Controller
    -    pub const USB_DEVICE = struct {
    -        pub const base_address = 0x60043000;
    -
    -        /// address: 0x60043000
    -        /// USB_DEVICE_EP1_REG.
    -        pub const EP1 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Write and read byte data to/from UART Tx/Rx FIFO through this field. When
    -            /// USB_DEVICE_SERIAL_IN_EMPTY_INT is set, then user can write data (up to 64 bytes)
    -            /// into UART Tx FIFO. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is set, user can
    -            /// check USB_DEVICE_OUT_EP1_WR_ADDR USB_DEVICE_OUT_EP0_RD_ADDR to know how many
    -            /// data is received, then read data from UART Rx FIFO.
    -            RDWR_BYTE: u8,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -        }), base_address + 0x0);
    -
    -        /// address: 0x60043004
    -        /// USB_DEVICE_EP1_CONF_REG.
    -        pub const EP1_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set this bit to indicate writing byte data to UART Tx FIFO is done.
    -            WR_DONE: u1,
    -            /// 1'b1: Indicate UART Tx FIFO is not full and can write data into in. After
    -            /// writing USB_DEVICE_WR_DONE, this bit would be 0 until data in UART Tx FIFO is
    -            /// read by USB Host.
    -            SERIAL_IN_EP_DATA_FREE: u1,
    -            /// 1'b1: Indicate there is data in UART Rx FIFO.
    -            SERIAL_OUT_EP_DATA_AVAIL: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -        }), base_address + 0x4);
    -
    -        /// address: 0x60043008
    -        /// USB_DEVICE_INT_RAW_REG.
    -        pub const INT_RAW = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The raw interrupt bit turns to high level when flush cmd is received for IN
    -            /// endpoint 2 of JTAG.
    -            JTAG_IN_FLUSH_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when SOF frame is received.
    -            SOF_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when Serial Port OUT Endpoint received
    -            /// one packet.
    -            SERIAL_OUT_RECV_PKT_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when Serial Port IN Endpoint is empty.
    -            SERIAL_IN_EMPTY_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when pid error is detected.
    -            PID_ERR_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when CRC5 error is detected.
    -            CRC5_ERR_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when CRC16 error is detected.
    -            CRC16_ERR_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when stuff error is detected.
    -            STUFF_ERR_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when IN token for IN endpoint 1 is
    -            /// received.
    -            IN_TOKEN_REC_IN_EP1_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when usb bus reset is detected.
    -            USB_BUS_RESET_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when OUT endpoint 1 received packet
    -            /// with zero palyload.
    -            OUT_EP1_ZERO_PAYLOAD_INT_RAW: u1,
    -            /// The raw interrupt bit turns to high level when OUT endpoint 2 received packet
    -            /// with zero palyload.
    -            OUT_EP2_ZERO_PAYLOAD_INT_RAW: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0x8);
    -
    -        /// address: 0x6004300c
    -        /// USB_DEVICE_INT_ST_REG.
    -        pub const INT_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The raw interrupt status bit for the USB_DEVICE_JTAG_IN_FLUSH_INT interrupt.
    -            JTAG_IN_FLUSH_INT_ST: u1,
    -            /// The raw interrupt status bit for the USB_DEVICE_SOF_INT interrupt.
    -            SOF_INT_ST: u1,
    -            /// The raw interrupt status bit for the USB_DEVICE_SERIAL_OUT_RECV_PKT_INT
    -            /// interrupt.
    -            SERIAL_OUT_RECV_PKT_INT_ST: u1,
    -            /// The raw interrupt status bit for the USB_DEVICE_SERIAL_IN_EMPTY_INT interrupt.
    -            SERIAL_IN_EMPTY_INT_ST: u1,
    -            /// The raw interrupt status bit for the USB_DEVICE_PID_ERR_INT interrupt.
    -            PID_ERR_INT_ST: u1,
    -            /// The raw interrupt status bit for the USB_DEVICE_CRC5_ERR_INT interrupt.
    -            CRC5_ERR_INT_ST: u1,
    -            /// The raw interrupt status bit for the USB_DEVICE_CRC16_ERR_INT interrupt.
    -            CRC16_ERR_INT_ST: u1,
    -            /// The raw interrupt status bit for the USB_DEVICE_STUFF_ERR_INT interrupt.
    -            STUFF_ERR_INT_ST: u1,
    -            /// The raw interrupt status bit for the USB_DEVICE_IN_TOKEN_REC_IN_EP1_INT
    -            /// interrupt.
    -            IN_TOKEN_REC_IN_EP1_INT_ST: u1,
    -            /// The raw interrupt status bit for the USB_DEVICE_USB_BUS_RESET_INT interrupt.
    -            USB_BUS_RESET_INT_ST: u1,
    -            /// The raw interrupt status bit for the USB_DEVICE_OUT_EP1_ZERO_PAYLOAD_INT
    -            /// interrupt.
    -            OUT_EP1_ZERO_PAYLOAD_INT_ST: u1,
    -            /// The raw interrupt status bit for the USB_DEVICE_OUT_EP2_ZERO_PAYLOAD_INT
    -            /// interrupt.
    -            OUT_EP2_ZERO_PAYLOAD_INT_ST: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0xc);
    -
    -        /// address: 0x60043010
    -        /// USB_DEVICE_INT_ENA_REG.
    -        pub const INT_ENA = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// The interrupt enable bit for the USB_DEVICE_JTAG_IN_FLUSH_INT interrupt.
    -            JTAG_IN_FLUSH_INT_ENA: u1,
    -            /// The interrupt enable bit for the USB_DEVICE_SOF_INT interrupt.
    -            SOF_INT_ENA: u1,
    -            /// The interrupt enable bit for the USB_DEVICE_SERIAL_OUT_RECV_PKT_INT interrupt.
    -            SERIAL_OUT_RECV_PKT_INT_ENA: u1,
    -            /// The interrupt enable bit for the USB_DEVICE_SERIAL_IN_EMPTY_INT interrupt.
    -            SERIAL_IN_EMPTY_INT_ENA: u1,
    -            /// The interrupt enable bit for the USB_DEVICE_PID_ERR_INT interrupt.
    -            PID_ERR_INT_ENA: u1,
    -            /// The interrupt enable bit for the USB_DEVICE_CRC5_ERR_INT interrupt.
    -            CRC5_ERR_INT_ENA: u1,
    -            /// The interrupt enable bit for the USB_DEVICE_CRC16_ERR_INT interrupt.
    -            CRC16_ERR_INT_ENA: u1,
    -            /// The interrupt enable bit for the USB_DEVICE_STUFF_ERR_INT interrupt.
    -            STUFF_ERR_INT_ENA: u1,
    -            /// The interrupt enable bit for the USB_DEVICE_IN_TOKEN_REC_IN_EP1_INT interrupt.
    -            IN_TOKEN_REC_IN_EP1_INT_ENA: u1,
    -            /// The interrupt enable bit for the USB_DEVICE_USB_BUS_RESET_INT interrupt.
    -            USB_BUS_RESET_INT_ENA: u1,
    -            /// The interrupt enable bit for the USB_DEVICE_OUT_EP1_ZERO_PAYLOAD_INT interrupt.
    -            OUT_EP1_ZERO_PAYLOAD_INT_ENA: u1,
    -            /// The interrupt enable bit for the USB_DEVICE_OUT_EP2_ZERO_PAYLOAD_INT interrupt.
    -            OUT_EP2_ZERO_PAYLOAD_INT_ENA: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0x10);
    -
    -        /// address: 0x60043014
    -        /// USB_DEVICE_INT_CLR_REG.
    -        pub const INT_CLR = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Set this bit to clear the USB_DEVICE_JTAG_IN_FLUSH_INT interrupt.
    -            JTAG_IN_FLUSH_INT_CLR: u1,
    -            /// Set this bit to clear the USB_DEVICE_JTAG_SOF_INT interrupt.
    -            SOF_INT_CLR: u1,
    -            /// Set this bit to clear the USB_DEVICE_SERIAL_OUT_RECV_PKT_INT interrupt.
    -            SERIAL_OUT_RECV_PKT_INT_CLR: u1,
    -            /// Set this bit to clear the USB_DEVICE_SERIAL_IN_EMPTY_INT interrupt.
    -            SERIAL_IN_EMPTY_INT_CLR: u1,
    -            /// Set this bit to clear the USB_DEVICE_PID_ERR_INT interrupt.
    -            PID_ERR_INT_CLR: u1,
    -            /// Set this bit to clear the USB_DEVICE_CRC5_ERR_INT interrupt.
    -            CRC5_ERR_INT_CLR: u1,
    -            /// Set this bit to clear the USB_DEVICE_CRC16_ERR_INT interrupt.
    -            CRC16_ERR_INT_CLR: u1,
    -            /// Set this bit to clear the USB_DEVICE_STUFF_ERR_INT interrupt.
    -            STUFF_ERR_INT_CLR: u1,
    -            /// Set this bit to clear the USB_DEVICE_IN_TOKEN_IN_EP1_INT interrupt.
    -            IN_TOKEN_REC_IN_EP1_INT_CLR: u1,
    -            /// Set this bit to clear the USB_DEVICE_USB_BUS_RESET_INT interrupt.
    -            USB_BUS_RESET_INT_CLR: u1,
    -            /// Set this bit to clear the USB_DEVICE_OUT_EP1_ZERO_PAYLOAD_INT interrupt.
    -            OUT_EP1_ZERO_PAYLOAD_INT_CLR: u1,
    -            /// Set this bit to clear the USB_DEVICE_OUT_EP2_ZERO_PAYLOAD_INT interrupt.
    -            OUT_EP2_ZERO_PAYLOAD_INT_CLR: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -        }), base_address + 0x14);
    -
    -        /// address: 0x60043018
    -        /// USB_DEVICE_CONF0_REG.
    -        pub const CONF0 = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Select internal/external PHY
    -            PHY_SEL: u1,
    -            /// Enable software control USB D+ D- exchange
    -            EXCHG_PINS_OVERRIDE: u1,
    -            /// USB D+ D- exchange
    -            EXCHG_PINS: u1,
    -            /// Control single-end input high threshold,1.76V to 2V, step 80mV
    -            VREFH: u2,
    -            /// Control single-end input low threshold,0.8V to 1.04V, step 80mV
    -            VREFL: u2,
    -            /// Enable software control input threshold
    -            VREF_OVERRIDE: u1,
    -            /// Enable software control USB D+ D- pullup pulldown
    -            PAD_PULL_OVERRIDE: u1,
    -            /// Control USB D+ pull up.
    -            DP_PULLUP: u1,
    -            /// Control USB D+ pull down.
    -            DP_PULLDOWN: u1,
    -            /// Control USB D- pull up.
    -            DM_PULLUP: u1,
    -            /// Control USB D- pull down.
    -            DM_PULLDOWN: u1,
    -            /// Control pull up value.
    -            PULLUP_VALUE: u1,
    -            /// Enable USB pad function.
    -            USB_PAD_ENABLE: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -        }), base_address + 0x18);
    -
    -        /// address: 0x6004301c
    -        /// USB_DEVICE_TEST_REG.
    -        pub const TEST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Enable test of the USB pad
    -            ENABLE: u1,
    -            /// USB pad oen in test
    -            USB_OE: u1,
    -            /// USB D+ tx value in test
    -            TX_DP: u1,
    -            /// USB D- tx value in test
    -            TX_DM: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -        }), base_address + 0x1c);
    -
    -        /// address: 0x60043020
    -        /// USB_DEVICE_JFIFO_ST_REG.
    -        pub const JFIFO_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// JTAT in fifo counter.
    -            IN_FIFO_CNT: u2,
    -            /// 1: JTAG in fifo is empty.
    -            IN_FIFO_EMPTY: u1,
    -            /// 1: JTAG in fifo is full.
    -            IN_FIFO_FULL: u1,
    -            /// JTAT out fifo counter.
    -            OUT_FIFO_CNT: u2,
    -            /// 1: JTAG out fifo is empty.
    -            OUT_FIFO_EMPTY: u1,
    -            /// 1: JTAG out fifo is full.
    -            OUT_FIFO_FULL: u1,
    -            /// Write 1 to reset JTAG in fifo.
    -            IN_FIFO_RESET: u1,
    -            /// Write 1 to reset JTAG out fifo.
    -            OUT_FIFO_RESET: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -        }), base_address + 0x20);
    -
    -        /// address: 0x60043024
    -        /// USB_DEVICE_FRAM_NUM_REG.
    -        pub const FRAM_NUM = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// Frame index of received SOF frame.
    -            SOF_FRAME_INDEX: u11,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -        }), base_address + 0x24);
    -
    -        /// address: 0x60043028
    -        /// USB_DEVICE_IN_EP0_ST_REG.
    -        pub const IN_EP0_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// State of IN Endpoint 0.
    -            IN_EP0_STATE: u2,
    -            /// Write data address of IN endpoint 0.
    -            IN_EP0_WR_ADDR: u7,
    -            /// Read data address of IN endpoint 0.
    -            IN_EP0_RD_ADDR: u7,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x28);
    -
    -        /// address: 0x6004302c
    -        /// USB_DEVICE_IN_EP1_ST_REG.
    -        pub const IN_EP1_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// State of IN Endpoint 1.
    -            IN_EP1_STATE: u2,
    -            /// Write data address of IN endpoint 1.
    -            IN_EP1_WR_ADDR: u7,
    -            /// Read data address of IN endpoint 1.
    -            IN_EP1_RD_ADDR: u7,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x2c);
    -
    -        /// address: 0x60043030
    -        /// USB_DEVICE_IN_EP2_ST_REG.
    -        pub const IN_EP2_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// State of IN Endpoint 2.
    -            IN_EP2_STATE: u2,
    -            /// Write data address of IN endpoint 2.
    -            IN_EP2_WR_ADDR: u7,
    -            /// Read data address of IN endpoint 2.
    -            IN_EP2_RD_ADDR: u7,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x30);
    -
    -        /// address: 0x60043034
    -        /// USB_DEVICE_IN_EP3_ST_REG.
    -        pub const IN_EP3_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// State of IN Endpoint 3.
    -            IN_EP3_STATE: u2,
    -            /// Write data address of IN endpoint 3.
    -            IN_EP3_WR_ADDR: u7,
    -            /// Read data address of IN endpoint 3.
    -            IN_EP3_RD_ADDR: u7,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x34);
    -
    -        /// address: 0x60043038
    -        /// USB_DEVICE_OUT_EP0_ST_REG.
    -        pub const OUT_EP0_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// State of OUT Endpoint 0.
    -            OUT_EP0_STATE: u2,
    -            /// Write data address of OUT endpoint 0. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is
    -            /// detected, there are USB_DEVICE_OUT_EP0_WR_ADDR-2 bytes data in OUT EP0.
    -            OUT_EP0_WR_ADDR: u7,
    -            /// Read data address of OUT endpoint 0.
    -            OUT_EP0_RD_ADDR: u7,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x38);
    -
    -        /// address: 0x6004303c
    -        /// USB_DEVICE_OUT_EP1_ST_REG.
    -        pub const OUT_EP1_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// State of OUT Endpoint 1.
    -            OUT_EP1_STATE: u2,
    -            /// Write data address of OUT endpoint 1. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is
    -            /// detected, there are USB_DEVICE_OUT_EP1_WR_ADDR-2 bytes data in OUT EP1.
    -            OUT_EP1_WR_ADDR: u7,
    -            /// Read data address of OUT endpoint 1.
    -            OUT_EP1_RD_ADDR: u7,
    -            /// Data count in OUT endpoint 1 when one packet is received.
    -            OUT_EP1_REC_DATA_CNT: u7,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -        }), base_address + 0x3c);
    -
    -        /// address: 0x60043040
    -        /// USB_DEVICE_OUT_EP2_ST_REG.
    -        pub const OUT_EP2_ST = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// State of OUT Endpoint 2.
    -            OUT_EP2_STATE: u2,
    -            /// Write data address of OUT endpoint 2. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is
    -            /// detected, there are USB_DEVICE_OUT_EP2_WR_ADDR-2 bytes data in OUT EP2.
    -            OUT_EP2_WR_ADDR: u7,
    -            /// Read data address of OUT endpoint 2.
    -            OUT_EP2_RD_ADDR: u7,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -        }), base_address + 0x40);
    -
    -        /// address: 0x60043044
    -        /// USB_DEVICE_MISC_CONF_REG.
    -        pub const MISC_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// 1'h1: Force clock on for register. 1'h0: Support clock only when application
    -            /// writes registers.
    -            CLK_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -            padding30: u1,
    -        }), base_address + 0x44);
    -
    -        /// address: 0x60043048
    -        /// USB_DEVICE_MEM_CONF_REG.
    -        pub const MEM_CONF = @intToPtr(*volatile Mmio(32, packed struct {
    -            /// 1: power down usb memory.
    -            USB_MEM_PD: u1,
    -            /// 1: Force clock on for usb memory.
    -            USB_MEM_CLK_EN: u1,
    -            padding0: u1,
    -            padding1: u1,
    -            padding2: u1,
    -            padding3: u1,
    -            padding4: u1,
    -            padding5: u1,
    -            padding6: u1,
    -            padding7: u1,
    -            padding8: u1,
    -            padding9: u1,
    -            padding10: u1,
    -            padding11: u1,
    -            padding12: u1,
    -            padding13: u1,
    -            padding14: u1,
    -            padding15: u1,
    -            padding16: u1,
    -            padding17: u1,
    -            padding18: u1,
    -            padding19: u1,
    -            padding20: u1,
    -            padding21: u1,
    -            padding22: u1,
    -            padding23: u1,
    -            padding24: u1,
    -            padding25: u1,
    -            padding26: u1,
    -            padding27: u1,
    -            padding28: u1,
    -            padding29: u1,
    -        }), base_address + 0x48);
    -
    -        /// address: 0x60043080
    -        /// USB_DEVICE_DATE_REG.
    -        pub const DATE = @intToPtr(*volatile u32, base_address + 0x80);
    -    };
    -
    -    /// XTS-AES-128 Flash Encryption
    -    pub const XTS_AES = struct {
    -        pub const base_address = 0x600cc000;
    -
    -        /// address: 0x600cc000
    -        /// The memory that stores plaintext
    -        pub const PLAIN_MEM = @intToPtr(*volatile [16]u8, base_address + 0x0);
    -
    -        /// address: 0x600cc040
    -        /// XTS-AES line-size register
    -        pub const LINESIZE = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x40);
    -
    -        /// address: 0x600cc044
    -        /// XTS-AES destination register
    -        pub const DESTINATION = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x44);
    -
    -        /// address: 0x600cc048
    -        /// XTS-AES physical address register
    -        pub const PHYSICAL_ADDRESS = @intToPtr(*volatile MmioInt(32, u30), base_address + 0x48);
    -
    -        /// address: 0x600cc04c
    -        /// XTS-AES trigger register
    -        pub const TRIGGER = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x4c);
    -
    -        /// address: 0x600cc050
    -        /// XTS-AES release register
    -        pub const RELEASE = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x50);
    -
    -        /// address: 0x600cc054
    -        /// XTS-AES destroy register
    -        pub const DESTROY = @intToPtr(*volatile MmioInt(32, u1), base_address + 0x54);
    -
    -        /// address: 0x600cc058
    -        /// XTS-AES status register
    -        pub const STATE = @intToPtr(*volatile MmioInt(32, u2), base_address + 0x58);
    -
    -        /// address: 0x600cc05c
    -        /// XTS-AES version control register
    -        pub const DATE = @intToPtr(*volatile MmioInt(32, u30), base_address + 0x5c);
    -    };
    -};
    -
    -const std = @import("std");
    -
    -pub fn mmio(addr: usize, comptime size: u8, comptime PackedT: type) *volatile Mmio(size, PackedT) {
    -    return @intToPtr(*volatile Mmio(size, PackedT), addr);
    -}
    -
    -pub fn Mmio(comptime size: u8, comptime PackedT: type) type {
    -    if ((size % 8) != 0)
    -        @compileError("size must be divisible by 8!");
    -
    -    if (!std.math.isPowerOfTwo(size / 8))
    -        @compileError("size must encode a power of two number of bytes!");
    -
    -    const IntT = std.meta.Int(.unsigned, size);
    -
    -    if (@sizeOf(PackedT) != (size / 8))
    -        @compileError(std.fmt.comptimePrint("IntT and PackedT must have the same size!, they are {} and {} bytes respectively", .{ size / 8, @sizeOf(PackedT) }));
    -
    -    return extern struct {
    -        const Self = @This();
    -
    -        raw: IntT,
    -
    -        pub const underlying_type = PackedT;
    -
    -        pub inline fn read(addr: *volatile Self) PackedT {
    -            return @bitCast(PackedT, addr.raw);
    -        }
    -
    -        pub inline fn write(addr: *volatile Self, val: PackedT) void {
    -            // This is a workaround for a compiler bug related to miscompilation
    -            // If the tmp var is not used, result location will fuck things up
    -            var tmp = @bitCast(IntT, val);
    -            addr.raw = tmp;
    -        }
    -
    -        pub inline fn modify(addr: *volatile Self, fields: anytype) void {
    -            var val = read(addr);
    -            inline for (@typeInfo(@TypeOf(fields)).Struct.fields) |field| {
    -                @field(val, field.name) = @field(fields, field.name);
    -            }
    -            write(addr, val);
    -        }
    -
    -        pub inline fn toggle(addr: *volatile Self, fields: anytype) void {
    -            var val = read(addr);
    -            inline for (@typeInfo(@TypeOf(fields)).Struct.fields) |field| {
    -                @field(val, @tagName(field.default_value.?)) = !@field(val, @tagName(field.default_value.?));
    -            }
    -            write(addr, val);
    -        }
    -    };
    -}
    -
    -pub fn MmioInt(comptime size: u8, comptime T: type) type {
    -    return extern struct {
    -        const Self = @This();
    -
    -        raw: std.meta.Int(.unsigned, size),
    -
    -        pub inline fn read(addr: *volatile Self) T {
    -            return @truncate(T, addr.raw);
    -        }
    -
    -        pub inline fn modify(addr: *volatile Self, val: T) void {
    -            const Int = std.meta.Int(.unsigned, size);
    -            const mask = ~@as(Int, (1 << @bitSizeOf(T)) - 1);
    -
    -            var tmp = addr.raw;
    -            addr.raw = (tmp & mask) | val;
    -        }
    -    };
    -}
    -
    -pub fn mmioInt(addr: usize, comptime size: usize, comptime T: type) *volatile MmioInt(size, T) {
    -    return @intToPtr(*volatile MmioInt(size, T), addr);
    -}
    -
    -pub const InterruptVector = extern union {
    -    C: fn () callconv(.C) void,
    -    Naked: fn () callconv(.Naked) void,
    -    // Interrupt is not supported on arm
    -};
    -
    -const unhandled = InterruptVector{
    -    .C = struct {
    -        fn tmp() callconv(.C) noreturn {
    -            @panic("unhandled interrupt");
    -        }
    -    }.tmp,
    -};
    
    From e92707cc11afea619a41a133515dacaac3d98230 Mon Sep 17 00:00:00 2001
    From: Matt Knight 
    Date: Sun, 19 Mar 2023 16:31:11 -0700
    Subject: [PATCH 12/29] update microzig (#7)
    
    ---
     deps/microzig | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/deps/microzig b/deps/microzig
    index 08e7d5b..6f5b726 160000
    --- a/deps/microzig
    +++ b/deps/microzig
    @@ -1 +1 @@
    -Subproject commit 08e7d5b01a8ca6a53e3892f763507f1ff3b07725
    +Subproject commit 6f5b7268f68f001144bd5ebacc0c0203a7a50fde
    
    From 6b7b7a6ec47d064bbd5ed35269c854c3ca4f9c0f Mon Sep 17 00:00:00 2001
    From: Matt Knight 
    Date: Wed, 22 Mar 2023 00:55:14 -0700
    Subject: [PATCH 13/29] update microzig (#8)
    
    Co-authored-by: mattnite 
    ---
     deps/microzig | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/deps/microzig b/deps/microzig
    index 6f5b726..dabc932 160000
    --- a/deps/microzig
    +++ b/deps/microzig
    @@ -1 +1 @@
    -Subproject commit 6f5b7268f68f001144bd5ebacc0c0203a7a50fde
    +Subproject commit dabc9325cdee394ff66e28c91803cb814954b157
    
    From 66fd9718330b4075d94d83ade1ffa774ada568c1 Mon Sep 17 00:00:00 2001
    From: Matt Knight 
    Date: Thu, 23 Mar 2023 08:27:44 -0700
    Subject: [PATCH 14/29] Update microzig (#9)
    
    * update microzig
    
    * add zig version
    
    ---------
    
    Co-authored-by: mattnite 
    ---
     README.adoc   | 4 ++++
     deps/microzig | 2 +-
     2 files changed, 5 insertions(+), 1 deletion(-)
    
    diff --git a/README.adoc b/README.adoc
    index 65801a9..9bf6631 100644
    --- a/README.adoc
    +++ b/README.adoc
    @@ -3,3 +3,7 @@
     [WIP]
     
     SVD is copied from https://github.com/esp-rs/esp-pacs
    +
    +== What version of Zig to use
    +
    +Right now we are following [master](https://ziglang.org/download/), but once 0.11.0 is released, we will be switching to the latest stable version of Zig.
    diff --git a/deps/microzig b/deps/microzig
    index dabc932..5b0176e 160000
    --- a/deps/microzig
    +++ b/deps/microzig
    @@ -1 +1 @@
    -Subproject commit dabc9325cdee394ff66e28c91803cb814954b157
    +Subproject commit 5b0176e97781a77420be309b6505dc582713a2a5
    
    From 3f5786f9386ab97d837bbf4d5c60dcdb49f0f263 Mon Sep 17 00:00:00 2001
    From: Matt Knight 
    Date: Thu, 23 Mar 2023 08:42:17 -0700
    Subject: [PATCH 15/29] Update microzig (#10)
    
    * update microzig
    
    * fix link
    
    ---------
    
    Co-authored-by: mattnite 
    ---
     README.adoc   | 2 +-
     deps/microzig | 2 +-
     2 files changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/README.adoc b/README.adoc
    index 9bf6631..4123f3c 100644
    --- a/README.adoc
    +++ b/README.adoc
    @@ -6,4 +6,4 @@ SVD is copied from https://github.com/esp-rs/esp-pacs
     
     == What version of Zig to use
     
    -Right now we are following [master](https://ziglang.org/download/), but once 0.11.0 is released, we will be switching to the latest stable version of Zig.
    +Right now we are following https://ziglang.org/download/[master], but once 0.11.0 is released, we will be switching to the latest stable version of Zig.
    diff --git a/deps/microzig b/deps/microzig
    index 5b0176e..ceaa9dd 160000
    --- a/deps/microzig
    +++ b/deps/microzig
    @@ -1 +1 @@
    -Subproject commit 5b0176e97781a77420be309b6505dc582713a2a5
    +Subproject commit ceaa9ddcb080d0687ce2109f23db7db376ac911e
    
    From 10e700b6e799589ff4a38866fb4c76fb9ca248d3 Mon Sep 17 00:00:00 2001
    From: Matt Knight 
    Date: Wed, 5 Apr 2023 17:19:22 -0700
    Subject: [PATCH 16/29] update microzig (#11)
    
    Co-authored-by: mattnite 
    ---
     deps/microzig | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/deps/microzig b/deps/microzig
    index ceaa9dd..23482a6 160000
    --- a/deps/microzig
    +++ b/deps/microzig
    @@ -1 +1 @@
    -Subproject commit ceaa9ddcb080d0687ce2109f23db7db376ac911e
    +Subproject commit 23482a6986252e0eeff54a04abc0aac8a08d25d7
    
    From 6cb89c778de67ca8abb64c31ab60ec4c34c7f943 Mon Sep 17 00:00:00 2001
    From: Matt Knight 
    Date: Thu, 13 Apr 2023 22:24:12 -0700
    Subject: [PATCH 17/29] Update microzig (#13)
    
    * update microzig
    
    * fixed build.zig
    
    ---------
    
    Co-authored-by: mattnite 
    ---
     build.zig     | 2 +-
     deps/microzig | 2 +-
     2 files changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/build.zig b/build.zig
    index f96f446..8cb289d 100644
    --- a/build.zig
    +++ b/build.zig
    @@ -15,5 +15,5 @@ pub fn build(b: *std.build.Builder) void {
             .backing = .{ .chip = chips.esp32_c3 },
             .optimize = optimize,
         });
    -    exe.install();
    +    exe.installArtifact(b);
     }
    diff --git a/deps/microzig b/deps/microzig
    index 23482a6..ae6e619 160000
    --- a/deps/microzig
    +++ b/deps/microzig
    @@ -1 +1 @@
    -Subproject commit 23482a6986252e0eeff54a04abc0aac8a08d25d7
    +Subproject commit ae6e619197f5db4be18a4b8cf7bf4d1bde9e7763
    
    From c9ff9fcc404ee7121196279416d357689a7e1228 Mon Sep 17 00:00:00 2001
    From: Matt Knight 
    Date: Sun, 23 Apr 2023 11:56:42 -0700
    Subject: [PATCH 18/29] update microzig (#15)
    
    ---
     deps/microzig | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/deps/microzig b/deps/microzig
    index ae6e619..dd491cc 160000
    --- a/deps/microzig
    +++ b/deps/microzig
    @@ -1 +1 @@
    -Subproject commit ae6e619197f5db4be18a4b8cf7bf4d1bde9e7763
    +Subproject commit dd491cc84fe034cb07f5b6cc6aa486d97e0ef7ab
    
    From 5e5e11c80fb754e985c03a4e1051b674bb5f3177 Mon Sep 17 00:00:00 2001
    From: Matt Knight 
    Date: Tue, 25 Apr 2023 23:41:00 -0700
    Subject: [PATCH 19/29] update microzig (#16)
    
    Co-authored-by: mattnite 
    ---
     deps/microzig | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/deps/microzig b/deps/microzig
    index dd491cc..658648b 160000
    --- a/deps/microzig
    +++ b/deps/microzig
    @@ -1 +1 @@
    -Subproject commit dd491cc84fe034cb07f5b6cc6aa486d97e0ef7ab
    +Subproject commit 658648b86ba63762ac45665abe0a06ec279225b1
    
    From e8cf979268d7194d9f305fb0978243c14a57f024 Mon Sep 17 00:00:00 2001
    From: Matt Knight 
    Date: Wed, 26 Apr 2023 00:29:50 -0700
    Subject: [PATCH 20/29] Update microzig (#18)
    
    * update microzig
    
    * update cpu
    
    ---------
    
    Co-authored-by: mattnite 
    ---
     deps/microzig                | 2 +-
     src/cpus/espressif-riscv.zig | 6 +++---
     2 files changed, 4 insertions(+), 4 deletions(-)
    
    diff --git a/deps/microzig b/deps/microzig
    index 658648b..b5edf6d 160000
    --- a/deps/microzig
    +++ b/deps/microzig
    @@ -1 +1 @@
    -Subproject commit 658648b86ba63762ac45665abe0a06ec279225b1
    +Subproject commit b5edf6da6b540215f03689c3cc07d00478255f7d
    diff --git a/src/cpus/espressif-riscv.zig b/src/cpus/espressif-riscv.zig
    index e20072d..dc2edb7 100644
    --- a/src/cpus/espressif-riscv.zig
    +++ b/src/cpus/espressif-riscv.zig
    @@ -29,11 +29,11 @@ pub inline fn clearStatusBit(comptime reg: StatusRegister, bits: u32) void {
         );
     }
     
    -pub inline fn cli() void {
    +pub inline fn disable_interrupts() void {
         clearStatusBit(.mstatus, 0x08);
     }
     
    -pub inline fn sei() void {
    +pub inline fn enable_interrupts() void {
         setStatusBit(.mstatus, 0x08);
     }
     
    @@ -62,7 +62,7 @@ pub const startup_logic = struct {
         extern fn microzig_main() noreturn;
     
         export fn _start() linksection("microzig_flash_start") callconv(.Naked) noreturn {
    -        microzig.cpu.cli();
    +        microzig.cpu.disable_interrupts();
             asm volatile ("mv sp, %[eos]"
                 :
                 : [eos] "r" (@as(u32, microzig.config.end_of_stack)),
    
    From c47778854f6e4f63facf40ada1b0aa0e1665767d Mon Sep 17 00:00:00 2001
    From: Matt Knight 
    Date: Wed, 3 May 2023 21:40:13 -0700
    Subject: [PATCH 21/29] update microzig (#19)
    
    Co-authored-by: mattnite 
    ---
     deps/microzig | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/deps/microzig b/deps/microzig
    index b5edf6d..4e62e99 160000
    --- a/deps/microzig
    +++ b/deps/microzig
    @@ -1 +1 @@
    -Subproject commit b5edf6da6b540215f03689c3cc07d00478255f7d
    +Subproject commit 4e62e99e3cf8ad2b8805bc6138c53995bd9745be
    
    From d90b4f6caf3739e5964b8d0005032dd7444c9ab8 Mon Sep 17 00:00:00 2001
    From: Matt Knight 
    Date: Mon, 15 May 2023 21:47:36 -0700
    Subject: [PATCH 22/29] update microzig (#20)
    
    Co-authored-by: mattnite 
    ---
     deps/microzig | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/deps/microzig b/deps/microzig
    index 4e62e99..9588941 160000
    --- a/deps/microzig
    +++ b/deps/microzig
    @@ -1 +1 @@
    -Subproject commit 4e62e99e3cf8ad2b8805bc6138c53995bd9745be
    +Subproject commit 95889419155b7ffb1b11055549540096eaa2a6c5
    
    From f74311e78502d500f4ae921549ce54a71c33b210 Mon Sep 17 00:00:00 2001
    From: Matt Knight 
    Date: Tue, 27 Jun 2023 20:31:52 -0700
    Subject: [PATCH 23/29] update microzig (#23)
    
    Co-authored-by: mattnite 
    ---
     deps/microzig | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/deps/microzig b/deps/microzig
    index 9588941..9392fe0 160000
    --- a/deps/microzig
    +++ b/deps/microzig
    @@ -1 +1 @@
    -Subproject commit 95889419155b7ffb1b11055549540096eaa2a6c5
    +Subproject commit 9392fe0f7bddde26155c181ab80b70097b49c791
    
    From 03a53c756c0a54a04d43220696e9cd1946c1b30c Mon Sep 17 00:00:00 2001
    From: =?UTF-8?q?Felix=20Quei=C3=9Fner?= 
    Date: Sat, 26 Aug 2023 00:01:43 +0200
    Subject: [PATCH 24/29] Update to zig-0.11.0 (#24)
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    Co-authored-by: Felix "xq" Queißner 
    ---
     build.zig                    | 17 +++++++--
     build.zig.zon                | 10 +++++
     deps/microzig                |  1 -
     src/chips.zig                |  2 +-
     src/chips/ESP32_C3.zig       | 72 ++++++++++++++++++------------------
     src/cpus.zig                 |  2 +-
     src/cpus/espressif-riscv.zig |  2 +-
     src/example/blinky.zig       |  6 +--
     src/hals/ESP32_C3.zig        |  6 +--
     zpm.zig                      |  8 ----
     10 files changed, 69 insertions(+), 57 deletions(-)
     create mode 100644 build.zig.zon
     delete mode 160000 deps/microzig
     delete mode 100644 zpm.zig
    
    diff --git a/build.zig b/build.zig
    index 8cb289d..e04ab94 100644
    --- a/build.zig
    +++ b/build.zig
    @@ -1,10 +1,10 @@
     const std = @import("std");
    -const microzig = @import("deps/microzig/build.zig");
    +const microzig = @import("microzig");
     
     pub const chips = @import("src/chips.zig");
     pub const cpus = @import("src/cpus.zig");
     
    -pub fn build(b: *std.build.Builder) void {
    +pub fn build(b: *std.Build) void {
         const optimize = b.standardOptimizeOption(.{});
     
         var exe = microzig.addEmbeddedExecutable(b, .{
    @@ -15,5 +15,16 @@ pub fn build(b: *std.build.Builder) void {
             .backing = .{ .chip = chips.esp32_c3 },
             .optimize = optimize,
         });
    -    exe.installArtifact(b);
    +
    +    const fw_objcopy = b.addObjCopy(exe.inner.getEmittedBin(), .{
    +        .format = .bin,
    +    });
    +
    +    const fw_bin = fw_objcopy.getOutput();
    +
    +    const install_fw_bin = b.addInstallFile(fw_bin, "firmware/blinky.bin");
    +
    +    b.getInstallStep().dependOn(&install_fw_bin.step);
    +
    +    b.installArtifact(exe.inner);
     }
    diff --git a/build.zig.zon b/build.zig.zon
    new file mode 100644
    index 0000000..e8787ef
    --- /dev/null
    +++ b/build.zig.zon
    @@ -0,0 +1,10 @@
    +.{
    +    .name = "microzig-espressif-esp",
    +    .version = "0.1.0",
    +    .dependencies = .{
    +        .microzig = .{
    +            .url = "https://github.com/ZigEmbeddedGroup/microzig/archive/0b3be0a4cc7e6d45714cb09961efc771e364723c.tar.gz",
    +            .hash = "1220ada6d01db7b3d0aa8642df89b1af9ee71b681438249e9a7efb2275fc4cf32152",
    +        },
    +    },
    +}
    diff --git a/deps/microzig b/deps/microzig
    deleted file mode 160000
    index 9392fe0..0000000
    --- a/deps/microzig
    +++ /dev/null
    @@ -1 +0,0 @@
    -Subproject commit 9392fe0f7bddde26155c181ab80b70097b49c791
    diff --git a/src/chips.zig b/src/chips.zig
    index 14769f3..3baa05a 100644
    --- a/src/chips.zig
    +++ b/src/chips.zig
    @@ -1,5 +1,5 @@
     const std = @import("std");
    -const microzig = @import("../deps/microzig/build.zig");
    +const microzig = @import("microzig");
     const cpus = @import("cpus.zig");
     
     fn root_dir() []const u8 {
    diff --git a/src/chips/ESP32_C3.zig b/src/chips/ESP32_C3.zig
    index 50a3263..8a632a0 100644
    --- a/src/chips/ESP32_C3.zig
    +++ b/src/chips/ESP32_C3.zig
    @@ -33,77 +33,77 @@ pub const devices = struct {
     
             pub const peripherals = struct {
                 ///  UART (Universal Asynchronous Receiver-Transmitter) Controller
    -            pub const UART0 = @intToPtr(*volatile types.peripherals.UART0, 0x60000000);
    +            pub const UART0 = @as(*volatile types.peripherals.UART0, @ptrFromInt(0x60000000));
                 ///  SPI (Serial Peripheral Interface) Controller
    -            pub const SPI1 = @intToPtr(*volatile types.peripherals.SPI1, 0x60002000);
    +            pub const SPI1 = @as(*volatile types.peripherals.SPI1, @ptrFromInt(0x60002000));
                 ///  SPI (Serial Peripheral Interface) Controller
    -            pub const SPI0 = @intToPtr(*volatile types.peripherals.SPI0, 0x60003000);
    +            pub const SPI0 = @as(*volatile types.peripherals.SPI0, @ptrFromInt(0x60003000));
                 ///  General Purpose Input/Output
    -            pub const GPIO = @intToPtr(*volatile types.peripherals.GPIO, 0x60004000);
    +            pub const GPIO = @as(*volatile types.peripherals.GPIO, @ptrFromInt(0x60004000));
                 ///  Sigma-Delta Modulation
    -            pub const GPIOSD = @intToPtr(*volatile types.peripherals.GPIOSD, 0x60004f00);
    +            pub const GPIOSD = @as(*volatile types.peripherals.GPIOSD, @ptrFromInt(0x60004f00));
                 ///  Real-Time Clock Control
    -            pub const RTC_CNTL = @intToPtr(*volatile types.peripherals.RTC_CNTL, 0x60008000);
    +            pub const RTC_CNTL = @as(*volatile types.peripherals.RTC_CNTL, @ptrFromInt(0x60008000));
                 ///  eFuse Controller
    -            pub const EFUSE = @intToPtr(*volatile types.peripherals.EFUSE, 0x60008800);
    +            pub const EFUSE = @as(*volatile types.peripherals.EFUSE, @ptrFromInt(0x60008800));
                 ///  Input/Output Multiplexer
    -            pub const IO_MUX = @intToPtr(*volatile types.peripherals.IO_MUX, 0x60009000);
    +            pub const IO_MUX = @as(*volatile types.peripherals.IO_MUX, @ptrFromInt(0x60009000));
                 ///  Universal Host Controller Interface
    -            pub const UHCI1 = @intToPtr(*volatile types.peripherals.UHCI0, 0x6000c000);
    +            pub const UHCI1 = @as(*volatile types.peripherals.UHCI0, @ptrFromInt(0x6000c000));
                 ///  UART (Universal Asynchronous Receiver-Transmitter) Controller
    -            pub const UART1 = @intToPtr(*volatile types.peripherals.UART0, 0x60010000);
    +            pub const UART1 = @as(*volatile types.peripherals.UART0, @ptrFromInt(0x60010000));
                 ///  I2C (Inter-Integrated Circuit) Controller
    -            pub const I2C0 = @intToPtr(*volatile types.peripherals.I2C0, 0x60013000);
    +            pub const I2C0 = @as(*volatile types.peripherals.I2C0, @ptrFromInt(0x60013000));
                 ///  Universal Host Controller Interface
    -            pub const UHCI0 = @intToPtr(*volatile types.peripherals.UHCI0, 0x60014000);
    +            pub const UHCI0 = @as(*volatile types.peripherals.UHCI0, @ptrFromInt(0x60014000));
                 ///  Remote Control Peripheral
    -            pub const RMT = @intToPtr(*volatile types.peripherals.RMT, 0x60016000);
    +            pub const RMT = @as(*volatile types.peripherals.RMT, @ptrFromInt(0x60016000));
                 ///  LED Control PWM (Pulse Width Modulation)
    -            pub const LEDC = @intToPtr(*volatile types.peripherals.LEDC, 0x60019000);
    +            pub const LEDC = @as(*volatile types.peripherals.LEDC, @ptrFromInt(0x60019000));
                 ///  Timer Group
    -            pub const TIMG0 = @intToPtr(*volatile types.peripherals.TIMG0, 0x6001f000);
    +            pub const TIMG0 = @as(*volatile types.peripherals.TIMG0, @ptrFromInt(0x6001f000));
                 ///  Timer Group
    -            pub const TIMG1 = @intToPtr(*volatile types.peripherals.TIMG0, 0x60020000);
    +            pub const TIMG1 = @as(*volatile types.peripherals.TIMG0, @ptrFromInt(0x60020000));
                 ///  System Timer
    -            pub const SYSTIMER = @intToPtr(*volatile types.peripherals.SYSTIMER, 0x60023000);
    +            pub const SYSTIMER = @as(*volatile types.peripherals.SYSTIMER, @ptrFromInt(0x60023000));
                 ///  SPI (Serial Peripheral Interface) Controller
    -            pub const SPI2 = @intToPtr(*volatile types.peripherals.SPI2, 0x60024000);
    +            pub const SPI2 = @as(*volatile types.peripherals.SPI2, @ptrFromInt(0x60024000));
                 ///  Advanced Peripheral Bus Controller
    -            pub const APB_CTRL = @intToPtr(*volatile types.peripherals.APB_CTRL, 0x60026000);
    +            pub const APB_CTRL = @as(*volatile types.peripherals.APB_CTRL, @ptrFromInt(0x60026000));
                 ///  Hardware random number generator
    -            pub const RNG = @intToPtr(*volatile types.peripherals.RNG, 0x60026000);
    +            pub const RNG = @as(*volatile types.peripherals.RNG, @ptrFromInt(0x60026000));
                 ///  Two-Wire Automotive Interface
    -            pub const TWAI = @intToPtr(*volatile types.peripherals.TWAI, 0x6002b000);
    +            pub const TWAI = @as(*volatile types.peripherals.TWAI, @ptrFromInt(0x6002b000));
                 ///  I2S (Inter-IC Sound) Controller
    -            pub const I2S = @intToPtr(*volatile types.peripherals.I2S, 0x6002d000);
    +            pub const I2S = @as(*volatile types.peripherals.I2S, @ptrFromInt(0x6002d000));
                 ///  AES (Advanced Encryption Standard) Accelerator
    -            pub const AES = @intToPtr(*volatile types.peripherals.AES, 0x6003a000);
    +            pub const AES = @as(*volatile types.peripherals.AES, @ptrFromInt(0x6003a000));
                 ///  SHA (Secure Hash Algorithm) Accelerator
    -            pub const SHA = @intToPtr(*volatile types.peripherals.SHA, 0x6003b000);
    +            pub const SHA = @as(*volatile types.peripherals.SHA, @ptrFromInt(0x6003b000));
                 ///  RSA (Rivest Shamir Adleman) Accelerator
    -            pub const RSA = @intToPtr(*volatile types.peripherals.RSA, 0x6003c000);
    +            pub const RSA = @as(*volatile types.peripherals.RSA, @ptrFromInt(0x6003c000));
                 ///  Digital Signature
    -            pub const DS = @intToPtr(*volatile types.peripherals.DS, 0x6003d000);
    +            pub const DS = @as(*volatile types.peripherals.DS, @ptrFromInt(0x6003d000));
                 ///  HMAC (Hash-based Message Authentication Code) Accelerator
    -            pub const HMAC = @intToPtr(*volatile types.peripherals.HMAC, 0x6003e000);
    +            pub const HMAC = @as(*volatile types.peripherals.HMAC, @ptrFromInt(0x6003e000));
                 ///  DMA (Direct Memory Access) Controller
    -            pub const DMA = @intToPtr(*volatile types.peripherals.DMA, 0x6003f000);
    +            pub const DMA = @as(*volatile types.peripherals.DMA, @ptrFromInt(0x6003f000));
                 ///  Successive Approximation Register Analog to Digital Converter
    -            pub const APB_SARADC = @intToPtr(*volatile types.peripherals.APB_SARADC, 0x60040000);
    +            pub const APB_SARADC = @as(*volatile types.peripherals.APB_SARADC, @ptrFromInt(0x60040000));
                 ///  Full-speed USB Serial/JTAG Controller
    -            pub const USB_DEVICE = @intToPtr(*volatile types.peripherals.USB_DEVICE, 0x60043000);
    +            pub const USB_DEVICE = @as(*volatile types.peripherals.USB_DEVICE, @ptrFromInt(0x60043000));
                 ///  System
    -            pub const SYSTEM = @intToPtr(*volatile types.peripherals.SYSTEM, 0x600c0000);
    +            pub const SYSTEM = @as(*volatile types.peripherals.SYSTEM, @ptrFromInt(0x600c0000));
                 ///  Sensitive
    -            pub const SENSITIVE = @intToPtr(*volatile types.peripherals.SENSITIVE, 0x600c1000);
    +            pub const SENSITIVE = @as(*volatile types.peripherals.SENSITIVE, @ptrFromInt(0x600c1000));
                 ///  Interrupt Core
    -            pub const INTERRUPT_CORE0 = @intToPtr(*volatile types.peripherals.INTERRUPT_CORE0, 0x600c2000);
    +            pub const INTERRUPT_CORE0 = @as(*volatile types.peripherals.INTERRUPT_CORE0, @ptrFromInt(0x600c2000));
                 ///  External Memory
    -            pub const EXTMEM = @intToPtr(*volatile types.peripherals.EXTMEM, 0x600c4000);
    +            pub const EXTMEM = @as(*volatile types.peripherals.EXTMEM, @ptrFromInt(0x600c4000));
                 ///  XTS-AES-128 Flash Encryption
    -            pub const XTS_AES = @intToPtr(*volatile types.peripherals.XTS_AES, 0x600cc000);
    +            pub const XTS_AES = @as(*volatile types.peripherals.XTS_AES, @ptrFromInt(0x600cc000));
                 ///  Debug Assist
    -            pub const ASSIST_DEBUG = @intToPtr(*volatile types.peripherals.ASSIST_DEBUG, 0x600ce000);
    +            pub const ASSIST_DEBUG = @as(*volatile types.peripherals.ASSIST_DEBUG, @ptrFromInt(0x600ce000));
             };
         };
     };
    diff --git a/src/cpus.zig b/src/cpus.zig
    index b087d90..c8bda91 100644
    --- a/src/cpus.zig
    +++ b/src/cpus.zig
    @@ -1,5 +1,5 @@
     const std = @import("std");
    -const microzig = @import("../deps/microzig/build.zig");
    +const microzig = @import("microzig");
     
     fn root_dir() []const u8 {
         return std.fs.path.dirname(@src().file) orelse unreachable;
    diff --git a/src/cpus/espressif-riscv.zig b/src/cpus/espressif-riscv.zig
    index dc2edb7..5aab92d 100644
    --- a/src/cpus/espressif-riscv.zig
    +++ b/src/cpus/espressif-riscv.zig
    @@ -61,7 +61,7 @@ pub const startup_logic = struct {
     
         extern fn microzig_main() noreturn;
     
    -    export fn _start() linksection("microzig_flash_start") callconv(.Naked) noreturn {
    +    export fn _start() linksection("microzig_flash_start") callconv(.C) noreturn {
             microzig.cpu.disable_interrupts();
             asm volatile ("mv sp, %[eos]"
                 :
    diff --git a/src/example/blinky.zig b/src/example/blinky.zig
    index 5ee1eef..811b048 100644
    --- a/src/example/blinky.zig
    +++ b/src/example/blinky.zig
    @@ -42,13 +42,13 @@ pub fn main() !void {
         while (true) {
             GPIO.OUT.modify(.{ .DATA_ORIG = (1 << LED_R_PIN) });
             microzig.hal.uart.write(0, "R");
    -        microzig.core.experimental.debug.busy_sleep(1_000_000);
    +        microzig.core.experimental.debug.busy_sleep(100_000);
             GPIO.OUT.modify(.{ .DATA_ORIG = (1 << LED_G_PIN) });
             microzig.hal.uart.write(0, "G");
    -        microzig.core.experimental.debug.busy_sleep(1_000_000);
    +        microzig.core.experimental.debug.busy_sleep(100_000);
             GPIO.OUT.modify(.{ .DATA_ORIG = (1 << LED_B_PIN) });
             microzig.hal.uart.write(0, "B");
    -        microzig.core.experimental.debug.busy_sleep(1_000_000);
    +        microzig.core.experimental.debug.busy_sleep(100_000);
         }
     }
     
    diff --git a/src/hals/ESP32_C3.zig b/src/hals/ESP32_C3.zig
    index 516ed15..a5e1bb9 100644
    --- a/src/hals/ESP32_C3.zig
    +++ b/src/hals/ESP32_C3.zig
    @@ -21,9 +21,9 @@ pub const gpio = struct {
             assertRange(pin);
             GPIO.FUNC_OUT_SEL_CFG[pin].modify(.{
                 .OUT_SEL = config.function,
    -            .INV_SEL = @boolToInt(config.invert_function),
    -            .OEN_SEL = @boolToInt(config.direct_io),
    -            .OEN_INV_SEL = @boolToInt(config.invert_direct_io),
    +            .INV_SEL = @intFromBool(config.invert_function),
    +            .OEN_SEL = @intFromBool(config.direct_io),
    +            .OEN_INV_SEL = @intFromBool(config.invert_direct_io),
             });
             switch (config.direction) {
                 .input => GPIO.ENABLE.raw &= ~(@as(u32, 1) << pin),
    diff --git a/zpm.zig b/zpm.zig
    deleted file mode 100644
    index 1dcd7b3..0000000
    --- a/zpm.zig
    +++ /dev/null
    @@ -1,8 +0,0 @@
    -//! This file is auto-generated by zpm-update and *should*
    -//! not be changed. This file can be checked into your VCS
    -//! and is able to work standalone.
    -const std = @import("std");
    -
    -pub const sdks = struct {
    -    pub const microzig = @import("vendor/microzig/src/main.zig");
    -};
    
    From 82c944b48ceb4814c6dac511f49a89c08a16a3e3 Mon Sep 17 00:00:00 2001
    From: =?UTF-8?q?Felix=20Quei=C3=9Fner?= 
    Date: Sat, 26 Aug 2023 00:29:02 +0200
    Subject: [PATCH 25/29] Fixes (#25)
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    * Update to zig-0.11.0
    
    * Removes unnecessary submodule
    
    ---------
    
    Co-authored-by: Felix "xq" Queißner 
    ---
     .gitmodules     | 6 ------
     vendor/microzig | 1 -
     2 files changed, 7 deletions(-)
     delete mode 160000 vendor/microzig
    
    diff --git a/.gitmodules b/.gitmodules
    index 911b8cf..e69de29 100644
    --- a/.gitmodules
    +++ b/.gitmodules
    @@ -1,6 +0,0 @@
    -[submodule "vendor/microzig"]
    -	path = vendor/microzig
    -	url = https://github.com/ZigEmbeddedGroup/microzig
    -[submodule "deps/microzig"]
    -	path = deps/microzig
    -	url = https://github.com/ZigEmbeddedGroup/microzig.git
    diff --git a/vendor/microzig b/vendor/microzig
    deleted file mode 160000
    index 0d9721d..0000000
    --- a/vendor/microzig
    +++ /dev/null
    @@ -1 +0,0 @@
    -Subproject commit 0d9721d9070c356f4ffaf6f4a312bccdb574b8a9
    
    From aceafa110ad6b4555c3850b54aba2392c1ef7d73 Mon Sep 17 00:00:00 2001
    From: =?UTF-8?q?Felix=20Quei=C3=9Fner?= 
    Date: Sat, 26 Aug 2023 14:11:07 +0200
    Subject: [PATCH 26/29] GitHub CI (#26)
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    * GitHub CI
    
    * Update CI
    
    ---------
    
    Co-authored-by: Felix "xq" Queißner 
    ---
     .buildkite/pipeline.yml     |  4 ----
     .github/workflows/build.yml | 19 +++++++++++++++++++
     2 files changed, 19 insertions(+), 4 deletions(-)
     delete mode 100644 .buildkite/pipeline.yml
     create mode 100644 .github/workflows/build.yml
    
    diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml
    deleted file mode 100644
    index 7767bbb..0000000
    --- a/.buildkite/pipeline.yml
    +++ /dev/null
    @@ -1,4 +0,0 @@
    -steps:
    -  - group: Build
    -    steps:
    -    - command: zig build
    diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
    new file mode 100644
    index 0000000..63ea533
    --- /dev/null
    +++ b/.github/workflows/build.yml
    @@ -0,0 +1,19 @@
    +name: Build
    +on:
    +  push:
    +
    +jobs:
    +  build:
    +    runs-on: ${{ matrix.os }}
    +    strategy:
    +      matrix:
    +        os: [ubuntu-latest, windows-latest, macos-latest]
    +        optimize: [Debug, ReleaseSmall, ReleaseFast, ReleaseSafe]
    +    steps:
    +      - uses: actions/checkout@v2
    +      - uses: goto-bus-stop/setup-zig@v2.1.1
    +        with:
    +          version: 0.11.0
    +
    +      - name: Build
    +        run: zig build install "-Doptimize=${{matrix.optimize}}"
    
    From 8885309e9c1f22425dca58f67afb315fdeb0e226 Mon Sep 17 00:00:00 2001
    From: DEADBLACKCLOVER 
    Date: Mon, 28 Aug 2023 00:36:35 +0700
    Subject: [PATCH 27/29] Fix perform-flash.sh (#27)
    
    ---
     perform-flash.sh | 4 ++--
     1 file changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/perform-flash.sh b/perform-flash.sh
    index ce1f5de..f7bc87d 100755
    --- a/perform-flash.sh
    +++ b/perform-flash.sh
    @@ -3,11 +3,11 @@
     set -e
     
     clear
    -zig build -Drelease-small
    +zig build -Doptimize=ReleaseSmall
     llvm-objdump -S ./zig-out/bin/esp-bringup > /tmp/dump.txt
     esptool.py \
       --port /dev/ttyUSB0 \
       --baud 115200 \
    -  write_flash 0x00000000 zig-out/bin/firmware.bin \
    +  write_flash 0x00000000 zig-out/firmware/blinky.bin \
       --verify
     picocom --baud 115200 /dev/ttyUSB0
    \ No newline at end of file
    
    From e018e7ec6f3a483d3d3baa25506448b8cb532648 Mon Sep 17 00:00:00 2001
    From: =?UTF-8?q?Felix=20Quei=C3=9Fner?= 
    Date: Fri, 22 Sep 2023 09:03:15 +0200
    Subject: [PATCH 28/29] Microzig Generation 2 Build Interface  (#28)
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    * Removes old build code.
    * Makes basic build work again.
    * First build
    * Drops CI
    
    ---------
    
    Co-authored-by: Felix "xq" Queißner 
    ---
     .github/FUNDING.yml                   |     1 -
     .github/workflows/build.yml           |    19 -
     build.zig                             |    82 +-
     build.zig.zon                         |     7 +-
     src/chips.zig                         |    23 -
     esp32c3.svd => src/chips/ESP32-C3.svd |     0
     src/chips/ESP32_C3.json               | 33570 ------------------------
     src/chips/ESP32_C3.zig                | 12378 ---------
     src/cpus.zig                          |    23 -
     9 files changed, 64 insertions(+), 46039 deletions(-)
     delete mode 100644 .github/FUNDING.yml
     delete mode 100644 .github/workflows/build.yml
     delete mode 100644 src/chips.zig
     rename esp32c3.svd => src/chips/ESP32-C3.svd (100%)
     delete mode 100644 src/chips/ESP32_C3.json
     delete mode 100644 src/chips/ESP32_C3.zig
     delete mode 100644 src/cpus.zig
    
    diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
    deleted file mode 100644
    index 85b5393..0000000
    --- a/.github/FUNDING.yml
    +++ /dev/null
    @@ -1 +0,0 @@
    -github: MasterQ32
    diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
    deleted file mode 100644
    index 63ea533..0000000
    --- a/.github/workflows/build.yml
    +++ /dev/null
    @@ -1,19 +0,0 @@
    -name: Build
    -on:
    -  push:
    -
    -jobs:
    -  build:
    -    runs-on: ${{ matrix.os }}
    -    strategy:
    -      matrix:
    -        os: [ubuntu-latest, windows-latest, macos-latest]
    -        optimize: [Debug, ReleaseSmall, ReleaseFast, ReleaseSafe]
    -    steps:
    -      - uses: actions/checkout@v2
    -      - uses: goto-bus-stop/setup-zig@v2.1.1
    -        with:
    -          version: 0.11.0
    -
    -      - name: Build
    -        run: zig build install "-Doptimize=${{matrix.optimize}}"
    diff --git a/build.zig b/build.zig
    index e04ab94..089066c 100644
    --- a/build.zig
    +++ b/build.zig
    @@ -1,30 +1,74 @@
     const std = @import("std");
    -const microzig = @import("microzig");
     
    -pub const chips = @import("src/chips.zig");
    -pub const cpus = @import("src/cpus.zig");
    +fn path(comptime suffix: []const u8) std.Build.LazyPath {
    +    return .{
    +        .cwd_relative = comptime ((std.fs.path.dirname(@src().file) orelse ".") ++ suffix),
    +    };
    +}
     
    -pub fn build(b: *std.Build) void {
    -    const optimize = b.standardOptimizeOption(.{});
    +const esp_riscv = .{
    +    .name = "Espressif RISC-V",
    +    .source_file = path("/src/cpus/espressif-riscv.zig"),
    +    .target = std.zig.CrossTarget{
    +        .cpu_arch = .riscv32,
    +        .cpu_model = .{ .explicit = &std.Target.riscv.cpu.generic_rv32 },
    +        .cpu_features_add = std.Target.riscv.featureSet(&.{
    +            std.Target.riscv.Feature.c,
    +            std.Target.riscv.Feature.m,
    +        }),
    +        .os_tag = .freestanding,
    +        .abi = .eabi,
    +    },
    +};
    +
    +const hal = .{
    +    .source_file = path("/src/hals/ESP32_C3.zig"),
    +};
    +
    +pub const chips = struct {
    +    pub const esp32_c3 = .{
    +        .preferred_format = .bin, // TODO: Exchange FLAT format with .esp format
    +        .chip = .{
    +            .name = "ESP32-C3",
    +            .url = "https://www.espressif.com/en/products/socs/esp32-c3",
    +
    +            .cpu = .{ .custom = &esp_riscv },
     
    -    var exe = microzig.addEmbeddedExecutable(b, .{
    -        .name = "esp-bringup",
    -        .source_file = .{
    -            .path = "src/example/blinky.zig",
    +            .register_definition = .{
    +                .svd = path("/src/chips/ESP32-C3.svd"),
    +            },
    +
    +            .memory_regions = &.{
    +                .{ .kind = .flash, .offset = 0x4200_0000, .length = 0x0080_0000 }, // external memory, ibus
    +                .{ .kind = .ram, .offset = 0x3FC8_0000, .length = 0x0006_0000 }, // sram 1, data bus
    +            },
             },
    -        .backing = .{ .chip = chips.esp32_c3 },
    -        .optimize = optimize,
    -    });
    +        .hal = hal,
    +    };
    +};
    +
    +pub fn build(b: *std.Build) void {
    +    _ = b;
    +    // const optimize = b.standardOptimizeOption(.{});
    +
    +    // var exe = microzig.addEmbeddedExecutable(b, .{
    +    //     .name = "esp-bringup",
    +    //     .source_file = .{
    +    //         .path = "src/example/blinky.zig",
    +    //     },
    +    //     .backing = .{ .chip = chips.esp32_c3 },
    +    //     .optimize = optimize,
    +    // });
     
    -    const fw_objcopy = b.addObjCopy(exe.inner.getEmittedBin(), .{
    -        .format = .bin,
    -    });
    +    // const fw_objcopy = b.addObjCopy(exe.inner.getEmittedBin(), .{
    +    //     .format = .bin,
    +    // });
     
    -    const fw_bin = fw_objcopy.getOutput();
    +    // const fw_bin = fw_objcopy.getOutput();
     
    -    const install_fw_bin = b.addInstallFile(fw_bin, "firmware/blinky.bin");
    +    // const install_fw_bin = b.addInstallFile(fw_bin, "firmware/blinky.bin");
     
    -    b.getInstallStep().dependOn(&install_fw_bin.step);
    +    // b.getInstallStep().dependOn(&install_fw_bin.step);
     
    -    b.installArtifact(exe.inner);
    +    // b.installArtifact(exe.inner);
     }
    diff --git a/build.zig.zon b/build.zig.zon
    index e8787ef..fd45779 100644
    --- a/build.zig.zon
    +++ b/build.zig.zon
    @@ -1,10 +1,5 @@
     .{
         .name = "microzig-espressif-esp",
         .version = "0.1.0",
    -    .dependencies = .{
    -        .microzig = .{
    -            .url = "https://github.com/ZigEmbeddedGroup/microzig/archive/0b3be0a4cc7e6d45714cb09961efc771e364723c.tar.gz",
    -            .hash = "1220ada6d01db7b3d0aa8642df89b1af9ee71b681438249e9a7efb2275fc4cf32152",
    -        },
    -    },
    +    .dependencies = .{},
     }
    diff --git a/src/chips.zig b/src/chips.zig
    deleted file mode 100644
    index 3baa05a..0000000
    --- a/src/chips.zig
    +++ /dev/null
    @@ -1,23 +0,0 @@
    -const std = @import("std");
    -const microzig = @import("microzig");
    -const cpus = @import("cpus.zig");
    -
    -fn root_dir() []const u8 {
    -    return std.fs.path.dirname(@src().file) orelse unreachable;
    -}
    -
    -pub const esp32_c3 = microzig.Chip{
    -    .name = "ESP32-C3",
    -    .source = .{
    -        .path = root_dir() ++ "/chips/ESP32_C3.zig",
    -    },
    -    .hal = .{
    -        .path = root_dir() ++ "/hals/ESP32_C3.zig",
    -    },
    -
    -    .cpu = cpus.esp32_c3,
    -    .memory_regions = &.{
    -        .{ .kind = .flash, .offset = 0x4200_0000, .length = 0x0080_0000 }, // external memory, ibus
    -        .{ .kind = .ram, .offset = 0x3FC8_0000, .length = 0x0006_0000 }, // sram 1, data bus
    -    },
    -};
    diff --git a/esp32c3.svd b/src/chips/ESP32-C3.svd
    similarity index 100%
    rename from esp32c3.svd
    rename to src/chips/ESP32-C3.svd
    diff --git a/src/chips/ESP32_C3.json b/src/chips/ESP32_C3.json
    deleted file mode 100644
    index 4691dc7..0000000
    --- a/src/chips/ESP32_C3.json
    +++ /dev/null
    @@ -1,33570 +0,0 @@
    -{
    -  "version": "0.1.0",
    -  "types": {
    -    "peripherals": {
    -      "AES": {
    -        "description": "AES (Advanced Encryption Standard) Accelerator",
    -        "children": {
    -          "registers": {
    -            "KEY_0": {
    -              "description": "Key material key_0 configure register",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY_0": {
    -                    "description": "This bits stores key_0 that is a part of key material.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "KEY_1": {
    -              "description": "Key material key_1 configure register",
    -              "offset": 4,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY_1": {
    -                    "description": "This bits stores key_1 that is a part of key material.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "KEY_2": {
    -              "description": "Key material key_2 configure register",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY_2": {
    -                    "description": "This bits stores key_2 that is a part of key material.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "KEY_3": {
    -              "description": "Key material key_3 configure register",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY_3": {
    -                    "description": "This bits stores key_3 that is a part of key material.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "KEY_4": {
    -              "description": "Key material key_4 configure register",
    -              "offset": 16,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY_4": {
    -                    "description": "This bits stores key_4 that is a part of key material.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "KEY_5": {
    -              "description": "Key material key_5 configure register",
    -              "offset": 20,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY_5": {
    -                    "description": "This bits stores key_5 that is a part of key material.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "KEY_6": {
    -              "description": "Key material key_6 configure register",
    -              "offset": 24,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY_6": {
    -                    "description": "This bits stores key_6 that is a part of key material.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "KEY_7": {
    -              "description": "Key material key_7 configure register",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY_7": {
    -                    "description": "This bits stores key_7 that is a part of key material.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "TEXT_IN_0": {
    -              "description": "source text material text_in_0 configure register",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TEXT_IN_0": {
    -                    "description": "This bits stores text_in_0 that is a part of source text material.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "TEXT_IN_1": {
    -              "description": "source text material text_in_1 configure register",
    -              "offset": 36,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TEXT_IN_1": {
    -                    "description": "This bits stores text_in_1 that is a part of source text material.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "TEXT_IN_2": {
    -              "description": "source text material text_in_2 configure register",
    -              "offset": 40,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TEXT_IN_2": {
    -                    "description": "This bits stores text_in_2 that is a part of source text material.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "TEXT_IN_3": {
    -              "description": "source text material text_in_3 configure register",
    -              "offset": 44,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TEXT_IN_3": {
    -                    "description": "This bits stores text_in_3 that is a part of source text material.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "TEXT_OUT_0": {
    -              "description": "result text material text_out_0 configure register",
    -              "offset": 48,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TEXT_OUT_0": {
    -                    "description": "This bits stores text_out_0 that is a part of result text material.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "TEXT_OUT_1": {
    -              "description": "result text material text_out_1 configure register",
    -              "offset": 52,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TEXT_OUT_1": {
    -                    "description": "This bits stores text_out_1 that is a part of result text material.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "TEXT_OUT_2": {
    -              "description": "result text material text_out_2 configure register",
    -              "offset": 56,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TEXT_OUT_2": {
    -                    "description": "This bits stores text_out_2 that is a part of result text material.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "TEXT_OUT_3": {
    -              "description": "result text material text_out_3 configure register",
    -              "offset": 60,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TEXT_OUT_3": {
    -                    "description": "This bits stores text_out_3 that is a part of result text material.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "MODE": {
    -              "description": "AES Mode register",
    -              "offset": 64,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "MODE": {
    -                    "description": "This bits decides which one operation mode will be used. 3'd0: AES-EN-128, 3'd1: AES-EN-192, 3'd2: AES-EN-256, 3'd4: AES-DE-128, 3'd5: AES-DE-192, 3'd6: AES-DE-256.",
    -                    "offset": 0,
    -                    "size": 3
    -                  }
    -                }
    -              }
    -            },
    -            "ENDIAN": {
    -              "description": "AES Endian configure register",
    -              "offset": 68,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ENDIAN": {
    -                    "description": "endian. [1:0] key endian, [3:2] text_in endian or in_stream endian,  [5:4] text_out endian or out_stream endian",
    -                    "offset": 0,
    -                    "size": 6
    -                  }
    -                }
    -              }
    -            },
    -            "TRIGGER": {
    -              "description": "AES trigger register",
    -              "offset": 72,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TRIGGER": {
    -                    "description": "Set this bit to start AES calculation.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "STATE": {
    -              "description": "AES state register",
    -              "offset": 76,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "STATE": {
    -                    "description": "Those bits shows AES status. For typical AES, 0: idle, 1: busy. For DMA-AES, 0: idle, 1: busy, 2: calculation_done.",
    -                    "offset": 0,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IV_MEM": {
    -              "description": "The memory that stores initialization vector",
    -              "offset": 80,
    -              "size": 8,
    -              "count": 16,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295
    -            },
    -            "H_MEM": {
    -              "description": "The memory that stores GCM hash subkey",
    -              "offset": 96,
    -              "size": 8,
    -              "count": 16,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295
    -            },
    -            "J0_MEM": {
    -              "description": "The memory that stores J0",
    -              "offset": 112,
    -              "size": 8,
    -              "count": 16,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295
    -            },
    -            "T0_MEM": {
    -              "description": "The memory that stores T0",
    -              "offset": 128,
    -              "size": 8,
    -              "count": 16,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295
    -            },
    -            "DMA_ENABLE": {
    -              "description": "DMA-AES working mode register",
    -              "offset": 144,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_ENABLE": {
    -                    "description": "1'b0: typical AES working mode, 1'b1: DMA-AES working mode.",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "BLOCK_MODE": {
    -              "description": "AES cipher block mode register",
    -              "offset": 148,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BLOCK_MODE": {
    -                    "description": "Those bits decides which block mode will be used. 0x0: ECB, 0x1: CBC, 0x2: OFB, 0x3: CTR, 0x4: CFB-8, 0x5: CFB-128, 0x6: GCM, 0x7: reserved.",
    -                    "offset": 0,
    -                    "size": 3
    -                  }
    -                }
    -              }
    -            },
    -            "BLOCK_NUM": {
    -              "description": "AES block number register",
    -              "offset": 152,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BLOCK_NUM": {
    -                    "description": "Those bits stores the number of Plaintext/ciphertext block.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "INC_SEL": {
    -              "description": "Standard incrementing function configure register",
    -              "offset": 156,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INC_SEL": {
    -                    "description": "This bit decides the standard incrementing function. 0: INC32. 1: INC128.",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "AAD_BLOCK_NUM": {
    -              "description": "Additional Authential Data block number register",
    -              "offset": 160,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "AAD_BLOCK_NUM": {
    -                    "description": "Those bits stores the number of AAD block.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "REMAINDER_BIT_NUM": {
    -              "description": "AES remainder bit number register",
    -              "offset": 164,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "REMAINDER_BIT_NUM": {
    -                    "description": "Those bits stores the number of remainder bit.",
    -                    "offset": 0,
    -                    "size": 7
    -                  }
    -                }
    -              }
    -            },
    -            "CONTINUE": {
    -              "description": "AES continue register",
    -              "offset": 168,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CONTINUE": {
    -                    "description": "Set this bit to continue GCM operation.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_CLEAR": {
    -              "description": "AES Interrupt clear register",
    -              "offset": 172,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INT_CLEAR": {
    -                    "description": "Set this bit to clear the AES interrupt.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ENA": {
    -              "description": "AES Interrupt enable register",
    -              "offset": 176,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INT_ENA": {
    -                    "description": "Set this bit to enable interrupt that occurs when DMA-AES calculation is done.",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DATE": {
    -              "description": "AES version control register",
    -              "offset": 180,
    -              "size": 32,
    -              "reset_value": 538513936,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATE": {
    -                    "description": "This bits stores the version information of AES.",
    -                    "offset": 0,
    -                    "size": 30
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_EXIT": {
    -              "description": "AES-DMA exit config",
    -              "offset": 184,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_EXIT": {
    -                    "description": "Set this register to leave calculation done stage. Recommend to use it after software finishes reading DMA's output buffer.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "APB_CTRL": {
    -        "description": "Advanced Peripheral Bus Controller",
    -        "children": {
    -          "registers": {
    -            "SYSCLK_CONF": {
    -              "description": "APB_CTRL_SYSCLK_CONF_REG",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 1,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PRE_DIV_CNT": {
    -                    "description": "reg_pre_div_cnt",
    -                    "offset": 0,
    -                    "size": 10
    -                  },
    -                  "CLK_320M_EN": {
    -                    "description": "reg_clk_320m_en",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "CLK_EN": {
    -                    "description": "reg_clk_en",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "RST_TICK_CNT": {
    -                    "description": "reg_rst_tick_cnt",
    -                    "offset": 12,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "TICK_CONF": {
    -              "description": "APB_CTRL_TICK_CONF_REG",
    -              "offset": 4,
    -              "size": 32,
    -              "reset_value": 67367,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "XTAL_TICK_NUM": {
    -                    "description": "reg_xtal_tick_num",
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "CK8M_TICK_NUM": {
    -                    "description": "reg_ck8m_tick_num",
    -                    "offset": 8,
    -                    "size": 8
    -                  },
    -                  "TICK_ENABLE": {
    -                    "description": "reg_tick_enable",
    -                    "offset": 16,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CLK_OUT_EN": {
    -              "description": "APB_CTRL_CLK_OUT_EN_REG",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 2047,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CLK20_OEN": {
    -                    "description": "reg_clk20_oen",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "CLK22_OEN": {
    -                    "description": "reg_clk22_oen",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "CLK44_OEN": {
    -                    "description": "reg_clk44_oen",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "CLK_BB_OEN": {
    -                    "description": "reg_clk_bb_oen",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "CLK80_OEN": {
    -                    "description": "reg_clk80_oen",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "CLK160_OEN": {
    -                    "description": "reg_clk160_oen",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "CLK_320M_OEN": {
    -                    "description": "reg_clk_320m_oen",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "CLK_ADC_INF_OEN": {
    -                    "description": "reg_clk_adc_inf_oen",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "CLK_DAC_CPU_OEN": {
    -                    "description": "reg_clk_dac_cpu_oen",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "CLK40X_BB_OEN": {
    -                    "description": "reg_clk40x_bb_oen",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "CLK_XTAL_OEN": {
    -                    "description": "reg_clk_xtal_oen",
    -                    "offset": 10,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "WIFI_BB_CFG": {
    -              "description": "APB_CTRL_WIFI_BB_CFG_REG",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WIFI_BB_CFG": {
    -                    "description": "reg_wifi_bb_cfg",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "WIFI_BB_CFG_2": {
    -              "description": "APB_CTRL_WIFI_BB_CFG_2_REG",
    -              "offset": 16,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WIFI_BB_CFG_2": {
    -                    "description": "reg_wifi_bb_cfg_2",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "WIFI_CLK_EN": {
    -              "description": "APB_CTRL_WIFI_CLK_EN_REG",
    -              "offset": 20,
    -              "size": 32,
    -              "reset_value": 4294762544,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WIFI_CLK_EN": {
    -                    "description": "reg_wifi_clk_en",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "WIFI_RST_EN": {
    -              "description": "APB_CTRL_WIFI_RST_EN_REG",
    -              "offset": 24,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WIFI_RST": {
    -                    "description": "reg_wifi_rst",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "HOST_INF_SEL": {
    -              "description": "APB_CTRL_HOST_INF_SEL_REG",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PERI_IO_SWAP": {
    -                    "description": "reg_peri_io_swap",
    -                    "offset": 0,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "EXT_MEM_PMS_LOCK": {
    -              "description": "APB_CTRL_EXT_MEM_PMS_LOCK_REG",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "EXT_MEM_PMS_LOCK": {
    -                    "description": "reg_ext_mem_pms_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "FLASH_ACE0_ATTR": {
    -              "description": "APB_CTRL_FLASH_ACE0_ATTR_REG",
    -              "offset": 40,
    -              "size": 32,
    -              "reset_value": 3,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "FLASH_ACE0_ATTR": {
    -                    "description": "reg_flash_ace0_attr",
    -                    "offset": 0,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "FLASH_ACE1_ATTR": {
    -              "description": "APB_CTRL_FLASH_ACE1_ATTR_REG",
    -              "offset": 44,
    -              "size": 32,
    -              "reset_value": 3,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "FLASH_ACE1_ATTR": {
    -                    "description": "reg_flash_ace1_attr",
    -                    "offset": 0,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "FLASH_ACE2_ATTR": {
    -              "description": "APB_CTRL_FLASH_ACE2_ATTR_REG",
    -              "offset": 48,
    -              "size": 32,
    -              "reset_value": 3,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "FLASH_ACE2_ATTR": {
    -                    "description": "reg_flash_ace2_attr",
    -                    "offset": 0,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "FLASH_ACE3_ATTR": {
    -              "description": "APB_CTRL_FLASH_ACE3_ATTR_REG",
    -              "offset": 52,
    -              "size": 32,
    -              "reset_value": 3,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "FLASH_ACE3_ATTR": {
    -                    "description": "reg_flash_ace3_attr",
    -                    "offset": 0,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "FLASH_ACE0_ADDR": {
    -              "description": "APB_CTRL_FLASH_ACE0_ADDR_REG",
    -              "offset": 56,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "S": {
    -                    "description": "reg_flash_ace0_addr_s",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "FLASH_ACE1_ADDR": {
    -              "description": "APB_CTRL_FLASH_ACE1_ADDR_REG",
    -              "offset": 60,
    -              "size": 32,
    -              "reset_value": 4194304,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "S": {
    -                    "description": "reg_flash_ace1_addr_s",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "FLASH_ACE2_ADDR": {
    -              "description": "APB_CTRL_FLASH_ACE2_ADDR_REG",
    -              "offset": 64,
    -              "size": 32,
    -              "reset_value": 8388608,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "S": {
    -                    "description": "reg_flash_ace2_addr_s",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "FLASH_ACE3_ADDR": {
    -              "description": "APB_CTRL_FLASH_ACE3_ADDR_REG",
    -              "offset": 68,
    -              "size": 32,
    -              "reset_value": 12582912,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "S": {
    -                    "description": "reg_flash_ace3_addr_s",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "FLASH_ACE0_SIZE": {
    -              "description": "APB_CTRL_FLASH_ACE0_SIZE_REG",
    -              "offset": 72,
    -              "size": 32,
    -              "reset_value": 1024,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "FLASH_ACE0_SIZE": {
    -                    "description": "reg_flash_ace0_size",
    -                    "offset": 0,
    -                    "size": 13
    -                  }
    -                }
    -              }
    -            },
    -            "FLASH_ACE1_SIZE": {
    -              "description": "APB_CTRL_FLASH_ACE1_SIZE_REG",
    -              "offset": 76,
    -              "size": 32,
    -              "reset_value": 1024,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "FLASH_ACE1_SIZE": {
    -                    "description": "reg_flash_ace1_size",
    -                    "offset": 0,
    -                    "size": 13
    -                  }
    -                }
    -              }
    -            },
    -            "FLASH_ACE2_SIZE": {
    -              "description": "APB_CTRL_FLASH_ACE2_SIZE_REG",
    -              "offset": 80,
    -              "size": 32,
    -              "reset_value": 1024,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "FLASH_ACE2_SIZE": {
    -                    "description": "reg_flash_ace2_size",
    -                    "offset": 0,
    -                    "size": 13
    -                  }
    -                }
    -              }
    -            },
    -            "FLASH_ACE3_SIZE": {
    -              "description": "APB_CTRL_FLASH_ACE3_SIZE_REG",
    -              "offset": 84,
    -              "size": 32,
    -              "reset_value": 1024,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "FLASH_ACE3_SIZE": {
    -                    "description": "reg_flash_ace3_size",
    -                    "offset": 0,
    -                    "size": 13
    -                  }
    -                }
    -              }
    -            },
    -            "SPI_MEM_PMS_CTRL": {
    -              "description": "APB_CTRL_SPI_MEM_PMS_CTRL_REG",
    -              "offset": 136,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SPI_MEM_REJECT_INT": {
    -                    "description": "reg_spi_mem_reject_int",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SPI_MEM_REJECT_CLR": {
    -                    "description": "reg_spi_mem_reject_clr",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SPI_MEM_REJECT_CDE": {
    -                    "description": "reg_spi_mem_reject_cde",
    -                    "offset": 2,
    -                    "size": 5,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "SPI_MEM_REJECT_ADDR": {
    -              "description": "APB_CTRL_SPI_MEM_REJECT_ADDR_REG",
    -              "offset": 140,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SPI_MEM_REJECT_ADDR": {
    -                    "description": "reg_spi_mem_reject_addr",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "SDIO_CTRL": {
    -              "description": "APB_CTRL_SDIO_CTRL_REG",
    -              "offset": 144,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SDIO_WIN_ACCESS_EN": {
    -                    "description": "reg_sdio_win_access_en",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "REDCY_SIG0": {
    -              "description": "APB_CTRL_REDCY_SIG0_REG",
    -              "offset": 148,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "REDCY_SIG0": {
    -                    "description": "reg_redcy_sig0",
    -                    "offset": 0,
    -                    "size": 31
    -                  },
    -                  "REDCY_ANDOR": {
    -                    "description": "reg_redcy_andor",
    -                    "offset": 31,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "REDCY_SIG1": {
    -              "description": "APB_CTRL_REDCY_SIG1_REG",
    -              "offset": 152,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "REDCY_SIG1": {
    -                    "description": "reg_redcy_sig1",
    -                    "offset": 0,
    -                    "size": 31
    -                  },
    -                  "REDCY_NANDOR": {
    -                    "description": "reg_redcy_nandor",
    -                    "offset": 31,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "FRONT_END_MEM_PD": {
    -              "description": "APB_CTRL_FRONT_END_MEM_PD_REG",
    -              "offset": 156,
    -              "size": 32,
    -              "reset_value": 21,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "AGC_MEM_FORCE_PU": {
    -                    "description": "reg_agc_mem_force_pu",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "AGC_MEM_FORCE_PD": {
    -                    "description": "reg_agc_mem_force_pd",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "PBUS_MEM_FORCE_PU": {
    -                    "description": "reg_pbus_mem_force_pu",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "PBUS_MEM_FORCE_PD": {
    -                    "description": "reg_pbus_mem_force_pd",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "DC_MEM_FORCE_PU": {
    -                    "description": "reg_dc_mem_force_pu",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "DC_MEM_FORCE_PD": {
    -                    "description": "reg_dc_mem_force_pd",
    -                    "offset": 5,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "RETENTION_CTRL": {
    -              "description": "APB_CTRL_RETENTION_CTRL_REG",
    -              "offset": 160,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RETENTION_LINK_ADDR": {
    -                    "description": "reg_retention_link_addr",
    -                    "offset": 0,
    -                    "size": 27
    -                  },
    -                  "NOBYPASS_CPU_ISO_RST": {
    -                    "description": "reg_nobypass_cpu_iso_rst",
    -                    "offset": 27,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CLKGATE_FORCE_ON": {
    -              "description": "APB_CTRL_CLKGATE_FORCE_ON_REG",
    -              "offset": 164,
    -              "size": 32,
    -              "reset_value": 63,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ROM_CLKGATE_FORCE_ON": {
    -                    "description": "reg_rom_clkgate_force_on",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "SRAM_CLKGATE_FORCE_ON": {
    -                    "description": "reg_sram_clkgate_force_on",
    -                    "offset": 2,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "MEM_POWER_DOWN": {
    -              "description": "APB_CTRL_MEM_POWER_DOWN_REG",
    -              "offset": 168,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ROM_POWER_DOWN": {
    -                    "description": "reg_rom_power_down",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "SRAM_POWER_DOWN": {
    -                    "description": "reg_sram_power_down",
    -                    "offset": 2,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "MEM_POWER_UP": {
    -              "description": "APB_CTRL_MEM_POWER_UP_REG",
    -              "offset": 172,
    -              "size": 32,
    -              "reset_value": 63,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ROM_POWER_UP": {
    -                    "description": "reg_rom_power_up",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "SRAM_POWER_UP": {
    -                    "description": "reg_sram_power_up",
    -                    "offset": 2,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "RND_DATA": {
    -              "description": "APB_CTRL_RND_DATA_REG",
    -              "offset": 176,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RND_DATA": {
    -                    "description": "reg_rnd_data",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "PERI_BACKUP_CONFIG": {
    -              "description": "APB_CTRL_PERI_BACKUP_CONFIG_REG",
    -              "offset": 180,
    -              "size": 32,
    -              "reset_value": 25728,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PERI_BACKUP_FLOW_ERR": {
    -                    "description": "reg_peri_backup_flow_err",
    -                    "offset": 1,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "PERI_BACKUP_BURST_LIMIT": {
    -                    "description": "reg_peri_backup_burst_limit",
    -                    "offset": 4,
    -                    "size": 5
    -                  },
    -                  "PERI_BACKUP_TOUT_THRES": {
    -                    "description": "reg_peri_backup_tout_thres",
    -                    "offset": 9,
    -                    "size": 10
    -                  },
    -                  "PERI_BACKUP_SIZE": {
    -                    "description": "reg_peri_backup_size",
    -                    "offset": 19,
    -                    "size": 10
    -                  },
    -                  "PERI_BACKUP_START": {
    -                    "description": "reg_peri_backup_start",
    -                    "offset": 29,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "PERI_BACKUP_TO_MEM": {
    -                    "description": "reg_peri_backup_to_mem",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "PERI_BACKUP_ENA": {
    -                    "description": "reg_peri_backup_ena",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "PERI_BACKUP_APB_ADDR": {
    -              "description": "APB_CTRL_PERI_BACKUP_APB_ADDR_REG",
    -              "offset": 184,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BACKUP_APB_START_ADDR": {
    -                    "description": "reg_backup_apb_start_addr",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "PERI_BACKUP_MEM_ADDR": {
    -              "description": "APB_CTRL_PERI_BACKUP_MEM_ADDR_REG",
    -              "offset": 188,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BACKUP_MEM_START_ADDR": {
    -                    "description": "reg_backup_mem_start_addr",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "PERI_BACKUP_INT_RAW": {
    -              "description": "APB_CTRL_PERI_BACKUP_INT_RAW_REG",
    -              "offset": 192,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PERI_BACKUP_DONE_INT_RAW": {
    -                    "description": "reg_peri_backup_done_int_raw",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "PERI_BACKUP_ERR_INT_RAW": {
    -                    "description": "reg_peri_backup_err_int_raw",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "PERI_BACKUP_INT_ST": {
    -              "description": "APB_CTRL_PERI_BACKUP_INT_ST_REG",
    -              "offset": 196,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PERI_BACKUP_DONE_INT_ST": {
    -                    "description": "reg_peri_backup_done_int_st",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "PERI_BACKUP_ERR_INT_ST": {
    -                    "description": "reg_peri_backup_err_int_st",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "PERI_BACKUP_INT_ENA": {
    -              "description": "APB_CTRL_PERI_BACKUP_INT_ENA_REG",
    -              "offset": 200,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PERI_BACKUP_DONE_INT_ENA": {
    -                    "description": "reg_peri_backup_done_int_ena",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "PERI_BACKUP_ERR_INT_ENA": {
    -                    "description": "reg_peri_backup_err_int_ena",
    -                    "offset": 1,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "PERI_BACKUP_INT_CLR": {
    -              "description": "APB_CTRL_PERI_BACKUP_INT_CLR_REG",
    -              "offset": 208,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PERI_BACKUP_DONE_INT_CLR": {
    -                    "description": "reg_peri_backup_done_int_clr",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "PERI_BACKUP_ERR_INT_CLR": {
    -                    "description": "reg_peri_backup_err_int_clr",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DATE": {
    -              "description": "APB_CTRL_DATE_REG",
    -              "offset": 1020,
    -              "size": 32,
    -              "reset_value": 33583632,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATE": {
    -                    "description": "reg_dateVersion control",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "APB_SARADC": {
    -        "description": "Successive Approximation Register Analog to Digital Converter",
    -        "children": {
    -          "registers": {
    -            "CTRL": {
    -              "description": "digital saradc configure register",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 1073971776,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SARADC_START_FORCE": {
    -                    "description": "select software enable saradc sample",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "SARADC_START": {
    -                    "description": "software enable saradc sample",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "SARADC_SAR_CLK_GATED": {
    -                    "description": "SAR clock gated",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "SARADC_SAR_CLK_DIV": {
    -                    "description": "SAR clock divider",
    -                    "offset": 7,
    -                    "size": 8
    -                  },
    -                  "SARADC_SAR_PATT_LEN": {
    -                    "description": "0 ~ 15 means length 1 ~ 16",
    -                    "offset": 15,
    -                    "size": 3
    -                  },
    -                  "SARADC_SAR_PATT_P_CLEAR": {
    -                    "description": "clear the pointer of pattern table for DIG ADC1 CTRL",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "SARADC_XPD_SAR_FORCE": {
    -                    "description": "force option to xpd sar blocks",
    -                    "offset": 27,
    -                    "size": 2
    -                  },
    -                  "SARADC_WAIT_ARB_CYCLE": {
    -                    "description": "wait arbit signal stable after sar_done",
    -                    "offset": 30,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "CTRL2": {
    -              "description": "digital saradc configure register",
    -              "offset": 4,
    -              "size": 32,
    -              "reset_value": 41470,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SARADC_MEAS_NUM_LIMIT": {
    -                    "description": "enable max meas num",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "SARADC_MAX_MEAS_NUM": {
    -                    "description": "max conversion number",
    -                    "offset": 1,
    -                    "size": 8
    -                  },
    -                  "SARADC_SAR1_INV": {
    -                    "description": "1: data to DIG ADC1 CTRL is inverted, otherwise not",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "SARADC_SAR2_INV": {
    -                    "description": "1: data to DIG ADC2 CTRL is inverted, otherwise not",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "SARADC_TIMER_TARGET": {
    -                    "description": "to set saradc timer target",
    -                    "offset": 12,
    -                    "size": 12
    -                  },
    -                  "SARADC_TIMER_EN": {
    -                    "description": "to enable saradc timer trigger",
    -                    "offset": 24,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "FILTER_CTRL1": {
    -              "description": "digital saradc configure register",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "APB_SARADC_FILTER_FACTOR1": {
    -                    "description": "Factor of saradc filter1",
    -                    "offset": 26,
    -                    "size": 3
    -                  },
    -                  "APB_SARADC_FILTER_FACTOR0": {
    -                    "description": "Factor of saradc filter0",
    -                    "offset": 29,
    -                    "size": 3
    -                  }
    -                }
    -              }
    -            },
    -            "FSM_WAIT": {
    -              "description": "digital saradc configure register",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 16713736,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SARADC_XPD_WAIT": {
    -                    "description": "saradc_xpd_wait",
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "SARADC_RSTB_WAIT": {
    -                    "description": "saradc_rstb_wait",
    -                    "offset": 8,
    -                    "size": 8
    -                  },
    -                  "SARADC_STANDBY_WAIT": {
    -                    "description": "saradc_standby_wait",
    -                    "offset": 16,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "SAR1_STATUS": {
    -              "description": "digital saradc configure register",
    -              "offset": 16,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SARADC_SAR1_STATUS": {
    -                    "description": "saradc1 status about data and channel",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "SAR2_STATUS": {
    -              "description": "digital saradc configure register",
    -              "offset": 20,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SARADC_SAR2_STATUS": {
    -                    "description": "saradc2 status about data and channel",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "SAR_PATT_TAB1": {
    -              "description": "digital saradc configure register",
    -              "offset": 24,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SARADC_SAR_PATT_TAB1": {
    -                    "description": "item 0 ~ 3 for pattern table 1 (each item one byte)",
    -                    "offset": 0,
    -                    "size": 24
    -                  }
    -                }
    -              }
    -            },
    -            "SAR_PATT_TAB2": {
    -              "description": "digital saradc configure register",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SARADC_SAR_PATT_TAB2": {
    -                    "description": "Item 4 ~ 7 for pattern table 1 (each item one byte)",
    -                    "offset": 0,
    -                    "size": 24
    -                  }
    -                }
    -              }
    -            },
    -            "ONETIME_SAMPLE": {
    -              "description": "digital saradc configure register",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 436207616,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SARADC_ONETIME_ATTEN": {
    -                    "description": "configure onetime atten",
    -                    "offset": 23,
    -                    "size": 2
    -                  },
    -                  "SARADC_ONETIME_CHANNEL": {
    -                    "description": "configure onetime channel",
    -                    "offset": 25,
    -                    "size": 4
    -                  },
    -                  "SARADC_ONETIME_START": {
    -                    "description": "trigger adc onetime sample",
    -                    "offset": 29,
    -                    "size": 1
    -                  },
    -                  "SARADC2_ONETIME_SAMPLE": {
    -                    "description": "enable adc2 onetime sample",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "SARADC1_ONETIME_SAMPLE": {
    -                    "description": "enable adc1 onetime sample",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "ARB_CTRL": {
    -              "description": "digital saradc configure register",
    -              "offset": 36,
    -              "size": 32,
    -              "reset_value": 2304,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ADC_ARB_APB_FORCE": {
    -                    "description": "adc2 arbiter force to enableapb controller",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "ADC_ARB_RTC_FORCE": {
    -                    "description": "adc2 arbiter force to enable rtc controller",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "ADC_ARB_WIFI_FORCE": {
    -                    "description": "adc2 arbiter force to enable wifi controller",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "ADC_ARB_GRANT_FORCE": {
    -                    "description": "adc2 arbiter force grant",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "ADC_ARB_APB_PRIORITY": {
    -                    "description": "Set adc2 arbiterapb priority",
    -                    "offset": 6,
    -                    "size": 2
    -                  },
    -                  "ADC_ARB_RTC_PRIORITY": {
    -                    "description": "Set adc2 arbiter rtc priority",
    -                    "offset": 8,
    -                    "size": 2
    -                  },
    -                  "ADC_ARB_WIFI_PRIORITY": {
    -                    "description": "Set adc2 arbiter wifi priority",
    -                    "offset": 10,
    -                    "size": 2
    -                  },
    -                  "ADC_ARB_FIX_PRIORITY": {
    -                    "description": "adc2 arbiter uses fixed priority",
    -                    "offset": 12,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "FILTER_CTRL0": {
    -              "description": "digital saradc configure register",
    -              "offset": 40,
    -              "size": 32,
    -              "reset_value": 57933824,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "APB_SARADC_FILTER_CHANNEL1": {
    -                    "description": "configure filter1 to adc channel",
    -                    "offset": 18,
    -                    "size": 4
    -                  },
    -                  "APB_SARADC_FILTER_CHANNEL0": {
    -                    "description": "configure filter0 to adc channel",
    -                    "offset": 22,
    -                    "size": 4
    -                  },
    -                  "APB_SARADC_FILTER_RESET": {
    -                    "description": "enable apb_adc1_filter",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "SAR1DATA_STATUS": {
    -              "description": "digital saradc configure register",
    -              "offset": 44,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "APB_SARADC1_DATA": {
    -                    "description": "saradc1 data",
    -                    "offset": 0,
    -                    "size": 17,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "SAR2DATA_STATUS": {
    -              "description": "digital saradc configure register",
    -              "offset": 48,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "APB_SARADC2_DATA": {
    -                    "description": "saradc2 data",
    -                    "offset": 0,
    -                    "size": 17,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "THRES0_CTRL": {
    -              "description": "digital saradc configure register",
    -              "offset": 52,
    -              "size": 32,
    -              "reset_value": 262125,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "APB_SARADC_THRES0_CHANNEL": {
    -                    "description": "configure thres0 to adc channel",
    -                    "offset": 0,
    -                    "size": 4
    -                  },
    -                  "APB_SARADC_THRES0_HIGH": {
    -                    "description": "saradc thres0 monitor thres",
    -                    "offset": 5,
    -                    "size": 13
    -                  },
    -                  "APB_SARADC_THRES0_LOW": {
    -                    "description": "saradc thres0 monitor thres",
    -                    "offset": 18,
    -                    "size": 13
    -                  }
    -                }
    -              }
    -            },
    -            "THRES1_CTRL": {
    -              "description": "digital saradc configure register",
    -              "offset": 56,
    -              "size": 32,
    -              "reset_value": 262125,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "APB_SARADC_THRES1_CHANNEL": {
    -                    "description": "configure thres1 to adc channel",
    -                    "offset": 0,
    -                    "size": 4
    -                  },
    -                  "APB_SARADC_THRES1_HIGH": {
    -                    "description": "saradc thres1 monitor thres",
    -                    "offset": 5,
    -                    "size": 13
    -                  },
    -                  "APB_SARADC_THRES1_LOW": {
    -                    "description": "saradc thres1 monitor thres",
    -                    "offset": 18,
    -                    "size": 13
    -                  }
    -                }
    -              }
    -            },
    -            "THRES_CTRL": {
    -              "description": "digital saradc configure register",
    -              "offset": 60,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "APB_SARADC_THRES_ALL_EN": {
    -                    "description": "enable thres to all channel",
    -                    "offset": 27,
    -                    "size": 1
    -                  },
    -                  "APB_SARADC_THRES1_EN": {
    -                    "description": "enable thres1",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "APB_SARADC_THRES0_EN": {
    -                    "description": "enable thres0",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ENA": {
    -              "description": "digital saradc int register",
    -              "offset": 64,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "APB_SARADC_THRES1_LOW_INT_ENA": {
    -                    "description": "saradc thres1 low  interrupt enable",
    -                    "offset": 26,
    -                    "size": 1
    -                  },
    -                  "APB_SARADC_THRES0_LOW_INT_ENA": {
    -                    "description": "saradc thres0 low interrupt enable",
    -                    "offset": 27,
    -                    "size": 1
    -                  },
    -                  "APB_SARADC_THRES1_HIGH_INT_ENA": {
    -                    "description": "saradc thres1 high interrupt enable",
    -                    "offset": 28,
    -                    "size": 1
    -                  },
    -                  "APB_SARADC_THRES0_HIGH_INT_ENA": {
    -                    "description": "saradc thres0 high interrupt enable",
    -                    "offset": 29,
    -                    "size": 1
    -                  },
    -                  "APB_SARADC2_DONE_INT_ENA": {
    -                    "description": "saradc2 done interrupt enable",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "APB_SARADC1_DONE_INT_ENA": {
    -                    "description": "saradc1 done interrupt enable",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INT_RAW": {
    -              "description": "digital saradc int register",
    -              "offset": 68,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "APB_SARADC_THRES1_LOW_INT_RAW": {
    -                    "description": "saradc thres1 low  interrupt raw",
    -                    "offset": 26,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "APB_SARADC_THRES0_LOW_INT_RAW": {
    -                    "description": "saradc thres0 low interrupt raw",
    -                    "offset": 27,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "APB_SARADC_THRES1_HIGH_INT_RAW": {
    -                    "description": "saradc thres1 high interrupt raw",
    -                    "offset": 28,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "APB_SARADC_THRES0_HIGH_INT_RAW": {
    -                    "description": "saradc thres0 high interrupt raw",
    -                    "offset": 29,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "APB_SARADC2_DONE_INT_RAW": {
    -                    "description": "saradc2 done interrupt raw",
    -                    "offset": 30,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "APB_SARADC1_DONE_INT_RAW": {
    -                    "description": "saradc1 done interrupt raw",
    -                    "offset": 31,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ST": {
    -              "description": "digital saradc int register",
    -              "offset": 72,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "APB_SARADC_THRES1_LOW_INT_ST": {
    -                    "description": "saradc thres1 low  interrupt state",
    -                    "offset": 26,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "APB_SARADC_THRES0_LOW_INT_ST": {
    -                    "description": "saradc thres0 low interrupt state",
    -                    "offset": 27,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "APB_SARADC_THRES1_HIGH_INT_ST": {
    -                    "description": "saradc thres1 high interrupt state",
    -                    "offset": 28,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "APB_SARADC_THRES0_HIGH_INT_ST": {
    -                    "description": "saradc thres0 high interrupt state",
    -                    "offset": 29,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "APB_SARADC2_DONE_INT_ST": {
    -                    "description": "saradc2 done interrupt state",
    -                    "offset": 30,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "APB_SARADC1_DONE_INT_ST": {
    -                    "description": "saradc1 done interrupt state",
    -                    "offset": 31,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_CLR": {
    -              "description": "digital saradc int register",
    -              "offset": 76,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "APB_SARADC_THRES1_LOW_INT_CLR": {
    -                    "description": "saradc thres1 low  interrupt clear",
    -                    "offset": 26,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "APB_SARADC_THRES0_LOW_INT_CLR": {
    -                    "description": "saradc thres0 low interrupt clear",
    -                    "offset": 27,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "APB_SARADC_THRES1_HIGH_INT_CLR": {
    -                    "description": "saradc thres1 high interrupt clear",
    -                    "offset": 28,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "APB_SARADC_THRES0_HIGH_INT_CLR": {
    -                    "description": "saradc thres0 high interrupt clear",
    -                    "offset": 29,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "APB_SARADC2_DONE_INT_CLR": {
    -                    "description": "saradc2 done interrupt clear",
    -                    "offset": 30,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "APB_SARADC1_DONE_INT_CLR": {
    -                    "description": "saradc1 done interrupt clear",
    -                    "offset": 31,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_CONF": {
    -              "description": "digital saradc configure register",
    -              "offset": 80,
    -              "size": 32,
    -              "reset_value": 255,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "APB_ADC_EOF_NUM": {
    -                    "description": "the dma_in_suc_eof gen when sample cnt = spi_eof_num",
    -                    "offset": 0,
    -                    "size": 16
    -                  },
    -                  "APB_ADC_RESET_FSM": {
    -                    "description": "reset_apb_adc_state",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "APB_ADC_TRANS": {
    -                    "description": "enable apb_adc use spi_dma",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CLKM_CONF": {
    -              "description": "digital saradc configure register",
    -              "offset": 84,
    -              "size": 32,
    -              "reset_value": 4,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CLKM_DIV_NUM": {
    -                    "description": "Integral I2S clock divider value",
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "CLKM_DIV_B": {
    -                    "description": "Fractional clock divider numerator value",
    -                    "offset": 8,
    -                    "size": 6
    -                  },
    -                  "CLKM_DIV_A": {
    -                    "description": "Fractional clock divider denominator value",
    -                    "offset": 14,
    -                    "size": 6
    -                  },
    -                  "CLK_EN": {
    -                    "description": "reg clk en",
    -                    "offset": 20,
    -                    "size": 1
    -                  },
    -                  "CLK_SEL": {
    -                    "description": "Set this bit to enable clk_apll",
    -                    "offset": 21,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "APB_TSENS_CTRL": {
    -              "description": "digital tsens configure register",
    -              "offset": 88,
    -              "size": 32,
    -              "reset_value": 98304,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TSENS_OUT": {
    -                    "description": "temperature sensor data out",
    -                    "offset": 0,
    -                    "size": 8,
    -                    "access": "read-only"
    -                  },
    -                  "TSENS_IN_INV": {
    -                    "description": "invert temperature sensor data",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "TSENS_CLK_DIV": {
    -                    "description": "temperature sensor clock divider",
    -                    "offset": 14,
    -                    "size": 8
    -                  },
    -                  "TSENS_PU": {
    -                    "description": "temperature sensor power up",
    -                    "offset": 22,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "TSENS_CTRL2": {
    -              "description": "digital tsens configure register",
    -              "offset": 92,
    -              "size": 32,
    -              "reset_value": 16386,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TSENS_XPD_WAIT": {
    -                    "description": "the time that power up tsens need wait",
    -                    "offset": 0,
    -                    "size": 12
    -                  },
    -                  "TSENS_XPD_FORCE": {
    -                    "description": "force power up tsens",
    -                    "offset": 12,
    -                    "size": 2
    -                  },
    -                  "TSENS_CLK_INV": {
    -                    "description": "inv tsens clk",
    -                    "offset": 14,
    -                    "size": 1
    -                  },
    -                  "TSENS_CLK_SEL": {
    -                    "description": "tsens clk select",
    -                    "offset": 15,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CALI": {
    -              "description": "digital saradc configure register",
    -              "offset": 96,
    -              "size": 32,
    -              "reset_value": 32768,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "APB_SARADC_CALI_CFG": {
    -                    "description": "saradc cali factor",
    -                    "offset": 0,
    -                    "size": 17
    -                  }
    -                }
    -              }
    -            },
    -            "CTRL_DATE": {
    -              "description": "version",
    -              "offset": 1020,
    -              "size": 32,
    -              "reset_value": 33583473,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATE": {
    -                    "description": "version",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "ASSIST_DEBUG": {
    -        "description": "Debug Assist",
    -        "children": {
    -          "registers": {
    -            "C0RE_0_MONTR_ENA": {
    -              "description": "ASSIST_DEBUG_C0RE_0_MONTR_ENA_REG",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_AREA_DRAM0_0_RD_ENA": {
    -                    "description": "reg_core_0_area_dram0_0_rd_ena",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "CORE_0_AREA_DRAM0_0_WR_ENA": {
    -                    "description": "reg_core_0_area_dram0_0_wr_ena",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "CORE_0_AREA_DRAM0_1_RD_ENA": {
    -                    "description": "reg_core_0_area_dram0_1_rd_ena",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "CORE_0_AREA_DRAM0_1_WR_ENA": {
    -                    "description": "reg_core_0_area_dram0_1_wr_ena",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "CORE_0_AREA_PIF_0_RD_ENA": {
    -                    "description": "reg_core_0_area_pif_0_rd_ena",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "CORE_0_AREA_PIF_0_WR_ENA": {
    -                    "description": "reg_core_0_area_pif_0_wr_ena",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "CORE_0_AREA_PIF_1_RD_ENA": {
    -                    "description": "reg_core_0_area_pif_1_rd_ena",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "CORE_0_AREA_PIF_1_WR_ENA": {
    -                    "description": "reg_core_0_area_pif_1_wr_ena",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "CORE_0_SP_SPILL_MIN_ENA": {
    -                    "description": "reg_core_0_sp_spill_min_ena",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "CORE_0_SP_SPILL_MAX_ENA": {
    -                    "description": "reg_core_0_sp_spill_max_ena",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "CORE_0_IRAM0_EXCEPTION_MONITOR_ENA": {
    -                    "description": "reg_core_0_iram0_exception_monitor_ena",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "CORE_0_DRAM0_EXCEPTION_MONITOR_ENA": {
    -                    "description": "reg_core_0_dram0_exception_monitor_ena",
    -                    "offset": 11,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_INTR_RAW": {
    -              "description": "ASSIST_DEBUG_CORE_0_INTR_RAW_REG",
    -              "offset": 4,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_AREA_DRAM0_0_RD_RAW": {
    -                    "description": "reg_core_0_area_dram0_0_rd_raw",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_AREA_DRAM0_0_WR_RAW": {
    -                    "description": "reg_core_0_area_dram0_0_wr_raw",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_AREA_DRAM0_1_RD_RAW": {
    -                    "description": "reg_core_0_area_dram0_1_rd_raw",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_AREA_DRAM0_1_WR_RAW": {
    -                    "description": "reg_core_0_area_dram0_1_wr_raw",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_AREA_PIF_0_RD_RAW": {
    -                    "description": "reg_core_0_area_pif_0_rd_raw",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_AREA_PIF_0_WR_RAW": {
    -                    "description": "reg_core_0_area_pif_0_wr_raw",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_AREA_PIF_1_RD_RAW": {
    -                    "description": "reg_core_0_area_pif_1_rd_raw",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_AREA_PIF_1_WR_RAW": {
    -                    "description": "reg_core_0_area_pif_1_wr_raw",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_SP_SPILL_MIN_RAW": {
    -                    "description": "reg_core_0_sp_spill_min_raw",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_SP_SPILL_MAX_RAW": {
    -                    "description": "reg_core_0_sp_spill_max_raw",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_IRAM0_EXCEPTION_MONITOR_RAW": {
    -                    "description": "reg_core_0_iram0_exception_monitor_raw",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_DRAM0_EXCEPTION_MONITOR_RAW": {
    -                    "description": "reg_core_0_dram0_exception_monitor_raw",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_INTR_ENA": {
    -              "description": "ASSIST_DEBUG_CORE_0_INTR_ENA_REG",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_AREA_DRAM0_0_RD_INTR_ENA": {
    -                    "description": "reg_core_0_area_dram0_0_rd_intr_ena",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "CORE_0_AREA_DRAM0_0_WR_INTR_ENA": {
    -                    "description": "reg_core_0_area_dram0_0_wr_intr_ena",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "CORE_0_AREA_DRAM0_1_RD_INTR_ENA": {
    -                    "description": "reg_core_0_area_dram0_1_rd_intr_ena",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "CORE_0_AREA_DRAM0_1_WR_INTR_ENA": {
    -                    "description": "reg_core_0_area_dram0_1_wr_intr_ena",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "CORE_0_AREA_PIF_0_RD_INTR_ENA": {
    -                    "description": "reg_core_0_area_pif_0_rd_intr_ena",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "CORE_0_AREA_PIF_0_WR_INTR_ENA": {
    -                    "description": "reg_core_0_area_pif_0_wr_intr_ena",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "CORE_0_AREA_PIF_1_RD_INTR_ENA": {
    -                    "description": "reg_core_0_area_pif_1_rd_intr_ena",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "CORE_0_AREA_PIF_1_WR_INTR_ENA": {
    -                    "description": "reg_core_0_area_pif_1_wr_intr_ena",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "CORE_0_SP_SPILL_MIN_INTR_ENA": {
    -                    "description": "reg_core_0_sp_spill_min_intr_ena",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "CORE_0_SP_SPILL_MAX_INTR_ENA": {
    -                    "description": "reg_core_0_sp_spill_max_intr_ena",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "CORE_0_IRAM0_EXCEPTION_MONITOR_RLS": {
    -                    "description": "reg_core_0_iram0_exception_monitor_ena",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "CORE_0_DRAM0_EXCEPTION_MONITOR_RLS": {
    -                    "description": "reg_core_0_dram0_exception_monitor_ena",
    -                    "offset": 11,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_INTR_CLR": {
    -              "description": "ASSIST_DEBUG_CORE_0_INTR_CLR_REG",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_AREA_DRAM0_0_RD_CLR": {
    -                    "description": "reg_core_0_area_dram0_0_rd_clr",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "CORE_0_AREA_DRAM0_0_WR_CLR": {
    -                    "description": "reg_core_0_area_dram0_0_wr_clr",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "CORE_0_AREA_DRAM0_1_RD_CLR": {
    -                    "description": "reg_core_0_area_dram0_1_rd_clr",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "CORE_0_AREA_DRAM0_1_WR_CLR": {
    -                    "description": "reg_core_0_area_dram0_1_wr_clr",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "CORE_0_AREA_PIF_0_RD_CLR": {
    -                    "description": "reg_core_0_area_pif_0_rd_clr",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "CORE_0_AREA_PIF_0_WR_CLR": {
    -                    "description": "reg_core_0_area_pif_0_wr_clr",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "CORE_0_AREA_PIF_1_RD_CLR": {
    -                    "description": "reg_core_0_area_pif_1_rd_clr",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "CORE_0_AREA_PIF_1_WR_CLR": {
    -                    "description": "reg_core_0_area_pif_1_wr_clr",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "CORE_0_SP_SPILL_MIN_CLR": {
    -                    "description": "reg_core_0_sp_spill_min_clr",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "CORE_0_SP_SPILL_MAX_CLR": {
    -                    "description": "reg_core_0_sp_spill_max_clr",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "CORE_0_IRAM0_EXCEPTION_MONITOR_CLR": {
    -                    "description": "reg_core_0_iram0_exception_monitor_clr",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "CORE_0_DRAM0_EXCEPTION_MONITOR_CLR": {
    -                    "description": "reg_core_0_dram0_exception_monitor_clr",
    -                    "offset": 11,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_AREA_DRAM0_0_MIN": {
    -              "description": "ASSIST_DEBUG_CORE_0_AREA_DRAM0_0_MIN_REG",
    -              "offset": 16,
    -              "size": 32,
    -              "reset_value": 4294967295,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_AREA_DRAM0_0_MIN": {
    -                    "description": "reg_core_0_area_dram0_0_min",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_AREA_DRAM0_0_MAX": {
    -              "description": "ASSIST_DEBUG_CORE_0_AREA_DRAM0_0_MAX_REG",
    -              "offset": 20,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_AREA_DRAM0_0_MAX": {
    -                    "description": "reg_core_0_area_dram0_0_max",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_AREA_DRAM0_1_MIN": {
    -              "description": "ASSIST_DEBUG_CORE_0_AREA_DRAM0_1_MIN_REG",
    -              "offset": 24,
    -              "size": 32,
    -              "reset_value": 4294967295,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_AREA_DRAM0_1_MIN": {
    -                    "description": "reg_core_0_area_dram0_1_min",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_AREA_DRAM0_1_MAX": {
    -              "description": "ASSIST_DEBUG_CORE_0_AREA_DRAM0_1_MAX_REG",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_AREA_DRAM0_1_MAX": {
    -                    "description": "reg_core_0_area_dram0_1_max",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_AREA_PIF_0_MIN": {
    -              "description": "ASSIST_DEBUG_CORE_0_AREA_PIF_0_MIN_REG",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 4294967295,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_AREA_PIF_0_MIN": {
    -                    "description": "reg_core_0_area_pif_0_min",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_AREA_PIF_0_MAX": {
    -              "description": "ASSIST_DEBUG_CORE_0_AREA_PIF_0_MAX_REG",
    -              "offset": 36,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_AREA_PIF_0_MAX": {
    -                    "description": "reg_core_0_area_pif_0_max",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_AREA_PIF_1_MIN": {
    -              "description": "ASSIST_DEBUG_CORE_0_AREA_PIF_1_MIN_REG",
    -              "offset": 40,
    -              "size": 32,
    -              "reset_value": 4294967295,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_AREA_PIF_1_MIN": {
    -                    "description": "reg_core_0_area_pif_1_min",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_AREA_PIF_1_MAX": {
    -              "description": "ASSIST_DEBUG_CORE_0_AREA_PIF_1_MAX_REG",
    -              "offset": 44,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_AREA_PIF_1_MAX": {
    -                    "description": "reg_core_0_area_pif_1_max",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_AREA_PC": {
    -              "description": "ASSIST_DEBUG_CORE_0_AREA_PC_REG",
    -              "offset": 48,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_AREA_PC": {
    -                    "description": "reg_core_0_area_pc",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_AREA_SP": {
    -              "description": "ASSIST_DEBUG_CORE_0_AREA_SP_REG",
    -              "offset": 52,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_AREA_SP": {
    -                    "description": "reg_core_0_area_sp",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_SP_MIN": {
    -              "description": "ASSIST_DEBUG_CORE_0_SP_MIN_REG",
    -              "offset": 56,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_SP_MIN": {
    -                    "description": "reg_core_0_sp_min",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_SP_MAX": {
    -              "description": "ASSIST_DEBUG_CORE_0_SP_MAX_REG",
    -              "offset": 60,
    -              "size": 32,
    -              "reset_value": 4294967295,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_SP_MAX": {
    -                    "description": "reg_core_0_sp_max",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_SP_PC": {
    -              "description": "ASSIST_DEBUG_CORE_0_SP_PC_REG",
    -              "offset": 64,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_SP_PC": {
    -                    "description": "reg_core_0_sp_pc",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_RCD_EN": {
    -              "description": "ASSIST_DEBUG_CORE_0_RCD_EN_REG",
    -              "offset": 68,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_RCD_RECORDEN": {
    -                    "description": "reg_core_0_rcd_recorden",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "CORE_0_RCD_PDEBUGEN": {
    -                    "description": "reg_core_0_rcd_pdebugen",
    -                    "offset": 1,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_RCD_PDEBUGPC": {
    -              "description": "ASSIST_DEBUG_CORE_0_RCD_PDEBUGPC_REG",
    -              "offset": 72,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_RCD_PDEBUGPC": {
    -                    "description": "reg_core_0_rcd_pdebugpc",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_RCD_PDEBUGSP": {
    -              "description": "ASSIST_DEBUG_CORE_0_RCD_PDEBUGSP_REG",
    -              "offset": 76,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_RCD_PDEBUGSP": {
    -                    "description": "reg_core_0_rcd_pdebugsp",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_IRAM0_EXCEPTION_MONITOR_0": {
    -              "description": "ASSIST_DEBUG_CORE_0_RCD_PDEBUGSP_REG",
    -              "offset": 80,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_IRAM0_RECORDING_ADDR_0": {
    -                    "description": "reg_core_0_iram0_recording_addr_0",
    -                    "offset": 0,
    -                    "size": 24,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_IRAM0_RECORDING_WR_0": {
    -                    "description": "reg_core_0_iram0_recording_wr_0",
    -                    "offset": 24,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_IRAM0_RECORDING_LOADSTORE_0": {
    -                    "description": "reg_core_0_iram0_recording_loadstore_0",
    -                    "offset": 25,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_IRAM0_EXCEPTION_MONITOR_1": {
    -              "description": "ASSIST_DEBUG_CORE_0_IRAM0_EXCEPTION_MONITOR_1_REG",
    -              "offset": 84,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_IRAM0_RECORDING_ADDR_1": {
    -                    "description": "reg_core_0_iram0_recording_addr_1",
    -                    "offset": 0,
    -                    "size": 24,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_IRAM0_RECORDING_WR_1": {
    -                    "description": "reg_core_0_iram0_recording_wr_1",
    -                    "offset": 24,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_IRAM0_RECORDING_LOADSTORE_1": {
    -                    "description": "reg_core_0_iram0_recording_loadstore_1",
    -                    "offset": 25,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_DRAM0_EXCEPTION_MONITOR_0": {
    -              "description": "ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_0_REG",
    -              "offset": 88,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_DRAM0_RECORDING_ADDR_0": {
    -                    "description": "reg_core_0_dram0_recording_addr_0",
    -                    "offset": 0,
    -                    "size": 24,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_DRAM0_RECORDING_WR_0": {
    -                    "description": "reg_core_0_dram0_recording_wr_0",
    -                    "offset": 24,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_DRAM0_RECORDING_BYTEEN_0": {
    -                    "description": "reg_core_0_dram0_recording_byteen_0",
    -                    "offset": 25,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_DRAM0_EXCEPTION_MONITOR_1": {
    -              "description": "ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_1_REG",
    -              "offset": 92,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_DRAM0_RECORDING_PC_0": {
    -                    "description": "reg_core_0_dram0_recording_pc_0",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_DRAM0_EXCEPTION_MONITOR_2": {
    -              "description": "ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_1_REG",
    -              "offset": 96,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_DRAM0_RECORDING_ADDR_1": {
    -                    "description": "reg_core_0_dram0_recording_addr_1",
    -                    "offset": 0,
    -                    "size": 24,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_DRAM0_RECORDING_WR_1": {
    -                    "description": "reg_core_0_dram0_recording_wr_1",
    -                    "offset": 24,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_DRAM0_RECORDING_BYTEEN_1": {
    -                    "description": "reg_core_0_dram0_recording_byteen_1",
    -                    "offset": 25,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_DRAM0_EXCEPTION_MONITOR_3": {
    -              "description": "ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_3_REG",
    -              "offset": 100,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_DRAM0_RECORDING_PC_1": {
    -                    "description": "reg_core_0_dram0_recording_pc_1",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_0": {
    -              "description": "ASSIST_DEBUG_CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_0_REG",
    -              "offset": 104,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_X_IRAM0_DRAM0_LIMIT_CYCLE_0": {
    -                    "description": "reg_core_x_iram0_dram0_limit_cycle_0",
    -                    "offset": 0,
    -                    "size": 20
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_1": {
    -              "description": "ASSIST_DEBUG_CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_1_REG",
    -              "offset": 108,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_X_IRAM0_DRAM0_LIMIT_CYCLE_1": {
    -                    "description": "reg_core_x_iram0_dram0_limit_cycle_1",
    -                    "offset": 0,
    -                    "size": 20
    -                  }
    -                }
    -              }
    -            },
    -            "LOG_SETTING": {
    -              "description": "ASSIST_DEBUG_LOG_SETTING",
    -              "offset": 112,
    -              "size": 32,
    -              "reset_value": 128,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LOG_ENA": {
    -                    "description": "reg_log_ena",
    -                    "offset": 0,
    -                    "size": 3
    -                  },
    -                  "LOG_MODE": {
    -                    "description": "reg_log_mode",
    -                    "offset": 3,
    -                    "size": 4
    -                  },
    -                  "LOG_MEM_LOOP_ENABLE": {
    -                    "description": "reg_log_mem_loop_enable",
    -                    "offset": 7,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "LOG_DATA_0": {
    -              "description": "ASSIST_DEBUG_LOG_DATA_0_REG",
    -              "offset": 116,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LOG_DATA_0": {
    -                    "description": "reg_log_data_0",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "LOG_DATA_MASK": {
    -              "description": "ASSIST_DEBUG_LOG_DATA_MASK_REG",
    -              "offset": 120,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LOG_DATA_SIZE": {
    -                    "description": "reg_log_data_size",
    -                    "offset": 0,
    -                    "size": 16
    -                  }
    -                }
    -              }
    -            },
    -            "LOG_MIN": {
    -              "description": "ASSIST_DEBUG_LOG_MIN_REG",
    -              "offset": 124,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LOG_MIN": {
    -                    "description": "reg_log_min",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "LOG_MAX": {
    -              "description": "ASSIST_DEBUG_LOG_MAX_REG",
    -              "offset": 128,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LOG_MAX": {
    -                    "description": "reg_log_max",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "LOG_MEM_START": {
    -              "description": "ASSIST_DEBUG_LOG_MEM_START_REG",
    -              "offset": 132,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LOG_MEM_START": {
    -                    "description": "reg_log_mem_start",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "LOG_MEM_END": {
    -              "description": "ASSIST_DEBUG_LOG_MEM_END_REG",
    -              "offset": 136,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LOG_MEM_END": {
    -                    "description": "reg_log_mem_end",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "LOG_MEM_WRITING_ADDR": {
    -              "description": "ASSIST_DEBUG_LOG_MEM_WRITING_ADDR_REG",
    -              "offset": 140,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LOG_MEM_WRITING_ADDR": {
    -                    "description": "reg_log_mem_writing_addr",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "LOG_MEM_FULL_FLAG": {
    -              "description": "ASSIST_DEBUG_LOG_MEM_FULL_FLAG_REG",
    -              "offset": 144,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LOG_MEM_FULL_FLAG": {
    -                    "description": "reg_log_mem_full_flag",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CLR_LOG_MEM_FULL_FLAG": {
    -                    "description": "reg_clr_log_mem_full_flag",
    -                    "offset": 1,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "C0RE_0_LASTPC_BEFORE_EXCEPTION": {
    -              "description": "ASSIST_DEBUG_C0RE_0_LASTPC_BEFORE_EXCEPTION",
    -              "offset": 148,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_LASTPC_BEFORE_EXC": {
    -                    "description": "reg_core_0_lastpc_before_exc",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "C0RE_0_DEBUG_MODE": {
    -              "description": "ASSIST_DEBUG_C0RE_0_DEBUG_MODE",
    -              "offset": 152,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_DEBUG_MODE": {
    -                    "description": "reg_core_0_debug_mode",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_DEBUG_MODULE_ACTIVE": {
    -                    "description": "reg_core_0_debug_module_active",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DATE": {
    -              "description": "ASSIST_DEBUG_DATE_REG",
    -              "offset": 508,
    -              "size": 32,
    -              "reset_value": 33587216,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ASSIST_DEBUG_DATE": {
    -                    "description": "reg_assist_debug_date",
    -                    "offset": 0,
    -                    "size": 28
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "DMA": {
    -        "description": "DMA (Direct Memory Access) Controller",
    -        "children": {
    -          "registers": {
    -            "INT_RAW_CH0": {
    -              "description": "DMA_INT_RAW_CH0_REG.",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_DONE_CH0_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 0.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_SUC_EOF_CH0_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 0. For UHCI0, the raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received and no data error is detected for Rx channel 0.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_ERR_EOF_CH0_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when data error is detected only in the case that the peripheral is UHCI0 for Rx channel 0. For other peripherals, this raw interrupt is reserved.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_DONE_CH0_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been transmitted to peripherals for Tx channel 0.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_EOF_CH0_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been read from memory for Tx channel 0.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_DSCR_ERR_CH0_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when detecting inlink descriptor error, including owner error, the second and third word error of inlink descriptor for Rx channel 0.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_DSCR_ERR_CH0_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when detecting outlink descriptor error, including owner error, the second and third word error of outlink descriptor for Tx channel 0.",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_DSCR_EMPTY_CH0_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when Rx buffer pointed by inlink is full and receiving data is not completed, but there is no more inlink for Rx channel 0.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_TOTAL_EOF_CH0_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when data corresponding a outlink (includes one link descriptor or few link descriptors) is transmitted out for Tx channel 0.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "INFIFO_OVF_CH0_INT_RAW": {
    -                    "description": "This raw interrupt bit turns to high level when level 1 fifo of Rx channel 0 is overflow.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "INFIFO_UDF_CH0_INT_RAW": {
    -                    "description": "This raw interrupt bit turns to high level when level 1 fifo of Rx channel 0 is underflow.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUTFIFO_OVF_CH0_INT_RAW": {
    -                    "description": "This raw interrupt bit turns to high level when level 1 fifo of Tx channel 0 is overflow.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUTFIFO_UDF_CH0_INT_RAW": {
    -                    "description": "This raw interrupt bit turns to high level when level 1 fifo of Tx channel 0 is underflow.",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ST_CH0": {
    -              "description": "DMA_INT_ST_CH0_REG.",
    -              "offset": 4,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_DONE_CH0_INT_ST": {
    -                    "description": "The raw interrupt status bit for the IN_DONE_CH_INT interrupt.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_SUC_EOF_CH0_INT_ST": {
    -                    "description": "The raw interrupt status bit for the IN_SUC_EOF_CH_INT interrupt.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_ERR_EOF_CH0_INT_ST": {
    -                    "description": "The raw interrupt status bit for the IN_ERR_EOF_CH_INT interrupt.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_DONE_CH0_INT_ST": {
    -                    "description": "The raw interrupt status bit for the OUT_DONE_CH_INT interrupt.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_EOF_CH0_INT_ST": {
    -                    "description": "The raw interrupt status bit for the OUT_EOF_CH_INT interrupt.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_DSCR_ERR_CH0_INT_ST": {
    -                    "description": "The raw interrupt status bit for the IN_DSCR_ERR_CH_INT interrupt.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_DSCR_ERR_CH0_INT_ST": {
    -                    "description": "The raw interrupt status bit for the OUT_DSCR_ERR_CH_INT interrupt.",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_DSCR_EMPTY_CH0_INT_ST": {
    -                    "description": "The raw interrupt status bit for the IN_DSCR_EMPTY_CH_INT interrupt.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_TOTAL_EOF_CH0_INT_ST": {
    -                    "description": "The raw interrupt status bit for the OUT_TOTAL_EOF_CH_INT interrupt.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "INFIFO_OVF_CH0_INT_ST": {
    -                    "description": "The raw interrupt status bit for the INFIFO_OVF_L1_CH_INT interrupt.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "INFIFO_UDF_CH0_INT_ST": {
    -                    "description": "The raw interrupt status bit for the INFIFO_UDF_L1_CH_INT interrupt.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUTFIFO_OVF_CH0_INT_ST": {
    -                    "description": "The raw interrupt status bit for the OUTFIFO_OVF_L1_CH_INT interrupt.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUTFIFO_UDF_CH0_INT_ST": {
    -                    "description": "The raw interrupt status bit for the OUTFIFO_UDF_L1_CH_INT interrupt.",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ENA_CH0": {
    -              "description": "DMA_INT_ENA_CH0_REG.",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_DONE_CH0_INT_ENA": {
    -                    "description": "The interrupt enable bit for the IN_DONE_CH_INT interrupt.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "IN_SUC_EOF_CH0_INT_ENA": {
    -                    "description": "The interrupt enable bit for the IN_SUC_EOF_CH_INT interrupt.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "IN_ERR_EOF_CH0_INT_ENA": {
    -                    "description": "The interrupt enable bit for the IN_ERR_EOF_CH_INT interrupt.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "OUT_DONE_CH0_INT_ENA": {
    -                    "description": "The interrupt enable bit for the OUT_DONE_CH_INT interrupt.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "OUT_EOF_CH0_INT_ENA": {
    -                    "description": "The interrupt enable bit for the OUT_EOF_CH_INT interrupt.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "IN_DSCR_ERR_CH0_INT_ENA": {
    -                    "description": "The interrupt enable bit for the IN_DSCR_ERR_CH_INT interrupt.",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "OUT_DSCR_ERR_CH0_INT_ENA": {
    -                    "description": "The interrupt enable bit for the OUT_DSCR_ERR_CH_INT interrupt.",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "IN_DSCR_EMPTY_CH0_INT_ENA": {
    -                    "description": "The interrupt enable bit for the IN_DSCR_EMPTY_CH_INT interrupt.",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "OUT_TOTAL_EOF_CH0_INT_ENA": {
    -                    "description": "The interrupt enable bit for the OUT_TOTAL_EOF_CH_INT interrupt.",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "INFIFO_OVF_CH0_INT_ENA": {
    -                    "description": "The interrupt enable bit for the INFIFO_OVF_L1_CH_INT interrupt.",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "INFIFO_UDF_CH0_INT_ENA": {
    -                    "description": "The interrupt enable bit for the INFIFO_UDF_L1_CH_INT interrupt.",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "OUTFIFO_OVF_CH0_INT_ENA": {
    -                    "description": "The interrupt enable bit for the OUTFIFO_OVF_L1_CH_INT interrupt.",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "OUTFIFO_UDF_CH0_INT_ENA": {
    -                    "description": "The interrupt enable bit for the OUTFIFO_UDF_L1_CH_INT interrupt.",
    -                    "offset": 12,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INT_CLR_CH0": {
    -              "description": "DMA_INT_CLR_CH0_REG.",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_DONE_CH0_INT_CLR": {
    -                    "description": "Set this bit to clear the IN_DONE_CH_INT interrupt.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "IN_SUC_EOF_CH0_INT_CLR": {
    -                    "description": "Set this bit to clear the IN_SUC_EOF_CH_INT interrupt.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "IN_ERR_EOF_CH0_INT_CLR": {
    -                    "description": "Set this bit to clear the IN_ERR_EOF_CH_INT interrupt.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OUT_DONE_CH0_INT_CLR": {
    -                    "description": "Set this bit to clear the OUT_DONE_CH_INT interrupt.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OUT_EOF_CH0_INT_CLR": {
    -                    "description": "Set this bit to clear the OUT_EOF_CH_INT interrupt.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "IN_DSCR_ERR_CH0_INT_CLR": {
    -                    "description": "Set this bit to clear the IN_DSCR_ERR_CH_INT interrupt.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OUT_DSCR_ERR_CH0_INT_CLR": {
    -                    "description": "Set this bit to clear the OUT_DSCR_ERR_CH_INT interrupt.",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "IN_DSCR_EMPTY_CH0_INT_CLR": {
    -                    "description": "Set this bit to clear the IN_DSCR_EMPTY_CH_INT interrupt.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OUT_TOTAL_EOF_CH0_INT_CLR": {
    -                    "description": "Set this bit to clear the OUT_TOTAL_EOF_CH_INT interrupt.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "INFIFO_OVF_CH0_INT_CLR": {
    -                    "description": "Set this bit to clear the INFIFO_OVF_L1_CH_INT interrupt.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "INFIFO_UDF_CH0_INT_CLR": {
    -                    "description": "Set this bit to clear the INFIFO_UDF_L1_CH_INT interrupt.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OUTFIFO_OVF_CH0_INT_CLR": {
    -                    "description": "Set this bit to clear the OUTFIFO_OVF_L1_CH_INT interrupt.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OUTFIFO_UDF_CH0_INT_CLR": {
    -                    "description": "Set this bit to clear the OUTFIFO_UDF_L1_CH_INT interrupt.",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_RAW_CH1": {
    -              "description": "DMA_INT_RAW_CH1_REG.",
    -              "offset": 16,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_DONE_CH1_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 1.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_SUC_EOF_CH1_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 1. For UHCI0, the raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received and no data error is detected for Rx channel 1.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_ERR_EOF_CH1_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when data error is detected only in the case that the peripheral is UHCI0 for Rx channel 1. For other peripherals, this raw interrupt is reserved.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_DONE_CH1_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been transmitted to peripherals for Tx channel 1.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_EOF_CH1_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been read from memory for Tx channel 1.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_DSCR_ERR_CH1_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when detecting inlink descriptor error, including owner error, the second and third word error of inlink descriptor for Rx channel 1.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_DSCR_ERR_CH1_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when detecting outlink descriptor error, including owner error, the second and third word error of outlink descriptor for Tx channel 1.",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_DSCR_EMPTY_CH1_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when Rx buffer pointed by inlink is full and receiving data is not completed, but there is no more inlink for Rx channel 1.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_TOTAL_EOF_CH1_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when data corresponding a outlink (includes one link descriptor or few link descriptors) is transmitted out for Tx channel 1.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "INFIFO_OVF_CH1_INT_RAW": {
    -                    "description": "This raw interrupt bit turns to high level when level 1 fifo of Rx channel 1 is overflow.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "INFIFO_UDF_CH1_INT_RAW": {
    -                    "description": "This raw interrupt bit turns to high level when level 1 fifo of Rx channel 1 is underflow.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUTFIFO_OVF_CH1_INT_RAW": {
    -                    "description": "This raw interrupt bit turns to high level when level 1 fifo of Tx channel 1 is overflow.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUTFIFO_UDF_CH1_INT_RAW": {
    -                    "description": "This raw interrupt bit turns to high level when level 1 fifo of Tx channel 1 is underflow.",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ST_CH1": {
    -              "description": "DMA_INT_ST_CH1_REG.",
    -              "offset": 20,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_DONE_CH1_INT_ST": {
    -                    "description": "The raw interrupt status bit for the IN_DONE_CH_INT interrupt.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_SUC_EOF_CH1_INT_ST": {
    -                    "description": "The raw interrupt status bit for the IN_SUC_EOF_CH_INT interrupt.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_ERR_EOF_CH1_INT_ST": {
    -                    "description": "The raw interrupt status bit for the IN_ERR_EOF_CH_INT interrupt.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_DONE_CH1_INT_ST": {
    -                    "description": "The raw interrupt status bit for the OUT_DONE_CH_INT interrupt.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_EOF_CH1_INT_ST": {
    -                    "description": "The raw interrupt status bit for the OUT_EOF_CH_INT interrupt.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_DSCR_ERR_CH1_INT_ST": {
    -                    "description": "The raw interrupt status bit for the IN_DSCR_ERR_CH_INT interrupt.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_DSCR_ERR_CH1_INT_ST": {
    -                    "description": "The raw interrupt status bit for the OUT_DSCR_ERR_CH_INT interrupt.",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_DSCR_EMPTY_CH1_INT_ST": {
    -                    "description": "The raw interrupt status bit for the IN_DSCR_EMPTY_CH_INT interrupt.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_TOTAL_EOF_CH1_INT_ST": {
    -                    "description": "The raw interrupt status bit for the OUT_TOTAL_EOF_CH_INT interrupt.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "INFIFO_OVF_CH1_INT_ST": {
    -                    "description": "The raw interrupt status bit for the INFIFO_OVF_L1_CH_INT interrupt.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "INFIFO_UDF_CH1_INT_ST": {
    -                    "description": "The raw interrupt status bit for the INFIFO_UDF_L1_CH_INT interrupt.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUTFIFO_OVF_CH1_INT_ST": {
    -                    "description": "The raw interrupt status bit for the OUTFIFO_OVF_L1_CH_INT interrupt.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUTFIFO_UDF_CH1_INT_ST": {
    -                    "description": "The raw interrupt status bit for the OUTFIFO_UDF_L1_CH_INT interrupt.",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ENA_CH1": {
    -              "description": "DMA_INT_ENA_CH1_REG.",
    -              "offset": 24,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_DONE_CH1_INT_ENA": {
    -                    "description": "The interrupt enable bit for the IN_DONE_CH_INT interrupt.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "IN_SUC_EOF_CH1_INT_ENA": {
    -                    "description": "The interrupt enable bit for the IN_SUC_EOF_CH_INT interrupt.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "IN_ERR_EOF_CH1_INT_ENA": {
    -                    "description": "The interrupt enable bit for the IN_ERR_EOF_CH_INT interrupt.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "OUT_DONE_CH1_INT_ENA": {
    -                    "description": "The interrupt enable bit for the OUT_DONE_CH_INT interrupt.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "OUT_EOF_CH1_INT_ENA": {
    -                    "description": "The interrupt enable bit for the OUT_EOF_CH_INT interrupt.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "IN_DSCR_ERR_CH1_INT_ENA": {
    -                    "description": "The interrupt enable bit for the IN_DSCR_ERR_CH_INT interrupt.",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "OUT_DSCR_ERR_CH1_INT_ENA": {
    -                    "description": "The interrupt enable bit for the OUT_DSCR_ERR_CH_INT interrupt.",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "IN_DSCR_EMPTY_CH1_INT_ENA": {
    -                    "description": "The interrupt enable bit for the IN_DSCR_EMPTY_CH_INT interrupt.",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "OUT_TOTAL_EOF_CH1_INT_ENA": {
    -                    "description": "The interrupt enable bit for the OUT_TOTAL_EOF_CH_INT interrupt.",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "INFIFO_OVF_CH1_INT_ENA": {
    -                    "description": "The interrupt enable bit for the INFIFO_OVF_L1_CH_INT interrupt.",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "INFIFO_UDF_CH1_INT_ENA": {
    -                    "description": "The interrupt enable bit for the INFIFO_UDF_L1_CH_INT interrupt.",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "OUTFIFO_OVF_CH1_INT_ENA": {
    -                    "description": "The interrupt enable bit for the OUTFIFO_OVF_L1_CH_INT interrupt.",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "OUTFIFO_UDF_CH1_INT_ENA": {
    -                    "description": "The interrupt enable bit for the OUTFIFO_UDF_L1_CH_INT interrupt.",
    -                    "offset": 12,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INT_CLR_CH1": {
    -              "description": "DMA_INT_CLR_CH1_REG.",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_DONE_CH1_INT_CLR": {
    -                    "description": "Set this bit to clear the IN_DONE_CH_INT interrupt.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "IN_SUC_EOF_CH1_INT_CLR": {
    -                    "description": "Set this bit to clear the IN_SUC_EOF_CH_INT interrupt.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "IN_ERR_EOF_CH1_INT_CLR": {
    -                    "description": "Set this bit to clear the IN_ERR_EOF_CH_INT interrupt.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OUT_DONE_CH1_INT_CLR": {
    -                    "description": "Set this bit to clear the OUT_DONE_CH_INT interrupt.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OUT_EOF_CH1_INT_CLR": {
    -                    "description": "Set this bit to clear the OUT_EOF_CH_INT interrupt.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "IN_DSCR_ERR_CH1_INT_CLR": {
    -                    "description": "Set this bit to clear the IN_DSCR_ERR_CH_INT interrupt.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OUT_DSCR_ERR_CH1_INT_CLR": {
    -                    "description": "Set this bit to clear the OUT_DSCR_ERR_CH_INT interrupt.",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "IN_DSCR_EMPTY_CH1_INT_CLR": {
    -                    "description": "Set this bit to clear the IN_DSCR_EMPTY_CH_INT interrupt.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OUT_TOTAL_EOF_CH1_INT_CLR": {
    -                    "description": "Set this bit to clear the OUT_TOTAL_EOF_CH_INT interrupt.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "INFIFO_OVF_CH1_INT_CLR": {
    -                    "description": "Set this bit to clear the INFIFO_OVF_L1_CH_INT interrupt.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "INFIFO_UDF_CH1_INT_CLR": {
    -                    "description": "Set this bit to clear the INFIFO_UDF_L1_CH_INT interrupt.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OUTFIFO_OVF_CH1_INT_CLR": {
    -                    "description": "Set this bit to clear the OUTFIFO_OVF_L1_CH_INT interrupt.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OUTFIFO_UDF_CH1_INT_CLR": {
    -                    "description": "Set this bit to clear the OUTFIFO_UDF_L1_CH_INT interrupt.",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_RAW_CH2": {
    -              "description": "DMA_INT_RAW_CH2_REG.",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_DONE_CH2_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 2.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_SUC_EOF_CH2_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 2. For UHCI0, the raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received and no data error is detected for Rx channel 2.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_ERR_EOF_CH2_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when data error is detected only in the case that the peripheral is UHCI0 for Rx channel 2. For other peripherals, this raw interrupt is reserved.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_DONE_CH2_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been transmitted to peripherals for Tx channel 2.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_EOF_CH2_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been read from memory for Tx channel 2.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_DSCR_ERR_CH2_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when detecting inlink descriptor error, including owner error, the second and third word error of inlink descriptor for Rx channel 2.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_DSCR_ERR_CH2_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when detecting outlink descriptor error, including owner error, the second and third word error of outlink descriptor for Tx channel 2.",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_DSCR_EMPTY_CH2_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when Rx buffer pointed by inlink is full and receiving data is not completed, but there is no more inlink for Rx channel 2.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_TOTAL_EOF_CH2_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when data corresponding a outlink (includes one link descriptor or few link descriptors) is transmitted out for Tx channel 2.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "INFIFO_OVF_CH2_INT_RAW": {
    -                    "description": "This raw interrupt bit turns to high level when level 1 fifo of Rx channel 2 is overflow.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "INFIFO_UDF_CH2_INT_RAW": {
    -                    "description": "This raw interrupt bit turns to high level when level 1 fifo of Rx channel 2 is underflow.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUTFIFO_OVF_CH2_INT_RAW": {
    -                    "description": "This raw interrupt bit turns to high level when level 1 fifo of Tx channel 2 is overflow.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUTFIFO_UDF_CH2_INT_RAW": {
    -                    "description": "This raw interrupt bit turns to high level when level 1 fifo of Tx channel 2 is underflow.",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ST_CH2": {
    -              "description": "DMA_INT_ST_CH2_REG.",
    -              "offset": 36,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_DONE_CH2_INT_ST": {
    -                    "description": "The raw interrupt status bit for the IN_DONE_CH_INT interrupt.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_SUC_EOF_CH2_INT_ST": {
    -                    "description": "The raw interrupt status bit for the IN_SUC_EOF_CH_INT interrupt.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_ERR_EOF_CH2_INT_ST": {
    -                    "description": "The raw interrupt status bit for the IN_ERR_EOF_CH_INT interrupt.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_DONE_CH2_INT_ST": {
    -                    "description": "The raw interrupt status bit for the OUT_DONE_CH_INT interrupt.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_EOF_CH2_INT_ST": {
    -                    "description": "The raw interrupt status bit for the OUT_EOF_CH_INT interrupt.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_DSCR_ERR_CH2_INT_ST": {
    -                    "description": "The raw interrupt status bit for the IN_DSCR_ERR_CH_INT interrupt.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_DSCR_ERR_CH2_INT_ST": {
    -                    "description": "The raw interrupt status bit for the OUT_DSCR_ERR_CH_INT interrupt.",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_DSCR_EMPTY_CH2_INT_ST": {
    -                    "description": "The raw interrupt status bit for the IN_DSCR_EMPTY_CH_INT interrupt.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_TOTAL_EOF_CH2_INT_ST": {
    -                    "description": "The raw interrupt status bit for the OUT_TOTAL_EOF_CH_INT interrupt.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "INFIFO_OVF_CH2_INT_ST": {
    -                    "description": "The raw interrupt status bit for the INFIFO_OVF_L1_CH_INT interrupt.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "INFIFO_UDF_CH2_INT_ST": {
    -                    "description": "The raw interrupt status bit for the INFIFO_UDF_L1_CH_INT interrupt.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUTFIFO_OVF_CH2_INT_ST": {
    -                    "description": "The raw interrupt status bit for the OUTFIFO_OVF_L1_CH_INT interrupt.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUTFIFO_UDF_CH2_INT_ST": {
    -                    "description": "The raw interrupt status bit for the OUTFIFO_UDF_L1_CH_INT interrupt.",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ENA_CH2": {
    -              "description": "DMA_INT_ENA_CH2_REG.",
    -              "offset": 40,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_DONE_CH2_INT_ENA": {
    -                    "description": "The interrupt enable bit for the IN_DONE_CH_INT interrupt.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "IN_SUC_EOF_CH2_INT_ENA": {
    -                    "description": "The interrupt enable bit for the IN_SUC_EOF_CH_INT interrupt.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "IN_ERR_EOF_CH2_INT_ENA": {
    -                    "description": "The interrupt enable bit for the IN_ERR_EOF_CH_INT interrupt.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "OUT_DONE_CH2_INT_ENA": {
    -                    "description": "The interrupt enable bit for the OUT_DONE_CH_INT interrupt.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "OUT_EOF_CH2_INT_ENA": {
    -                    "description": "The interrupt enable bit for the OUT_EOF_CH_INT interrupt.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "IN_DSCR_ERR_CH2_INT_ENA": {
    -                    "description": "The interrupt enable bit for the IN_DSCR_ERR_CH_INT interrupt.",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "OUT_DSCR_ERR_CH2_INT_ENA": {
    -                    "description": "The interrupt enable bit for the OUT_DSCR_ERR_CH_INT interrupt.",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "IN_DSCR_EMPTY_CH2_INT_ENA": {
    -                    "description": "The interrupt enable bit for the IN_DSCR_EMPTY_CH_INT interrupt.",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "OUT_TOTAL_EOF_CH2_INT_ENA": {
    -                    "description": "The interrupt enable bit for the OUT_TOTAL_EOF_CH_INT interrupt.",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "INFIFO_OVF_CH2_INT_ENA": {
    -                    "description": "The interrupt enable bit for the INFIFO_OVF_L1_CH_INT interrupt.",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "INFIFO_UDF_CH2_INT_ENA": {
    -                    "description": "The interrupt enable bit for the INFIFO_UDF_L1_CH_INT interrupt.",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "OUTFIFO_OVF_CH2_INT_ENA": {
    -                    "description": "The interrupt enable bit for the OUTFIFO_OVF_L1_CH_INT interrupt.",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "OUTFIFO_UDF_CH2_INT_ENA": {
    -                    "description": "The interrupt enable bit for the OUTFIFO_UDF_L1_CH_INT interrupt.",
    -                    "offset": 12,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INT_CLR_CH2": {
    -              "description": "DMA_INT_CLR_CH2_REG.",
    -              "offset": 44,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_DONE_CH2_INT_CLR": {
    -                    "description": "Set this bit to clear the IN_DONE_CH_INT interrupt.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "IN_SUC_EOF_CH2_INT_CLR": {
    -                    "description": "Set this bit to clear the IN_SUC_EOF_CH_INT interrupt.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "IN_ERR_EOF_CH2_INT_CLR": {
    -                    "description": "Set this bit to clear the IN_ERR_EOF_CH_INT interrupt.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OUT_DONE_CH2_INT_CLR": {
    -                    "description": "Set this bit to clear the OUT_DONE_CH_INT interrupt.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OUT_EOF_CH2_INT_CLR": {
    -                    "description": "Set this bit to clear the OUT_EOF_CH_INT interrupt.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "IN_DSCR_ERR_CH2_INT_CLR": {
    -                    "description": "Set this bit to clear the IN_DSCR_ERR_CH_INT interrupt.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OUT_DSCR_ERR_CH2_INT_CLR": {
    -                    "description": "Set this bit to clear the OUT_DSCR_ERR_CH_INT interrupt.",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "IN_DSCR_EMPTY_CH2_INT_CLR": {
    -                    "description": "Set this bit to clear the IN_DSCR_EMPTY_CH_INT interrupt.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OUT_TOTAL_EOF_CH2_INT_CLR": {
    -                    "description": "Set this bit to clear the OUT_TOTAL_EOF_CH_INT interrupt.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "INFIFO_OVF_CH2_INT_CLR": {
    -                    "description": "Set this bit to clear the INFIFO_OVF_L1_CH_INT interrupt.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "INFIFO_UDF_CH2_INT_CLR": {
    -                    "description": "Set this bit to clear the INFIFO_UDF_L1_CH_INT interrupt.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OUTFIFO_OVF_CH2_INT_CLR": {
    -                    "description": "Set this bit to clear the OUTFIFO_OVF_L1_CH_INT interrupt.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OUTFIFO_UDF_CH2_INT_CLR": {
    -                    "description": "Set this bit to clear the OUTFIFO_UDF_L1_CH_INT interrupt.",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "AHB_TEST": {
    -              "description": "DMA_AHB_TEST_REG.",
    -              "offset": 64,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "AHB_TESTMODE": {
    -                    "description": "reserved",
    -                    "offset": 0,
    -                    "size": 3
    -                  },
    -                  "AHB_TESTADDR": {
    -                    "description": "reserved",
    -                    "offset": 4,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "MISC_CONF": {
    -              "description": "DMA_MISC_CONF_REG.",
    -              "offset": 68,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "AHBM_RST_INTER": {
    -                    "description": "Set this bit, then clear this bit to reset the internal ahb FSM.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "ARB_PRI_DIS": {
    -                    "description": "Set this bit to disable priority arbitration function.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "CLK_EN": {
    -                    "description": "reg_clk_en",
    -                    "offset": 3,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DATE": {
    -              "description": "DMA_DATE_REG.",
    -              "offset": 72,
    -              "size": 32,
    -              "reset_value": 33587792,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATE": {
    -                    "description": "register version.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "IN_CONF0_CH0": {
    -              "description": "DMA_IN_CONF0_CH0_REG.",
    -              "offset": 112,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_RST_CH0": {
    -                    "description": "This bit is used to reset DMA channel 0 Rx FSM and Rx FIFO pointer.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "IN_LOOP_TEST_CH0": {
    -                    "description": "reserved",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "INDSCR_BURST_EN_CH0": {
    -                    "description": "Set this bit to 1 to enable INCR burst transfer for Rx channel 0 reading link descriptor when accessing internal SRAM.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "IN_DATA_BURST_EN_CH0": {
    -                    "description": "Set this bit to 1 to enable INCR burst transfer for Rx channel 0 receiving data when accessing internal SRAM.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "MEM_TRANS_EN_CH0": {
    -                    "description": "Set this bit 1 to enable automatic transmitting data from memory to memory via DMA.",
    -                    "offset": 4,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "IN_CONF1_CH0": {
    -              "description": "DMA_IN_CONF1_CH0_REG.",
    -              "offset": 116,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_CHECK_OWNER_CH0": {
    -                    "description": "Set this bit to enable checking the owner attribute of the link descriptor.",
    -                    "offset": 12,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INFIFO_STATUS_CH0": {
    -              "description": "DMA_INFIFO_STATUS_CH0_REG.",
    -              "offset": 120,
    -              "size": 32,
    -              "reset_value": 125829123,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INFIFO_FULL_CH0": {
    -                    "description": "L1 Rx FIFO full signal for Rx channel 0.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "INFIFO_EMPTY_CH0": {
    -                    "description": "L1 Rx FIFO empty signal for Rx channel 0.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "INFIFO_CNT_CH0": {
    -                    "description": "The register stores the byte number of the data in L1 Rx FIFO for Rx channel 0.",
    -                    "offset": 2,
    -                    "size": 6,
    -                    "access": "read-only"
    -                  },
    -                  "IN_REMAIN_UNDER_1B_CH0": {
    -                    "description": "reserved",
    -                    "offset": 23,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_REMAIN_UNDER_2B_CH0": {
    -                    "description": "reserved",
    -                    "offset": 24,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_REMAIN_UNDER_3B_CH0": {
    -                    "description": "reserved",
    -                    "offset": 25,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_REMAIN_UNDER_4B_CH0": {
    -                    "description": "reserved",
    -                    "offset": 26,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_BUF_HUNGRY_CH0": {
    -                    "description": "reserved",
    -                    "offset": 27,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_POP_CH0": {
    -              "description": "DMA_IN_POP_CH0_REG.",
    -              "offset": 124,
    -              "size": 32,
    -              "reset_value": 2048,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INFIFO_RDATA_CH0": {
    -                    "description": "This register stores the data popping from DMA FIFO.",
    -                    "offset": 0,
    -                    "size": 12,
    -                    "access": "read-only"
    -                  },
    -                  "INFIFO_POP_CH0": {
    -                    "description": "Set this bit to pop data from DMA FIFO.",
    -                    "offset": 12,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "IN_LINK_CH0": {
    -              "description": "DMA_IN_LINK_CH0_REG.",
    -              "offset": 128,
    -              "size": 32,
    -              "reset_value": 17825792,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INLINK_ADDR_CH0": {
    -                    "description": "This register stores the 20 least significant bits of the first inlink descriptor's address.",
    -                    "offset": 0,
    -                    "size": 20
    -                  },
    -                  "INLINK_AUTO_RET_CH0": {
    -                    "description": "Set this bit to return to current inlink descriptor's address, when there are some errors in current receiving data.",
    -                    "offset": 20,
    -                    "size": 1
    -                  },
    -                  "INLINK_STOP_CH0": {
    -                    "description": "Set this bit to stop dealing with the inlink descriptors.",
    -                    "offset": 21,
    -                    "size": 1
    -                  },
    -                  "INLINK_START_CH0": {
    -                    "description": "Set this bit to start dealing with the inlink descriptors.",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "INLINK_RESTART_CH0": {
    -                    "description": "Set this bit to mount a new inlink descriptor.",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "INLINK_PARK_CH0": {
    -                    "description": "1: the inlink descriptor's FSM is in idle state.  0: the inlink descriptor's FSM is working.",
    -                    "offset": 24,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_STATE_CH0": {
    -              "description": "DMA_IN_STATE_CH0_REG.",
    -              "offset": 132,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INLINK_DSCR_ADDR_CH0": {
    -                    "description": "This register stores the current inlink descriptor's address.",
    -                    "offset": 0,
    -                    "size": 18,
    -                    "access": "read-only"
    -                  },
    -                  "IN_DSCR_STATE_CH0": {
    -                    "description": "reserved",
    -                    "offset": 18,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "IN_STATE_CH0": {
    -                    "description": "reserved",
    -                    "offset": 20,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_SUC_EOF_DES_ADDR_CH0": {
    -              "description": "DMA_IN_SUC_EOF_DES_ADDR_CH0_REG.",
    -              "offset": 136,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_SUC_EOF_DES_ADDR_CH0": {
    -                    "description": "This register stores the address of the inlink descriptor when the EOF bit in this descriptor is 1.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_ERR_EOF_DES_ADDR_CH0": {
    -              "description": "DMA_IN_ERR_EOF_DES_ADDR_CH0_REG.",
    -              "offset": 140,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_ERR_EOF_DES_ADDR_CH0": {
    -                    "description": "This register stores the address of the inlink descriptor when there are some errors in current receiving data. Only used when peripheral is UHCI0.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_DSCR_CH0": {
    -              "description": "DMA_IN_DSCR_CH0_REG.",
    -              "offset": 144,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INLINK_DSCR_CH0": {
    -                    "description": "The address of the current inlink descriptor x.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_DSCR_BF0_CH0": {
    -              "description": "DMA_IN_DSCR_BF0_CH0_REG.",
    -              "offset": 148,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INLINK_DSCR_BF0_CH0": {
    -                    "description": "The address of the last inlink descriptor x-1.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_DSCR_BF1_CH0": {
    -              "description": "DMA_IN_DSCR_BF1_CH0_REG.",
    -              "offset": 152,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INLINK_DSCR_BF1_CH0": {
    -                    "description": "The address of the second-to-last inlink descriptor x-2.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_PRI_CH0": {
    -              "description": "DMA_IN_PRI_CH0_REG.",
    -              "offset": 156,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_PRI_CH0": {
    -                    "description": "The priority of Rx channel 0. The larger of the value, the higher of the priority.",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "IN_PERI_SEL_CH0": {
    -              "description": "DMA_IN_PERI_SEL_CH0_REG.",
    -              "offset": 160,
    -              "size": 32,
    -              "reset_value": 63,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PERI_IN_SEL_CH0": {
    -                    "description": "This register is used to select peripheral for Rx channel 0. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.",
    -                    "offset": 0,
    -                    "size": 6
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_CONF0_CH0": {
    -              "description": "DMA_OUT_CONF0_CH0_REG.",
    -              "offset": 208,
    -              "size": 32,
    -              "reset_value": 8,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUT_RST_CH0": {
    -                    "description": "This bit is used to reset DMA channel 0 Tx FSM and Tx FIFO pointer.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "OUT_LOOP_TEST_CH0": {
    -                    "description": "reserved",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "OUT_AUTO_WRBACK_CH0": {
    -                    "description": "Set this bit to enable automatic outlink-writeback when all the data in tx buffer has been transmitted.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "OUT_EOF_MODE_CH0": {
    -                    "description": "EOF flag generation mode when transmitting data. 1: EOF flag for Tx channel 0 is generated when data need to transmit has been popped from FIFO in DMA",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "OUTDSCR_BURST_EN_CH0": {
    -                    "description": "Set this bit to 1 to enable INCR burst transfer for Tx channel 0 reading link descriptor when accessing internal SRAM.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "OUT_DATA_BURST_EN_CH0": {
    -                    "description": "Set this bit to 1 to enable INCR burst transfer for Tx channel 0 transmitting data when accessing internal SRAM.",
    -                    "offset": 5,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_CONF1_CH0": {
    -              "description": "DMA_OUT_CONF1_CH0_REG.",
    -              "offset": 212,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUT_CHECK_OWNER_CH0": {
    -                    "description": "Set this bit to enable checking the owner attribute of the link descriptor.",
    -                    "offset": 12,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "OUTFIFO_STATUS_CH0": {
    -              "description": "DMA_OUTFIFO_STATUS_CH0_REG.",
    -              "offset": 216,
    -              "size": 32,
    -              "reset_value": 125829122,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUTFIFO_FULL_CH0": {
    -                    "description": "L1 Tx FIFO full signal for Tx channel 0.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUTFIFO_EMPTY_CH0": {
    -                    "description": "L1 Tx FIFO empty signal for Tx channel 0.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUTFIFO_CNT_CH0": {
    -                    "description": "The register stores the byte number of the data in L1 Tx FIFO for Tx channel 0.",
    -                    "offset": 2,
    -                    "size": 6,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_REMAIN_UNDER_1B_CH0": {
    -                    "description": "reserved",
    -                    "offset": 23,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_REMAIN_UNDER_2B_CH0": {
    -                    "description": "reserved",
    -                    "offset": 24,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_REMAIN_UNDER_3B_CH0": {
    -                    "description": "reserved",
    -                    "offset": 25,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_REMAIN_UNDER_4B_CH0": {
    -                    "description": "reserved",
    -                    "offset": 26,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_PUSH_CH0": {
    -              "description": "DMA_OUT_PUSH_CH0_REG.",
    -              "offset": 220,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUTFIFO_WDATA_CH0": {
    -                    "description": "This register stores the data that need to be pushed into DMA FIFO.",
    -                    "offset": 0,
    -                    "size": 9
    -                  },
    -                  "OUTFIFO_PUSH_CH0": {
    -                    "description": "Set this bit to push data into DMA FIFO.",
    -                    "offset": 9,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_LINK_CH0": {
    -              "description": "DMA_OUT_LINK_CH0_REG.",
    -              "offset": 224,
    -              "size": 32,
    -              "reset_value": 8388608,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUTLINK_ADDR_CH0": {
    -                    "description": "This register stores the 20 least significant bits of the first outlink descriptor's address.",
    -                    "offset": 0,
    -                    "size": 20
    -                  },
    -                  "OUTLINK_STOP_CH0": {
    -                    "description": "Set this bit to stop dealing with the outlink descriptors.",
    -                    "offset": 20,
    -                    "size": 1
    -                  },
    -                  "OUTLINK_START_CH0": {
    -                    "description": "Set this bit to start dealing with the outlink descriptors.",
    -                    "offset": 21,
    -                    "size": 1
    -                  },
    -                  "OUTLINK_RESTART_CH0": {
    -                    "description": "Set this bit to restart a new outlink from the last address.",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "OUTLINK_PARK_CH0": {
    -                    "description": "1: the outlink descriptor's FSM is in idle state.  0: the outlink descriptor's FSM is working.",
    -                    "offset": 23,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_STATE_CH0": {
    -              "description": "DMA_OUT_STATE_CH0_REG.",
    -              "offset": 228,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUTLINK_DSCR_ADDR_CH0": {
    -                    "description": "This register stores the current outlink descriptor's address.",
    -                    "offset": 0,
    -                    "size": 18,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_DSCR_STATE_CH0": {
    -                    "description": "reserved",
    -                    "offset": 18,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_STATE_CH0": {
    -                    "description": "reserved",
    -                    "offset": 20,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_EOF_DES_ADDR_CH0": {
    -              "description": "DMA_OUT_EOF_DES_ADDR_CH0_REG.",
    -              "offset": 232,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUT_EOF_DES_ADDR_CH0": {
    -                    "description": "This register stores the address of the outlink descriptor when the EOF bit in this descriptor is 1.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_EOF_BFR_DES_ADDR_CH0": {
    -              "description": "DMA_OUT_EOF_BFR_DES_ADDR_CH0_REG.",
    -              "offset": 236,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUT_EOF_BFR_DES_ADDR_CH0": {
    -                    "description": "This register stores the address of the outlink descriptor before the last outlink descriptor.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_DSCR_CH0": {
    -              "description": "DMA_OUT_DSCR_CH0_REG.",
    -              "offset": 240,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUTLINK_DSCR_CH0": {
    -                    "description": "The address of the current outlink descriptor y.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_DSCR_BF0_CH0": {
    -              "description": "DMA_OUT_DSCR_BF0_CH0_REG.",
    -              "offset": 244,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUTLINK_DSCR_BF0_CH0": {
    -                    "description": "The address of the last outlink descriptor y-1.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_DSCR_BF1_CH0": {
    -              "description": "DMA_OUT_DSCR_BF1_CH0_REG.",
    -              "offset": 248,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUTLINK_DSCR_BF1_CH0": {
    -                    "description": "The address of the second-to-last inlink descriptor x-2.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_PRI_CH0": {
    -              "description": "DMA_OUT_PRI_CH0_REG.",
    -              "offset": 252,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_PRI_CH0": {
    -                    "description": "The priority of Tx channel 0. The larger of the value, the higher of the priority.",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_PERI_SEL_CH0": {
    -              "description": "DMA_OUT_PERI_SEL_CH0_REG.",
    -              "offset": 256,
    -              "size": 32,
    -              "reset_value": 63,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PERI_OUT_SEL_CH0": {
    -                    "description": "This register is used to select peripheral for Tx channel 0. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.",
    -                    "offset": 0,
    -                    "size": 6
    -                  }
    -                }
    -              }
    -            },
    -            "IN_CONF0_CH1": {
    -              "description": "DMA_IN_CONF0_CH1_REG.",
    -              "offset": 304,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_RST_CH1": {
    -                    "description": "This bit is used to reset DMA channel 1 Rx FSM and Rx FIFO pointer.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "IN_LOOP_TEST_CH1": {
    -                    "description": "reserved",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "INDSCR_BURST_EN_CH1": {
    -                    "description": "Set this bit to 1 to enable INCR burst transfer for Rx channel 1 reading link descriptor when accessing internal SRAM.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "IN_DATA_BURST_EN_CH1": {
    -                    "description": "Set this bit to 1 to enable INCR burst transfer for Rx channel 1 receiving data when accessing internal SRAM.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "MEM_TRANS_EN_CH1": {
    -                    "description": "Set this bit 1 to enable automatic transmitting data from memory to memory via DMA.",
    -                    "offset": 4,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "IN_CONF1_CH1": {
    -              "description": "DMA_IN_CONF1_CH1_REG.",
    -              "offset": 308,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_CHECK_OWNER_CH1": {
    -                    "description": "Set this bit to enable checking the owner attribute of the link descriptor.",
    -                    "offset": 12,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INFIFO_STATUS_CH1": {
    -              "description": "DMA_INFIFO_STATUS_CH1_REG.",
    -              "offset": 312,
    -              "size": 32,
    -              "reset_value": 125829123,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INFIFO_FULL_CH1": {
    -                    "description": "L1 Rx FIFO full signal for Rx channel 1.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "INFIFO_EMPTY_CH1": {
    -                    "description": "L1 Rx FIFO empty signal for Rx channel 1.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "INFIFO_CNT_CH1": {
    -                    "description": "The register stores the byte number of the data in L1 Rx FIFO for Rx channel 1.",
    -                    "offset": 2,
    -                    "size": 6,
    -                    "access": "read-only"
    -                  },
    -                  "IN_REMAIN_UNDER_1B_CH1": {
    -                    "description": "reserved",
    -                    "offset": 23,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_REMAIN_UNDER_2B_CH1": {
    -                    "description": "reserved",
    -                    "offset": 24,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_REMAIN_UNDER_3B_CH1": {
    -                    "description": "reserved",
    -                    "offset": 25,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_REMAIN_UNDER_4B_CH1": {
    -                    "description": "reserved",
    -                    "offset": 26,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_BUF_HUNGRY_CH1": {
    -                    "description": "reserved",
    -                    "offset": 27,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_POP_CH1": {
    -              "description": "DMA_IN_POP_CH1_REG.",
    -              "offset": 316,
    -              "size": 32,
    -              "reset_value": 2048,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INFIFO_RDATA_CH1": {
    -                    "description": "This register stores the data popping from DMA FIFO.",
    -                    "offset": 0,
    -                    "size": 12,
    -                    "access": "read-only"
    -                  },
    -                  "INFIFO_POP_CH1": {
    -                    "description": "Set this bit to pop data from DMA FIFO.",
    -                    "offset": 12,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "IN_LINK_CH1": {
    -              "description": "DMA_IN_LINK_CH1_REG.",
    -              "offset": 320,
    -              "size": 32,
    -              "reset_value": 17825792,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INLINK_ADDR_CH1": {
    -                    "description": "This register stores the 20 least significant bits of the first inlink descriptor's address.",
    -                    "offset": 0,
    -                    "size": 20
    -                  },
    -                  "INLINK_AUTO_RET_CH1": {
    -                    "description": "Set this bit to return to current inlink descriptor's address, when there are some errors in current receiving data.",
    -                    "offset": 20,
    -                    "size": 1
    -                  },
    -                  "INLINK_STOP_CH1": {
    -                    "description": "Set this bit to stop dealing with the inlink descriptors.",
    -                    "offset": 21,
    -                    "size": 1
    -                  },
    -                  "INLINK_START_CH1": {
    -                    "description": "Set this bit to start dealing with the inlink descriptors.",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "INLINK_RESTART_CH1": {
    -                    "description": "Set this bit to mount a new inlink descriptor.",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "INLINK_PARK_CH1": {
    -                    "description": "1: the inlink descriptor's FSM is in idle state.  0: the inlink descriptor's FSM is working.",
    -                    "offset": 24,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_STATE_CH1": {
    -              "description": "DMA_IN_STATE_CH1_REG.",
    -              "offset": 324,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INLINK_DSCR_ADDR_CH1": {
    -                    "description": "This register stores the current inlink descriptor's address.",
    -                    "offset": 0,
    -                    "size": 18,
    -                    "access": "read-only"
    -                  },
    -                  "IN_DSCR_STATE_CH1": {
    -                    "description": "reserved",
    -                    "offset": 18,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "IN_STATE_CH1": {
    -                    "description": "reserved",
    -                    "offset": 20,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_SUC_EOF_DES_ADDR_CH1": {
    -              "description": "DMA_IN_SUC_EOF_DES_ADDR_CH1_REG.",
    -              "offset": 328,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_SUC_EOF_DES_ADDR_CH1": {
    -                    "description": "This register stores the address of the inlink descriptor when the EOF bit in this descriptor is 1.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_ERR_EOF_DES_ADDR_CH1": {
    -              "description": "DMA_IN_ERR_EOF_DES_ADDR_CH1_REG.",
    -              "offset": 332,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_ERR_EOF_DES_ADDR_CH1": {
    -                    "description": "This register stores the address of the inlink descriptor when there are some errors in current receiving data. Only used when peripheral is UHCI0.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_DSCR_CH1": {
    -              "description": "DMA_IN_DSCR_CH1_REG.",
    -              "offset": 336,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INLINK_DSCR_CH1": {
    -                    "description": "The address of the current inlink descriptor x.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_DSCR_BF0_CH1": {
    -              "description": "DMA_IN_DSCR_BF0_CH1_REG.",
    -              "offset": 340,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INLINK_DSCR_BF0_CH1": {
    -                    "description": "The address of the last inlink descriptor x-1.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_DSCR_BF1_CH1": {
    -              "description": "DMA_IN_DSCR_BF1_CH1_REG.",
    -              "offset": 344,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INLINK_DSCR_BF1_CH1": {
    -                    "description": "The address of the second-to-last inlink descriptor x-2.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_PRI_CH1": {
    -              "description": "DMA_IN_PRI_CH1_REG.",
    -              "offset": 348,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_PRI_CH1": {
    -                    "description": "The priority of Rx channel 1. The larger of the value, the higher of the priority.",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "IN_PERI_SEL_CH1": {
    -              "description": "DMA_IN_PERI_SEL_CH1_REG.",
    -              "offset": 352,
    -              "size": 32,
    -              "reset_value": 63,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PERI_IN_SEL_CH1": {
    -                    "description": "This register is used to select peripheral for Rx channel 1. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.",
    -                    "offset": 0,
    -                    "size": 6
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_CONF0_CH1": {
    -              "description": "DMA_OUT_CONF0_CH1_REG.",
    -              "offset": 400,
    -              "size": 32,
    -              "reset_value": 8,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUT_RST_CH1": {
    -                    "description": "This bit is used to reset DMA channel 1 Tx FSM and Tx FIFO pointer.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "OUT_LOOP_TEST_CH1": {
    -                    "description": "reserved",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "OUT_AUTO_WRBACK_CH1": {
    -                    "description": "Set this bit to enable automatic outlink-writeback when all the data in tx buffer has been transmitted.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "OUT_EOF_MODE_CH1": {
    -                    "description": "EOF flag generation mode when transmitting data. 1: EOF flag for Tx channel 1 is generated when data need to transmit has been popped from FIFO in DMA",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "OUTDSCR_BURST_EN_CH1": {
    -                    "description": "Set this bit to 1 to enable INCR burst transfer for Tx channel 1 reading link descriptor when accessing internal SRAM.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "OUT_DATA_BURST_EN_CH1": {
    -                    "description": "Set this bit to 1 to enable INCR burst transfer for Tx channel 1 transmitting data when accessing internal SRAM.",
    -                    "offset": 5,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_CONF1_CH1": {
    -              "description": "DMA_OUT_CONF1_CH1_REG.",
    -              "offset": 404,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUT_CHECK_OWNER_CH1": {
    -                    "description": "Set this bit to enable checking the owner attribute of the link descriptor.",
    -                    "offset": 12,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "OUTFIFO_STATUS_CH1": {
    -              "description": "DMA_OUTFIFO_STATUS_CH1_REG.",
    -              "offset": 408,
    -              "size": 32,
    -              "reset_value": 125829122,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUTFIFO_FULL_CH1": {
    -                    "description": "L1 Tx FIFO full signal for Tx channel 1.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUTFIFO_EMPTY_CH1": {
    -                    "description": "L1 Tx FIFO empty signal for Tx channel 1.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUTFIFO_CNT_CH1": {
    -                    "description": "The register stores the byte number of the data in L1 Tx FIFO for Tx channel 1.",
    -                    "offset": 2,
    -                    "size": 6,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_REMAIN_UNDER_1B_CH1": {
    -                    "description": "reserved",
    -                    "offset": 23,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_REMAIN_UNDER_2B_CH1": {
    -                    "description": "reserved",
    -                    "offset": 24,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_REMAIN_UNDER_3B_CH1": {
    -                    "description": "reserved",
    -                    "offset": 25,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_REMAIN_UNDER_4B_CH1": {
    -                    "description": "reserved",
    -                    "offset": 26,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_PUSH_CH1": {
    -              "description": "DMA_OUT_PUSH_CH1_REG.",
    -              "offset": 412,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUTFIFO_WDATA_CH1": {
    -                    "description": "This register stores the data that need to be pushed into DMA FIFO.",
    -                    "offset": 0,
    -                    "size": 9
    -                  },
    -                  "OUTFIFO_PUSH_CH1": {
    -                    "description": "Set this bit to push data into DMA FIFO.",
    -                    "offset": 9,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_LINK_CH1": {
    -              "description": "DMA_OUT_LINK_CH1_REG.",
    -              "offset": 416,
    -              "size": 32,
    -              "reset_value": 8388608,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUTLINK_ADDR_CH1": {
    -                    "description": "This register stores the 20 least significant bits of the first outlink descriptor's address.",
    -                    "offset": 0,
    -                    "size": 20
    -                  },
    -                  "OUTLINK_STOP_CH1": {
    -                    "description": "Set this bit to stop dealing with the outlink descriptors.",
    -                    "offset": 20,
    -                    "size": 1
    -                  },
    -                  "OUTLINK_START_CH1": {
    -                    "description": "Set this bit to start dealing with the outlink descriptors.",
    -                    "offset": 21,
    -                    "size": 1
    -                  },
    -                  "OUTLINK_RESTART_CH1": {
    -                    "description": "Set this bit to restart a new outlink from the last address.",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "OUTLINK_PARK_CH1": {
    -                    "description": "1: the outlink descriptor's FSM is in idle state.  0: the outlink descriptor's FSM is working.",
    -                    "offset": 23,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_STATE_CH1": {
    -              "description": "DMA_OUT_STATE_CH1_REG.",
    -              "offset": 420,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUTLINK_DSCR_ADDR_CH1": {
    -                    "description": "This register stores the current outlink descriptor's address.",
    -                    "offset": 0,
    -                    "size": 18,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_DSCR_STATE_CH1": {
    -                    "description": "reserved",
    -                    "offset": 18,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_STATE_CH1": {
    -                    "description": "reserved",
    -                    "offset": 20,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_EOF_DES_ADDR_CH1": {
    -              "description": "DMA_OUT_EOF_DES_ADDR_CH1_REG.",
    -              "offset": 424,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUT_EOF_DES_ADDR_CH1": {
    -                    "description": "This register stores the address of the outlink descriptor when the EOF bit in this descriptor is 1.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_EOF_BFR_DES_ADDR_CH1": {
    -              "description": "DMA_OUT_EOF_BFR_DES_ADDR_CH1_REG.",
    -              "offset": 428,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUT_EOF_BFR_DES_ADDR_CH1": {
    -                    "description": "This register stores the address of the outlink descriptor before the last outlink descriptor.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_DSCR_CH1": {
    -              "description": "DMA_OUT_DSCR_CH1_REG.",
    -              "offset": 432,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUTLINK_DSCR_CH1": {
    -                    "description": "The address of the current outlink descriptor y.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_DSCR_BF0_CH1": {
    -              "description": "DMA_OUT_DSCR_BF0_CH1_REG.",
    -              "offset": 436,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUTLINK_DSCR_BF0_CH1": {
    -                    "description": "The address of the last outlink descriptor y-1.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_DSCR_BF1_CH1": {
    -              "description": "DMA_OUT_DSCR_BF1_CH1_REG.",
    -              "offset": 440,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUTLINK_DSCR_BF1_CH1": {
    -                    "description": "The address of the second-to-last inlink descriptor x-2.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_PRI_CH1": {
    -              "description": "DMA_OUT_PRI_CH1_REG.",
    -              "offset": 444,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_PRI_CH1": {
    -                    "description": "The priority of Tx channel 1. The larger of the value, the higher of the priority.",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_PERI_SEL_CH1": {
    -              "description": "DMA_OUT_PERI_SEL_CH1_REG.",
    -              "offset": 448,
    -              "size": 32,
    -              "reset_value": 63,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PERI_OUT_SEL_CH1": {
    -                    "description": "This register is used to select peripheral for Tx channel 1. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.",
    -                    "offset": 0,
    -                    "size": 6
    -                  }
    -                }
    -              }
    -            },
    -            "IN_CONF0_CH2": {
    -              "description": "DMA_IN_CONF0_CH2_REG.",
    -              "offset": 496,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_RST_CH2": {
    -                    "description": "This bit is used to reset DMA channel 2 Rx FSM and Rx FIFO pointer.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "IN_LOOP_TEST_CH2": {
    -                    "description": "reserved",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "INDSCR_BURST_EN_CH2": {
    -                    "description": "Set this bit to 1 to enable INCR burst transfer for Rx channel 2 reading link descriptor when accessing internal SRAM.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "IN_DATA_BURST_EN_CH2": {
    -                    "description": "Set this bit to 1 to enable INCR burst transfer for Rx channel 2 receiving data when accessing internal SRAM.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "MEM_TRANS_EN_CH2": {
    -                    "description": "Set this bit 1 to enable automatic transmitting data from memory to memory via DMA.",
    -                    "offset": 4,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "IN_CONF1_CH2": {
    -              "description": "DMA_IN_CONF1_CH2_REG.",
    -              "offset": 500,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_CHECK_OWNER_CH2": {
    -                    "description": "Set this bit to enable checking the owner attribute of the link descriptor.",
    -                    "offset": 12,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INFIFO_STATUS_CH2": {
    -              "description": "DMA_INFIFO_STATUS_CH2_REG.",
    -              "offset": 504,
    -              "size": 32,
    -              "reset_value": 125829123,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INFIFO_FULL_CH2": {
    -                    "description": "L1 Rx FIFO full signal for Rx channel 2.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "INFIFO_EMPTY_CH2": {
    -                    "description": "L1 Rx FIFO empty signal for Rx channel 2.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "INFIFO_CNT_CH2": {
    -                    "description": "The register stores the byte number of the data in L1 Rx FIFO for Rx channel 2.",
    -                    "offset": 2,
    -                    "size": 6,
    -                    "access": "read-only"
    -                  },
    -                  "IN_REMAIN_UNDER_1B_CH2": {
    -                    "description": "reserved",
    -                    "offset": 23,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_REMAIN_UNDER_2B_CH2": {
    -                    "description": "reserved",
    -                    "offset": 24,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_REMAIN_UNDER_3B_CH2": {
    -                    "description": "reserved",
    -                    "offset": 25,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_REMAIN_UNDER_4B_CH2": {
    -                    "description": "reserved",
    -                    "offset": 26,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_BUF_HUNGRY_CH2": {
    -                    "description": "reserved",
    -                    "offset": 27,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_POP_CH2": {
    -              "description": "DMA_IN_POP_CH2_REG.",
    -              "offset": 508,
    -              "size": 32,
    -              "reset_value": 2048,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INFIFO_RDATA_CH2": {
    -                    "description": "This register stores the data popping from DMA FIFO.",
    -                    "offset": 0,
    -                    "size": 12,
    -                    "access": "read-only"
    -                  },
    -                  "INFIFO_POP_CH2": {
    -                    "description": "Set this bit to pop data from DMA FIFO.",
    -                    "offset": 12,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "IN_LINK_CH2": {
    -              "description": "DMA_IN_LINK_CH2_REG.",
    -              "offset": 512,
    -              "size": 32,
    -              "reset_value": 17825792,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INLINK_ADDR_CH2": {
    -                    "description": "This register stores the 20 least significant bits of the first inlink descriptor's address.",
    -                    "offset": 0,
    -                    "size": 20
    -                  },
    -                  "INLINK_AUTO_RET_CH2": {
    -                    "description": "Set this bit to return to current inlink descriptor's address, when there are some errors in current receiving data.",
    -                    "offset": 20,
    -                    "size": 1
    -                  },
    -                  "INLINK_STOP_CH2": {
    -                    "description": "Set this bit to stop dealing with the inlink descriptors.",
    -                    "offset": 21,
    -                    "size": 1
    -                  },
    -                  "INLINK_START_CH2": {
    -                    "description": "Set this bit to start dealing with the inlink descriptors.",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "INLINK_RESTART_CH2": {
    -                    "description": "Set this bit to mount a new inlink descriptor.",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "INLINK_PARK_CH2": {
    -                    "description": "1: the inlink descriptor's FSM is in idle state.  0: the inlink descriptor's FSM is working.",
    -                    "offset": 24,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_STATE_CH2": {
    -              "description": "DMA_IN_STATE_CH2_REG.",
    -              "offset": 516,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INLINK_DSCR_ADDR_CH2": {
    -                    "description": "This register stores the current inlink descriptor's address.",
    -                    "offset": 0,
    -                    "size": 18,
    -                    "access": "read-only"
    -                  },
    -                  "IN_DSCR_STATE_CH2": {
    -                    "description": "reserved",
    -                    "offset": 18,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "IN_STATE_CH2": {
    -                    "description": "reserved",
    -                    "offset": 20,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_SUC_EOF_DES_ADDR_CH2": {
    -              "description": "DMA_IN_SUC_EOF_DES_ADDR_CH2_REG.",
    -              "offset": 520,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_SUC_EOF_DES_ADDR_CH2": {
    -                    "description": "This register stores the address of the inlink descriptor when the EOF bit in this descriptor is 1.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_ERR_EOF_DES_ADDR_CH2": {
    -              "description": "DMA_IN_ERR_EOF_DES_ADDR_CH2_REG.",
    -              "offset": 524,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_ERR_EOF_DES_ADDR_CH2": {
    -                    "description": "This register stores the address of the inlink descriptor when there are some errors in current receiving data. Only used when peripheral is UHCI0.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_DSCR_CH2": {
    -              "description": "DMA_IN_DSCR_CH2_REG.",
    -              "offset": 528,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INLINK_DSCR_CH2": {
    -                    "description": "The address of the current inlink descriptor x.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_DSCR_BF0_CH2": {
    -              "description": "DMA_IN_DSCR_BF0_CH2_REG.",
    -              "offset": 532,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INLINK_DSCR_BF0_CH2": {
    -                    "description": "The address of the last inlink descriptor x-1.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_DSCR_BF1_CH2": {
    -              "description": "DMA_IN_DSCR_BF1_CH2_REG.",
    -              "offset": 536,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INLINK_DSCR_BF1_CH2": {
    -                    "description": "The address of the second-to-last inlink descriptor x-2.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_PRI_CH2": {
    -              "description": "DMA_IN_PRI_CH2_REG.",
    -              "offset": 540,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_PRI_CH2": {
    -                    "description": "The priority of Rx channel 2. The larger of the value, the higher of the priority.",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "IN_PERI_SEL_CH2": {
    -              "description": "DMA_IN_PERI_SEL_CH2_REG.",
    -              "offset": 544,
    -              "size": 32,
    -              "reset_value": 63,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PERI_IN_SEL_CH2": {
    -                    "description": "This register is used to select peripheral for Rx channel 2. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.",
    -                    "offset": 0,
    -                    "size": 6
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_CONF0_CH2": {
    -              "description": "DMA_OUT_CONF0_CH2_REG.",
    -              "offset": 592,
    -              "size": 32,
    -              "reset_value": 8,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUT_RST_CH2": {
    -                    "description": "This bit is used to reset DMA channel 2 Tx FSM and Tx FIFO pointer.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "OUT_LOOP_TEST_CH2": {
    -                    "description": "reserved",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "OUT_AUTO_WRBACK_CH2": {
    -                    "description": "Set this bit to enable automatic outlink-writeback when all the data in tx buffer has been transmitted.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "OUT_EOF_MODE_CH2": {
    -                    "description": "EOF flag generation mode when transmitting data. 1: EOF flag for Tx channel 2 is generated when data need to transmit has been popped from FIFO in DMA",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "OUTDSCR_BURST_EN_CH2": {
    -                    "description": "Set this bit to 1 to enable INCR burst transfer for Tx channel 2 reading link descriptor when accessing internal SRAM.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "OUT_DATA_BURST_EN_CH2": {
    -                    "description": "Set this bit to 1 to enable INCR burst transfer for Tx channel 2 transmitting data when accessing internal SRAM.",
    -                    "offset": 5,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_CONF1_CH2": {
    -              "description": "DMA_OUT_CONF1_CH2_REG.",
    -              "offset": 596,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUT_CHECK_OWNER_CH2": {
    -                    "description": "Set this bit to enable checking the owner attribute of the link descriptor.",
    -                    "offset": 12,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "OUTFIFO_STATUS_CH2": {
    -              "description": "DMA_OUTFIFO_STATUS_CH2_REG.",
    -              "offset": 600,
    -              "size": 32,
    -              "reset_value": 125829122,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUTFIFO_FULL_CH2": {
    -                    "description": "L1 Tx FIFO full signal for Tx channel 2.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUTFIFO_EMPTY_CH2": {
    -                    "description": "L1 Tx FIFO empty signal for Tx channel 2.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUTFIFO_CNT_CH2": {
    -                    "description": "The register stores the byte number of the data in L1 Tx FIFO for Tx channel 2.",
    -                    "offset": 2,
    -                    "size": 6,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_REMAIN_UNDER_1B_CH2": {
    -                    "description": "reserved",
    -                    "offset": 23,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_REMAIN_UNDER_2B_CH2": {
    -                    "description": "reserved",
    -                    "offset": 24,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_REMAIN_UNDER_3B_CH2": {
    -                    "description": "reserved",
    -                    "offset": 25,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_REMAIN_UNDER_4B_CH2": {
    -                    "description": "reserved",
    -                    "offset": 26,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_PUSH_CH2": {
    -              "description": "DMA_OUT_PUSH_CH2_REG.",
    -              "offset": 604,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUTFIFO_WDATA_CH2": {
    -                    "description": "This register stores the data that need to be pushed into DMA FIFO.",
    -                    "offset": 0,
    -                    "size": 9
    -                  },
    -                  "OUTFIFO_PUSH_CH2": {
    -                    "description": "Set this bit to push data into DMA FIFO.",
    -                    "offset": 9,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_LINK_CH2": {
    -              "description": "DMA_OUT_LINK_CH2_REG.",
    -              "offset": 608,
    -              "size": 32,
    -              "reset_value": 8388608,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUTLINK_ADDR_CH2": {
    -                    "description": "This register stores the 20 least significant bits of the first outlink descriptor's address.",
    -                    "offset": 0,
    -                    "size": 20
    -                  },
    -                  "OUTLINK_STOP_CH2": {
    -                    "description": "Set this bit to stop dealing with the outlink descriptors.",
    -                    "offset": 20,
    -                    "size": 1
    -                  },
    -                  "OUTLINK_START_CH2": {
    -                    "description": "Set this bit to start dealing with the outlink descriptors.",
    -                    "offset": 21,
    -                    "size": 1
    -                  },
    -                  "OUTLINK_RESTART_CH2": {
    -                    "description": "Set this bit to restart a new outlink from the last address.",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "OUTLINK_PARK_CH2": {
    -                    "description": "1: the outlink descriptor's FSM is in idle state.  0: the outlink descriptor's FSM is working.",
    -                    "offset": 23,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_STATE_CH2": {
    -              "description": "DMA_OUT_STATE_CH2_REG.",
    -              "offset": 612,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUTLINK_DSCR_ADDR_CH2": {
    -                    "description": "This register stores the current outlink descriptor's address.",
    -                    "offset": 0,
    -                    "size": 18,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_DSCR_STATE_CH2": {
    -                    "description": "reserved",
    -                    "offset": 18,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_STATE_CH2": {
    -                    "description": "reserved",
    -                    "offset": 20,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_EOF_DES_ADDR_CH2": {
    -              "description": "DMA_OUT_EOF_DES_ADDR_CH2_REG.",
    -              "offset": 616,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUT_EOF_DES_ADDR_CH2": {
    -                    "description": "This register stores the address of the outlink descriptor when the EOF bit in this descriptor is 1.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_EOF_BFR_DES_ADDR_CH2": {
    -              "description": "DMA_OUT_EOF_BFR_DES_ADDR_CH2_REG.",
    -              "offset": 620,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUT_EOF_BFR_DES_ADDR_CH2": {
    -                    "description": "This register stores the address of the outlink descriptor before the last outlink descriptor.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_DSCR_CH2": {
    -              "description": "DMA_OUT_DSCR_CH2_REG.",
    -              "offset": 624,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUTLINK_DSCR_CH2": {
    -                    "description": "The address of the current outlink descriptor y.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_DSCR_BF0_CH2": {
    -              "description": "DMA_OUT_DSCR_BF0_CH2_REG.",
    -              "offset": 628,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUTLINK_DSCR_BF0_CH2": {
    -                    "description": "The address of the last outlink descriptor y-1.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_DSCR_BF1_CH2": {
    -              "description": "DMA_OUT_DSCR_BF1_CH2_REG.",
    -              "offset": 632,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUTLINK_DSCR_BF1_CH2": {
    -                    "description": "The address of the second-to-last inlink descriptor x-2.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_PRI_CH2": {
    -              "description": "DMA_OUT_PRI_CH2_REG.",
    -              "offset": 636,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_PRI_CH2": {
    -                    "description": "The priority of Tx channel 2. The larger of the value, the higher of the priority.",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_PERI_SEL_CH2": {
    -              "description": "DMA_OUT_PERI_SEL_CH2_REG.",
    -              "offset": 640,
    -              "size": 32,
    -              "reset_value": 63,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PERI_OUT_SEL_CH2": {
    -                    "description": "This register is used to select peripheral for Tx channel 2. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.",
    -                    "offset": 0,
    -                    "size": 6
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "DS": {
    -        "description": "Digital Signature",
    -        "children": {
    -          "registers": {
    -            "Y_MEM": {
    -              "description": "memory that stores Y",
    -              "offset": 0,
    -              "size": 8,
    -              "count": 512,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295
    -            },
    -            "M_MEM": {
    -              "description": "memory that stores M",
    -              "offset": 512,
    -              "size": 8,
    -              "count": 512,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295
    -            },
    -            "RB_MEM": {
    -              "description": "memory that stores Rb",
    -              "offset": 1024,
    -              "size": 8,
    -              "count": 512,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295
    -            },
    -            "BOX_MEM": {
    -              "description": "memory that stores BOX",
    -              "offset": 1536,
    -              "size": 8,
    -              "count": 48,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295
    -            },
    -            "X_MEM": {
    -              "description": "memory that stores X",
    -              "offset": 2048,
    -              "size": 8,
    -              "count": 512,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295
    -            },
    -            "Z_MEM": {
    -              "description": "memory that stores Z",
    -              "offset": 2560,
    -              "size": 8,
    -              "count": 512,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295
    -            },
    -            "SET_START": {
    -              "description": "DS start control register",
    -              "offset": 3584,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SET_START": {
    -                    "description": "set this bit to start DS operation.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "SET_CONTINUE": {
    -              "description": "DS continue control register",
    -              "offset": 3588,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SET_CONTINUE": {
    -                    "description": "set this bit to continue DS operation.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "SET_FINISH": {
    -              "description": "DS finish control register",
    -              "offset": 3592,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SET_FINISH": {
    -                    "description": "Set this bit to finish DS process.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "QUERY_BUSY": {
    -              "description": "DS query busy register",
    -              "offset": 3596,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "QUERY_BUSY": {
    -                    "description": "digital signature state. 1'b0: idle, 1'b1: busy",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "QUERY_KEY_WRONG": {
    -              "description": "DS query key-wrong counter register",
    -              "offset": 3600,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "QUERY_KEY_WRONG": {
    -                    "description": "digital signature key wrong counter",
    -                    "offset": 0,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "QUERY_CHECK": {
    -              "description": "DS query check result register",
    -              "offset": 3604,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "MD_ERROR": {
    -                    "description": "MD checkout result. 1'b0: MD check pass, 1'b1: MD check fail",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "PADDING_BAD": {
    -                    "description": "padding checkout result. 1'b0: a good padding, 1'b1: a bad padding",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DATE": {
    -              "description": "DS version control register",
    -              "offset": 3616,
    -              "size": 32,
    -              "reset_value": 538969624,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATE": {
    -                    "description": "ds version information",
    -                    "offset": 0,
    -                    "size": 30
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "EFUSE": {
    -        "description": "eFuse Controller",
    -        "children": {
    -          "registers": {
    -            "PGM_DATA0": {
    -              "description": "Register 0 that stores data to be programmed.",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PGM_DATA_0": {
    -                    "description": "The content of the 0th 32-bit data to be programmed.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "PGM_DATA1": {
    -              "description": "Register 1 that stores data to be programmed.",
    -              "offset": 4,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PGM_DATA_1": {
    -                    "description": "The content of the 1st 32-bit data to be programmed.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "PGM_DATA2": {
    -              "description": "Register 2 that stores data to be programmed.",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PGM_DATA_2": {
    -                    "description": "The content of the 2nd 32-bit data to be programmed.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "PGM_DATA3": {
    -              "description": "Register 3 that stores data to be programmed.",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PGM_DATA_3": {
    -                    "description": "The content of the 3rd 32-bit data to be programmed.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "PGM_DATA4": {
    -              "description": "Register 4 that stores data to be programmed.",
    -              "offset": 16,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PGM_DATA_4": {
    -                    "description": "The content of the 4th 32-bit data to be programmed.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "PGM_DATA5": {
    -              "description": "Register 5 that stores data to be programmed.",
    -              "offset": 20,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PGM_DATA_5": {
    -                    "description": "The content of the 5th 32-bit data to be programmed.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "PGM_DATA6": {
    -              "description": "Register 6 that stores data to be programmed.",
    -              "offset": 24,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PGM_DATA_6": {
    -                    "description": "The content of the 6th 32-bit data to be programmed.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "PGM_DATA7": {
    -              "description": "Register 7 that stores data to be programmed.",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PGM_DATA_7": {
    -                    "description": "The content of the 7th 32-bit data to be programmed.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "PGM_CHECK_VALUE0": {
    -              "description": "Register 0 that stores the RS code to be programmed.",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PGM_RS_DATA_0": {
    -                    "description": "The content of the 0th 32-bit RS code to be programmed.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "PGM_CHECK_VALUE1": {
    -              "description": "Register 1 that stores the RS code to be programmed.",
    -              "offset": 36,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PGM_RS_DATA_1": {
    -                    "description": "The content of the 1st 32-bit RS code to be programmed.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "PGM_CHECK_VALUE2": {
    -              "description": "Register 2 that stores the RS code to be programmed.",
    -              "offset": 40,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PGM_RS_DATA_2": {
    -                    "description": "The content of the 2nd 32-bit RS code to be programmed.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "RD_WR_DIS": {
    -              "description": "BLOCK0 data register 0.",
    -              "offset": 44,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WR_DIS": {
    -                    "description": "Disable programming of individual eFuses.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_REPEAT_DATA0": {
    -              "description": "BLOCK0 data register 1.",
    -              "offset": 48,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RD_DIS": {
    -                    "description": "Set this bit to disable reading from BlOCK4-10.",
    -                    "offset": 0,
    -                    "size": 7,
    -                    "access": "read-only"
    -                  },
    -                  "DIS_RTC_RAM_BOOT": {
    -                    "description": "Set this bit to disable boot from RTC RAM.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DIS_ICACHE": {
    -                    "description": "Set this bit to disable Icache.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DIS_USB_JTAG": {
    -                    "description": "Set this bit to disable function of usb switch to jtag in module of usb device.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DIS_DOWNLOAD_ICACHE": {
    -                    "description": "Set this bit to disable Icache in download mode (boot_mode[3:0] is 0, 1, 2, 3, 6, 7).",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DIS_USB_DEVICE": {
    -                    "description": "Set this bit to disable usb device.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DIS_FORCE_DOWNLOAD": {
    -                    "description": "Set this bit to disable the function that forces chip into download mode.",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RPT4_RESERVED6": {
    -                    "description": "Reserved (used for four backups method).",
    -                    "offset": 13,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DIS_CAN": {
    -                    "description": "Set this bit to disable CAN function.",
    -                    "offset": 14,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "JTAG_SEL_ENABLE": {
    -                    "description": "Set this bit to enable selection between usb_to_jtag and pad_to_jtag through strapping gpio10 when both reg_dis_usb_jtag and reg_dis_pad_jtag are equal to 0.",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SOFT_DIS_JTAG": {
    -                    "description": "Set these bits to disable JTAG in the soft way (odd number 1 means disable ). JTAG can be enabled in HMAC module.",
    -                    "offset": 16,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "DIS_PAD_JTAG": {
    -                    "description": "Set this bit to disable JTAG in the hard way. JTAG is disabled permanently.",
    -                    "offset": 19,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DIS_DOWNLOAD_MANUAL_ENCRYPT": {
    -                    "description": "Set this bit to disable flash encryption when in download boot modes.",
    -                    "offset": 20,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "USB_DREFH": {
    -                    "description": "Controls single-end input threshold vrefh, 1.76 V to 2 V with step of 80 mV, stored in eFuse.",
    -                    "offset": 21,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "USB_DREFL": {
    -                    "description": "Controls single-end input threshold vrefl, 0.8 V to 1.04 V with step of 80 mV, stored in eFuse.",
    -                    "offset": 23,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "USB_EXCHG_PINS": {
    -                    "description": "Set this bit to exchange USB D+ and D- pins.",
    -                    "offset": 25,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "VDD_SPI_AS_GPIO": {
    -                    "description": "Set this bit to vdd spi pin function as gpio.",
    -                    "offset": 26,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "BTLC_GPIO_ENABLE": {
    -                    "description": "Enable btlc gpio.",
    -                    "offset": 27,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "POWERGLITCH_EN": {
    -                    "description": "Set this bit to enable power glitch function.",
    -                    "offset": 29,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "POWER_GLITCH_DSENSE": {
    -                    "description": "Sample delay configuration of power glitch.",
    -                    "offset": 30,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_REPEAT_DATA1": {
    -              "description": "BLOCK0 data register 2.",
    -              "offset": 52,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RPT4_RESERVED2": {
    -                    "description": "Reserved (used for four backups method).",
    -                    "offset": 0,
    -                    "size": 16,
    -                    "access": "read-only"
    -                  },
    -                  "WDT_DELAY_SEL": {
    -                    "description": "Selects RTC watchdog timeout threshold, in unit of slow clock cycle. 0: 40000. 1: 80000. 2: 160000. 3:320000.",
    -                    "offset": 16,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "SPI_BOOT_CRYPT_CNT": {
    -                    "description": "Set this bit to enable SPI boot encrypt/decrypt. Odd number of 1: enable. even number of 1: disable.",
    -                    "offset": 18,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "SECURE_BOOT_KEY_REVOKE0": {
    -                    "description": "Set this bit to enable revoking first secure boot key.",
    -                    "offset": 21,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SECURE_BOOT_KEY_REVOKE1": {
    -                    "description": "Set this bit to enable revoking second secure boot key.",
    -                    "offset": 22,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SECURE_BOOT_KEY_REVOKE2": {
    -                    "description": "Set this bit to enable revoking third secure boot key.",
    -                    "offset": 23,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "KEY_PURPOSE_0": {
    -                    "description": "Purpose of Key0.",
    -                    "offset": 24,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  },
    -                  "KEY_PURPOSE_1": {
    -                    "description": "Purpose of Key1.",
    -                    "offset": 28,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_REPEAT_DATA2": {
    -              "description": "BLOCK0 data register 3.",
    -              "offset": 56,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY_PURPOSE_2": {
    -                    "description": "Purpose of Key2.",
    -                    "offset": 0,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  },
    -                  "KEY_PURPOSE_3": {
    -                    "description": "Purpose of Key3.",
    -                    "offset": 4,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  },
    -                  "KEY_PURPOSE_4": {
    -                    "description": "Purpose of Key4.",
    -                    "offset": 8,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  },
    -                  "KEY_PURPOSE_5": {
    -                    "description": "Purpose of Key5.",
    -                    "offset": 12,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  },
    -                  "RPT4_RESERVED3": {
    -                    "description": "Reserved (used for four backups method).",
    -                    "offset": 16,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  },
    -                  "SECURE_BOOT_EN": {
    -                    "description": "Set this bit to enable secure boot.",
    -                    "offset": 20,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SECURE_BOOT_AGGRESSIVE_REVOKE": {
    -                    "description": "Set this bit to enable revoking aggressive secure boot.",
    -                    "offset": 21,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RPT4_RESERVED0": {
    -                    "description": "Reserved (used for four backups method).",
    -                    "offset": 22,
    -                    "size": 6,
    -                    "access": "read-only"
    -                  },
    -                  "FLASH_TPUW": {
    -                    "description": "Configures flash waiting time after power-up, in unit of ms. If the value is less than 15, the waiting time is the configurable value; Otherwise, the waiting time is twice the configurable value.",
    -                    "offset": 28,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_REPEAT_DATA3": {
    -              "description": "BLOCK0 data register 4.",
    -              "offset": 60,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DIS_DOWNLOAD_MODE": {
    -                    "description": "Set this bit to disable download mode (boot_mode[3:0] = 0, 1, 2, 3, 6, 7).",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DIS_LEGACY_SPI_BOOT": {
    -                    "description": "Set this bit to disable Legacy SPI boot mode (boot_mode[3:0] = 4).",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "UART_PRINT_CHANNEL": {
    -                    "description": "Selectes the default UART print channel. 0: UART0. 1: UART1.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "FLASH_ECC_MODE": {
    -                    "description": "Set ECC mode in ROM, 0: ROM would Enable Flash ECC 16to18 byte mode. 1:ROM would use 16to17 byte mode.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DIS_USB_DOWNLOAD_MODE": {
    -                    "description": "Set this bit to disable UART download mode through USB.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "ENABLE_SECURITY_DOWNLOAD": {
    -                    "description": "Set this bit to enable secure UART download mode.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "UART_PRINT_CONTROL": {
    -                    "description": "Set the default UARTboot message output mode. 00: Enabled. 01: Enabled when GPIO8 is low at reset. 10: Enabled when GPIO8 is high at reset. 11:disabled.",
    -                    "offset": 6,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "PIN_POWER_SELECTION": {
    -                    "description": "GPIO33-GPIO37 power supply selection in ROM code. 0: VDD3P3_CPU. 1: VDD_SPI.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "FLASH_TYPE": {
    -                    "description": "Set the maximum lines of SPI flash. 0: four lines. 1: eight lines.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "FLASH_PAGE_SIZE": {
    -                    "description": "Set Flash page size.",
    -                    "offset": 10,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "FLASH_ECC_EN": {
    -                    "description": "Set 1 to enable ECC for flash boot.",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "FORCE_SEND_RESUME": {
    -                    "description": "Set this bit to force ROM code to send a resume command during SPI boot.",
    -                    "offset": 13,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SECURE_VERSION": {
    -                    "description": "Secure version (used by ESP-IDF anti-rollback feature).",
    -                    "offset": 14,
    -                    "size": 16,
    -                    "access": "read-only"
    -                  },
    -                  "RPT4_RESERVED1": {
    -                    "description": "Reserved (used for four backups method).",
    -                    "offset": 30,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_REPEAT_DATA4": {
    -              "description": "BLOCK0 data register 5.",
    -              "offset": 64,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RPT4_RESERVED4": {
    -                    "description": "Reserved (used for four backups method).",
    -                    "offset": 0,
    -                    "size": 24,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_MAC_SPI_SYS_0": {
    -              "description": "BLOCK1 data register 0.",
    -              "offset": 68,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "MAC_0": {
    -                    "description": "Stores the low 32 bits of MAC address.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_MAC_SPI_SYS_1": {
    -              "description": "BLOCK1 data register 1.",
    -              "offset": 72,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "MAC_1": {
    -                    "description": "Stores the high 16 bits of MAC address.",
    -                    "offset": 0,
    -                    "size": 16,
    -                    "access": "read-only"
    -                  },
    -                  "SPI_PAD_CONF_0": {
    -                    "description": "Stores the zeroth part of SPI_PAD_CONF.",
    -                    "offset": 16,
    -                    "size": 16,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_MAC_SPI_SYS_2": {
    -              "description": "BLOCK1 data register 2.",
    -              "offset": 76,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SPI_PAD_CONF_1": {
    -                    "description": "Stores the first part of SPI_PAD_CONF.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_MAC_SPI_SYS_3": {
    -              "description": "BLOCK1 data register 3.",
    -              "offset": 80,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SPI_PAD_CONF_2": {
    -                    "description": "Stores the second part of SPI_PAD_CONF.",
    -                    "offset": 0,
    -                    "size": 18,
    -                    "access": "read-only"
    -                  },
    -                  "SYS_DATA_PART0_0": {
    -                    "description": "Stores the fist 14 bits of the zeroth part of system data.",
    -                    "offset": 18,
    -                    "size": 14,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_MAC_SPI_SYS_4": {
    -              "description": "BLOCK1 data register 4.",
    -              "offset": 84,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SYS_DATA_PART0_1": {
    -                    "description": "Stores the fist 32 bits of the zeroth part of system data.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_MAC_SPI_SYS_5": {
    -              "description": "BLOCK1 data register 5.",
    -              "offset": 88,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SYS_DATA_PART0_2": {
    -                    "description": "Stores the second 32 bits of the zeroth part of system data.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_SYS_PART1_DATA0": {
    -              "description": "Register 0 of BLOCK2 (system).",
    -              "offset": 92,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SYS_DATA_PART1_0": {
    -                    "description": "Stores the zeroth 32 bits of the first part of system data.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_SYS_PART1_DATA1": {
    -              "description": "Register 1 of BLOCK2 (system).",
    -              "offset": 96,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SYS_DATA_PART1_1": {
    -                    "description": "Stores the first 32 bits of the first part of system data.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_SYS_PART1_DATA2": {
    -              "description": "Register 2 of BLOCK2 (system).",
    -              "offset": 100,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SYS_DATA_PART1_2": {
    -                    "description": "Stores the second 32 bits of the first part of system data.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_SYS_PART1_DATA3": {
    -              "description": "Register 3 of BLOCK2 (system).",
    -              "offset": 104,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SYS_DATA_PART1_3": {
    -                    "description": "Stores the third 32 bits of the first part of system data.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_SYS_PART1_DATA4": {
    -              "description": "Register 4 of BLOCK2 (system).",
    -              "offset": 108,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SYS_DATA_PART1_4": {
    -                    "description": "Stores the fourth 32 bits of the first part of system data.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_SYS_PART1_DATA5": {
    -              "description": "Register 5 of BLOCK2 (system).",
    -              "offset": 112,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SYS_DATA_PART1_5": {
    -                    "description": "Stores the fifth 32 bits of the first part of system data.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_SYS_PART1_DATA6": {
    -              "description": "Register 6 of BLOCK2 (system).",
    -              "offset": 116,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SYS_DATA_PART1_6": {
    -                    "description": "Stores the sixth 32 bits of the first part of system data.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_SYS_PART1_DATA7": {
    -              "description": "Register 7 of BLOCK2 (system).",
    -              "offset": 120,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SYS_DATA_PART1_7": {
    -                    "description": "Stores the seventh 32 bits of the first part of system data.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_USR_DATA0": {
    -              "description": "Register 0 of BLOCK3 (user).",
    -              "offset": 124,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "USR_DATA0": {
    -                    "description": "Stores the zeroth 32 bits of BLOCK3 (user).",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_USR_DATA1": {
    -              "description": "Register 1 of BLOCK3 (user).",
    -              "offset": 128,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "USR_DATA1": {
    -                    "description": "Stores the first 32 bits of BLOCK3 (user).",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_USR_DATA2": {
    -              "description": "Register 2 of BLOCK3 (user).",
    -              "offset": 132,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "USR_DATA2": {
    -                    "description": "Stores the second 32 bits of BLOCK3 (user).",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_USR_DATA3": {
    -              "description": "Register 3 of BLOCK3 (user).",
    -              "offset": 136,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "USR_DATA3": {
    -                    "description": "Stores the third 32 bits of BLOCK3 (user).",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_USR_DATA4": {
    -              "description": "Register 4 of BLOCK3 (user).",
    -              "offset": 140,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "USR_DATA4": {
    -                    "description": "Stores the fourth 32 bits of BLOCK3 (user).",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_USR_DATA5": {
    -              "description": "Register 5 of BLOCK3 (user).",
    -              "offset": 144,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "USR_DATA5": {
    -                    "description": "Stores the fifth 32 bits of BLOCK3 (user).",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_USR_DATA6": {
    -              "description": "Register 6 of BLOCK3 (user).",
    -              "offset": 148,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "USR_DATA6": {
    -                    "description": "Stores the sixth 32 bits of BLOCK3 (user).",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_USR_DATA7": {
    -              "description": "Register 7 of BLOCK3 (user).",
    -              "offset": 152,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "USR_DATA7": {
    -                    "description": "Stores the seventh 32 bits of BLOCK3 (user).",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY0_DATA0": {
    -              "description": "Register 0 of BLOCK4 (KEY0).",
    -              "offset": 156,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY0_DATA0": {
    -                    "description": "Stores the zeroth 32 bits of KEY0.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY0_DATA1": {
    -              "description": "Register 1 of BLOCK4 (KEY0).",
    -              "offset": 160,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY0_DATA1": {
    -                    "description": "Stores the first 32 bits of KEY0.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY0_DATA2": {
    -              "description": "Register 2 of BLOCK4 (KEY0).",
    -              "offset": 164,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY0_DATA2": {
    -                    "description": "Stores the second 32 bits of KEY0.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY0_DATA3": {
    -              "description": "Register 3 of BLOCK4 (KEY0).",
    -              "offset": 168,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY0_DATA3": {
    -                    "description": "Stores the third 32 bits of KEY0.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY0_DATA4": {
    -              "description": "Register 4 of BLOCK4 (KEY0).",
    -              "offset": 172,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY0_DATA4": {
    -                    "description": "Stores the fourth 32 bits of KEY0.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY0_DATA5": {
    -              "description": "Register 5 of BLOCK4 (KEY0).",
    -              "offset": 176,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY0_DATA5": {
    -                    "description": "Stores the fifth 32 bits of KEY0.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY0_DATA6": {
    -              "description": "Register 6 of BLOCK4 (KEY0).",
    -              "offset": 180,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY0_DATA6": {
    -                    "description": "Stores the sixth 32 bits of KEY0.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY0_DATA7": {
    -              "description": "Register 7 of BLOCK4 (KEY0).",
    -              "offset": 184,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY0_DATA7": {
    -                    "description": "Stores the seventh 32 bits of KEY0.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY1_DATA0": {
    -              "description": "Register 0 of BLOCK5 (KEY1).",
    -              "offset": 188,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY1_DATA0": {
    -                    "description": "Stores the zeroth 32 bits of KEY1.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY1_DATA1": {
    -              "description": "Register 1 of BLOCK5 (KEY1).",
    -              "offset": 192,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY1_DATA1": {
    -                    "description": "Stores the first 32 bits of KEY1.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY1_DATA2": {
    -              "description": "Register 2 of BLOCK5 (KEY1).",
    -              "offset": 196,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY1_DATA2": {
    -                    "description": "Stores the second 32 bits of KEY1.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY1_DATA3": {
    -              "description": "Register 3 of BLOCK5 (KEY1).",
    -              "offset": 200,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY1_DATA3": {
    -                    "description": "Stores the third 32 bits of KEY1.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY1_DATA4": {
    -              "description": "Register 4 of BLOCK5 (KEY1).",
    -              "offset": 204,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY1_DATA4": {
    -                    "description": "Stores the fourth 32 bits of KEY1.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY1_DATA5": {
    -              "description": "Register 5 of BLOCK5 (KEY1).",
    -              "offset": 208,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY1_DATA5": {
    -                    "description": "Stores the fifth 32 bits of KEY1.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY1_DATA6": {
    -              "description": "Register 6 of BLOCK5 (KEY1).",
    -              "offset": 212,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY1_DATA6": {
    -                    "description": "Stores the sixth 32 bits of KEY1.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY1_DATA7": {
    -              "description": "Register 7 of BLOCK5 (KEY1).",
    -              "offset": 216,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY1_DATA7": {
    -                    "description": "Stores the seventh 32 bits of KEY1.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY2_DATA0": {
    -              "description": "Register 0 of BLOCK6 (KEY2).",
    -              "offset": 220,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY2_DATA0": {
    -                    "description": "Stores the zeroth 32 bits of KEY2.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY2_DATA1": {
    -              "description": "Register 1 of BLOCK6 (KEY2).",
    -              "offset": 224,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY2_DATA1": {
    -                    "description": "Stores the first 32 bits of KEY2.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY2_DATA2": {
    -              "description": "Register 2 of BLOCK6 (KEY2).",
    -              "offset": 228,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY2_DATA2": {
    -                    "description": "Stores the second 32 bits of KEY2.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY2_DATA3": {
    -              "description": "Register 3 of BLOCK6 (KEY2).",
    -              "offset": 232,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY2_DATA3": {
    -                    "description": "Stores the third 32 bits of KEY2.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY2_DATA4": {
    -              "description": "Register 4 of BLOCK6 (KEY2).",
    -              "offset": 236,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY2_DATA4": {
    -                    "description": "Stores the fourth 32 bits of KEY2.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY2_DATA5": {
    -              "description": "Register 5 of BLOCK6 (KEY2).",
    -              "offset": 240,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY2_DATA5": {
    -                    "description": "Stores the fifth 32 bits of KEY2.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY2_DATA6": {
    -              "description": "Register 6 of BLOCK6 (KEY2).",
    -              "offset": 244,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY2_DATA6": {
    -                    "description": "Stores the sixth 32 bits of KEY2.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY2_DATA7": {
    -              "description": "Register 7 of BLOCK6 (KEY2).",
    -              "offset": 248,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY2_DATA7": {
    -                    "description": "Stores the seventh 32 bits of KEY2.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY3_DATA0": {
    -              "description": "Register 0 of BLOCK7 (KEY3).",
    -              "offset": 252,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY3_DATA0": {
    -                    "description": "Stores the zeroth 32 bits of KEY3.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY3_DATA1": {
    -              "description": "Register 1 of BLOCK7 (KEY3).",
    -              "offset": 256,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY3_DATA1": {
    -                    "description": "Stores the first 32 bits of KEY3.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY3_DATA2": {
    -              "description": "Register 2 of BLOCK7 (KEY3).",
    -              "offset": 260,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY3_DATA2": {
    -                    "description": "Stores the second 32 bits of KEY3.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY3_DATA3": {
    -              "description": "Register 3 of BLOCK7 (KEY3).",
    -              "offset": 264,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY3_DATA3": {
    -                    "description": "Stores the third 32 bits of KEY3.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY3_DATA4": {
    -              "description": "Register 4 of BLOCK7 (KEY3).",
    -              "offset": 268,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY3_DATA4": {
    -                    "description": "Stores the fourth 32 bits of KEY3.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY3_DATA5": {
    -              "description": "Register 5 of BLOCK7 (KEY3).",
    -              "offset": 272,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY3_DATA5": {
    -                    "description": "Stores the fifth 32 bits of KEY3.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY3_DATA6": {
    -              "description": "Register 6 of BLOCK7 (KEY3).",
    -              "offset": 276,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY3_DATA6": {
    -                    "description": "Stores the sixth 32 bits of KEY3.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY3_DATA7": {
    -              "description": "Register 7 of BLOCK7 (KEY3).",
    -              "offset": 280,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY3_DATA7": {
    -                    "description": "Stores the seventh 32 bits of KEY3.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY4_DATA0": {
    -              "description": "Register 0 of BLOCK8 (KEY4).",
    -              "offset": 284,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY4_DATA0": {
    -                    "description": "Stores the zeroth 32 bits of KEY4.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY4_DATA1": {
    -              "description": "Register 1 of BLOCK8 (KEY4).",
    -              "offset": 288,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY4_DATA1": {
    -                    "description": "Stores the first 32 bits of KEY4.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY4_DATA2": {
    -              "description": "Register 2 of BLOCK8 (KEY4).",
    -              "offset": 292,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY4_DATA2": {
    -                    "description": "Stores the second 32 bits of KEY4.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY4_DATA3": {
    -              "description": "Register 3 of BLOCK8 (KEY4).",
    -              "offset": 296,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY4_DATA3": {
    -                    "description": "Stores the third 32 bits of KEY4.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY4_DATA4": {
    -              "description": "Register 4 of BLOCK8 (KEY4).",
    -              "offset": 300,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY4_DATA4": {
    -                    "description": "Stores the fourth 32 bits of KEY4.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY4_DATA5": {
    -              "description": "Register 5 of BLOCK8 (KEY4).",
    -              "offset": 304,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY4_DATA5": {
    -                    "description": "Stores the fifth 32 bits of KEY4.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY4_DATA6": {
    -              "description": "Register 6 of BLOCK8 (KEY4).",
    -              "offset": 308,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY4_DATA6": {
    -                    "description": "Stores the sixth 32 bits of KEY4.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY4_DATA7": {
    -              "description": "Register 7 of BLOCK8 (KEY4).",
    -              "offset": 312,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY4_DATA7": {
    -                    "description": "Stores the seventh 32 bits of KEY4.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY5_DATA0": {
    -              "description": "Register 0 of BLOCK9 (KEY5).",
    -              "offset": 316,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY5_DATA0": {
    -                    "description": "Stores the zeroth 32 bits of KEY5.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY5_DATA1": {
    -              "description": "Register 1 of BLOCK9 (KEY5).",
    -              "offset": 320,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY5_DATA1": {
    -                    "description": "Stores the first 32 bits of KEY5.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY5_DATA2": {
    -              "description": "Register 2 of BLOCK9 (KEY5).",
    -              "offset": 324,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY5_DATA2": {
    -                    "description": "Stores the second 32 bits of KEY5.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY5_DATA3": {
    -              "description": "Register 3 of BLOCK9 (KEY5).",
    -              "offset": 328,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY5_DATA3": {
    -                    "description": "Stores the third 32 bits of KEY5.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY5_DATA4": {
    -              "description": "Register 4 of BLOCK9 (KEY5).",
    -              "offset": 332,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY5_DATA4": {
    -                    "description": "Stores the fourth 32 bits of KEY5.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY5_DATA5": {
    -              "description": "Register 5 of BLOCK9 (KEY5).",
    -              "offset": 336,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY5_DATA5": {
    -                    "description": "Stores the fifth 32 bits of KEY5.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY5_DATA6": {
    -              "description": "Register 6 of BLOCK9 (KEY5).",
    -              "offset": 340,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY5_DATA6": {
    -                    "description": "Stores the sixth 32 bits of KEY5.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_KEY5_DATA7": {
    -              "description": "Register 7 of BLOCK9 (KEY5).",
    -              "offset": 344,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY5_DATA7": {
    -                    "description": "Stores the seventh 32 bits of KEY5.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_SYS_PART2_DATA0": {
    -              "description": "Register 0 of BLOCK10 (system).",
    -              "offset": 348,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SYS_DATA_PART2_0": {
    -                    "description": "Stores the 0th 32 bits of the 2nd part of system data.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_SYS_PART2_DATA1": {
    -              "description": "Register 1 of BLOCK9 (KEY5).",
    -              "offset": 352,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SYS_DATA_PART2_1": {
    -                    "description": "Stores the 1st 32 bits of the 2nd part of system data.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_SYS_PART2_DATA2": {
    -              "description": "Register 2 of BLOCK10 (system).",
    -              "offset": 356,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SYS_DATA_PART2_2": {
    -                    "description": "Stores the 2nd 32 bits of the 2nd part of system data.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_SYS_PART2_DATA3": {
    -              "description": "Register 3 of BLOCK10 (system).",
    -              "offset": 360,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SYS_DATA_PART2_3": {
    -                    "description": "Stores the 3rd 32 bits of the 2nd part of system data.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_SYS_PART2_DATA4": {
    -              "description": "Register 4 of BLOCK10 (system).",
    -              "offset": 364,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SYS_DATA_PART2_4": {
    -                    "description": "Stores the 4th 32 bits of the 2nd part of system data.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_SYS_PART2_DATA5": {
    -              "description": "Register 5 of BLOCK10 (system).",
    -              "offset": 368,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SYS_DATA_PART2_5": {
    -                    "description": "Stores the 5th 32 bits of the 2nd part of system data.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_SYS_PART2_DATA6": {
    -              "description": "Register 6 of BLOCK10 (system).",
    -              "offset": 372,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SYS_DATA_PART2_6": {
    -                    "description": "Stores the 6th 32 bits of the 2nd part of system data.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_SYS_PART2_DATA7": {
    -              "description": "Register 7 of BLOCK10 (system).",
    -              "offset": 376,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SYS_DATA_PART2_7": {
    -                    "description": "Stores the 7th 32 bits of the 2nd part of system data.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_REPEAT_ERR0": {
    -              "description": "Programming error record register 0 of BLOCK0.",
    -              "offset": 380,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RD_DIS_ERR": {
    -                    "description": "If any bit in RD_DIS is 1, then it indicates a programming error.",
    -                    "offset": 0,
    -                    "size": 7,
    -                    "access": "read-only"
    -                  },
    -                  "DIS_RTC_RAM_BOOT_ERR": {
    -                    "description": "If DIS_RTC_RAM_BOOT is 1, then it indicates a programming error.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DIS_ICACHE_ERR": {
    -                    "description": "If DIS_ICACHE is 1, then it indicates a programming error.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DIS_USB_JTAG_ERR": {
    -                    "description": "If DIS_USB_JTAG is 1, then it indicates a programming error.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DIS_DOWNLOAD_ICACHE_ERR": {
    -                    "description": "If DIS_DOWNLOAD_ICACHE is 1, then it indicates a programming error.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DIS_USB_DEVICE_ERR": {
    -                    "description": "If DIS_USB_DEVICE is 1, then it indicates a programming error.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DIS_FORCE_DOWNLOAD_ERR": {
    -                    "description": "If DIS_FORCE_DOWNLOAD is 1, then it indicates a programming error.",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RPT4_RESERVED6_ERR": {
    -                    "description": "Reserved.",
    -                    "offset": 13,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DIS_CAN_ERR": {
    -                    "description": "If DIS_CAN is 1, then it indicates a programming error.",
    -                    "offset": 14,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "JTAG_SEL_ENABLE_ERR": {
    -                    "description": "If JTAG_SEL_ENABLE is 1, then it indicates a programming error.",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SOFT_DIS_JTAG_ERR": {
    -                    "description": "If SOFT_DIS_JTAG is 1, then it indicates a programming error.",
    -                    "offset": 16,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "DIS_PAD_JTAG_ERR": {
    -                    "description": "If DIS_PAD_JTAG is 1, then it indicates a programming error.",
    -                    "offset": 19,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DIS_DOWNLOAD_MANUAL_ENCRYPT_ERR": {
    -                    "description": "If DIS_DOWNLOAD_MANUAL_ENCRYPT is 1, then it indicates a programming error.",
    -                    "offset": 20,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "USB_DREFH_ERR": {
    -                    "description": "If any bit in USB_DREFH is 1, then it indicates a programming error.",
    -                    "offset": 21,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "USB_DREFL_ERR": {
    -                    "description": "If any bit in USB_DREFL is 1, then it indicates a programming error.",
    -                    "offset": 23,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "USB_EXCHG_PINS_ERR": {
    -                    "description": "If USB_EXCHG_PINS is 1, then it indicates a programming error.",
    -                    "offset": 25,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "VDD_SPI_AS_GPIO_ERR": {
    -                    "description": "If VDD_SPI_AS_GPIO is 1, then it indicates a programming error.",
    -                    "offset": 26,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "BTLC_GPIO_ENABLE_ERR": {
    -                    "description": "If any bit in BTLC_GPIO_ENABLE is 1, then it indicates a programming error.",
    -                    "offset": 27,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "POWERGLITCH_EN_ERR": {
    -                    "description": "If POWERGLITCH_EN is 1, then it indicates a programming error.",
    -                    "offset": 29,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "POWER_GLITCH_DSENSE_ERR": {
    -                    "description": "If any bit in POWER_GLITCH_DSENSE is 1, then it indicates a programming error.",
    -                    "offset": 30,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_REPEAT_ERR1": {
    -              "description": "Programming error record register 1 of BLOCK0.",
    -              "offset": 384,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RPT4_RESERVED2_ERR": {
    -                    "description": "Reserved.",
    -                    "offset": 0,
    -                    "size": 16,
    -                    "access": "read-only"
    -                  },
    -                  "WDT_DELAY_SEL_ERR": {
    -                    "description": "If any bit in WDT_DELAY_SEL is 1, then it indicates a programming error.",
    -                    "offset": 16,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "SPI_BOOT_CRYPT_CNT_ERR": {
    -                    "description": "If any bit in SPI_BOOT_CRYPT_CNT is 1, then it indicates a programming error.",
    -                    "offset": 18,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "SECURE_BOOT_KEY_REVOKE0_ERR": {
    -                    "description": "If SECURE_BOOT_KEY_REVOKE0 is 1, then it indicates a programming error.",
    -                    "offset": 21,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SECURE_BOOT_KEY_REVOKE1_ERR": {
    -                    "description": "If SECURE_BOOT_KEY_REVOKE1 is 1, then it indicates a programming error.",
    -                    "offset": 22,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SECURE_BOOT_KEY_REVOKE2_ERR": {
    -                    "description": "If SECURE_BOOT_KEY_REVOKE2 is 1, then it indicates a programming error.",
    -                    "offset": 23,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "KEY_PURPOSE_0_ERR": {
    -                    "description": "If any bit in KEY_PURPOSE_0 is 1, then it indicates a programming error.",
    -                    "offset": 24,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  },
    -                  "KEY_PURPOSE_1_ERR": {
    -                    "description": "If any bit in KEY_PURPOSE_1 is 1, then it indicates a programming error.",
    -                    "offset": 28,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_REPEAT_ERR2": {
    -              "description": "Programming error record register 2 of BLOCK0.",
    -              "offset": 388,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY_PURPOSE_2_ERR": {
    -                    "description": "If any bit in KEY_PURPOSE_2 is 1, then it indicates a programming error.",
    -                    "offset": 0,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  },
    -                  "KEY_PURPOSE_3_ERR": {
    -                    "description": "If any bit in KEY_PURPOSE_3 is 1, then it indicates a programming error.",
    -                    "offset": 4,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  },
    -                  "KEY_PURPOSE_4_ERR": {
    -                    "description": "If any bit in KEY_PURPOSE_4 is 1, then it indicates a programming error.",
    -                    "offset": 8,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  },
    -                  "KEY_PURPOSE_5_ERR": {
    -                    "description": "If any bit in KEY_PURPOSE_5 is 1, then it indicates a programming error.",
    -                    "offset": 12,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  },
    -                  "RPT4_RESERVED3_ERR": {
    -                    "description": "Reserved.",
    -                    "offset": 16,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  },
    -                  "SECURE_BOOT_EN_ERR": {
    -                    "description": "If SECURE_BOOT_EN is 1, then it indicates a programming error.",
    -                    "offset": 20,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SECURE_BOOT_AGGRESSIVE_REVOKE_ERR": {
    -                    "description": "If SECURE_BOOT_AGGRESSIVE_REVOKE is 1, then it indicates a programming error.",
    -                    "offset": 21,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RPT4_RESERVED0_ERR": {
    -                    "description": "Reserved.",
    -                    "offset": 22,
    -                    "size": 6,
    -                    "access": "read-only"
    -                  },
    -                  "FLASH_TPUW_ERR": {
    -                    "description": "If any bit in FLASH_TPUM is 1, then it indicates a programming error.",
    -                    "offset": 28,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_REPEAT_ERR3": {
    -              "description": "Programming error record register 3 of BLOCK0.",
    -              "offset": 392,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DIS_DOWNLOAD_MODE_ERR": {
    -                    "description": "If DIS_DOWNLOAD_MODE is 1, then it indicates a programming error.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DIS_LEGACY_SPI_BOOT_ERR": {
    -                    "description": "If DIS_LEGACY_SPI_BOOT is 1, then it indicates a programming error.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "UART_PRINT_CHANNEL_ERR": {
    -                    "description": "If UART_PRINT_CHANNEL is 1, then it indicates a programming error.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "FLASH_ECC_MODE_ERR": {
    -                    "description": "If FLASH_ECC_MODE is 1, then it indicates a programming error.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DIS_USB_DOWNLOAD_MODE_ERR": {
    -                    "description": "If DIS_USB_DOWNLOAD_MODE is 1, then it indicates a programming error.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "ENABLE_SECURITY_DOWNLOAD_ERR": {
    -                    "description": "If ENABLE_SECURITY_DOWNLOAD is 1, then it indicates a programming error.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "UART_PRINT_CONTROL_ERR": {
    -                    "description": "If any bit in UART_PRINT_CONTROL is 1, then it indicates a programming error.",
    -                    "offset": 6,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "PIN_POWER_SELECTION_ERR": {
    -                    "description": "If PIN_POWER_SELECTION is 1, then it indicates a programming error.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "FLASH_TYPE_ERR": {
    -                    "description": "If FLASH_TYPE is 1, then it indicates a programming error.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "FLASH_PAGE_SIZE_ERR": {
    -                    "description": "If any bits in FLASH_PAGE_SIZE is 1, then it indicates a programming error.",
    -                    "offset": 10,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "FLASH_ECC_EN_ERR": {
    -                    "description": "If FLASH_ECC_EN_ERR is 1, then it indicates a programming error.",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "FORCE_SEND_RESUME_ERR": {
    -                    "description": "If FORCE_SEND_RESUME is 1, then it indicates a programming error.",
    -                    "offset": 13,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SECURE_VERSION_ERR": {
    -                    "description": "If any bit in SECURE_VERSION is 1, then it indicates a programming error.",
    -                    "offset": 14,
    -                    "size": 16,
    -                    "access": "read-only"
    -                  },
    -                  "RPT4_RESERVED1_ERR": {
    -                    "description": "Reserved.",
    -                    "offset": 30,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_REPEAT_ERR4": {
    -              "description": "Programming error record register 4 of BLOCK0.",
    -              "offset": 400,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RPT4_RESERVED4_ERR": {
    -                    "description": "Reserved.",
    -                    "offset": 0,
    -                    "size": 24,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_RS_ERR0": {
    -              "description": "Programming error record register 0 of BLOCK1-10.",
    -              "offset": 448,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "MAC_SPI_8M_ERR_NUM": {
    -                    "description": "The value of this signal means the number of error bytes.",
    -                    "offset": 0,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "MAC_SPI_8M_FAIL": {
    -                    "description": "0: Means no failure and that the data of MAC_SPI_8M is reliable 1: Means that programming user data failed and the number of error bytes is over 6.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SYS_PART1_NUM": {
    -                    "description": "The value of this signal means the number of error bytes.",
    -                    "offset": 4,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "SYS_PART1_FAIL": {
    -                    "description": "0: Means no failure and that the data of system part1 is reliable 1: Means that programming user data failed and the number of error bytes is over 6.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "USR_DATA_ERR_NUM": {
    -                    "description": "The value of this signal means the number of error bytes.",
    -                    "offset": 8,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "USR_DATA_FAIL": {
    -                    "description": "0: Means no failure and that the user data is reliable 1: Means that programming user data failed and the number of error bytes is over 6.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "KEY0_ERR_NUM": {
    -                    "description": "The value of this signal means the number of error bytes.",
    -                    "offset": 12,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "KEY0_FAIL": {
    -                    "description": "0: Means no failure and that the data of key0 is reliable 1: Means that programming key0 failed and the number of error bytes is over 6.",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "KEY1_ERR_NUM": {
    -                    "description": "The value of this signal means the number of error bytes.",
    -                    "offset": 16,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "KEY1_FAIL": {
    -                    "description": "0: Means no failure and that the data of key1 is reliable 1: Means that programming key1 failed and the number of error bytes is over 6.",
    -                    "offset": 19,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "KEY2_ERR_NUM": {
    -                    "description": "The value of this signal means the number of error bytes.",
    -                    "offset": 20,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "KEY2_FAIL": {
    -                    "description": "0: Means no failure and that the data of key2 is reliable 1: Means that programming key2 failed and the number of error bytes is over 6.",
    -                    "offset": 23,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "KEY3_ERR_NUM": {
    -                    "description": "The value of this signal means the number of error bytes.",
    -                    "offset": 24,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "KEY3_FAIL": {
    -                    "description": "0: Means no failure and that the data of key3 is reliable 1: Means that programming key3 failed and the number of error bytes is over 6.",
    -                    "offset": 27,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "KEY4_ERR_NUM": {
    -                    "description": "The value of this signal means the number of error bytes.",
    -                    "offset": 28,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "KEY4_FAIL": {
    -                    "description": "0: Means no failure and that the data of key4 is reliable 1: Means that programming key4 failed and the number of error bytes is over 6.",
    -                    "offset": 31,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RD_RS_ERR1": {
    -              "description": "Programming error record register 1 of BLOCK1-10.",
    -              "offset": 452,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY5_ERR_NUM": {
    -                    "description": "The value of this signal means the number of error bytes.",
    -                    "offset": 0,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "KEY5_FAIL": {
    -                    "description": "0: Means no failure and that the data of KEY5 is reliable 1: Means that programming user data failed and the number of error bytes is over 6.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SYS_PART2_ERR_NUM": {
    -                    "description": "The value of this signal means the number of error bytes.",
    -                    "offset": 4,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "SYS_PART2_FAIL": {
    -                    "description": "0: Means no failure and that the data of system part2 is reliable 1: Means that programming user data failed and the number of error bytes is over 6.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CLK": {
    -              "description": "eFuse clcok configuration register.",
    -              "offset": 456,
    -              "size": 32,
    -              "reset_value": 2,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "EFUSE_MEM_FORCE_PD": {
    -                    "description": "Set this bit to force eFuse SRAM into power-saving mode.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "MEM_CLK_FORCE_ON": {
    -                    "description": "Set this bit and force to activate clock signal of eFuse SRAM.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "EFUSE_MEM_FORCE_PU": {
    -                    "description": "Set this bit to force eFuse SRAM into working mode.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "EN": {
    -                    "description": "Set this bit and force to enable clock signal of eFuse memory.",
    -                    "offset": 16,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CONF": {
    -              "description": "eFuse operation mode configuraiton register;",
    -              "offset": 460,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OP_CODE": {
    -                    "description": "0x5A5A: Operate programming command 0x5AA5: Operate read command.",
    -                    "offset": 0,
    -                    "size": 16
    -                  }
    -                }
    -              }
    -            },
    -            "STATUS": {
    -              "description": "eFuse status register.",
    -              "offset": 464,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "STATE": {
    -                    "description": "Indicates the state of the eFuse state machine.",
    -                    "offset": 0,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  },
    -                  "OTP_LOAD_SW": {
    -                    "description": "The value of OTP_LOAD_SW.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OTP_VDDQ_C_SYNC2": {
    -                    "description": "The value of OTP_VDDQ_C_SYNC2.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OTP_STROBE_SW": {
    -                    "description": "The value of OTP_STROBE_SW.",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OTP_CSB_SW": {
    -                    "description": "The value of OTP_CSB_SW.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OTP_PGENB_SW": {
    -                    "description": "The value of OTP_PGENB_SW.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OTP_VDDQ_IS_SW": {
    -                    "description": "The value of OTP_VDDQ_IS_SW.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "REPEAT_ERR_CNT": {
    -                    "description": "Indicates the number of error bits during programming BLOCK0.",
    -                    "offset": 10,
    -                    "size": 8,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CMD": {
    -              "description": "eFuse command register.",
    -              "offset": 468,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "READ_CMD": {
    -                    "description": "Set this bit to send read command.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "PGM_CMD": {
    -                    "description": "Set this bit to send programming command.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "BLK_NUM": {
    -                    "description": "The serial number of the block to be programmed. Value 0-10 corresponds to block number 0-10, respectively.",
    -                    "offset": 2,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "INT_RAW": {
    -              "description": "eFuse raw interrupt register.",
    -              "offset": 472,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "READ_DONE_INT_RAW": {
    -                    "description": "The raw bit signal for read_done interrupt.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "PGM_DONE_INT_RAW": {
    -                    "description": "The raw bit signal for pgm_done interrupt.",
    -                    "offset": 1,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ST": {
    -              "description": "eFuse interrupt status register.",
    -              "offset": 476,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "READ_DONE_INT_ST": {
    -                    "description": "The status signal for read_done interrupt.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "PGM_DONE_INT_ST": {
    -                    "description": "The status signal for pgm_done interrupt.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ENA": {
    -              "description": "eFuse interrupt enable register.",
    -              "offset": 480,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "READ_DONE_INT_ENA": {
    -                    "description": "The enable signal for read_done interrupt.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "PGM_DONE_INT_ENA": {
    -                    "description": "The enable signal for pgm_done interrupt.",
    -                    "offset": 1,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INT_CLR": {
    -              "description": "eFuse interrupt clear register.",
    -              "offset": 484,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "READ_DONE_INT_CLR": {
    -                    "description": "The clear signal for read_done interrupt.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "PGM_DONE_INT_CLR": {
    -                    "description": "The clear signal for pgm_done interrupt.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DAC_CONF": {
    -              "description": "Controls the eFuse programming voltage.",
    -              "offset": 488,
    -              "size": 32,
    -              "reset_value": 130588,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DAC_CLK_DIV": {
    -                    "description": "Controls the division factor of the rising clock of the programming voltage.",
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "DAC_CLK_PAD_SEL": {
    -                    "description": "Don't care.",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "DAC_NUM": {
    -                    "description": "Controls the rising period of the programming voltage.",
    -                    "offset": 9,
    -                    "size": 8
    -                  },
    -                  "OE_CLR": {
    -                    "description": "Reduces the power supply of the programming voltage.",
    -                    "offset": 17,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "RD_TIM_CONF": {
    -              "description": "Configures read timing parameters.",
    -              "offset": 492,
    -              "size": 32,
    -              "reset_value": 301989888,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "READ_INIT_NUM": {
    -                    "description": "Configures the initial read time of eFuse.",
    -                    "offset": 24,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "WR_TIM_CONF1": {
    -              "description": "Configurarion register 1 of eFuse programming timing parameters.",
    -              "offset": 496,
    -              "size": 32,
    -              "reset_value": 2654208,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PWR_ON_NUM": {
    -                    "description": "Configures the power up time for VDDQ.",
    -                    "offset": 8,
    -                    "size": 16
    -                  }
    -                }
    -              }
    -            },
    -            "WR_TIM_CONF2": {
    -              "description": "Configurarion register 2 of eFuse programming timing parameters.",
    -              "offset": 500,
    -              "size": 32,
    -              "reset_value": 400,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PWR_OFF_NUM": {
    -                    "description": "Configures the power outage time for VDDQ.",
    -                    "offset": 0,
    -                    "size": 16
    -                  }
    -                }
    -              }
    -            },
    -            "DATE": {
    -              "description": "eFuse version register.",
    -              "offset": 508,
    -              "size": 32,
    -              "reset_value": 33583616,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATE": {
    -                    "description": "Stores eFuse version.",
    -                    "offset": 0,
    -                    "size": 28
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "EXTMEM": {
    -        "description": "External Memory",
    -        "children": {
    -          "registers": {
    -            "ICACHE_CTRL": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_ENABLE": {
    -                    "description": "The bit is used to activate the data cache. 0: disable, 1: enable",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "ICACHE_CTRL1": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 4,
    -              "size": 32,
    -              "reset_value": 3,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_SHUT_IBUS": {
    -                    "description": "The bit is used to disable core0 ibus, 0: enable, 1: disable",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "ICACHE_SHUT_DBUS": {
    -                    "description": "The bit is used to disable core1 ibus, 0: enable, 1: disable",
    -                    "offset": 1,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "ICACHE_TAG_POWER_CTRL": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 5,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_TAG_MEM_FORCE_ON": {
    -                    "description": "The bit is used to close clock gating of  icache tag memory. 1: close gating, 0: open clock gating.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "ICACHE_TAG_MEM_FORCE_PD": {
    -                    "description": "The bit is used to power  icache tag memory down, 0: follow rtc_lslp, 1: power down",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "ICACHE_TAG_MEM_FORCE_PU": {
    -                    "description": "The bit is used to power  icache tag memory up, 0: follow rtc_lslp, 1: power up",
    -                    "offset": 2,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "ICACHE_PRELOCK_CTRL": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_PRELOCK_SCT0_EN": {
    -                    "description": "The bit is used to enable the first section of prelock function.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "ICACHE_PRELOCK_SCT1_EN": {
    -                    "description": "The bit is used to enable the second section of prelock function.",
    -                    "offset": 1,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "ICACHE_PRELOCK_SCT0_ADDR": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 16,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_PRELOCK_SCT0_ADDR": {
    -                    "description": "The bits are used to configure the first start virtual address of data prelock, which is combined with ICACHE_PRELOCK_SCT0_SIZE_REG",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "ICACHE_PRELOCK_SCT1_ADDR": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 20,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_PRELOCK_SCT1_ADDR": {
    -                    "description": "The bits are used to configure the second start virtual address of data prelock, which is combined with ICACHE_PRELOCK_SCT1_SIZE_REG",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "ICACHE_PRELOCK_SCT_SIZE": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 24,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_PRELOCK_SCT1_SIZE": {
    -                    "description": "The bits are used to configure the second length of data locking, which is combined with ICACHE_PRELOCK_SCT1_ADDR_REG",
    -                    "offset": 0,
    -                    "size": 16
    -                  },
    -                  "ICACHE_PRELOCK_SCT0_SIZE": {
    -                    "description": "The bits are used to configure the first length of data locking, which is combined with ICACHE_PRELOCK_SCT0_ADDR_REG",
    -                    "offset": 16,
    -                    "size": 16
    -                  }
    -                }
    -              }
    -            },
    -            "ICACHE_LOCK_CTRL": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 4,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_LOCK_ENA": {
    -                    "description": "The bit is used to enable lock operation. It will be cleared by hardware after lock operation done.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "ICACHE_UNLOCK_ENA": {
    -                    "description": "The bit is used to enable unlock operation. It will be cleared by hardware after unlock operation done.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "ICACHE_LOCK_DONE": {
    -                    "description": "The bit is used to indicate unlock/lock operation is finished.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "ICACHE_LOCK_ADDR": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_LOCK_ADDR": {
    -                    "description": "The bits are used to configure the start virtual address for lock operations. It should be combined with ICACHE_LOCK_SIZE_REG.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "ICACHE_LOCK_SIZE": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 36,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_LOCK_SIZE": {
    -                    "description": "The bits are used to configure the length for lock operations. The bits are the counts of cache block. It should be combined with ICACHE_LOCK_ADDR_REG.",
    -                    "offset": 0,
    -                    "size": 16
    -                  }
    -                }
    -              }
    -            },
    -            "ICACHE_SYNC_CTRL": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 40,
    -              "size": 32,
    -              "reset_value": 1,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_INVALIDATE_ENA": {
    -                    "description": "The bit is used to enable invalidate operation. It will be cleared by hardware after invalidate operation done.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "ICACHE_SYNC_DONE": {
    -                    "description": "The bit is used to indicate invalidate operation is finished.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "ICACHE_SYNC_ADDR": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 44,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_SYNC_ADDR": {
    -                    "description": "The bits are used to configure the start virtual address for clean operations. It should be combined with ICACHE_SYNC_SIZE_REG.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "ICACHE_SYNC_SIZE": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 48,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_SYNC_SIZE": {
    -                    "description": "The bits are used to configure the length for sync operations. The bits are the counts of cache block. It should be combined with ICACHE_SYNC_ADDR_REG.",
    -                    "offset": 0,
    -                    "size": 23
    -                  }
    -                }
    -              }
    -            },
    -            "ICACHE_PRELOAD_CTRL": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 52,
    -              "size": 32,
    -              "reset_value": 2,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_PRELOAD_ENA": {
    -                    "description": "The bit is used to enable preload operation. It will be cleared by hardware after preload operation done.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "ICACHE_PRELOAD_DONE": {
    -                    "description": "The bit is used to indicate preload operation is finished.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "ICACHE_PRELOAD_ORDER": {
    -                    "description": "The bit is used to configure the direction of preload operation. 1: descending, 0: ascending.",
    -                    "offset": 2,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "ICACHE_PRELOAD_ADDR": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 56,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_PRELOAD_ADDR": {
    -                    "description": "The bits are used to configure the start virtual address for preload operation. It should be combined with ICACHE_PRELOAD_SIZE_REG.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "ICACHE_PRELOAD_SIZE": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 60,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_PRELOAD_SIZE": {
    -                    "description": "The bits are used to configure the length for preload operation. The bits are the counts of cache block. It should be combined with ICACHE_PRELOAD_ADDR_REG..",
    -                    "offset": 0,
    -                    "size": 16
    -                  }
    -                }
    -              }
    -            },
    -            "ICACHE_AUTOLOAD_CTRL": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 64,
    -              "size": 32,
    -              "reset_value": 8,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_AUTOLOAD_SCT0_ENA": {
    -                    "description": "The bits are used to enable the first section for autoload operation.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "ICACHE_AUTOLOAD_SCT1_ENA": {
    -                    "description": "The bits are used to enable the second section for autoload operation.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "ICACHE_AUTOLOAD_ENA": {
    -                    "description": "The bit is used to enable and disable autoload operation. It is combined with icache_autoload_done. 1: enable, 0: disable.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "ICACHE_AUTOLOAD_DONE": {
    -                    "description": "The bit is used to indicate autoload operation is finished.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "ICACHE_AUTOLOAD_ORDER": {
    -                    "description": "The bits are used to configure the direction of autoload. 1: descending, 0: ascending.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "ICACHE_AUTOLOAD_RQST": {
    -                    "description": "The bits are used to configure trigger conditions for autoload. 0/3: cache miss, 1: cache hit, 2: both cache miss and hit.",
    -                    "offset": 5,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "ICACHE_AUTOLOAD_SCT0_ADDR": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 68,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_AUTOLOAD_SCT0_ADDR": {
    -                    "description": "The bits are used to configure the start virtual address of the first section for autoload operation. It should be combined with icache_autoload_sct0_ena.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "ICACHE_AUTOLOAD_SCT0_SIZE": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 72,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_AUTOLOAD_SCT0_SIZE": {
    -                    "description": "The bits are used to configure the length of the first section for autoload operation. It should be combined with icache_autoload_sct0_ena.",
    -                    "offset": 0,
    -                    "size": 27
    -                  }
    -                }
    -              }
    -            },
    -            "ICACHE_AUTOLOAD_SCT1_ADDR": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 76,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_AUTOLOAD_SCT1_ADDR": {
    -                    "description": "The bits are used to configure the start virtual address of the second section for autoload operation. It should be combined with icache_autoload_sct1_ena.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "ICACHE_AUTOLOAD_SCT1_SIZE": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 80,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_AUTOLOAD_SCT1_SIZE": {
    -                    "description": "The bits are used to configure the length of the second section for autoload operation. It should be combined with icache_autoload_sct1_ena.",
    -                    "offset": 0,
    -                    "size": 27
    -                  }
    -                }
    -              }
    -            },
    -            "IBUS_TO_FLASH_START_VADDR": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 84,
    -              "size": 32,
    -              "reset_value": 1107296256,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IBUS_TO_FLASH_START_VADDR": {
    -                    "description": "The bits are used to configure the start virtual address of ibus to access flash. The register is used to give constraints to ibus access counter.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "IBUS_TO_FLASH_END_VADDR": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 88,
    -              "size": 32,
    -              "reset_value": 1115684863,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IBUS_TO_FLASH_END_VADDR": {
    -                    "description": "The bits are used to configure the end virtual address of ibus to access flash. The register is used to give constraints to ibus access counter.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "DBUS_TO_FLASH_START_VADDR": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 92,
    -              "size": 32,
    -              "reset_value": 1006632960,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DBUS_TO_FLASH_START_VADDR": {
    -                    "description": "The bits are used to configure the start virtual address of dbus to access flash. The register is used to give constraints to dbus access counter.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "DBUS_TO_FLASH_END_VADDR": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 96,
    -              "size": 32,
    -              "reset_value": 1015021567,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DBUS_TO_FLASH_END_VADDR": {
    -                    "description": "The bits are used to configure the end virtual address of dbus to access flash. The register is used to give constraints to dbus access counter.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_ACS_CNT_CLR": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 100,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IBUS_ACS_CNT_CLR": {
    -                    "description": "The bit is used to clear ibus counter.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "DBUS_ACS_CNT_CLR": {
    -                    "description": "The bit is used to clear dbus counter.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IBUS_ACS_MISS_CNT": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 104,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IBUS_ACS_MISS_CNT": {
    -                    "description": "The bits are used to count the number of the cache miss caused by ibus access flash.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IBUS_ACS_CNT": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 108,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IBUS_ACS_CNT": {
    -                    "description": "The bits are used to count the number of ibus access flash through icache.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DBUS_ACS_FLASH_MISS_CNT": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 112,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DBUS_ACS_FLASH_MISS_CNT": {
    -                    "description": "The bits are used to count the number of the cache miss caused by dbus access flash.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DBUS_ACS_CNT": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 116,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DBUS_ACS_CNT": {
    -                    "description": "The bits are used to count the number of dbus access flash through icache.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_ILG_INT_ENA": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 120,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_SYNC_OP_FAULT_INT_ENA": {
    -                    "description": "The bit is used to enable interrupt by sync configurations fault.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "ICACHE_PRELOAD_OP_FAULT_INT_ENA": {
    -                    "description": "The bit is used to enable interrupt by preload configurations fault.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "MMU_ENTRY_FAULT_INT_ENA": {
    -                    "description": "The bit is used to enable interrupt by mmu entry fault.",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "IBUS_CNT_OVF_INT_ENA": {
    -                    "description": "The bit is used to enable interrupt by ibus counter overflow.",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "DBUS_CNT_OVF_INT_ENA": {
    -                    "description": "The bit is used to enable interrupt by dbus counter overflow.",
    -                    "offset": 8,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_ILG_INT_CLR": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 124,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_SYNC_OP_FAULT_INT_CLR": {
    -                    "description": "The bit is used to clear interrupt by sync configurations fault.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "ICACHE_PRELOAD_OP_FAULT_INT_CLR": {
    -                    "description": "The bit is used to clear interrupt by preload configurations fault.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "MMU_ENTRY_FAULT_INT_CLR": {
    -                    "description": "The bit is used to clear interrupt by mmu entry fault.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "IBUS_CNT_OVF_INT_CLR": {
    -                    "description": "The bit is used to clear interrupt by ibus counter overflow.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "DBUS_CNT_OVF_INT_CLR": {
    -                    "description": "The bit is used to clear interrupt by dbus counter overflow.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_ILG_INT_ST": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 128,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_SYNC_OP_FAULT_ST": {
    -                    "description": "The bit is used to indicate interrupt by sync configurations fault.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "ICACHE_PRELOAD_OP_FAULT_ST": {
    -                    "description": "The bit is used to indicate interrupt by preload configurations fault.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "MMU_ENTRY_FAULT_ST": {
    -                    "description": "The bit is used to indicate interrupt by mmu entry fault.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IBUS_ACS_CNT_OVF_ST": {
    -                    "description": "The bit is used to indicate interrupt by ibus access flash/spiram counter overflow.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IBUS_ACS_MISS_CNT_OVF_ST": {
    -                    "description": "The bit is used to indicate interrupt by ibus access flash/spiram miss counter overflow.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DBUS_ACS_CNT_OVF_ST": {
    -                    "description": "The bit is used to indicate interrupt by dbus access flash/spiram counter overflow.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DBUS_ACS_FLASH_MISS_CNT_OVF_ST": {
    -                    "description": "The bit is used to indicate interrupt by dbus access flash miss counter overflow.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE0_ACS_CACHE_INT_ENA": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 132,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE0_IBUS_ACS_MSK_IC_INT_ENA": {
    -                    "description": "The bit is used to enable interrupt by cpu access icache while the corresponding ibus is disabled which include speculative access.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "CORE0_IBUS_WR_IC_INT_ENA": {
    -                    "description": "The bit is used to enable interrupt by ibus trying to write icache",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "CORE0_IBUS_REJECT_INT_ENA": {
    -                    "description": "The bit is used to enable interrupt by authentication fail.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "CORE0_DBUS_ACS_MSK_IC_INT_ENA": {
    -                    "description": "The bit is used to enable interrupt by cpu access icache while the corresponding dbus is disabled which include speculative access.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "CORE0_DBUS_REJECT_INT_ENA": {
    -                    "description": "The bit is used to enable interrupt by authentication fail.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "CORE0_DBUS_WR_IC_INT_ENA": {
    -                    "description": "The bit is used to enable interrupt by dbus trying to write icache",
    -                    "offset": 5,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CORE0_ACS_CACHE_INT_CLR": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 136,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE0_IBUS_ACS_MSK_IC_INT_CLR": {
    -                    "description": "The bit is used to clear interrupt by cpu access icache while the corresponding ibus is disabled or icache is disabled which include speculative access.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "CORE0_IBUS_WR_IC_INT_CLR": {
    -                    "description": "The bit is used to clear interrupt by ibus trying to write icache",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "CORE0_IBUS_REJECT_INT_CLR": {
    -                    "description": "The bit is used to clear interrupt by authentication fail.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "CORE0_DBUS_ACS_MSK_IC_INT_CLR": {
    -                    "description": "The bit is used to clear interrupt by cpu access icache while the corresponding dbus is disabled or icache is disabled which include speculative access.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "CORE0_DBUS_REJECT_INT_CLR": {
    -                    "description": "The bit is used to clear interrupt by authentication fail.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "CORE0_DBUS_WR_IC_INT_CLR": {
    -                    "description": "The bit is used to clear interrupt by dbus trying to write icache",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE0_ACS_CACHE_INT_ST": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 140,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE0_IBUS_ACS_MSK_ICACHE_ST": {
    -                    "description": "The bit is used to indicate interrupt by cpu access  icache while the core0_ibus is disabled or icache is disabled which include speculative access.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE0_IBUS_WR_ICACHE_ST": {
    -                    "description": "The bit is used to indicate interrupt by ibus trying to write icache",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE0_IBUS_REJECT_ST": {
    -                    "description": "The bit is used to indicate interrupt by authentication fail.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE0_DBUS_ACS_MSK_ICACHE_ST": {
    -                    "description": "The bit is used to indicate interrupt by cpu access icache while the core0_dbus is disabled or icache is disabled which include speculative access.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE0_DBUS_REJECT_ST": {
    -                    "description": "The bit is used to indicate interrupt by authentication fail.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE0_DBUS_WR_ICACHE_ST": {
    -                    "description": "The bit is used to indicate interrupt by dbus trying to write icache",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE0_DBUS_REJECT_ST": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 144,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE0_DBUS_ATTR": {
    -                    "description": "The bits are used to indicate the attribute of CPU access dbus when authentication fail. 0: invalidate, 1: execute-able, 2: read-able, 4: write-able.",
    -                    "offset": 0,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "CORE0_DBUS_WORLD": {
    -                    "description": "The bit is used to indicate the world of CPU access dbus when authentication fail. 0: WORLD0, 1: WORLD1",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE0_DBUS_REJECT_VADDR": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 148,
    -              "size": 32,
    -              "reset_value": 4294967295,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE0_DBUS_VADDR": {
    -                    "description": "The bits are used to indicate the virtual address of CPU access dbus when authentication fail.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE0_IBUS_REJECT_ST": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 152,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE0_IBUS_ATTR": {
    -                    "description": "The bits are used to indicate the attribute of CPU access ibus when authentication fail. 0: invalidate, 1: execute-able, 2: read-able",
    -                    "offset": 0,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "CORE0_IBUS_WORLD": {
    -                    "description": "The bit is used to indicate the world of CPU access ibus when authentication fail. 0: WORLD0, 1: WORLD1",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE0_IBUS_REJECT_VADDR": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 156,
    -              "size": 32,
    -              "reset_value": 4294967295,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE0_IBUS_VADDR": {
    -                    "description": "The bits are used to indicate the virtual address of CPU access  ibus when authentication fail.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_MMU_FAULT_CONTENT": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 160,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CACHE_MMU_FAULT_CONTENT": {
    -                    "description": "The bits are used to indicate the content of mmu entry which cause mmu fault..",
    -                    "offset": 0,
    -                    "size": 10,
    -                    "access": "read-only"
    -                  },
    -                  "CACHE_MMU_FAULT_CODE": {
    -                    "description": "The right-most 3 bits are used to indicate the operations which cause mmu fault occurrence. 0: default, 1: cpu miss, 2: preload miss, 3: writeback, 4: cpu miss evict recovery address, 5: load miss evict recovery address, 6: external dma tx, 7: external dma rx. The most significant bit is used to indicate this operation occurs in which one icache.",
    -                    "offset": 10,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_MMU_FAULT_VADDR": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 164,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CACHE_MMU_FAULT_VADDR": {
    -                    "description": "The bits are used to indicate the virtual address which cause mmu fault..",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_WRAP_AROUND_CTRL": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 168,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CACHE_FLASH_WRAP_AROUND": {
    -                    "description": "The bit is used to enable wrap around mode when read data from flash.",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_MMU_POWER_CTRL": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 172,
    -              "size": 32,
    -              "reset_value": 5,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CACHE_MMU_MEM_FORCE_ON": {
    -                    "description": "The bit is used to enable clock gating to save power when access mmu memory, 0: enable, 1: disable",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "CACHE_MMU_MEM_FORCE_PD": {
    -                    "description": "The bit is used to power mmu memory down, 0: follow_rtc_lslp_pd, 1: power down",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "CACHE_MMU_MEM_FORCE_PU": {
    -                    "description": "The bit is used to power mmu memory down, 0: follow_rtc_lslp_pd, 1: power up",
    -                    "offset": 2,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_STATE": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 176,
    -              "size": 32,
    -              "reset_value": 1,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_STATE": {
    -                    "description": "The bit is used to indicate whether  icache main fsm is in idle state or not. 1: in idle state,  0: not in idle state",
    -                    "offset": 0,
    -                    "size": 12,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_ENCRYPT_DECRYPT_RECORD_DISABLE": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 180,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RECORD_DISABLE_DB_ENCRYPT": {
    -                    "description": "Reserved.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "RECORD_DISABLE_G0CB_DECRYPT": {
    -                    "description": "Reserved.",
    -                    "offset": 1,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_ENCRYPT_DECRYPT_CLK_FORCE_ON": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 184,
    -              "size": 32,
    -              "reset_value": 7,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CLK_FORCE_ON_MANUAL_CRYPT": {
    -                    "description": "The bit is used to close clock gating of manual crypt clock. 1: close gating, 0: open clock gating.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "CLK_FORCE_ON_AUTO_CRYPT": {
    -                    "description": "The bit is used to close clock gating of automatic crypt clock. 1: close gating, 0: open clock gating.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "CLK_FORCE_ON_CRYPT": {
    -                    "description": "The bit is used to close clock gating of external memory encrypt and decrypt clock. 1: close gating, 0: open clock gating.",
    -                    "offset": 2,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_PRELOAD_INT_CTRL": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 188,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_PRELOAD_INT_ST": {
    -                    "description": "The bit is used to indicate the interrupt by  icache pre-load done.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "ICACHE_PRELOAD_INT_ENA": {
    -                    "description": "The bit is used to enable the interrupt by  icache pre-load done.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "ICACHE_PRELOAD_INT_CLR": {
    -                    "description": "The bit is used to clear the interrupt by  icache pre-load done.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_SYNC_INT_CTRL": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 192,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_SYNC_INT_ST": {
    -                    "description": "The bit is used to indicate the interrupt by  icache sync done.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "ICACHE_SYNC_INT_ENA": {
    -                    "description": "The bit is used to enable the interrupt by  icache sync done.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "ICACHE_SYNC_INT_CLR": {
    -                    "description": "The bit is used to clear the interrupt by  icache sync done.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_MMU_OWNER": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 196,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CACHE_MMU_OWNER": {
    -                    "description": "The bits are used to specify the owner of MMU.bit0/bit2: ibus, bit1/bit3: dbus",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_CONF_MISC": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 200,
    -              "size": 32,
    -              "reset_value": 7,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CACHE_IGNORE_PRELOAD_MMU_ENTRY_FAULT": {
    -                    "description": "The bit is used to disable checking mmu entry fault by preload operation.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "CACHE_IGNORE_SYNC_MMU_ENTRY_FAULT": {
    -                    "description": "The bit is used to disable checking mmu entry fault by sync operation.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "CACHE_TRACE_ENA": {
    -                    "description": "The bit is used to enable cache trace function.",
    -                    "offset": 2,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "ICACHE_FREEZE": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 204,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ENA": {
    -                    "description": "The bit is used to enable icache freeze mode",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "MODE": {
    -                    "description": "The bit is used to configure freeze mode, 0:  assert busy if CPU miss 1: assert hit if CPU miss",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "DONE": {
    -                    "description": "The bit is used to indicate icache freeze success",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "ICACHE_ATOMIC_OPERATE_ENA": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 208,
    -              "size": 32,
    -              "reset_value": 1,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_ATOMIC_OPERATE_ENA": {
    -                    "description": "The bit is used to activate icache atomic operation protection. In this case, sync/lock operation can not interrupt miss-work. This feature does not work during invalidateAll operation.",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_REQUEST": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 212,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BYPASS": {
    -                    "description": "The bit is used to disable request recording which could cause performance issue",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "IBUS_PMS_TBL_LOCK": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 216,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IBUS_PMS_LOCK": {
    -                    "description": "The bit is used to configure the ibus permission control section boundary0",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "IBUS_PMS_TBL_BOUNDARY0": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 220,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IBUS_PMS_BOUNDARY0": {
    -                    "description": "The bit is used to configure the ibus permission control section boundary0",
    -                    "offset": 0,
    -                    "size": 12
    -                  }
    -                }
    -              }
    -            },
    -            "IBUS_PMS_TBL_BOUNDARY1": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 224,
    -              "size": 32,
    -              "reset_value": 2048,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IBUS_PMS_BOUNDARY1": {
    -                    "description": "The bit is used to configure the ibus permission control section boundary1",
    -                    "offset": 0,
    -                    "size": 12
    -                  }
    -                }
    -              }
    -            },
    -            "IBUS_PMS_TBL_BOUNDARY2": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 228,
    -              "size": 32,
    -              "reset_value": 2048,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IBUS_PMS_BOUNDARY2": {
    -                    "description": "The bit is used to configure the ibus permission control section boundary2",
    -                    "offset": 0,
    -                    "size": 12
    -                  }
    -                }
    -              }
    -            },
    -            "IBUS_PMS_TBL_ATTR": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 232,
    -              "size": 32,
    -              "reset_value": 255,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IBUS_PMS_SCT1_ATTR": {
    -                    "description": "The bit is used to configure attribute of the ibus permission control section1, bit0: fetch in world0, bit1: load in world0, bit2: fetch in world1, bit3: load in world1",
    -                    "offset": 0,
    -                    "size": 4
    -                  },
    -                  "IBUS_PMS_SCT2_ATTR": {
    -                    "description": "The bit is used to configure attribute of the ibus permission control section2, bit0: fetch in world0, bit1: load in world0, bit2: fetch in world1, bit3: load in world1",
    -                    "offset": 4,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "DBUS_PMS_TBL_LOCK": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 236,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DBUS_PMS_LOCK": {
    -                    "description": "The bit is used to configure the ibus permission control section boundary0",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DBUS_PMS_TBL_BOUNDARY0": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 240,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DBUS_PMS_BOUNDARY0": {
    -                    "description": "The bit is used to configure the dbus permission control section boundary0",
    -                    "offset": 0,
    -                    "size": 12
    -                  }
    -                }
    -              }
    -            },
    -            "DBUS_PMS_TBL_BOUNDARY1": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 244,
    -              "size": 32,
    -              "reset_value": 2048,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DBUS_PMS_BOUNDARY1": {
    -                    "description": "The bit is used to configure the dbus permission control section boundary1",
    -                    "offset": 0,
    -                    "size": 12
    -                  }
    -                }
    -              }
    -            },
    -            "DBUS_PMS_TBL_BOUNDARY2": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 248,
    -              "size": 32,
    -              "reset_value": 2048,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DBUS_PMS_BOUNDARY2": {
    -                    "description": "The bit is used to configure the dbus permission control section boundary2",
    -                    "offset": 0,
    -                    "size": 12
    -                  }
    -                }
    -              }
    -            },
    -            "DBUS_PMS_TBL_ATTR": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 252,
    -              "size": 32,
    -              "reset_value": 15,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DBUS_PMS_SCT1_ATTR": {
    -                    "description": "The bit is used to configure attribute of the dbus permission control section1, bit0: load in world0, bit2: load in world1",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "DBUS_PMS_SCT2_ATTR": {
    -                    "description": "The bit is used to configure attribute of the dbus permission control section2, bit0: load in world0, bit2: load in world1",
    -                    "offset": 2,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "CLOCK_GATE": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 256,
    -              "size": 32,
    -              "reset_value": 1,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CLK_EN": {
    -                    "description": "clock gate enable.",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "REG_DATE": {
    -              "description": "This description will be updated in the near future.",
    -              "offset": 1020,
    -              "size": 32,
    -              "reset_value": 33583456,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATE": {
    -                    "description": "version information",
    -                    "offset": 0,
    -                    "size": 28
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "GPIO": {
    -        "description": "General Purpose Input/Output",
    -        "children": {
    -          "registers": {
    -            "BT_SELECT": {
    -              "description": "GPIO bit select register",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BT_SEL": {
    -                    "description": "GPIO bit select register",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "OUT": {
    -              "description": "GPIO output register",
    -              "offset": 4,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATA_ORIG": {
    -                    "description": "GPIO output register for GPIO0-25",
    -                    "offset": 0,
    -                    "size": 26
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_W1TS": {
    -              "description": "GPIO output set register",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUT_W1TS": {
    -                    "description": "GPIO output set register for GPIO0-25",
    -                    "offset": 0,
    -                    "size": 26,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_W1TC": {
    -              "description": "GPIO output clear register",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUT_W1TC": {
    -                    "description": "GPIO output clear register for GPIO0-25",
    -                    "offset": 0,
    -                    "size": 26,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "SDIO_SELECT": {
    -              "description": "GPIO sdio select register",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SDIO_SEL": {
    -                    "description": "GPIO sdio select register",
    -                    "offset": 0,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "ENABLE": {
    -              "description": "GPIO output enable register",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATA": {
    -                    "description": "GPIO output enable register for GPIO0-25",
    -                    "offset": 0,
    -                    "size": 26
    -                  }
    -                }
    -              }
    -            },
    -            "ENABLE_W1TS": {
    -              "description": "GPIO output enable set register",
    -              "offset": 36,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ENABLE_W1TS": {
    -                    "description": "GPIO output enable set register for GPIO0-25",
    -                    "offset": 0,
    -                    "size": 26,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "ENABLE_W1TC": {
    -              "description": "GPIO output enable clear register",
    -              "offset": 40,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ENABLE_W1TC": {
    -                    "description": "GPIO output enable clear register for GPIO0-25",
    -                    "offset": 0,
    -                    "size": 26,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "STRAP": {
    -              "description": "pad strapping register",
    -              "offset": 56,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "STRAPPING": {
    -                    "description": "pad strapping register",
    -                    "offset": 0,
    -                    "size": 16,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN": {
    -              "description": "GPIO input register",
    -              "offset": 60,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATA_NEXT": {
    -                    "description": "GPIO input register for GPIO0-25",
    -                    "offset": 0,
    -                    "size": 26,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "STATUS": {
    -              "description": "GPIO interrupt status register",
    -              "offset": 68,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INTERRUPT": {
    -                    "description": "GPIO interrupt status register for GPIO0-25",
    -                    "offset": 0,
    -                    "size": 26
    -                  }
    -                }
    -              }
    -            },
    -            "STATUS_W1TS": {
    -              "description": "GPIO interrupt status set register",
    -              "offset": 72,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "STATUS_W1TS": {
    -                    "description": "GPIO interrupt status set register for GPIO0-25",
    -                    "offset": 0,
    -                    "size": 26,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "STATUS_W1TC": {
    -              "description": "GPIO interrupt status clear register",
    -              "offset": 76,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "STATUS_W1TC": {
    -                    "description": "GPIO interrupt status clear register for GPIO0-25",
    -                    "offset": 0,
    -                    "size": 26,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "PCPU_INT": {
    -              "description": "GPIO PRO_CPU interrupt status register",
    -              "offset": 92,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PROCPU_INT": {
    -                    "description": "GPIO PRO_CPU interrupt status register for GPIO0-25",
    -                    "offset": 0,
    -                    "size": 26,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "PCPU_NMI_INT": {
    -              "description": "GPIO PRO_CPU(not shielded) interrupt status register",
    -              "offset": 96,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PROCPU_NMI_INT": {
    -                    "description": "GPIO PRO_CPU(not shielded) interrupt status register for GPIO0-25",
    -                    "offset": 0,
    -                    "size": 26,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CPUSDIO_INT": {
    -              "description": "GPIO CPUSDIO interrupt status register",
    -              "offset": 100,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SDIO_INT": {
    -                    "description": "GPIO CPUSDIO interrupt status register for GPIO0-25",
    -                    "offset": 0,
    -                    "size": 26,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "PIN": {
    -              "description": "GPIO pin configuration register",
    -              "offset": 116,
    -              "size": 32,
    -              "count": 26,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PIN_SYNC2_BYPASS": {
    -                    "description": "set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger at posedge.",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "PIN_PAD_DRIVER": {
    -                    "description": "set this bit to select pad driver. 1:open-drain. :normal.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "PIN_SYNC1_BYPASS": {
    -                    "description": "set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger at posedge.",
    -                    "offset": 3,
    -                    "size": 2
    -                  },
    -                  "PIN_INT_TYPE": {
    -                    "description": "set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level. 5:valid at high level",
    -                    "offset": 7,
    -                    "size": 3
    -                  },
    -                  "PIN_WAKEUP_ENABLE": {
    -                    "description": "set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "PIN_CONFIG": {
    -                    "description": "reserved",
    -                    "offset": 11,
    -                    "size": 2
    -                  },
    -                  "PIN_INT_ENA": {
    -                    "description": "set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded) interrupt.",
    -                    "offset": 13,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "STATUS_NEXT": {
    -              "description": "GPIO interrupt source register",
    -              "offset": 332,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "STATUS_INTERRUPT_NEXT": {
    -                    "description": "GPIO interrupt source register for GPIO0-25",
    -                    "offset": 0,
    -                    "size": 26,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "FUNC_IN_SEL_CFG": {
    -              "description": "GPIO input function configuration register",
    -              "offset": 340,
    -              "size": 32,
    -              "count": 128,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_SEL": {
    -                    "description": "set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always high level. s=x3C: set this port always low level.",
    -                    "offset": 0,
    -                    "size": 5
    -                  },
    -                  "IN_INV_SEL": {
    -                    "description": "set this bit to invert input signal. 1:invert. :not invert.",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "SEL": {
    -                    "description": "set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.",
    -                    "offset": 6,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "FUNC_OUT_SEL_CFG": {
    -              "description": "GPIO output function select register",
    -              "offset": 1364,
    -              "size": 32,
    -              "count": 26,
    -              "reset_value": 128,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUT_SEL": {
    -                    "description": "The value of the bits: <=s<=256. Set the value to select output signal. s=-255: output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals GPIO_OUT_REG[n].",
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "INV_SEL": {
    -                    "description": "set this bit to invert output signal.1:invert.:not invert.",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "OEN_SEL": {
    -                    "description": "set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output enable signal.:use peripheral output enable signal.",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "OEN_INV_SEL": {
    -                    "description": "set this bit to invert output enable signal.1:invert.:not invert.",
    -                    "offset": 10,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CLOCK_GATE": {
    -              "description": "GPIO clock gate register",
    -              "offset": 1580,
    -              "size": 32,
    -              "reset_value": 1,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CLK_EN": {
    -                    "description": "set this bit to enable GPIO clock gate",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "REG_DATE": {
    -              "description": "GPIO version register",
    -              "offset": 1788,
    -              "size": 32,
    -              "reset_value": 33579312,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "REG_DATE": {
    -                    "description": "version register",
    -                    "offset": 0,
    -                    "size": 28
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "GPIOSD": {
    -        "description": "Sigma-Delta Modulation",
    -        "children": {
    -          "registers": {
    -            "SIGMADELTA": {
    -              "description": "Duty Cycle Configure Register of SDM%s",
    -              "offset": 0,
    -              "size": 32,
    -              "count": 4,
    -              "reset_value": 65280,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SD0_IN": {
    -                    "description": "This field is used to configure the duty cycle of sigma delta modulation output.",
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "SD0_PRESCALE": {
    -                    "description": "This field is used to set a divider value to divide APB clock.",
    -                    "offset": 8,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "SIGMADELTA_CG": {
    -              "description": "Clock Gating Configure Register",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CLK_EN": {
    -                    "description": "Clock enable bit of configuration registers for sigma delta modulation.",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "SIGMADELTA_MISC": {
    -              "description": "MISC Register",
    -              "offset": 36,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "FUNCTION_CLK_EN": {
    -                    "description": "Clock enable bit of sigma delta modulation.",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "SPI_SWAP": {
    -                    "description": "Reserved.",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "SIGMADELTA_VERSION": {
    -              "description": "Version Control Register",
    -              "offset": 40,
    -              "size": 32,
    -              "reset_value": 33579568,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "GPIO_SD_DATE": {
    -                    "description": "Version control register.",
    -                    "offset": 0,
    -                    "size": 28
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "HMAC": {
    -        "description": "HMAC (Hash-based Message Authentication Code) Accelerator",
    -        "children": {
    -          "registers": {
    -            "SET_START": {
    -              "description": "Process control register 0.",
    -              "offset": 64,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SET_START": {
    -                    "description": "Start hmac operation.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "SET_PARA_PURPOSE": {
    -              "description": "Configure purpose.",
    -              "offset": 68,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PURPOSE_SET": {
    -                    "description": "Set hmac parameter purpose.",
    -                    "offset": 0,
    -                    "size": 4,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "SET_PARA_KEY": {
    -              "description": "Configure key.",
    -              "offset": 72,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "KEY_SET": {
    -                    "description": "Set hmac parameter key.",
    -                    "offset": 0,
    -                    "size": 3,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "SET_PARA_FINISH": {
    -              "description": "Finish initial configuration.",
    -              "offset": 76,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SET_PARA_END": {
    -                    "description": "Finish hmac configuration.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "SET_MESSAGE_ONE": {
    -              "description": "Process control register 1.",
    -              "offset": 80,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SET_TEXT_ONE": {
    -                    "description": "Call SHA to calculate one message block.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "SET_MESSAGE_ING": {
    -              "description": "Process control register 2.",
    -              "offset": 84,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SET_TEXT_ING": {
    -                    "description": "Continue typical hmac.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "SET_MESSAGE_END": {
    -              "description": "Process control register 3.",
    -              "offset": 88,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SET_TEXT_END": {
    -                    "description": "Start hardware padding.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "SET_RESULT_FINISH": {
    -              "description": "Process control register 4.",
    -              "offset": 92,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SET_RESULT_END": {
    -                    "description": "After read result from upstream, then let hmac back to idle.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "SET_INVALIDATE_JTAG": {
    -              "description": "Invalidate register 0.",
    -              "offset": 96,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SET_INVALIDATE_JTAG": {
    -                    "description": "Clear result from hmac downstream JTAG.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "SET_INVALIDATE_DS": {
    -              "description": "Invalidate register 1.",
    -              "offset": 100,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SET_INVALIDATE_DS": {
    -                    "description": "Clear result from hmac downstream DS.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "QUERY_ERROR": {
    -              "description": "Error register.",
    -              "offset": 104,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "QUREY_CHECK": {
    -                    "description": "Hmac configuration state. 0: key are agree with purpose. 1: error",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "QUERY_BUSY": {
    -              "description": "Busy register.",
    -              "offset": 108,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUSY_STATE": {
    -                    "description": "Hmac state. 1'b0: idle. 1'b1: busy",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "WR_MESSAGE_MEM": {
    -              "description": "Message block memory.",
    -              "offset": 128,
    -              "size": 8,
    -              "count": 64,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295
    -            },
    -            "RD_RESULT_MEM": {
    -              "description": "Result from upstream.",
    -              "offset": 192,
    -              "size": 8,
    -              "count": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295
    -            },
    -            "SET_MESSAGE_PAD": {
    -              "description": "Process control register 5.",
    -              "offset": 240,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SET_TEXT_PAD": {
    -                    "description": "Start software padding.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "ONE_BLOCK": {
    -              "description": "Process control register 6.",
    -              "offset": 244,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SET_ONE_BLOCK": {
    -                    "description": "Don't have to do padding.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "SOFT_JTAG_CTRL": {
    -              "description": "Jtag register 0.",
    -              "offset": 248,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SOFT_JTAG_CTRL": {
    -                    "description": "Turn on JTAG verification.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "WR_JTAG": {
    -              "description": "Jtag register 1.",
    -              "offset": 252,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WR_JTAG": {
    -                    "description": "32-bit of key to be compared.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "I2C0": {
    -        "description": "I2C (Inter-Integrated Circuit) Controller",
    -        "children": {
    -          "registers": {
    -            "SCL_LOW_PERIOD": {
    -              "description": "I2C_SCL_LOW_PERIOD_REG",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SCL_LOW_PERIOD": {
    -                    "description": "reg_scl_low_period",
    -                    "offset": 0,
    -                    "size": 9
    -                  }
    -                }
    -              }
    -            },
    -            "CTR": {
    -              "description": "I2C_CTR_REG",
    -              "offset": 4,
    -              "size": 32,
    -              "reset_value": 523,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SDA_FORCE_OUT": {
    -                    "description": "reg_sda_force_out",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "SCL_FORCE_OUT": {
    -                    "description": "reg_scl_force_out",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "SAMPLE_SCL_LEVEL": {
    -                    "description": "reg_sample_scl_level",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "RX_FULL_ACK_LEVEL": {
    -                    "description": "reg_rx_full_ack_level",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "MS_MODE": {
    -                    "description": "reg_ms_mode",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "TRANS_START": {
    -                    "description": "reg_trans_start",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "TX_LSB_FIRST": {
    -                    "description": "reg_tx_lsb_first",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "RX_LSB_FIRST": {
    -                    "description": "reg_rx_lsb_first",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "CLK_EN": {
    -                    "description": "reg_clk_en",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "ARBITRATION_EN": {
    -                    "description": "reg_arbitration_en",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "FSM_RST": {
    -                    "description": "reg_fsm_rst",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "CONF_UPGATE": {
    -                    "description": "reg_conf_upgate",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SLV_TX_AUTO_START_EN": {
    -                    "description": "reg_slv_tx_auto_start_en",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "ADDR_10BIT_RW_CHECK_EN": {
    -                    "description": "reg_addr_10bit_rw_check_en",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "ADDR_BROADCASTING_EN": {
    -                    "description": "reg_addr_broadcasting_en",
    -                    "offset": 14,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "SR": {
    -              "description": "I2C_SR_REG",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 49152,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RESP_REC": {
    -                    "description": "reg_resp_rec",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SLAVE_RW": {
    -                    "description": "reg_slave_rw",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "ARB_LOST": {
    -                    "description": "reg_arb_lost",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "BUS_BUSY": {
    -                    "description": "reg_bus_busy",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SLAVE_ADDRESSED": {
    -                    "description": "reg_slave_addressed",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RXFIFO_CNT": {
    -                    "description": "reg_rxfifo_cnt",
    -                    "offset": 8,
    -                    "size": 6,
    -                    "access": "read-only"
    -                  },
    -                  "STRETCH_CAUSE": {
    -                    "description": "reg_stretch_cause",
    -                    "offset": 14,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "TXFIFO_CNT": {
    -                    "description": "reg_txfifo_cnt",
    -                    "offset": 18,
    -                    "size": 6,
    -                    "access": "read-only"
    -                  },
    -                  "SCL_MAIN_STATE_LAST": {
    -                    "description": "reg_scl_main_state_last",
    -                    "offset": 24,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "SCL_STATE_LAST": {
    -                    "description": "reg_scl_state_last",
    -                    "offset": 28,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "TO": {
    -              "description": "I2C_TO_REG",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 16,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIME_OUT_VALUE": {
    -                    "description": "reg_time_out_value",
    -                    "offset": 0,
    -                    "size": 5
    -                  },
    -                  "TIME_OUT_EN": {
    -                    "description": "reg_time_out_en",
    -                    "offset": 5,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "SLAVE_ADDR": {
    -              "description": "I2C_SLAVE_ADDR_REG",
    -              "offset": 16,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SLAVE_ADDR": {
    -                    "description": "reg_slave_addr",
    -                    "offset": 0,
    -                    "size": 15
    -                  },
    -                  "ADDR_10BIT_EN": {
    -                    "description": "reg_addr_10bit_en",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "FIFO_ST": {
    -              "description": "I2C_FIFO_ST_REG",
    -              "offset": 20,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RXFIFO_RADDR": {
    -                    "description": "reg_rxfifo_raddr",
    -                    "offset": 0,
    -                    "size": 5,
    -                    "access": "read-only"
    -                  },
    -                  "RXFIFO_WADDR": {
    -                    "description": "reg_rxfifo_waddr",
    -                    "offset": 5,
    -                    "size": 5,
    -                    "access": "read-only"
    -                  },
    -                  "TXFIFO_RADDR": {
    -                    "description": "reg_txfifo_raddr",
    -                    "offset": 10,
    -                    "size": 5,
    -                    "access": "read-only"
    -                  },
    -                  "TXFIFO_WADDR": {
    -                    "description": "reg_txfifo_waddr",
    -                    "offset": 15,
    -                    "size": 5,
    -                    "access": "read-only"
    -                  },
    -                  "SLAVE_RW_POINT": {
    -                    "description": "reg_slave_rw_point",
    -                    "offset": 22,
    -                    "size": 8,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "FIFO_CONF": {
    -              "description": "I2C_FIFO_CONF_REG",
    -              "offset": 24,
    -              "size": 32,
    -              "reset_value": 16523,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RXFIFO_WM_THRHD": {
    -                    "description": "reg_rxfifo_wm_thrhd",
    -                    "offset": 0,
    -                    "size": 5
    -                  },
    -                  "TXFIFO_WM_THRHD": {
    -                    "description": "reg_txfifo_wm_thrhd",
    -                    "offset": 5,
    -                    "size": 5
    -                  },
    -                  "NONFIFO_EN": {
    -                    "description": "reg_nonfifo_en",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "FIFO_ADDR_CFG_EN": {
    -                    "description": "reg_fifo_addr_cfg_en",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "RX_FIFO_RST": {
    -                    "description": "reg_rx_fifo_rst",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "TX_FIFO_RST": {
    -                    "description": "reg_tx_fifo_rst",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "FIFO_PRT_EN": {
    -                    "description": "reg_fifo_prt_en",
    -                    "offset": 14,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DATA": {
    -              "description": "I2C_FIFO_DATA_REG",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "FIFO_RDATA": {
    -                    "description": "reg_fifo_rdata",
    -                    "offset": 0,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "INT_RAW": {
    -              "description": "I2C_INT_RAW_REG",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 2,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RXFIFO_WM_INT_RAW": {
    -                    "description": "reg_rxfifo_wm_int_raw",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TXFIFO_WM_INT_RAW": {
    -                    "description": "reg_txfifo_wm_int_raw",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RXFIFO_OVF_INT_RAW": {
    -                    "description": "reg_rxfifo_ovf_int_raw",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "END_DETECT_INT_RAW": {
    -                    "description": "reg_end_detect_int_raw",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "BYTE_TRANS_DONE_INT_RAW": {
    -                    "description": "reg_byte_trans_done_int_raw",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "ARBITRATION_LOST_INT_RAW": {
    -                    "description": "reg_arbitration_lost_int_raw",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "MST_TXFIFO_UDF_INT_RAW": {
    -                    "description": "reg_mst_txfifo_udf_int_raw",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TRANS_COMPLETE_INT_RAW": {
    -                    "description": "reg_trans_complete_int_raw",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TIME_OUT_INT_RAW": {
    -                    "description": "reg_time_out_int_raw",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TRANS_START_INT_RAW": {
    -                    "description": "reg_trans_start_int_raw",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "NACK_INT_RAW": {
    -                    "description": "reg_nack_int_raw",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TXFIFO_OVF_INT_RAW": {
    -                    "description": "reg_txfifo_ovf_int_raw",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RXFIFO_UDF_INT_RAW": {
    -                    "description": "reg_rxfifo_udf_int_raw",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SCL_ST_TO_INT_RAW": {
    -                    "description": "reg_scl_st_to_int_raw",
    -                    "offset": 13,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SCL_MAIN_ST_TO_INT_RAW": {
    -                    "description": "reg_scl_main_st_to_int_raw",
    -                    "offset": 14,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DET_START_INT_RAW": {
    -                    "description": "reg_det_start_int_raw",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SLAVE_STRETCH_INT_RAW": {
    -                    "description": "reg_slave_stretch_int_raw",
    -                    "offset": 16,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "GENERAL_CALL_INT_RAW": {
    -                    "description": "reg_general_call_int_raw",
    -                    "offset": 17,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_CLR": {
    -              "description": "I2C_INT_CLR_REG",
    -              "offset": 36,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RXFIFO_WM_INT_CLR": {
    -                    "description": "reg_rxfifo_wm_int_clr",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "TXFIFO_WM_INT_CLR": {
    -                    "description": "reg_txfifo_wm_int_clr",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RXFIFO_OVF_INT_CLR": {
    -                    "description": "reg_rxfifo_ovf_int_clr",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "END_DETECT_INT_CLR": {
    -                    "description": "reg_end_detect_int_clr",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "BYTE_TRANS_DONE_INT_CLR": {
    -                    "description": "reg_byte_trans_done_int_clr",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "ARBITRATION_LOST_INT_CLR": {
    -                    "description": "reg_arbitration_lost_int_clr",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "MST_TXFIFO_UDF_INT_CLR": {
    -                    "description": "reg_mst_txfifo_udf_int_clr",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "TRANS_COMPLETE_INT_CLR": {
    -                    "description": "reg_trans_complete_int_clr",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "TIME_OUT_INT_CLR": {
    -                    "description": "reg_time_out_int_clr",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "TRANS_START_INT_CLR": {
    -                    "description": "reg_trans_start_int_clr",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "NACK_INT_CLR": {
    -                    "description": "reg_nack_int_clr",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "TXFIFO_OVF_INT_CLR": {
    -                    "description": "reg_txfifo_ovf_int_clr",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RXFIFO_UDF_INT_CLR": {
    -                    "description": "reg_rxfifo_udf_int_clr",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SCL_ST_TO_INT_CLR": {
    -                    "description": "reg_scl_st_to_int_clr",
    -                    "offset": 13,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SCL_MAIN_ST_TO_INT_CLR": {
    -                    "description": "reg_scl_main_st_to_int_clr",
    -                    "offset": 14,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "DET_START_INT_CLR": {
    -                    "description": "reg_det_start_int_clr",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SLAVE_STRETCH_INT_CLR": {
    -                    "description": "reg_slave_stretch_int_clr",
    -                    "offset": 16,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "GENERAL_CALL_INT_CLR": {
    -                    "description": "reg_general_call_int_clr",
    -                    "offset": 17,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ENA": {
    -              "description": "I2C_INT_ENA_REG",
    -              "offset": 40,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RXFIFO_WM_INT_ENA": {
    -                    "description": "reg_rxfifo_wm_int_ena",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "TXFIFO_WM_INT_ENA": {
    -                    "description": "reg_txfifo_wm_int_ena",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "RXFIFO_OVF_INT_ENA": {
    -                    "description": "reg_rxfifo_ovf_int_ena",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "END_DETECT_INT_ENA": {
    -                    "description": "reg_end_detect_int_ena",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "BYTE_TRANS_DONE_INT_ENA": {
    -                    "description": "reg_byte_trans_done_int_ena",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "ARBITRATION_LOST_INT_ENA": {
    -                    "description": "reg_arbitration_lost_int_ena",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "MST_TXFIFO_UDF_INT_ENA": {
    -                    "description": "reg_mst_txfifo_udf_int_ena",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "TRANS_COMPLETE_INT_ENA": {
    -                    "description": "reg_trans_complete_int_ena",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "TIME_OUT_INT_ENA": {
    -                    "description": "reg_time_out_int_ena",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "TRANS_START_INT_ENA": {
    -                    "description": "reg_trans_start_int_ena",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "NACK_INT_ENA": {
    -                    "description": "reg_nack_int_ena",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "TXFIFO_OVF_INT_ENA": {
    -                    "description": "reg_txfifo_ovf_int_ena",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "RXFIFO_UDF_INT_ENA": {
    -                    "description": "reg_rxfifo_udf_int_ena",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "SCL_ST_TO_INT_ENA": {
    -                    "description": "reg_scl_st_to_int_ena",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "SCL_MAIN_ST_TO_INT_ENA": {
    -                    "description": "reg_scl_main_st_to_int_ena",
    -                    "offset": 14,
    -                    "size": 1
    -                  },
    -                  "DET_START_INT_ENA": {
    -                    "description": "reg_det_start_int_ena",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "SLAVE_STRETCH_INT_ENA": {
    -                    "description": "reg_slave_stretch_int_ena",
    -                    "offset": 16,
    -                    "size": 1
    -                  },
    -                  "GENERAL_CALL_INT_ENA": {
    -                    "description": "reg_general_call_int_ena",
    -                    "offset": 17,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INT_STATUS": {
    -              "description": "I2C_INT_STATUS_REG",
    -              "offset": 44,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RXFIFO_WM_INT_ST": {
    -                    "description": "reg_rxfifo_wm_int_st",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TXFIFO_WM_INT_ST": {
    -                    "description": "reg_txfifo_wm_int_st",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RXFIFO_OVF_INT_ST": {
    -                    "description": "reg_rxfifo_ovf_int_st",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "END_DETECT_INT_ST": {
    -                    "description": "reg_end_detect_int_st",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "BYTE_TRANS_DONE_INT_ST": {
    -                    "description": "reg_byte_trans_done_int_st",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "ARBITRATION_LOST_INT_ST": {
    -                    "description": "reg_arbitration_lost_int_st",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "MST_TXFIFO_UDF_INT_ST": {
    -                    "description": "reg_mst_txfifo_udf_int_st",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TRANS_COMPLETE_INT_ST": {
    -                    "description": "reg_trans_complete_int_st",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TIME_OUT_INT_ST": {
    -                    "description": "reg_time_out_int_st",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TRANS_START_INT_ST": {
    -                    "description": "reg_trans_start_int_st",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "NACK_INT_ST": {
    -                    "description": "reg_nack_int_st",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TXFIFO_OVF_INT_ST": {
    -                    "description": "reg_txfifo_ovf_int_st",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RXFIFO_UDF_INT_ST": {
    -                    "description": "reg_rxfifo_udf_int_st",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SCL_ST_TO_INT_ST": {
    -                    "description": "reg_scl_st_to_int_st",
    -                    "offset": 13,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SCL_MAIN_ST_TO_INT_ST": {
    -                    "description": "reg_scl_main_st_to_int_st",
    -                    "offset": 14,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DET_START_INT_ST": {
    -                    "description": "reg_det_start_int_st",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SLAVE_STRETCH_INT_ST": {
    -                    "description": "reg_slave_stretch_int_st",
    -                    "offset": 16,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "GENERAL_CALL_INT_ST": {
    -                    "description": "reg_general_call_int_st",
    -                    "offset": 17,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "SDA_HOLD": {
    -              "description": "I2C_SDA_HOLD_REG",
    -              "offset": 48,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIME": {
    -                    "description": "reg_sda_hold_time",
    -                    "offset": 0,
    -                    "size": 9
    -                  }
    -                }
    -              }
    -            },
    -            "SDA_SAMPLE": {
    -              "description": "I2C_SDA_SAMPLE_REG",
    -              "offset": 52,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIME": {
    -                    "description": "reg_sda_sample_time",
    -                    "offset": 0,
    -                    "size": 9
    -                  }
    -                }
    -              }
    -            },
    -            "SCL_HIGH_PERIOD": {
    -              "description": "I2C_SCL_HIGH_PERIOD_REG",
    -              "offset": 56,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SCL_HIGH_PERIOD": {
    -                    "description": "reg_scl_high_period",
    -                    "offset": 0,
    -                    "size": 9
    -                  },
    -                  "SCL_WAIT_HIGH_PERIOD": {
    -                    "description": "reg_scl_wait_high_period",
    -                    "offset": 9,
    -                    "size": 7
    -                  }
    -                }
    -              }
    -            },
    -            "SCL_START_HOLD": {
    -              "description": "I2C_SCL_START_HOLD_REG",
    -              "offset": 64,
    -              "size": 32,
    -              "reset_value": 8,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIME": {
    -                    "description": "reg_scl_start_hold_time",
    -                    "offset": 0,
    -                    "size": 9
    -                  }
    -                }
    -              }
    -            },
    -            "SCL_RSTART_SETUP": {
    -              "description": "I2C_SCL_RSTART_SETUP_REG",
    -              "offset": 68,
    -              "size": 32,
    -              "reset_value": 8,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIME": {
    -                    "description": "reg_scl_rstart_setup_time",
    -                    "offset": 0,
    -                    "size": 9
    -                  }
    -                }
    -              }
    -            },
    -            "SCL_STOP_HOLD": {
    -              "description": "I2C_SCL_STOP_HOLD_REG",
    -              "offset": 72,
    -              "size": 32,
    -              "reset_value": 8,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIME": {
    -                    "description": "reg_scl_stop_hold_time",
    -                    "offset": 0,
    -                    "size": 9
    -                  }
    -                }
    -              }
    -            },
    -            "SCL_STOP_SETUP": {
    -              "description": "I2C_SCL_STOP_SETUP_REG",
    -              "offset": 76,
    -              "size": 32,
    -              "reset_value": 8,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIME": {
    -                    "description": "reg_scl_stop_setup_time",
    -                    "offset": 0,
    -                    "size": 9
    -                  }
    -                }
    -              }
    -            },
    -            "FILTER_CFG": {
    -              "description": "I2C_FILTER_CFG_REG",
    -              "offset": 80,
    -              "size": 32,
    -              "reset_value": 768,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SCL_FILTER_THRES": {
    -                    "description": "reg_scl_filter_thres",
    -                    "offset": 0,
    -                    "size": 4
    -                  },
    -                  "SDA_FILTER_THRES": {
    -                    "description": "reg_sda_filter_thres",
    -                    "offset": 4,
    -                    "size": 4
    -                  },
    -                  "SCL_FILTER_EN": {
    -                    "description": "reg_scl_filter_en",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "SDA_FILTER_EN": {
    -                    "description": "reg_sda_filter_en",
    -                    "offset": 9,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CLK_CONF": {
    -              "description": "I2C_CLK_CONF_REG",
    -              "offset": 84,
    -              "size": 32,
    -              "reset_value": 2097152,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SCLK_DIV_NUM": {
    -                    "description": "reg_sclk_div_num",
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "SCLK_DIV_A": {
    -                    "description": "reg_sclk_div_a",
    -                    "offset": 8,
    -                    "size": 6
    -                  },
    -                  "SCLK_DIV_B": {
    -                    "description": "reg_sclk_div_b",
    -                    "offset": 14,
    -                    "size": 6
    -                  },
    -                  "SCLK_SEL": {
    -                    "description": "reg_sclk_sel",
    -                    "offset": 20,
    -                    "size": 1
    -                  },
    -                  "SCLK_ACTIVE": {
    -                    "description": "reg_sclk_active",
    -                    "offset": 21,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "COMD": {
    -              "description": "I2C_COMD%s_REG",
    -              "offset": 88,
    -              "size": 32,
    -              "count": 8,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "COMMAND": {
    -                    "description": "reg_command",
    -                    "offset": 0,
    -                    "size": 14
    -                  },
    -                  "COMMAND_DONE": {
    -                    "description": "reg_command_done",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "SCL_ST_TIME_OUT": {
    -              "description": "I2C_SCL_ST_TIME_OUT_REG",
    -              "offset": 120,
    -              "size": 32,
    -              "reset_value": 16,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SCL_ST_TO_I2C": {
    -                    "description": "reg_scl_st_to_regno more than 23",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "SCL_MAIN_ST_TIME_OUT": {
    -              "description": "I2C_SCL_MAIN_ST_TIME_OUT_REG",
    -              "offset": 124,
    -              "size": 32,
    -              "reset_value": 16,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SCL_MAIN_ST_TO_I2C": {
    -                    "description": "reg_scl_main_st_to_regno more than 23",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "SCL_SP_CONF": {
    -              "description": "I2C_SCL_SP_CONF_REG",
    -              "offset": 128,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SCL_RST_SLV_EN": {
    -                    "description": "reg_scl_rst_slv_en",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "SCL_RST_SLV_NUM": {
    -                    "description": "reg_scl_rst_slv_num",
    -                    "offset": 1,
    -                    "size": 5
    -                  },
    -                  "SCL_PD_EN": {
    -                    "description": "reg_scl_pd_en",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "SDA_PD_EN": {
    -                    "description": "reg_sda_pd_en",
    -                    "offset": 7,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "SCL_STRETCH_CONF": {
    -              "description": "I2C_SCL_STRETCH_CONF_REG",
    -              "offset": 132,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "STRETCH_PROTECT_NUM": {
    -                    "description": "reg_stretch_protect_num",
    -                    "offset": 0,
    -                    "size": 10
    -                  },
    -                  "SLAVE_SCL_STRETCH_EN": {
    -                    "description": "reg_slave_scl_stretch_en",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "SLAVE_SCL_STRETCH_CLR": {
    -                    "description": "reg_slave_scl_stretch_clr",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SLAVE_BYTE_ACK_CTL_EN": {
    -                    "description": "reg_slave_byte_ack_ctl_en",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "SLAVE_BYTE_ACK_LVL": {
    -                    "description": "reg_slave_byte_ack_lvl",
    -                    "offset": 13,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DATE": {
    -              "description": "I2C_DATE_REG",
    -              "offset": 248,
    -              "size": 32,
    -              "reset_value": 537330177,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATE": {
    -                    "description": "reg_date",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "TXFIFO_START_ADDR": {
    -              "description": "I2C_TXFIFO_START_ADDR_REG",
    -              "offset": 256,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TXFIFO_START_ADDR": {
    -                    "description": "reg_txfifo_start_addr.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RXFIFO_START_ADDR": {
    -              "description": "I2C_RXFIFO_START_ADDR_REG",
    -              "offset": 384,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RXFIFO_START_ADDR": {
    -                    "description": "reg_rxfifo_start_addr.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "I2S": {
    -        "description": "I2S (Inter-IC Sound) Controller",
    -        "children": {
    -          "registers": {
    -            "INT_RAW": {
    -              "description": "I2S interrupt raw register, valid in level.",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_DONE_INT_RAW": {
    -                    "description": "The raw interrupt status bit  for the i2s_rx_done_int interrupt",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TX_DONE_INT_RAW": {
    -                    "description": "The raw interrupt status bit  for the i2s_tx_done_int interrupt",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RX_HUNG_INT_RAW": {
    -                    "description": "The raw interrupt status bit  for the i2s_rx_hung_int interrupt",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TX_HUNG_INT_RAW": {
    -                    "description": "The raw interrupt status bit  for the i2s_tx_hung_int interrupt",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ST": {
    -              "description": "I2S interrupt status register.",
    -              "offset": 16,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_DONE_INT_ST": {
    -                    "description": "The masked interrupt status bit  for the i2s_rx_done_int interrupt",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TX_DONE_INT_ST": {
    -                    "description": "The masked interrupt status bit  for the i2s_tx_done_int interrupt",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RX_HUNG_INT_ST": {
    -                    "description": "The masked interrupt status bit  for the i2s_rx_hung_int interrupt",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TX_HUNG_INT_ST": {
    -                    "description": "The masked interrupt status bit  for the i2s_tx_hung_int interrupt",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ENA": {
    -              "description": "I2S interrupt enable register.",
    -              "offset": 20,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_DONE_INT_ENA": {
    -                    "description": "The interrupt enable bit  for the i2s_rx_done_int interrupt",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "TX_DONE_INT_ENA": {
    -                    "description": "The interrupt enable bit  for the i2s_tx_done_int interrupt",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "RX_HUNG_INT_ENA": {
    -                    "description": "The interrupt enable bit  for the i2s_rx_hung_int interrupt",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "TX_HUNG_INT_ENA": {
    -                    "description": "The interrupt enable bit  for the i2s_tx_hung_int interrupt",
    -                    "offset": 3,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INT_CLR": {
    -              "description": "I2S interrupt clear register.",
    -              "offset": 24,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_DONE_INT_CLR": {
    -                    "description": "Set this bit to clear the i2s_rx_done_int interrupt",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "TX_DONE_INT_CLR": {
    -                    "description": "Set this bit to clear the i2s_tx_done_int interrupt",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RX_HUNG_INT_CLR": {
    -                    "description": "Set this bit to clear the i2s_rx_hung_int interrupt",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "TX_HUNG_INT_CLR": {
    -                    "description": "Set this bit to clear the i2s_tx_hung_int interrupt",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RX_CONF": {
    -              "description": "I2S RX configure register",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 38400,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_RESET": {
    -                    "description": "Set this bit to reset receiver",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RX_FIFO_RESET": {
    -                    "description": "Set this bit to reset Rx AFIFO",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RX_START": {
    -                    "description": "Set this bit to start receiving data",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "RX_SLAVE_MOD": {
    -                    "description": "Set this bit to enable slave receiver mode",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "RX_MONO": {
    -                    "description": "Set this bit to enable receiver  in mono mode",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "RX_BIG_ENDIAN": {
    -                    "description": "I2S Rx byte endian, 1: low addr value to high addr. 0: low addr with low addr value.",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "RX_UPDATE": {
    -                    "description": "Set 1 to update I2S RX registers from APB clock domain to I2S RX clock domain. This bit will be cleared by hardware after update register done.",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "RX_MONO_FST_VLD": {
    -                    "description": "1: The first channel data value is valid in I2S RX mono mode.   0: The second channel data value is valid in I2S RX mono mode.",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "RX_PCM_CONF": {
    -                    "description": "I2S RX compress/decompress configuration bit. & 0 (atol): A-Law decompress, 1 (ltoa) : A-Law compress, 2 (utol) : u-Law decompress, 3 (ltou) : u-Law compress. &",
    -                    "offset": 10,
    -                    "size": 2
    -                  },
    -                  "RX_PCM_BYPASS": {
    -                    "description": "Set this bit to bypass Compress/Decompress module for received data.",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "RX_STOP_MODE": {
    -                    "description": "0  : I2S Rx only stop when reg_rx_start is cleared.   1: Stop when reg_rx_start is 0 or in_suc_eof is 1.   2:  Stop I2S RX when reg_rx_start is 0 or RX FIFO is full.",
    -                    "offset": 13,
    -                    "size": 2
    -                  },
    -                  "RX_LEFT_ALIGN": {
    -                    "description": "1: I2S RX left alignment mode. 0: I2S RX right alignment mode.",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "RX_24_FILL_EN": {
    -                    "description": "1: store 24 channel bits to 32 bits. 0:store 24 channel bits to 24 bits.",
    -                    "offset": 16,
    -                    "size": 1
    -                  },
    -                  "RX_WS_IDLE_POL": {
    -                    "description": "0: WS should be 0 when receiving left channel data, and WS is 1in right channel.  1: WS should be 1 when receiving left channel data, and WS is 0in right channel.",
    -                    "offset": 17,
    -                    "size": 1
    -                  },
    -                  "RX_BIT_ORDER": {
    -                    "description": "I2S Rx bit endian. 1:small endian, the LSB is received first. 0:big endian, the MSB is received first.",
    -                    "offset": 18,
    -                    "size": 1
    -                  },
    -                  "RX_TDM_EN": {
    -                    "description": "1: Enable I2S TDM Rx mode . 0: Disable.",
    -                    "offset": 19,
    -                    "size": 1
    -                  },
    -                  "RX_PDM_EN": {
    -                    "description": "1: Enable I2S PDM Rx mode . 0: Disable.",
    -                    "offset": 20,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "TX_CONF": {
    -              "description": "I2S TX configure register",
    -              "offset": 36,
    -              "size": 32,
    -              "reset_value": 45568,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_RESET": {
    -                    "description": "Set this bit to reset transmitter",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "TX_FIFO_RESET": {
    -                    "description": "Set this bit to reset Tx AFIFO",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "TX_START": {
    -                    "description": "Set this bit to start transmitting data",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "TX_SLAVE_MOD": {
    -                    "description": "Set this bit to enable slave transmitter mode",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "TX_MONO": {
    -                    "description": "Set this bit to enable transmitter in mono mode",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "TX_CHAN_EQUAL": {
    -                    "description": "1: The value of Left channel data is equal to the value of right channel data in I2S TX mono mode or TDM channel select mode. 0: The invalid channel data is reg_i2s_single_data in I2S TX mono mode or TDM channel select mode.",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "TX_BIG_ENDIAN": {
    -                    "description": "I2S Tx byte endian, 1: low addr value to high addr.  0: low addr with low addr value.",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "TX_UPDATE": {
    -                    "description": "Set 1 to update I2S TX registers from APB clock domain to I2S TX clock domain. This bit will be cleared by hardware after update register done.",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "TX_MONO_FST_VLD": {
    -                    "description": "1: The first channel data value is valid in I2S TX mono mode.   0: The second channel data value is valid in I2S TX mono mode.",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "TX_PCM_CONF": {
    -                    "description": "I2S TX compress/decompress configuration bit. & 0 (atol): A-Law decompress, 1 (ltoa) : A-Law compress, 2 (utol) : u-Law decompress, 3 (ltou) : u-Law compress. &",
    -                    "offset": 10,
    -                    "size": 2
    -                  },
    -                  "TX_PCM_BYPASS": {
    -                    "description": "Set this bit to bypass  Compress/Decompress module for transmitted data.",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "TX_STOP_EN": {
    -                    "description": "Set this bit to stop disable output BCK signal and WS signal when tx FIFO is emtpy",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "TX_LEFT_ALIGN": {
    -                    "description": "1: I2S TX left alignment mode. 0: I2S TX right alignment mode.",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "TX_24_FILL_EN": {
    -                    "description": "1: Sent 32 bits in 24 channel bits mode. 0: Sent 24 bits in 24 channel bits mode",
    -                    "offset": 16,
    -                    "size": 1
    -                  },
    -                  "TX_WS_IDLE_POL": {
    -                    "description": "0: WS should be 0 when sending left channel data, and WS is 1in right channel.  1: WS should be 1 when sending left channel data, and WS is 0in right channel.",
    -                    "offset": 17,
    -                    "size": 1
    -                  },
    -                  "TX_BIT_ORDER": {
    -                    "description": "I2S Tx bit endian. 1:small endian, the LSB is sent first. 0:big endian, the MSB is sent first.",
    -                    "offset": 18,
    -                    "size": 1
    -                  },
    -                  "TX_TDM_EN": {
    -                    "description": "1: Enable I2S TDM Tx mode . 0: Disable.",
    -                    "offset": 19,
    -                    "size": 1
    -                  },
    -                  "TX_PDM_EN": {
    -                    "description": "1: Enable I2S PDM Tx mode . 0: Disable.",
    -                    "offset": 20,
    -                    "size": 1
    -                  },
    -                  "TX_CHAN_MOD": {
    -                    "description": "I2S transmitter channel mode configuration bits.",
    -                    "offset": 24,
    -                    "size": 3
    -                  },
    -                  "SIG_LOOPBACK": {
    -                    "description": "Enable signal loop back mode with transmitter module and receiver module sharing the same WS and BCK signals.",
    -                    "offset": 27,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "RX_CONF1": {
    -              "description": "I2S RX configure register 1",
    -              "offset": 40,
    -              "size": 32,
    -              "reset_value": 792584960,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_TDM_WS_WIDTH": {
    -                    "description": "The width of rx_ws_out in TDM mode is (I2S_RX_TDM_WS_WIDTH[6:0] +1) * T_bck",
    -                    "offset": 0,
    -                    "size": 7
    -                  },
    -                  "RX_BCK_DIV_NUM": {
    -                    "description": "Bit clock configuration bits in receiver mode.",
    -                    "offset": 7,
    -                    "size": 6
    -                  },
    -                  "RX_BITS_MOD": {
    -                    "description": "Set the bits to configure the valid data bit length of I2S receiver channel. 7: all the valid channel data is in 8-bit-mode. 15: all the valid channel data is in 16-bit-mode. 23: all the valid channel data is in 24-bit-mode. 31:all the valid channel data is in 32-bit-mode.",
    -                    "offset": 13,
    -                    "size": 5
    -                  },
    -                  "RX_HALF_SAMPLE_BITS": {
    -                    "description": "I2S Rx half sample bits -1.",
    -                    "offset": 18,
    -                    "size": 6
    -                  },
    -                  "RX_TDM_CHAN_BITS": {
    -                    "description": "The Rx bit number for each channel minus 1in TDM mode.",
    -                    "offset": 24,
    -                    "size": 5
    -                  },
    -                  "RX_MSB_SHIFT": {
    -                    "description": "Set this bit to enable receiver in Phillips standard mode",
    -                    "offset": 29,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "TX_CONF1": {
    -              "description": "I2S TX configure register 1",
    -              "offset": 44,
    -              "size": 32,
    -              "reset_value": 1866326784,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_TDM_WS_WIDTH": {
    -                    "description": "The width of tx_ws_out in TDM mode is (I2S_TX_TDM_WS_WIDTH[6:0] +1) * T_bck",
    -                    "offset": 0,
    -                    "size": 7
    -                  },
    -                  "TX_BCK_DIV_NUM": {
    -                    "description": "Bit clock configuration bits in transmitter mode.",
    -                    "offset": 7,
    -                    "size": 6
    -                  },
    -                  "TX_BITS_MOD": {
    -                    "description": "Set the bits to configure the valid data bit length of I2S transmitter channel. 7: all the valid channel data is in 8-bit-mode. 15: all the valid channel data is in 16-bit-mode. 23: all the valid channel data is in 24-bit-mode. 31:all the valid channel data is in 32-bit-mode.",
    -                    "offset": 13,
    -                    "size": 5
    -                  },
    -                  "TX_HALF_SAMPLE_BITS": {
    -                    "description": "I2S Tx half sample bits -1.",
    -                    "offset": 18,
    -                    "size": 6
    -                  },
    -                  "TX_TDM_CHAN_BITS": {
    -                    "description": "The Tx bit number for each channel minus 1in TDM mode.",
    -                    "offset": 24,
    -                    "size": 5
    -                  },
    -                  "TX_MSB_SHIFT": {
    -                    "description": "Set this bit to enable transmitter in Phillips standard mode",
    -                    "offset": 29,
    -                    "size": 1
    -                  },
    -                  "TX_BCK_NO_DLY": {
    -                    "description": "1: BCK is not delayed to generate pos/neg edge in master mode. 0: BCK is delayed to generate pos/neg edge in master mode.",
    -                    "offset": 30,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "RX_CLKM_CONF": {
    -              "description": "I2S RX clock configure register",
    -              "offset": 48,
    -              "size": 32,
    -              "reset_value": 2,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_CLKM_DIV_NUM": {
    -                    "description": "Integral I2S clock divider value",
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "RX_CLK_ACTIVE": {
    -                    "description": "I2S Rx module clock enable signal.",
    -                    "offset": 26,
    -                    "size": 1
    -                  },
    -                  "RX_CLK_SEL": {
    -                    "description": "Select I2S Rx module source clock. 0: no clock. 1: APLL. 2: CLK160. 3: I2S_MCLK_in.",
    -                    "offset": 27,
    -                    "size": 2
    -                  },
    -                  "MCLK_SEL": {
    -                    "description": "0: UseI2S Tx module clock as I2S_MCLK_OUT.  1: UseI2S Rx module clock as I2S_MCLK_OUT.",
    -                    "offset": 29,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "TX_CLKM_CONF": {
    -              "description": "I2S TX clock configure register",
    -              "offset": 52,
    -              "size": 32,
    -              "reset_value": 2,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_CLKM_DIV_NUM": {
    -                    "description": "Integral I2S TX clock divider value. f_I2S_CLK = f_I2S_CLK_S/(N+b/a). There will be (a-b) * n-div and b * (n+1)-div.  So the average combination will be:  for b <= a/2, z * [x * n-div + (n+1)-div] + y * n-div. For b > a/2, z * [n-div + x * (n+1)-div] + y * (n+1)-div.",
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "TX_CLK_ACTIVE": {
    -                    "description": "I2S Tx module clock enable signal.",
    -                    "offset": 26,
    -                    "size": 1
    -                  },
    -                  "TX_CLK_SEL": {
    -                    "description": "Select I2S Tx module source clock. 0: XTAL clock. 1: APLL. 2: CLK160. 3: I2S_MCLK_in.",
    -                    "offset": 27,
    -                    "size": 2
    -                  },
    -                  "CLK_EN": {
    -                    "description": "Set this bit to enable clk gate",
    -                    "offset": 29,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "RX_CLKM_DIV_CONF": {
    -              "description": "I2S RX module clock divider configure register",
    -              "offset": 56,
    -              "size": 32,
    -              "reset_value": 512,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_CLKM_DIV_Z": {
    -                    "description": "For b <= a/2, the value of I2S_RX_CLKM_DIV_Z is b. For b > a/2, the value of I2S_RX_CLKM_DIV_Z is (a-b).",
    -                    "offset": 0,
    -                    "size": 9
    -                  },
    -                  "RX_CLKM_DIV_Y": {
    -                    "description": "For b <= a/2, the value of I2S_RX_CLKM_DIV_Y is (a%b) . For b > a/2, the value of I2S_RX_CLKM_DIV_Y is (a%(a-b)).",
    -                    "offset": 9,
    -                    "size": 9
    -                  },
    -                  "RX_CLKM_DIV_X": {
    -                    "description": "For b <= a/2, the value of I2S_RX_CLKM_DIV_X is (a/b) - 1. For b > a/2, the value of I2S_RX_CLKM_DIV_X is (a/(a-b)) - 1.",
    -                    "offset": 18,
    -                    "size": 9
    -                  },
    -                  "RX_CLKM_DIV_YN1": {
    -                    "description": "For b <= a/2, the value of I2S_RX_CLKM_DIV_YN1 is 0 . For b > a/2, the value of I2S_RX_CLKM_DIV_YN1 is 1.",
    -                    "offset": 27,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "TX_CLKM_DIV_CONF": {
    -              "description": "I2S TX module clock divider configure register",
    -              "offset": 60,
    -              "size": 32,
    -              "reset_value": 512,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_CLKM_DIV_Z": {
    -                    "description": "For b <= a/2, the value of I2S_TX_CLKM_DIV_Z is b. For b > a/2, the value of I2S_TX_CLKM_DIV_Z is (a-b).",
    -                    "offset": 0,
    -                    "size": 9
    -                  },
    -                  "TX_CLKM_DIV_Y": {
    -                    "description": "For b <= a/2, the value of I2S_TX_CLKM_DIV_Y is (a%b) . For b > a/2, the value of I2S_TX_CLKM_DIV_Y is (a%(a-b)).",
    -                    "offset": 9,
    -                    "size": 9
    -                  },
    -                  "TX_CLKM_DIV_X": {
    -                    "description": "For b <= a/2, the value of I2S_TX_CLKM_DIV_X is (a/b) - 1. For b > a/2, the value of I2S_TX_CLKM_DIV_X is (a/(a-b)) - 1.",
    -                    "offset": 18,
    -                    "size": 9
    -                  },
    -                  "TX_CLKM_DIV_YN1": {
    -                    "description": "For b <= a/2, the value of I2S_TX_CLKM_DIV_YN1 is 0 . For b > a/2, the value of I2S_TX_CLKM_DIV_YN1 is 1.",
    -                    "offset": 27,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "TX_PCM2PDM_CONF": {
    -              "description": "I2S TX PCM2PDM configuration register",
    -              "offset": 64,
    -              "size": 32,
    -              "reset_value": 4890628,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_PDM_HP_BYPASS": {
    -                    "description": "I2S TX PDM bypass hp filter or not. The option has been removed.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "TX_PDM_SINC_OSR2": {
    -                    "description": "I2S TX PDM OSR2 value",
    -                    "offset": 1,
    -                    "size": 4
    -                  },
    -                  "TX_PDM_PRESCALE": {
    -                    "description": "I2S TX PDM prescale for sigmadelta",
    -                    "offset": 5,
    -                    "size": 8
    -                  },
    -                  "TX_PDM_HP_IN_SHIFT": {
    -                    "description": "I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4",
    -                    "offset": 13,
    -                    "size": 2
    -                  },
    -                  "TX_PDM_LP_IN_SHIFT": {
    -                    "description": "I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4",
    -                    "offset": 15,
    -                    "size": 2
    -                  },
    -                  "TX_PDM_SINC_IN_SHIFT": {
    -                    "description": "I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4",
    -                    "offset": 17,
    -                    "size": 2
    -                  },
    -                  "TX_PDM_SIGMADELTA_IN_SHIFT": {
    -                    "description": "I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4",
    -                    "offset": 19,
    -                    "size": 2
    -                  },
    -                  "TX_PDM_SIGMADELTA_DITHER2": {
    -                    "description": "I2S TX PDM sigmadelta dither2 value",
    -                    "offset": 21,
    -                    "size": 1
    -                  },
    -                  "TX_PDM_SIGMADELTA_DITHER": {
    -                    "description": "I2S TX PDM sigmadelta dither value",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "TX_PDM_DAC_2OUT_EN": {
    -                    "description": "I2S TX PDM dac mode enable",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "TX_PDM_DAC_MODE_EN": {
    -                    "description": "I2S TX PDM dac 2channel enable",
    -                    "offset": 24,
    -                    "size": 1
    -                  },
    -                  "PCM2PDM_CONV_EN": {
    -                    "description": "I2S TX PDM Converter enable",
    -                    "offset": 25,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "TX_PCM2PDM_CONF1": {
    -              "description": "I2S TX PCM2PDM configuration register",
    -              "offset": 68,
    -              "size": 32,
    -              "reset_value": 66552768,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_PDM_FP": {
    -                    "description": "I2S TX PDM Fp",
    -                    "offset": 0,
    -                    "size": 10
    -                  },
    -                  "TX_PDM_FS": {
    -                    "description": "I2S TX PDM Fs",
    -                    "offset": 10,
    -                    "size": 10
    -                  },
    -                  "TX_IIR_HP_MULT12_5": {
    -                    "description": "The fourth parameter of PDM TX IIR_HP filter stage 2 is (504 + I2S_TX_IIR_HP_MULT12_5[2:0])",
    -                    "offset": 20,
    -                    "size": 3
    -                  },
    -                  "TX_IIR_HP_MULT12_0": {
    -                    "description": "The fourth parameter of PDM TX IIR_HP filter stage 1 is (504 + I2S_TX_IIR_HP_MULT12_0[2:0])",
    -                    "offset": 23,
    -                    "size": 3
    -                  }
    -                }
    -              }
    -            },
    -            "RX_TDM_CTRL": {
    -              "description": "I2S TX TDM mode control register",
    -              "offset": 80,
    -              "size": 32,
    -              "reset_value": 65535,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_TDM_PDM_CHAN0_EN": {
    -                    "description": "1: Enable the valid data input of I2S RX TDM or PDM channel 0. 0:  Disable, just input 0 in this channel.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "RX_TDM_PDM_CHAN1_EN": {
    -                    "description": "1: Enable the valid data input of I2S RX TDM or PDM channel 1. 0:  Disable, just input 0 in this channel.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "RX_TDM_PDM_CHAN2_EN": {
    -                    "description": "1: Enable the valid data input of I2S RX TDM or PDM channel 2. 0:  Disable, just input 0 in this channel.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "RX_TDM_PDM_CHAN3_EN": {
    -                    "description": "1: Enable the valid data input of I2S RX TDM or PDM channel 3. 0:  Disable, just input 0 in this channel.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "RX_TDM_PDM_CHAN4_EN": {
    -                    "description": "1: Enable the valid data input of I2S RX TDM or PDM channel 4. 0:  Disable, just input 0 in this channel.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "RX_TDM_PDM_CHAN5_EN": {
    -                    "description": "1: Enable the valid data input of I2S RX TDM or PDM channel 5. 0:  Disable, just input 0 in this channel.",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "RX_TDM_PDM_CHAN6_EN": {
    -                    "description": "1: Enable the valid data input of I2S RX TDM or PDM channel 6. 0:  Disable, just input 0 in this channel.",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "RX_TDM_PDM_CHAN7_EN": {
    -                    "description": "1: Enable the valid data input of I2S RX TDM or PDM channel 7. 0:  Disable, just input 0 in this channel.",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "RX_TDM_CHAN8_EN": {
    -                    "description": "1: Enable the valid data input of I2S RX TDM channel 8. 0:  Disable, just input 0 in this channel.",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "RX_TDM_CHAN9_EN": {
    -                    "description": "1: Enable the valid data input of I2S RX TDM channel 9. 0:  Disable, just input 0 in this channel.",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "RX_TDM_CHAN10_EN": {
    -                    "description": "1: Enable the valid data input of I2S RX TDM channel 10. 0:  Disable, just input 0 in this channel.",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "RX_TDM_CHAN11_EN": {
    -                    "description": "1: Enable the valid data input of I2S RX TDM channel 11. 0:  Disable, just input 0 in this channel.",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "RX_TDM_CHAN12_EN": {
    -                    "description": "1: Enable the valid data input of I2S RX TDM channel 12. 0:  Disable, just input 0 in this channel.",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "RX_TDM_CHAN13_EN": {
    -                    "description": "1: Enable the valid data input of I2S RX TDM channel 13. 0:  Disable, just input 0 in this channel.",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "RX_TDM_CHAN14_EN": {
    -                    "description": "1: Enable the valid data input of I2S RX TDM channel 14. 0:  Disable, just input 0 in this channel.",
    -                    "offset": 14,
    -                    "size": 1
    -                  },
    -                  "RX_TDM_CHAN15_EN": {
    -                    "description": "1: Enable the valid data input of I2S RX TDM channel 15. 0:  Disable, just input 0 in this channel.",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "RX_TDM_TOT_CHAN_NUM": {
    -                    "description": "The total channel number of I2S TX TDM mode.",
    -                    "offset": 16,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "TX_TDM_CTRL": {
    -              "description": "I2S TX TDM mode control register",
    -              "offset": 84,
    -              "size": 32,
    -              "reset_value": 65535,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_TDM_CHAN0_EN": {
    -                    "description": "1: Enable the valid data output of I2S TX TDM channel 0. 0:  Disable, just output 0 in this channel.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "TX_TDM_CHAN1_EN": {
    -                    "description": "1: Enable the valid data output of I2S TX TDM channel 1. 0:  Disable, just output 0 in this channel.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "TX_TDM_CHAN2_EN": {
    -                    "description": "1: Enable the valid data output of I2S TX TDM channel 2. 0:  Disable, just output 0 in this channel.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "TX_TDM_CHAN3_EN": {
    -                    "description": "1: Enable the valid data output of I2S TX TDM channel 3. 0:  Disable, just output 0 in this channel.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "TX_TDM_CHAN4_EN": {
    -                    "description": "1: Enable the valid data output of I2S TX TDM channel 4. 0:  Disable, just output 0 in this channel.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "TX_TDM_CHAN5_EN": {
    -                    "description": "1: Enable the valid data output of I2S TX TDM channel 5. 0:  Disable, just output 0 in this channel.",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "TX_TDM_CHAN6_EN": {
    -                    "description": "1: Enable the valid data output of I2S TX TDM channel 6. 0:  Disable, just output 0 in this channel.",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "TX_TDM_CHAN7_EN": {
    -                    "description": "1: Enable the valid data output of I2S TX TDM channel 7. 0:  Disable, just output 0 in this channel.",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "TX_TDM_CHAN8_EN": {
    -                    "description": "1: Enable the valid data output of I2S TX TDM channel 8. 0:  Disable, just output 0 in this channel.",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "TX_TDM_CHAN9_EN": {
    -                    "description": "1: Enable the valid data output of I2S TX TDM channel 9. 0:  Disable, just output 0 in this channel.",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "TX_TDM_CHAN10_EN": {
    -                    "description": "1: Enable the valid data output of I2S TX TDM channel 10. 0:  Disable, just output 0 in this channel.",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "TX_TDM_CHAN11_EN": {
    -                    "description": "1: Enable the valid data output of I2S TX TDM channel 11. 0:  Disable, just output 0 in this channel.",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "TX_TDM_CHAN12_EN": {
    -                    "description": "1: Enable the valid data output of I2S TX TDM channel 12. 0:  Disable, just output 0 in this channel.",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "TX_TDM_CHAN13_EN": {
    -                    "description": "1: Enable the valid data output of I2S TX TDM channel 13. 0:  Disable, just output 0 in this channel.",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "TX_TDM_CHAN14_EN": {
    -                    "description": "1: Enable the valid data output of I2S TX TDM channel 14. 0:  Disable, just output 0 in this channel.",
    -                    "offset": 14,
    -                    "size": 1
    -                  },
    -                  "TX_TDM_CHAN15_EN": {
    -                    "description": "1: Enable the valid data output of I2S TX TDM channel 15. 0:  Disable, just output 0 in this channel.",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "TX_TDM_TOT_CHAN_NUM": {
    -                    "description": "The total channel number of I2S TX TDM mode.",
    -                    "offset": 16,
    -                    "size": 4
    -                  },
    -                  "TX_TDM_SKIP_MSK_EN": {
    -                    "description": "When DMA TX buffer stores the data of (REG_TX_TDM_TOT_CHAN_NUM + 1)  channels, and only the data of the enabled channels is sent, then this bit should be set. Clear it when all the data stored in DMA TX buffer is for enabled channels.",
    -                    "offset": 20,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "RX_TIMING": {
    -              "description": "I2S RX timing control register",
    -              "offset": 88,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_SD_IN_DM": {
    -                    "description": "The delay mode of I2S Rx SD input signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "RX_WS_OUT_DM": {
    -                    "description": "The delay mode of I2S Rx WS output signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.",
    -                    "offset": 16,
    -                    "size": 2
    -                  },
    -                  "RX_BCK_OUT_DM": {
    -                    "description": "The delay mode of I2S Rx BCK output signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.",
    -                    "offset": 20,
    -                    "size": 2
    -                  },
    -                  "RX_WS_IN_DM": {
    -                    "description": "The delay mode of I2S Rx WS input signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.",
    -                    "offset": 24,
    -                    "size": 2
    -                  },
    -                  "RX_BCK_IN_DM": {
    -                    "description": "The delay mode of I2S Rx BCK input signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.",
    -                    "offset": 28,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "TX_TIMING": {
    -              "description": "I2S TX timing control register",
    -              "offset": 92,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_SD_OUT_DM": {
    -                    "description": "The delay mode of I2S TX SD output signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "TX_SD1_OUT_DM": {
    -                    "description": "The delay mode of I2S TX SD1 output signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "TX_WS_OUT_DM": {
    -                    "description": "The delay mode of I2S TX WS output signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.",
    -                    "offset": 16,
    -                    "size": 2
    -                  },
    -                  "TX_BCK_OUT_DM": {
    -                    "description": "The delay mode of I2S TX BCK output signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.",
    -                    "offset": 20,
    -                    "size": 2
    -                  },
    -                  "TX_WS_IN_DM": {
    -                    "description": "The delay mode of I2S TX WS input signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.",
    -                    "offset": 24,
    -                    "size": 2
    -                  },
    -                  "TX_BCK_IN_DM": {
    -                    "description": "The delay mode of I2S TX BCK input signal. 0: bypass. 1: delay by pos edge.  2: delay by neg edge. 3: not used.",
    -                    "offset": 28,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "LC_HUNG_CONF": {
    -              "description": "I2S HUNG configure register.",
    -              "offset": 96,
    -              "size": 32,
    -              "reset_value": 2064,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LC_FIFO_TIMEOUT": {
    -                    "description": "the i2s_tx_hung_int interrupt or the i2s_rx_hung_int interrupt will be triggered when fifo hung counter is equal to this value",
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "LC_FIFO_TIMEOUT_SHIFT": {
    -                    "description": "The bits are used to scale tick counter threshold. The tick counter is reset when counter value >= 88000/2^i2s_lc_fifo_timeout_shift",
    -                    "offset": 8,
    -                    "size": 3
    -                  },
    -                  "LC_FIFO_TIMEOUT_ENA": {
    -                    "description": "The enable bit for FIFO timeout",
    -                    "offset": 11,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "RXEOF_NUM": {
    -              "description": "I2S RX data number control register.",
    -              "offset": 100,
    -              "size": 32,
    -              "reset_value": 64,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_EOF_NUM": {
    -                    "description": "The receive data bit length is (I2S_RX_BITS_MOD[4:0] + 1) * (REG_RX_EOF_NUM[11:0] + 1) . It will trigger in_suc_eof interrupt in the configured DMA RX channel.",
    -                    "offset": 0,
    -                    "size": 12
    -                  }
    -                }
    -              }
    -            },
    -            "CONF_SIGLE_DATA": {
    -              "description": "I2S signal data register",
    -              "offset": 104,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SINGLE_DATA": {
    -                    "description": "The configured constant channel data to be sent out.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "STATE": {
    -              "description": "I2S TX status register",
    -              "offset": 108,
    -              "size": 32,
    -              "reset_value": 1,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_IDLE": {
    -                    "description": "1: i2s_tx is idle state. 0: i2s_tx is working.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DATE": {
    -              "description": "Version control register",
    -              "offset": 128,
    -              "size": 32,
    -              "reset_value": 33583648,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATE": {
    -                    "description": "I2S version control register",
    -                    "offset": 0,
    -                    "size": 28
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "INTERRUPT_CORE0": {
    -        "description": "Interrupt Core",
    -        "children": {
    -          "registers": {
    -            "MAC_INTR_MAP": {
    -              "description": "mac intr map register",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "MAC_INTR_MAP": {
    -                    "description": "core0_mac_intr_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "MAC_NMI_MAP": {
    -              "description": "mac nmi_intr map register",
    -              "offset": 4,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "MAC_NMI_MAP": {
    -                    "description": "reg_core0_mac_nmi_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "PWR_INTR_MAP": {
    -              "description": "pwr intr map register",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PWR_INTR_MAP": {
    -                    "description": "reg_core0_pwr_intr_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "BB_INT_MAP": {
    -              "description": "bb intr map register",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BB_INT_MAP": {
    -                    "description": "reg_core0_bb_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "BT_MAC_INT_MAP": {
    -              "description": "bt intr map register",
    -              "offset": 16,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BT_MAC_INT_MAP": {
    -                    "description": "reg_core0_bt_mac_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "BT_BB_INT_MAP": {
    -              "description": "bb_bt intr map register",
    -              "offset": 20,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BT_BB_INT_MAP": {
    -                    "description": "reg_core0_bt_bb_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "BT_BB_NMI_MAP": {
    -              "description": "bb_bt_nmi intr map register",
    -              "offset": 24,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BT_BB_NMI_MAP": {
    -                    "description": "reg_core0_bt_bb_nmi_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "RWBT_IRQ_MAP": {
    -              "description": "rwbt intr map register",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RWBT_IRQ_MAP": {
    -                    "description": "reg_core0_rwbt_irq_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "RWBLE_IRQ_MAP": {
    -              "description": "rwble intr map register",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RWBLE_IRQ_MAP": {
    -                    "description": "reg_core0_rwble_irq_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "RWBT_NMI_MAP": {
    -              "description": "rwbt_nmi intr map register",
    -              "offset": 36,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RWBT_NMI_MAP": {
    -                    "description": "reg_core0_rwbt_nmi_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "RWBLE_NMI_MAP": {
    -              "description": "rwble_nmi intr map register",
    -              "offset": 40,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RWBLE_NMI_MAP": {
    -                    "description": "reg_core0_rwble_nmi_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "I2C_MST_INT_MAP": {
    -              "description": "i2c intr map register",
    -              "offset": 44,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "I2C_MST_INT_MAP": {
    -                    "description": "reg_core0_i2c_mst_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "SLC0_INTR_MAP": {
    -              "description": "slc0 intr map register",
    -              "offset": 48,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SLC0_INTR_MAP": {
    -                    "description": "reg_core0_slc0_intr_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "SLC1_INTR_MAP": {
    -              "description": "slc1 intr map register",
    -              "offset": 52,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SLC1_INTR_MAP": {
    -                    "description": "reg_core0_slc1_intr_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "APB_CTRL_INTR_MAP": {
    -              "description": "apb_ctrl intr map register",
    -              "offset": 56,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "APB_CTRL_INTR_MAP": {
    -                    "description": "reg_core0_apb_ctrl_intr_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "UHCI0_INTR_MAP": {
    -              "description": "uchi0 intr map register",
    -              "offset": 60,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "UHCI0_INTR_MAP": {
    -                    "description": "reg_core0_uhci0_intr_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "GPIO_INTERRUPT_PRO_MAP": {
    -              "description": "gpio intr map register",
    -              "offset": 64,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "GPIO_INTERRUPT_PRO_MAP": {
    -                    "description": "reg_core0_gpio_interrupt_pro_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "GPIO_INTERRUPT_PRO_NMI_MAP": {
    -              "description": "gpio_pro intr map register",
    -              "offset": 68,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "GPIO_INTERRUPT_PRO_NMI_MAP": {
    -                    "description": "reg_core0_gpio_interrupt_pro_nmi_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "SPI_INTR_1_MAP": {
    -              "description": "gpio_pro_nmi intr map register",
    -              "offset": 72,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SPI_INTR_1_MAP": {
    -                    "description": "reg_core0_spi_intr_1_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "SPI_INTR_2_MAP": {
    -              "description": "spi1 intr map register",
    -              "offset": 76,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SPI_INTR_2_MAP": {
    -                    "description": "reg_core0_spi_intr_2_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "I2S1_INT_MAP": {
    -              "description": "spi2 intr map register",
    -              "offset": 80,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "I2S1_INT_MAP": {
    -                    "description": "reg_core0_i2s1_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "UART_INTR_MAP": {
    -              "description": "i2s1 intr map register",
    -              "offset": 84,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "UART_INTR_MAP": {
    -                    "description": "reg_core0_uart_intr_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "UART1_INTR_MAP": {
    -              "description": "uart1 intr map register",
    -              "offset": 88,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "UART1_INTR_MAP": {
    -                    "description": "reg_core0_uart1_intr_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "LEDC_INT_MAP": {
    -              "description": "ledc intr map register",
    -              "offset": 92,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LEDC_INT_MAP": {
    -                    "description": "reg_core0_ledc_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "EFUSE_INT_MAP": {
    -              "description": "efuse intr map register",
    -              "offset": 96,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "EFUSE_INT_MAP": {
    -                    "description": "reg_core0_efuse_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "CAN_INT_MAP": {
    -              "description": "can intr map register",
    -              "offset": 100,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CAN_INT_MAP": {
    -                    "description": "reg_core0_can_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "USB_INTR_MAP": {
    -              "description": "usb intr map register",
    -              "offset": 104,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "USB_INTR_MAP": {
    -                    "description": "reg_core0_usb_intr_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "RTC_CORE_INTR_MAP": {
    -              "description": "rtc intr map register",
    -              "offset": 108,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_CORE_INTR_MAP": {
    -                    "description": "reg_core0_rtc_core_intr_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "RMT_INTR_MAP": {
    -              "description": "rmt intr map register",
    -              "offset": 112,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RMT_INTR_MAP": {
    -                    "description": "reg_core0_rmt_intr_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "I2C_EXT0_INTR_MAP": {
    -              "description": "i2c intr map register",
    -              "offset": 116,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "I2C_EXT0_INTR_MAP": {
    -                    "description": "reg_core0_i2c_ext0_intr_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "TIMER_INT1_MAP": {
    -              "description": "timer1 intr map register",
    -              "offset": 120,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_INT1_MAP": {
    -                    "description": "reg_core0_timer_int1_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "TIMER_INT2_MAP": {
    -              "description": "timer2 intr map register",
    -              "offset": 124,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_INT2_MAP": {
    -                    "description": "reg_core0_timer_int2_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "TG_T0_INT_MAP": {
    -              "description": "tg to intr map register",
    -              "offset": 128,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TG_T0_INT_MAP": {
    -                    "description": "reg_core0_tg_t0_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "TG_WDT_INT_MAP": {
    -              "description": "tg wdt intr map register",
    -              "offset": 132,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TG_WDT_INT_MAP": {
    -                    "description": "reg_core0_tg_wdt_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "TG1_T0_INT_MAP": {
    -              "description": "tg1 to intr map register",
    -              "offset": 136,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TG1_T0_INT_MAP": {
    -                    "description": "reg_core0_tg1_t0_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "TG1_WDT_INT_MAP": {
    -              "description": "tg1 wdt intr map register",
    -              "offset": 140,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TG1_WDT_INT_MAP": {
    -                    "description": "reg_core0_tg1_wdt_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_IA_INT_MAP": {
    -              "description": "cache ia intr map register",
    -              "offset": 144,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CACHE_IA_INT_MAP": {
    -                    "description": "reg_core0_cache_ia_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "SYSTIMER_TARGET0_INT_MAP": {
    -              "description": "systimer intr map register",
    -              "offset": 148,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SYSTIMER_TARGET0_INT_MAP": {
    -                    "description": "reg_core0_systimer_target0_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "SYSTIMER_TARGET1_INT_MAP": {
    -              "description": "systimer target1 intr map register",
    -              "offset": 152,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SYSTIMER_TARGET1_INT_MAP": {
    -                    "description": "reg_core0_systimer_target1_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "SYSTIMER_TARGET2_INT_MAP": {
    -              "description": "systimer target2 intr map register",
    -              "offset": 156,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SYSTIMER_TARGET2_INT_MAP": {
    -                    "description": "reg_core0_systimer_target2_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "SPI_MEM_REJECT_INTR_MAP": {
    -              "description": "spi mem reject intr map register",
    -              "offset": 160,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SPI_MEM_REJECT_INTR_MAP": {
    -                    "description": "reg_core0_spi_mem_reject_intr_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "ICACHE_PRELOAD_INT_MAP": {
    -              "description": "icache perload intr map register",
    -              "offset": 164,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_PRELOAD_INT_MAP": {
    -                    "description": "reg_core0_icache_preload_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "ICACHE_SYNC_INT_MAP": {
    -              "description": "icache sync intr map register",
    -              "offset": 168,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_SYNC_INT_MAP": {
    -                    "description": "reg_core0_icache_sync_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "APB_ADC_INT_MAP": {
    -              "description": "adc intr map register",
    -              "offset": 172,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "APB_ADC_INT_MAP": {
    -                    "description": "reg_core0_apb_adc_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_CH0_INT_MAP": {
    -              "description": "dma ch0 intr map register",
    -              "offset": 176,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_CH0_INT_MAP": {
    -                    "description": "reg_core0_dma_ch0_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_CH1_INT_MAP": {
    -              "description": "dma ch1 intr map register",
    -              "offset": 180,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_CH1_INT_MAP": {
    -                    "description": "reg_core0_dma_ch1_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_CH2_INT_MAP": {
    -              "description": "dma ch2 intr map register",
    -              "offset": 184,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_CH2_INT_MAP": {
    -                    "description": "reg_core0_dma_ch2_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "RSA_INT_MAP": {
    -              "description": "rsa intr map register",
    -              "offset": 188,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RSA_INT_MAP": {
    -                    "description": "reg_core0_rsa_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "AES_INT_MAP": {
    -              "description": "aes intr map register",
    -              "offset": 192,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "AES_INT_MAP": {
    -                    "description": "reg_core0_aes_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "SHA_INT_MAP": {
    -              "description": "sha intr map register",
    -              "offset": 196,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SHA_INT_MAP": {
    -                    "description": "reg_core0_sha_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INTR_FROM_CPU_0_MAP": {
    -              "description": "cpu from cpu 0 intr map register",
    -              "offset": 200,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_INTR_FROM_CPU_0_MAP": {
    -                    "description": "reg_core0_cpu_intr_from_cpu_0_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INTR_FROM_CPU_1_MAP": {
    -              "description": "cpu from cpu 0 intr map register",
    -              "offset": 204,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_INTR_FROM_CPU_1_MAP": {
    -                    "description": "reg_core0_cpu_intr_from_cpu_1_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INTR_FROM_CPU_2_MAP": {
    -              "description": "cpu from cpu 1 intr map register",
    -              "offset": 208,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_INTR_FROM_CPU_2_MAP": {
    -                    "description": "reg_core0_cpu_intr_from_cpu_2_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INTR_FROM_CPU_3_MAP": {
    -              "description": "cpu from cpu 3 intr map register",
    -              "offset": 212,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_INTR_FROM_CPU_3_MAP": {
    -                    "description": "reg_core0_cpu_intr_from_cpu_3_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "ASSIST_DEBUG_INTR_MAP": {
    -              "description": "assist debug intr map register",
    -              "offset": 216,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ASSIST_DEBUG_INTR_MAP": {
    -                    "description": "reg_core0_assist_debug_intr_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_APBPERI_PMS_MONITOR_VIOLATE_INTR_MAP": {
    -              "description": "dma pms violatile intr map register",
    -              "offset": 220,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_APBPERI_PMS_MONITOR_VIOLATE_INTR_MAP": {
    -                    "description": "reg_core0_dma_apbperi_pms_monitor_violate_intr_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_IRAM0_PMS_MONITOR_VIOLATE_INTR_MAP": {
    -              "description": "iram0 pms violatile intr map register",
    -              "offset": 224,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_IRAM0_PMS_MONITOR_VIOLATE_INTR_MAP": {
    -                    "description": "reg_core0_core_0_iram0_pms_monitor_violate_intr_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_DRAM0_PMS_MONITOR_VIOLATE_INTR_MAP": {
    -              "description": "mac intr map register",
    -              "offset": 228,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_DRAM0_PMS_MONITOR_VIOLATE_INTR_MAP": {
    -                    "description": "reg_core0_core_0_dram0_pms_monitor_violate_intr_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_PIF_PMS_MONITOR_VIOLATE_INTR_MAP": {
    -              "description": "mac intr map register",
    -              "offset": 232,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_PIF_PMS_MONITOR_VIOLATE_INTR_MAP": {
    -                    "description": "reg_core0_core_0_pif_pms_monitor_violate_intr_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_PIF_PMS_MONITOR_VIOLATE_SIZE_INTR_MAP": {
    -              "description": "mac intr map register",
    -              "offset": 236,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_PIF_PMS_MONITOR_VIOLATE_SIZE_INTR_MAP": {
    -                    "description": "reg_core0_core_0_pif_pms_monitor_violate_size_intr_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "BACKUP_PMS_VIOLATE_INTR_MAP": {
    -              "description": "mac intr map register",
    -              "offset": 240,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BACKUP_PMS_VIOLATE_INTR_MAP": {
    -                    "description": "reg_core0_backup_pms_violate_intr_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_CORE0_ACS_INT_MAP": {
    -              "description": "mac intr map register",
    -              "offset": 244,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CACHE_CORE0_ACS_INT_MAP": {
    -                    "description": "reg_core0_cache_core0_acs_int_map",
    -                    "offset": 0,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "INTR_STATUS_REG_0": {
    -              "description": "mac intr map register",
    -              "offset": 248,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INTR_STATUS_0": {
    -                    "description": "reg_core0_intr_status_0",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INTR_STATUS_REG_1": {
    -              "description": "mac intr map register",
    -              "offset": 252,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INTR_STATUS_1": {
    -                    "description": "reg_core0_intr_status_1",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CLOCK_GATE": {
    -              "description": "mac intr map register",
    -              "offset": 256,
    -              "size": 32,
    -              "reset_value": 1,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "REG_CLK_EN": {
    -                    "description": "reg_core0_reg_clk_en",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_ENABLE": {
    -              "description": "mac intr map register",
    -              "offset": 260,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_INT_ENABLE": {
    -                    "description": "reg_core0_cpu_int_enable",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_TYPE": {
    -              "description": "mac intr map register",
    -              "offset": 264,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_INT_TYPE": {
    -                    "description": "reg_core0_cpu_int_type",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_CLEAR": {
    -              "description": "mac intr map register",
    -              "offset": 268,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_INT_CLEAR": {
    -                    "description": "reg_core0_cpu_int_clear",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_EIP_STATUS": {
    -              "description": "mac intr map register",
    -              "offset": 272,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_INT_EIP_STATUS": {
    -                    "description": "reg_core0_cpu_int_eip_status",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_0": {
    -              "description": "mac intr map register",
    -              "offset": 276,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_0_MAP": {
    -                    "description": "reg_core0_cpu_pri_0_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_1": {
    -              "description": "mac intr map register",
    -              "offset": 280,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_1_MAP": {
    -                    "description": "reg_core0_cpu_pri_1_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_2": {
    -              "description": "mac intr map register",
    -              "offset": 284,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_2_MAP": {
    -                    "description": "reg_core0_cpu_pri_2_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_3": {
    -              "description": "mac intr map register",
    -              "offset": 288,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_3_MAP": {
    -                    "description": "reg_core0_cpu_pri_3_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_4": {
    -              "description": "mac intr map register",
    -              "offset": 292,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_4_MAP": {
    -                    "description": "reg_core0_cpu_pri_4_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_5": {
    -              "description": "mac intr map register",
    -              "offset": 296,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_5_MAP": {
    -                    "description": "reg_core0_cpu_pri_5_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_6": {
    -              "description": "mac intr map register",
    -              "offset": 300,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_6_MAP": {
    -                    "description": "reg_core0_cpu_pri_6_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_7": {
    -              "description": "mac intr map register",
    -              "offset": 304,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_7_MAP": {
    -                    "description": "reg_core0_cpu_pri_7_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_8": {
    -              "description": "mac intr map register",
    -              "offset": 308,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_8_MAP": {
    -                    "description": "reg_core0_cpu_pri_8_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_9": {
    -              "description": "mac intr map register",
    -              "offset": 312,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_9_MAP": {
    -                    "description": "reg_core0_cpu_pri_9_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_10": {
    -              "description": "mac intr map register",
    -              "offset": 316,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_10_MAP": {
    -                    "description": "reg_core0_cpu_pri_10_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_11": {
    -              "description": "mac intr map register",
    -              "offset": 320,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_11_MAP": {
    -                    "description": "reg_core0_cpu_pri_11_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_12": {
    -              "description": "mac intr map register",
    -              "offset": 324,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_12_MAP": {
    -                    "description": "reg_core0_cpu_pri_12_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_13": {
    -              "description": "mac intr map register",
    -              "offset": 328,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_13_MAP": {
    -                    "description": "reg_core0_cpu_pri_13_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_14": {
    -              "description": "mac intr map register",
    -              "offset": 332,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_14_MAP": {
    -                    "description": "reg_core0_cpu_pri_14_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_15": {
    -              "description": "mac intr map register",
    -              "offset": 336,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_15_MAP": {
    -                    "description": "reg_core0_cpu_pri_15_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_16": {
    -              "description": "mac intr map register",
    -              "offset": 340,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_16_MAP": {
    -                    "description": "reg_core0_cpu_pri_16_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_17": {
    -              "description": "mac intr map register",
    -              "offset": 344,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_17_MAP": {
    -                    "description": "reg_core0_cpu_pri_17_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_18": {
    -              "description": "mac intr map register",
    -              "offset": 348,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_18_MAP": {
    -                    "description": "reg_core0_cpu_pri_18_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_19": {
    -              "description": "mac intr map register",
    -              "offset": 352,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_19_MAP": {
    -                    "description": "reg_core0_cpu_pri_19_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_20": {
    -              "description": "mac intr map register",
    -              "offset": 356,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_20_MAP": {
    -                    "description": "reg_core0_cpu_pri_20_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_21": {
    -              "description": "mac intr map register",
    -              "offset": 360,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_21_MAP": {
    -                    "description": "reg_core0_cpu_pri_21_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_22": {
    -              "description": "mac intr map register",
    -              "offset": 364,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_22_MAP": {
    -                    "description": "reg_core0_cpu_pri_22_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_23": {
    -              "description": "mac intr map register",
    -              "offset": 368,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_23_MAP": {
    -                    "description": "reg_core0_cpu_pri_23_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_24": {
    -              "description": "mac intr map register",
    -              "offset": 372,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_24_MAP": {
    -                    "description": "reg_core0_cpu_pri_24_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_25": {
    -              "description": "mac intr map register",
    -              "offset": 376,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_25_MAP": {
    -                    "description": "reg_core0_cpu_pri_25_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_26": {
    -              "description": "mac intr map register",
    -              "offset": 380,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_26_MAP": {
    -                    "description": "reg_core0_cpu_pri_26_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_27": {
    -              "description": "mac intr map register",
    -              "offset": 384,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_27_MAP": {
    -                    "description": "reg_core0_cpu_pri_27_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_28": {
    -              "description": "mac intr map register",
    -              "offset": 388,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_28_MAP": {
    -                    "description": "reg_core0_cpu_pri_28_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_29": {
    -              "description": "mac intr map register",
    -              "offset": 392,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_29_MAP": {
    -                    "description": "reg_core0_cpu_pri_29_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_30": {
    -              "description": "mac intr map register",
    -              "offset": 396,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_30_MAP": {
    -                    "description": "reg_core0_cpu_pri_30_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_PRI_31": {
    -              "description": "mac intr map register",
    -              "offset": 400,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_PRI_31_MAP": {
    -                    "description": "reg_core0_cpu_pri_31_map",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INT_THRESH": {
    -              "description": "mac intr map register",
    -              "offset": 404,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_INT_THRESH": {
    -                    "description": "reg_core0_cpu_int_thresh",
    -                    "offset": 0,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "INTERRUPT_REG_DATE": {
    -              "description": "mac intr map register",
    -              "offset": 2044,
    -              "size": 32,
    -              "reset_value": 33583632,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INTERRUPT_REG_DATE": {
    -                    "description": "reg_core0_interrupt_reg_date",
    -                    "offset": 0,
    -                    "size": 28
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "IO_MUX": {
    -        "description": "Input/Output Multiplexer",
    -        "children": {
    -          "registers": {
    -            "PIN_CTRL": {
    -              "description": "Clock Output Configuration Register",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 2047,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CLK_OUT1": {
    -                    "description": "If you want to output clock for I2S to CLK_OUT_out1, set this register to 0x0. CLK_OUT_out1 can be found in peripheral output signals.",
    -                    "offset": 0,
    -                    "size": 4
    -                  },
    -                  "CLK_OUT2": {
    -                    "description": "If you want to output clock for I2S to CLK_OUT_out2, set this register to 0x0. CLK_OUT_out2 can be found in peripheral output signals.",
    -                    "offset": 4,
    -                    "size": 4
    -                  },
    -                  "CLK_OUT3": {
    -                    "description": "If you want to output clock for I2S to CLK_OUT_out3, set this register to 0x0. CLK_OUT_out3 can be found in peripheral output signals.",
    -                    "offset": 8,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "GPIO": {
    -              "description": "IO MUX Configure Register for pad XTAL_32K_P",
    -              "offset": 4,
    -              "size": 32,
    -              "count": 22,
    -              "reset_value": 2816,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "MCU_OE": {
    -                    "description": "Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "SLP_SEL": {
    -                    "description": "Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "MCU_WPD": {
    -                    "description": "Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0: internal pull-down disabled.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "MCU_WPU": {
    -                    "description": "Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0: internal pull-up disabled.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "MCU_IE": {
    -                    "description": "Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "FUN_WPD": {
    -                    "description": "Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal pull-down disabled.",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "FUN_WPU": {
    -                    "description": "Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up disabled.",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "FUN_IE": {
    -                    "description": "Input enable of the pad. 1: input enabled; 0: input disabled.",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "FUN_DRV": {
    -                    "description": "Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.",
    -                    "offset": 10,
    -                    "size": 2
    -                  },
    -                  "MCU_SEL": {
    -                    "description": "Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function 2; etc.",
    -                    "offset": 12,
    -                    "size": 3
    -                  },
    -                  "FILTER_EN": {
    -                    "description": "Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.",
    -                    "offset": 15,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DATE": {
    -              "description": "IO MUX Version Control Register",
    -              "offset": 252,
    -              "size": 32,
    -              "reset_value": 33579088,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "REG_DATE": {
    -                    "description": "Version control register",
    -                    "offset": 0,
    -                    "size": 28
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "LEDC": {
    -        "description": "LED Control PWM (Pulse Width Modulation)",
    -        "children": {
    -          "registers": {
    -            "LSCH0_CONF0": {
    -              "description": "LEDC_LSCH0_CONF0.",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_SEL_LSCH0": {
    -                    "description": "reg_timer_sel_lsch0.",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "SIG_OUT_EN_LSCH0": {
    -                    "description": "reg_sig_out_en_lsch0.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "IDLE_LV_LSCH0": {
    -                    "description": "reg_idle_lv_lsch0.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "PARA_UP_LSCH0": {
    -                    "description": "reg_para_up_lsch0.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OVF_NUM_LSCH0": {
    -                    "description": "reg_ovf_num_lsch0.",
    -                    "offset": 5,
    -                    "size": 10
    -                  },
    -                  "OVF_CNT_EN_LSCH0": {
    -                    "description": "reg_ovf_cnt_en_lsch0.",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "OVF_CNT_RESET_LSCH0": {
    -                    "description": "reg_ovf_cnt_reset_lsch0.",
    -                    "offset": 16,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH0_HPOINT": {
    -              "description": "LEDC_LSCH0_HPOINT.",
    -              "offset": 4,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "HPOINT_LSCH0": {
    -                    "description": "reg_hpoint_lsch0.",
    -                    "offset": 0,
    -                    "size": 14
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH0_DUTY": {
    -              "description": "LEDC_LSCH0_DUTY.",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DUTY_LSCH0": {
    -                    "description": "reg_duty_lsch0.",
    -                    "offset": 0,
    -                    "size": 19
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH0_CONF1": {
    -              "description": "LEDC_LSCH0_CONF1.",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 1073741824,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DUTY_SCALE_LSCH0": {
    -                    "description": "reg_duty_scale_lsch0.",
    -                    "offset": 0,
    -                    "size": 10
    -                  },
    -                  "DUTY_CYCLE_LSCH0": {
    -                    "description": "reg_duty_cycle_lsch0.",
    -                    "offset": 10,
    -                    "size": 10
    -                  },
    -                  "DUTY_NUM_LSCH0": {
    -                    "description": "reg_duty_num_lsch0.",
    -                    "offset": 20,
    -                    "size": 10
    -                  },
    -                  "DUTY_INC_LSCH0": {
    -                    "description": "reg_duty_inc_lsch0.",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "DUTY_START_LSCH0": {
    -                    "description": "reg_duty_start_lsch0.",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH0_DUTY_R": {
    -              "description": "LEDC_LSCH0_DUTY_R.",
    -              "offset": 16,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DUTY_LSCH0_R": {
    -                    "description": "reg_duty_lsch0_r.",
    -                    "offset": 0,
    -                    "size": 19,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH1_CONF0": {
    -              "description": "LEDC_LSCH1_CONF0.",
    -              "offset": 20,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_SEL_LSCH1": {
    -                    "description": "reg_timer_sel_lsch1.",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "SIG_OUT_EN_LSCH1": {
    -                    "description": "reg_sig_out_en_lsch1.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "IDLE_LV_LSCH1": {
    -                    "description": "reg_idle_lv_lsch1.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "PARA_UP_LSCH1": {
    -                    "description": "reg_para_up_lsch1.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OVF_NUM_LSCH1": {
    -                    "description": "reg_ovf_num_lsch1.",
    -                    "offset": 5,
    -                    "size": 10
    -                  },
    -                  "OVF_CNT_EN_LSCH1": {
    -                    "description": "reg_ovf_cnt_en_lsch1.",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "OVF_CNT_RESET_LSCH1": {
    -                    "description": "reg_ovf_cnt_reset_lsch1.",
    -                    "offset": 16,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH1_HPOINT": {
    -              "description": "LEDC_LSCH1_HPOINT.",
    -              "offset": 24,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "HPOINT_LSCH1": {
    -                    "description": "reg_hpoint_lsch1.",
    -                    "offset": 0,
    -                    "size": 14
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH1_DUTY": {
    -              "description": "LEDC_LSCH1_DUTY.",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DUTY_LSCH1": {
    -                    "description": "reg_duty_lsch1.",
    -                    "offset": 0,
    -                    "size": 19
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH1_CONF1": {
    -              "description": "LEDC_LSCH1_CONF1.",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 1073741824,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DUTY_SCALE_LSCH1": {
    -                    "description": "reg_duty_scale_lsch1.",
    -                    "offset": 0,
    -                    "size": 10
    -                  },
    -                  "DUTY_CYCLE_LSCH1": {
    -                    "description": "reg_duty_cycle_lsch1.",
    -                    "offset": 10,
    -                    "size": 10
    -                  },
    -                  "DUTY_NUM_LSCH1": {
    -                    "description": "reg_duty_num_lsch1.",
    -                    "offset": 20,
    -                    "size": 10
    -                  },
    -                  "DUTY_INC_LSCH1": {
    -                    "description": "reg_duty_inc_lsch1.",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "DUTY_START_LSCH1": {
    -                    "description": "reg_duty_start_lsch1.",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH1_DUTY_R": {
    -              "description": "LEDC_LSCH1_DUTY_R.",
    -              "offset": 36,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DUTY_LSCH1_R": {
    -                    "description": "reg_duty_lsch1_r.",
    -                    "offset": 0,
    -                    "size": 19,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH2_CONF0": {
    -              "description": "LEDC_LSCH2_CONF0.",
    -              "offset": 40,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_SEL_LSCH2": {
    -                    "description": "reg_timer_sel_lsch2.",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "SIG_OUT_EN_LSCH2": {
    -                    "description": "reg_sig_out_en_lsch2.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "IDLE_LV_LSCH2": {
    -                    "description": "reg_idle_lv_lsch2.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "PARA_UP_LSCH2": {
    -                    "description": "reg_para_up_lsch2.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OVF_NUM_LSCH2": {
    -                    "description": "reg_ovf_num_lsch2.",
    -                    "offset": 5,
    -                    "size": 10
    -                  },
    -                  "OVF_CNT_EN_LSCH2": {
    -                    "description": "reg_ovf_cnt_en_lsch2.",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "OVF_CNT_RESET_LSCH2": {
    -                    "description": "reg_ovf_cnt_reset_lsch2.",
    -                    "offset": 16,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH2_HPOINT": {
    -              "description": "LEDC_LSCH2_HPOINT.",
    -              "offset": 44,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "HPOINT_LSCH2": {
    -                    "description": "reg_hpoint_lsch2.",
    -                    "offset": 0,
    -                    "size": 14
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH2_DUTY": {
    -              "description": "LEDC_LSCH2_DUTY.",
    -              "offset": 48,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DUTY_LSCH2": {
    -                    "description": "reg_duty_lsch2.",
    -                    "offset": 0,
    -                    "size": 19
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH2_CONF1": {
    -              "description": "LEDC_LSCH2_CONF1.",
    -              "offset": 52,
    -              "size": 32,
    -              "reset_value": 1073741824,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DUTY_SCALE_LSCH2": {
    -                    "description": "reg_duty_scale_lsch2.",
    -                    "offset": 0,
    -                    "size": 10
    -                  },
    -                  "DUTY_CYCLE_LSCH2": {
    -                    "description": "reg_duty_cycle_lsch2.",
    -                    "offset": 10,
    -                    "size": 10
    -                  },
    -                  "DUTY_NUM_LSCH2": {
    -                    "description": "reg_duty_num_lsch2.",
    -                    "offset": 20,
    -                    "size": 10
    -                  },
    -                  "DUTY_INC_LSCH2": {
    -                    "description": "reg_duty_inc_lsch2.",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "DUTY_START_LSCH2": {
    -                    "description": "reg_duty_start_lsch2.",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH2_DUTY_R": {
    -              "description": "LEDC_LSCH2_DUTY_R.",
    -              "offset": 56,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DUTY_LSCH2_R": {
    -                    "description": "reg_duty_lsch2_r.",
    -                    "offset": 0,
    -                    "size": 19,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH3_CONF0": {
    -              "description": "LEDC_LSCH3_CONF0.",
    -              "offset": 60,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_SEL_LSCH3": {
    -                    "description": "reg_timer_sel_lsch3.",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "SIG_OUT_EN_LSCH3": {
    -                    "description": "reg_sig_out_en_lsch3.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "IDLE_LV_LSCH3": {
    -                    "description": "reg_idle_lv_lsch3.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "PARA_UP_LSCH3": {
    -                    "description": "reg_para_up_lsch3.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OVF_NUM_LSCH3": {
    -                    "description": "reg_ovf_num_lsch3.",
    -                    "offset": 5,
    -                    "size": 10
    -                  },
    -                  "OVF_CNT_EN_LSCH3": {
    -                    "description": "reg_ovf_cnt_en_lsch3.",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "OVF_CNT_RESET_LSCH3": {
    -                    "description": "reg_ovf_cnt_reset_lsch3.",
    -                    "offset": 16,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH3_HPOINT": {
    -              "description": "LEDC_LSCH3_HPOINT.",
    -              "offset": 64,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "HPOINT_LSCH3": {
    -                    "description": "reg_hpoint_lsch3.",
    -                    "offset": 0,
    -                    "size": 14
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH3_DUTY": {
    -              "description": "LEDC_LSCH3_DUTY.",
    -              "offset": 68,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DUTY_LSCH3": {
    -                    "description": "reg_duty_lsch3.",
    -                    "offset": 0,
    -                    "size": 19
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH3_CONF1": {
    -              "description": "LEDC_LSCH3_CONF1.",
    -              "offset": 72,
    -              "size": 32,
    -              "reset_value": 1073741824,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DUTY_SCALE_LSCH3": {
    -                    "description": "reg_duty_scale_lsch3.",
    -                    "offset": 0,
    -                    "size": 10
    -                  },
    -                  "DUTY_CYCLE_LSCH3": {
    -                    "description": "reg_duty_cycle_lsch3.",
    -                    "offset": 10,
    -                    "size": 10
    -                  },
    -                  "DUTY_NUM_LSCH3": {
    -                    "description": "reg_duty_num_lsch3.",
    -                    "offset": 20,
    -                    "size": 10
    -                  },
    -                  "DUTY_INC_LSCH3": {
    -                    "description": "reg_duty_inc_lsch3.",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "DUTY_START_LSCH3": {
    -                    "description": "reg_duty_start_lsch3.",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH3_DUTY_R": {
    -              "description": "LEDC_LSCH3_DUTY_R.",
    -              "offset": 76,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DUTY_LSCH3_R": {
    -                    "description": "reg_duty_lsch3_r.",
    -                    "offset": 0,
    -                    "size": 19,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH4_CONF0": {
    -              "description": "LEDC_LSCH4_CONF0.",
    -              "offset": 80,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_SEL_LSCH4": {
    -                    "description": "reg_timer_sel_lsch4.",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "SIG_OUT_EN_LSCH4": {
    -                    "description": "reg_sig_out_en_lsch4.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "IDLE_LV_LSCH4": {
    -                    "description": "reg_idle_lv_lsch4.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "PARA_UP_LSCH4": {
    -                    "description": "reg_para_up_lsch4.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OVF_NUM_LSCH4": {
    -                    "description": "reg_ovf_num_lsch4.",
    -                    "offset": 5,
    -                    "size": 10
    -                  },
    -                  "OVF_CNT_EN_LSCH4": {
    -                    "description": "reg_ovf_cnt_en_lsch4.",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "OVF_CNT_RESET_LSCH4": {
    -                    "description": "reg_ovf_cnt_reset_lsch4.",
    -                    "offset": 16,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH4_HPOINT": {
    -              "description": "LEDC_LSCH4_HPOINT.",
    -              "offset": 84,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "HPOINT_LSCH4": {
    -                    "description": "reg_hpoint_lsch4.",
    -                    "offset": 0,
    -                    "size": 14
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH4_DUTY": {
    -              "description": "LEDC_LSCH4_DUTY.",
    -              "offset": 88,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DUTY_LSCH4": {
    -                    "description": "reg_duty_lsch4.",
    -                    "offset": 0,
    -                    "size": 19
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH4_CONF1": {
    -              "description": "LEDC_LSCH4_CONF1.",
    -              "offset": 92,
    -              "size": 32,
    -              "reset_value": 1073741824,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DUTY_SCALE_LSCH4": {
    -                    "description": "reg_duty_scale_lsch4.",
    -                    "offset": 0,
    -                    "size": 10
    -                  },
    -                  "DUTY_CYCLE_LSCH4": {
    -                    "description": "reg_duty_cycle_lsch4.",
    -                    "offset": 10,
    -                    "size": 10
    -                  },
    -                  "DUTY_NUM_LSCH4": {
    -                    "description": "reg_duty_num_lsch4.",
    -                    "offset": 20,
    -                    "size": 10
    -                  },
    -                  "DUTY_INC_LSCH4": {
    -                    "description": "reg_duty_inc_lsch4.",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "DUTY_START_LSCH4": {
    -                    "description": "reg_duty_start_lsch4.",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH4_DUTY_R": {
    -              "description": "LEDC_LSCH4_DUTY_R.",
    -              "offset": 96,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DUTY_LSCH4_R": {
    -                    "description": "reg_duty_lsch4_r.",
    -                    "offset": 0,
    -                    "size": 19,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH5_CONF0": {
    -              "description": "LEDC_LSCH5_CONF0.",
    -              "offset": 100,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_SEL_LSCH5": {
    -                    "description": "reg_timer_sel_lsch5.",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "SIG_OUT_EN_LSCH5": {
    -                    "description": "reg_sig_out_en_lsch5.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "IDLE_LV_LSCH5": {
    -                    "description": "reg_idle_lv_lsch5.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "PARA_UP_LSCH5": {
    -                    "description": "reg_para_up_lsch5.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OVF_NUM_LSCH5": {
    -                    "description": "reg_ovf_num_lsch5.",
    -                    "offset": 5,
    -                    "size": 10
    -                  },
    -                  "OVF_CNT_EN_LSCH5": {
    -                    "description": "reg_ovf_cnt_en_lsch5.",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "OVF_CNT_RESET_LSCH5": {
    -                    "description": "reg_ovf_cnt_reset_lsch5.",
    -                    "offset": 16,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH5_HPOINT": {
    -              "description": "LEDC_LSCH5_HPOINT.",
    -              "offset": 104,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "HPOINT_LSCH5": {
    -                    "description": "reg_hpoint_lsch5.",
    -                    "offset": 0,
    -                    "size": 14
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH5_DUTY": {
    -              "description": "LEDC_LSCH5_DUTY.",
    -              "offset": 108,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DUTY_LSCH5": {
    -                    "description": "reg_duty_lsch5.",
    -                    "offset": 0,
    -                    "size": 19
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH5_CONF1": {
    -              "description": "LEDC_LSCH5_CONF1.",
    -              "offset": 112,
    -              "size": 32,
    -              "reset_value": 1073741824,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DUTY_SCALE_LSCH5": {
    -                    "description": "reg_duty_scale_lsch5.",
    -                    "offset": 0,
    -                    "size": 10
    -                  },
    -                  "DUTY_CYCLE_LSCH5": {
    -                    "description": "reg_duty_cycle_lsch5.",
    -                    "offset": 10,
    -                    "size": 10
    -                  },
    -                  "DUTY_NUM_LSCH5": {
    -                    "description": "reg_duty_num_lsch5.",
    -                    "offset": 20,
    -                    "size": 10
    -                  },
    -                  "DUTY_INC_LSCH5": {
    -                    "description": "reg_duty_inc_lsch5.",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "DUTY_START_LSCH5": {
    -                    "description": "reg_duty_start_lsch5.",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "LSCH5_DUTY_R": {
    -              "description": "LEDC_LSCH5_DUTY_R.",
    -              "offset": 116,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DUTY_LSCH5_R": {
    -                    "description": "reg_duty_lsch5_r.",
    -                    "offset": 0,
    -                    "size": 19,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "LSTIMER0_CONF": {
    -              "description": "LEDC_LSTIMER0_CONF.",
    -              "offset": 160,
    -              "size": 32,
    -              "reset_value": 8388608,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LSTIMER0_DUTY_RES": {
    -                    "description": "reg_lstimer0_duty_res.",
    -                    "offset": 0,
    -                    "size": 4
    -                  },
    -                  "CLK_DIV_LSTIMER0": {
    -                    "description": "reg_clk_div_lstimer0.",
    -                    "offset": 4,
    -                    "size": 18
    -                  },
    -                  "LSTIMER0_PAUSE": {
    -                    "description": "reg_lstimer0_pause.",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "LSTIMER0_RST": {
    -                    "description": "reg_lstimer0_rst.",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "TICK_SEL_LSTIMER0": {
    -                    "description": "reg_tick_sel_lstimer0.",
    -                    "offset": 24,
    -                    "size": 1
    -                  },
    -                  "LSTIMER0_PARA_UP": {
    -                    "description": "reg_lstimer0_para_up.",
    -                    "offset": 25,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "LSTIMER0_VALUE": {
    -              "description": "LEDC_LSTIMER0_VALUE.",
    -              "offset": 164,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LSTIMER0_CNT": {
    -                    "description": "reg_lstimer0_cnt.",
    -                    "offset": 0,
    -                    "size": 14,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "LSTIMER1_CONF": {
    -              "description": "LEDC_LSTIMER1_CONF.",
    -              "offset": 168,
    -              "size": 32,
    -              "reset_value": 8388608,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LSTIMER1_DUTY_RES": {
    -                    "description": "reg_lstimer1_duty_res.",
    -                    "offset": 0,
    -                    "size": 4
    -                  },
    -                  "CLK_DIV_LSTIMER1": {
    -                    "description": "reg_clk_div_lstimer1.",
    -                    "offset": 4,
    -                    "size": 18
    -                  },
    -                  "LSTIMER1_PAUSE": {
    -                    "description": "reg_lstimer1_pause.",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "LSTIMER1_RST": {
    -                    "description": "reg_lstimer1_rst.",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "TICK_SEL_LSTIMER1": {
    -                    "description": "reg_tick_sel_lstimer1.",
    -                    "offset": 24,
    -                    "size": 1
    -                  },
    -                  "LSTIMER1_PARA_UP": {
    -                    "description": "reg_lstimer1_para_up.",
    -                    "offset": 25,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "LSTIMER1_VALUE": {
    -              "description": "LEDC_LSTIMER1_VALUE.",
    -              "offset": 172,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LSTIMER1_CNT": {
    -                    "description": "reg_lstimer1_cnt.",
    -                    "offset": 0,
    -                    "size": 14,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "LSTIMER2_CONF": {
    -              "description": "LEDC_LSTIMER2_CONF.",
    -              "offset": 176,
    -              "size": 32,
    -              "reset_value": 8388608,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LSTIMER2_DUTY_RES": {
    -                    "description": "reg_lstimer2_duty_res.",
    -                    "offset": 0,
    -                    "size": 4
    -                  },
    -                  "CLK_DIV_LSTIMER2": {
    -                    "description": "reg_clk_div_lstimer2.",
    -                    "offset": 4,
    -                    "size": 18
    -                  },
    -                  "LSTIMER2_PAUSE": {
    -                    "description": "reg_lstimer2_pause.",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "LSTIMER2_RST": {
    -                    "description": "reg_lstimer2_rst.",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "TICK_SEL_LSTIMER2": {
    -                    "description": "reg_tick_sel_lstimer2.",
    -                    "offset": 24,
    -                    "size": 1
    -                  },
    -                  "LSTIMER2_PARA_UP": {
    -                    "description": "reg_lstimer2_para_up.",
    -                    "offset": 25,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "LSTIMER2_VALUE": {
    -              "description": "LEDC_LSTIMER2_VALUE.",
    -              "offset": 180,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LSTIMER2_CNT": {
    -                    "description": "reg_lstimer2_cnt.",
    -                    "offset": 0,
    -                    "size": 14,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "LSTIMER3_CONF": {
    -              "description": "LEDC_LSTIMER3_CONF.",
    -              "offset": 184,
    -              "size": 32,
    -              "reset_value": 8388608,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LSTIMER3_DUTY_RES": {
    -                    "description": "reg_lstimer3_duty_res.",
    -                    "offset": 0,
    -                    "size": 4
    -                  },
    -                  "CLK_DIV_LSTIMER3": {
    -                    "description": "reg_clk_div_lstimer3.",
    -                    "offset": 4,
    -                    "size": 18
    -                  },
    -                  "LSTIMER3_PAUSE": {
    -                    "description": "reg_lstimer3_pause.",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "LSTIMER3_RST": {
    -                    "description": "reg_lstimer3_rst.",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "TICK_SEL_LSTIMER3": {
    -                    "description": "reg_tick_sel_lstimer3.",
    -                    "offset": 24,
    -                    "size": 1
    -                  },
    -                  "LSTIMER3_PARA_UP": {
    -                    "description": "reg_lstimer3_para_up.",
    -                    "offset": 25,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "LSTIMER3_VALUE": {
    -              "description": "LEDC_LSTIMER3_VALUE.",
    -              "offset": 188,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LSTIMER3_CNT": {
    -                    "description": "reg_lstimer3_cnt.",
    -                    "offset": 0,
    -                    "size": 14,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_RAW": {
    -              "description": "LEDC_INT_RAW.",
    -              "offset": 192,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LSTIMER0_OVF_INT_RAW": {
    -                    "description": "reg_lstimer0_ovf_int_raw.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "LSTIMER1_OVF_INT_RAW": {
    -                    "description": "reg_lstimer1_ovf_int_raw.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "LSTIMER2_OVF_INT_RAW": {
    -                    "description": "reg_lstimer2_ovf_int_raw.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "LSTIMER3_OVF_INT_RAW": {
    -                    "description": "reg_lstimer3_ovf_int_raw.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DUTY_CHNG_END_LSCH0_INT_RAW": {
    -                    "description": "reg_duty_chng_end_lsch0_int_raw.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DUTY_CHNG_END_LSCH1_INT_RAW": {
    -                    "description": "reg_duty_chng_end_lsch1_int_raw.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DUTY_CHNG_END_LSCH2_INT_RAW": {
    -                    "description": "reg_duty_chng_end_lsch2_int_raw.",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DUTY_CHNG_END_LSCH3_INT_RAW": {
    -                    "description": "reg_duty_chng_end_lsch3_int_raw.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DUTY_CHNG_END_LSCH4_INT_RAW": {
    -                    "description": "reg_duty_chng_end_lsch4_int_raw.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DUTY_CHNG_END_LSCH5_INT_RAW": {
    -                    "description": "reg_duty_chng_end_lsch5_int_raw.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OVF_CNT_LSCH0_INT_RAW": {
    -                    "description": "reg_ovf_cnt_lsch0_int_raw.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OVF_CNT_LSCH1_INT_RAW": {
    -                    "description": "reg_ovf_cnt_lsch1_int_raw.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OVF_CNT_LSCH2_INT_RAW": {
    -                    "description": "reg_ovf_cnt_lsch2_int_raw.",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OVF_CNT_LSCH3_INT_RAW": {
    -                    "description": "reg_ovf_cnt_lsch3_int_raw.",
    -                    "offset": 13,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OVF_CNT_LSCH4_INT_RAW": {
    -                    "description": "reg_ovf_cnt_lsch4_int_raw.",
    -                    "offset": 14,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OVF_CNT_LSCH5_INT_RAW": {
    -                    "description": "reg_ovf_cnt_lsch5_int_raw.",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ST": {
    -              "description": "LEDC_INT_ST.",
    -              "offset": 196,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LSTIMER0_OVF_INT_ST": {
    -                    "description": "reg_lstimer0_ovf_int_st.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "LSTIMER1_OVF_INT_ST": {
    -                    "description": "reg_lstimer1_ovf_int_st.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "LSTIMER2_OVF_INT_ST": {
    -                    "description": "reg_lstimer2_ovf_int_st.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "LSTIMER3_OVF_INT_ST": {
    -                    "description": "reg_lstimer3_ovf_int_st.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DUTY_CHNG_END_LSCH0_INT_ST": {
    -                    "description": "reg_duty_chng_end_lsch0_int_st.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DUTY_CHNG_END_LSCH1_INT_ST": {
    -                    "description": "reg_duty_chng_end_lsch1_int_st.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DUTY_CHNG_END_LSCH2_INT_ST": {
    -                    "description": "reg_duty_chng_end_lsch2_int_st.",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DUTY_CHNG_END_LSCH3_INT_ST": {
    -                    "description": "reg_duty_chng_end_lsch3_int_st.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DUTY_CHNG_END_LSCH4_INT_ST": {
    -                    "description": "reg_duty_chng_end_lsch4_int_st.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DUTY_CHNG_END_LSCH5_INT_ST": {
    -                    "description": "reg_duty_chng_end_lsch5_int_st.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OVF_CNT_LSCH0_INT_ST": {
    -                    "description": "reg_ovf_cnt_lsch0_int_st.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OVF_CNT_LSCH1_INT_ST": {
    -                    "description": "reg_ovf_cnt_lsch1_int_st.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OVF_CNT_LSCH2_INT_ST": {
    -                    "description": "reg_ovf_cnt_lsch2_int_st.",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OVF_CNT_LSCH3_INT_ST": {
    -                    "description": "reg_ovf_cnt_lsch3_int_st.",
    -                    "offset": 13,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OVF_CNT_LSCH4_INT_ST": {
    -                    "description": "reg_ovf_cnt_lsch4_int_st.",
    -                    "offset": 14,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OVF_CNT_LSCH5_INT_ST": {
    -                    "description": "reg_ovf_cnt_lsch5_int_st.",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ENA": {
    -              "description": "LEDC_INT_ENA.",
    -              "offset": 200,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LSTIMER0_OVF_INT_ENA": {
    -                    "description": "reg_lstimer0_ovf_int_ena.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "LSTIMER1_OVF_INT_ENA": {
    -                    "description": "reg_lstimer1_ovf_int_ena.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "LSTIMER2_OVF_INT_ENA": {
    -                    "description": "reg_lstimer2_ovf_int_ena.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "LSTIMER3_OVF_INT_ENA": {
    -                    "description": "reg_lstimer3_ovf_int_ena.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "DUTY_CHNG_END_LSCH0_INT_ENA": {
    -                    "description": "reg_duty_chng_end_lsch0_int_ena.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "DUTY_CHNG_END_LSCH1_INT_ENA": {
    -                    "description": "reg_duty_chng_end_lsch1_int_ena.",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "DUTY_CHNG_END_LSCH2_INT_ENA": {
    -                    "description": "reg_duty_chng_end_lsch2_int_ena.",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "DUTY_CHNG_END_LSCH3_INT_ENA": {
    -                    "description": "reg_duty_chng_end_lsch3_int_ena.",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "DUTY_CHNG_END_LSCH4_INT_ENA": {
    -                    "description": "reg_duty_chng_end_lsch4_int_ena.",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "DUTY_CHNG_END_LSCH5_INT_ENA": {
    -                    "description": "reg_duty_chng_end_lsch5_int_ena.",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "OVF_CNT_LSCH0_INT_ENA": {
    -                    "description": "reg_ovf_cnt_lsch0_int_ena.",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "OVF_CNT_LSCH1_INT_ENA": {
    -                    "description": "reg_ovf_cnt_lsch1_int_ena.",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "OVF_CNT_LSCH2_INT_ENA": {
    -                    "description": "reg_ovf_cnt_lsch2_int_ena.",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "OVF_CNT_LSCH3_INT_ENA": {
    -                    "description": "reg_ovf_cnt_lsch3_int_ena.",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "OVF_CNT_LSCH4_INT_ENA": {
    -                    "description": "reg_ovf_cnt_lsch4_int_ena.",
    -                    "offset": 14,
    -                    "size": 1
    -                  },
    -                  "OVF_CNT_LSCH5_INT_ENA": {
    -                    "description": "reg_ovf_cnt_lsch5_int_ena.",
    -                    "offset": 15,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INT_CLR": {
    -              "description": "LEDC_INT_CLR.",
    -              "offset": 204,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LSTIMER0_OVF_INT_CLR": {
    -                    "description": "reg_lstimer0_ovf_int_clr.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "LSTIMER1_OVF_INT_CLR": {
    -                    "description": "reg_lstimer1_ovf_int_clr.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "LSTIMER2_OVF_INT_CLR": {
    -                    "description": "reg_lstimer2_ovf_int_clr.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "LSTIMER3_OVF_INT_CLR": {
    -                    "description": "reg_lstimer3_ovf_int_clr.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "DUTY_CHNG_END_LSCH0_INT_CLR": {
    -                    "description": "reg_duty_chng_end_lsch0_int_clr.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "DUTY_CHNG_END_LSCH1_INT_CLR": {
    -                    "description": "reg_duty_chng_end_lsch1_int_clr.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "DUTY_CHNG_END_LSCH2_INT_CLR": {
    -                    "description": "reg_duty_chng_end_lsch2_int_clr.",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "DUTY_CHNG_END_LSCH3_INT_CLR": {
    -                    "description": "reg_duty_chng_end_lsch3_int_clr.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "DUTY_CHNG_END_LSCH4_INT_CLR": {
    -                    "description": "reg_duty_chng_end_lsch4_int_clr.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "DUTY_CHNG_END_LSCH5_INT_CLR": {
    -                    "description": "reg_duty_chng_end_lsch5_int_clr.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OVF_CNT_LSCH0_INT_CLR": {
    -                    "description": "reg_ovf_cnt_lsch0_int_clr.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OVF_CNT_LSCH1_INT_CLR": {
    -                    "description": "reg_ovf_cnt_lsch1_int_clr.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OVF_CNT_LSCH2_INT_CLR": {
    -                    "description": "reg_ovf_cnt_lsch2_int_clr.",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OVF_CNT_LSCH3_INT_CLR": {
    -                    "description": "reg_ovf_cnt_lsch3_int_clr.",
    -                    "offset": 13,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OVF_CNT_LSCH4_INT_CLR": {
    -                    "description": "reg_ovf_cnt_lsch4_int_clr.",
    -                    "offset": 14,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OVF_CNT_LSCH5_INT_CLR": {
    -                    "description": "reg_ovf_cnt_lsch5_int_clr.",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CONF": {
    -              "description": "LEDC_CONF.",
    -              "offset": 208,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "APB_CLK_SEL": {
    -                    "description": "reg_apb_clk_sel.",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "CLK_EN": {
    -                    "description": "reg_clk_en.",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DATE": {
    -              "description": "LEDC_DATE.",
    -              "offset": 252,
    -              "size": 32,
    -              "reset_value": 419829504,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LEDC_DATE": {
    -                    "description": "reg_ledc_date.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "RMT": {
    -        "description": "Remote Control Peripheral",
    -        "children": {
    -          "registers": {
    -            "CH0DATA": {
    -              "description": "RMT_CH0DATA_REG.",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATA": {
    -                    "description": "Reserved.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "CH1DATA": {
    -              "description": "RMT_CH1DATA_REG.",
    -              "offset": 4,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATA": {
    -                    "description": "Reserved.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "CH2DATA": {
    -              "description": "RMT_CH2DATA_REG.",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATA": {
    -                    "description": "Reserved.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "CH3DATA": {
    -              "description": "RMT_CH3DATA_REG.",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATA": {
    -                    "description": "Reserved.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "CH2CONF1": {
    -              "description": "RMT_CH2CONF1_REG.",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 488,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_EN": {
    -                    "description": "reg_rx_en_ch2.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "MEM_WR_RST": {
    -                    "description": "reg_mem_wr_rst_ch2.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "APB_MEM_RST": {
    -                    "description": "reg_apb_mem_rst_ch2.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "MEM_OWNER": {
    -                    "description": "reg_mem_owner_ch2.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "RX_FILTER_EN": {
    -                    "description": "reg_rx_filter_en_ch2.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "RX_FILTER_THRES": {
    -                    "description": "reg_rx_filter_thres_ch2.",
    -                    "offset": 5,
    -                    "size": 8
    -                  },
    -                  "MEM_RX_WRAP_EN": {
    -                    "description": "reg_mem_rx_wrap_en_ch2.",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "AFIFO_RST": {
    -                    "description": "reg_afifo_rst_ch2.",
    -                    "offset": 14,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "CONF_UPDATE": {
    -                    "description": "reg_conf_update_ch2.",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CH3CONF1": {
    -              "description": "RMT_CH3CONF1_REG.",
    -              "offset": 36,
    -              "size": 32,
    -              "reset_value": 488,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_EN": {
    -                    "description": "reg_rx_en_ch3.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "MEM_WR_RST": {
    -                    "description": "reg_mem_wr_rst_ch3.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "APB_MEM_RST": {
    -                    "description": "reg_apb_mem_rst_ch3.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "MEM_OWNER": {
    -                    "description": "reg_mem_owner_ch3.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "RX_FILTER_EN": {
    -                    "description": "reg_rx_filter_en_ch3.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "RX_FILTER_THRES": {
    -                    "description": "reg_rx_filter_thres_ch3.",
    -                    "offset": 5,
    -                    "size": 8
    -                  },
    -                  "MEM_RX_WRAP_EN": {
    -                    "description": "reg_mem_rx_wrap_en_ch3.",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "AFIFO_RST": {
    -                    "description": "reg_afifo_rst_ch3.",
    -                    "offset": 14,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "CONF_UPDATE": {
    -                    "description": "reg_conf_update_ch3.",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CH0STATUS": {
    -              "description": "RMT_CH0STATUS_REG.",
    -              "offset": 40,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "MEM_RADDR_EX": {
    -                    "description": "reg_mem_raddr_ex_ch0.",
    -                    "offset": 0,
    -                    "size": 9,
    -                    "access": "read-only"
    -                  },
    -                  "STATE": {
    -                    "description": "reg_state_ch0.",
    -                    "offset": 9,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "APB_MEM_WADDR": {
    -                    "description": "reg_apb_mem_waddr_ch0.",
    -                    "offset": 12,
    -                    "size": 9,
    -                    "access": "read-only"
    -                  },
    -                  "APB_MEM_RD_ERR": {
    -                    "description": "reg_apb_mem_rd_err_ch0.",
    -                    "offset": 21,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "MEM_EMPTY": {
    -                    "description": "reg_mem_empty_ch0.",
    -                    "offset": 22,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "APB_MEM_WR_ERR": {
    -                    "description": "reg_apb_mem_wr_err_ch0.",
    -                    "offset": 23,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "APB_MEM_RADDR": {
    -                    "description": "reg_apb_mem_raddr_ch0.",
    -                    "offset": 24,
    -                    "size": 8,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CH1STATUS": {
    -              "description": "RMT_CH1STATUS_REG.",
    -              "offset": 44,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "MEM_RADDR_EX": {
    -                    "description": "reg_mem_raddr_ex_ch1.",
    -                    "offset": 0,
    -                    "size": 9,
    -                    "access": "read-only"
    -                  },
    -                  "STATE": {
    -                    "description": "reg_state_ch1.",
    -                    "offset": 9,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "APB_MEM_WADDR": {
    -                    "description": "reg_apb_mem_waddr_ch1.",
    -                    "offset": 12,
    -                    "size": 9,
    -                    "access": "read-only"
    -                  },
    -                  "APB_MEM_RD_ERR": {
    -                    "description": "reg_apb_mem_rd_err_ch1.",
    -                    "offset": 21,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "MEM_EMPTY": {
    -                    "description": "reg_mem_empty_ch1.",
    -                    "offset": 22,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "APB_MEM_WR_ERR": {
    -                    "description": "reg_apb_mem_wr_err_ch1.",
    -                    "offset": 23,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "APB_MEM_RADDR": {
    -                    "description": "reg_apb_mem_raddr_ch1.",
    -                    "offset": 24,
    -                    "size": 8,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CH2STATUS": {
    -              "description": "RMT_CH2STATUS_REG.",
    -              "offset": 48,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "MEM_WADDR_EX": {
    -                    "description": "reg_mem_waddr_ex_ch2.",
    -                    "offset": 0,
    -                    "size": 9,
    -                    "access": "read-only"
    -                  },
    -                  "APB_MEM_RADDR": {
    -                    "description": "reg_apb_mem_raddr_ch2.",
    -                    "offset": 12,
    -                    "size": 9,
    -                    "access": "read-only"
    -                  },
    -                  "STATE": {
    -                    "description": "reg_state_ch2.",
    -                    "offset": 22,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "MEM_OWNER_ERR": {
    -                    "description": "reg_mem_owner_err_ch2.",
    -                    "offset": 25,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "MEM_FULL": {
    -                    "description": "reg_mem_full_ch2.",
    -                    "offset": 26,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "APB_MEM_RD_ERR": {
    -                    "description": "reg_apb_mem_rd_err_ch2.",
    -                    "offset": 27,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CH3STATUS": {
    -              "description": "RMT_CH3STATUS_REG.",
    -              "offset": 52,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "MEM_WADDR_EX": {
    -                    "description": "reg_mem_waddr_ex_ch3.",
    -                    "offset": 0,
    -                    "size": 9,
    -                    "access": "read-only"
    -                  },
    -                  "APB_MEM_RADDR": {
    -                    "description": "reg_apb_mem_raddr_ch3.",
    -                    "offset": 12,
    -                    "size": 9,
    -                    "access": "read-only"
    -                  },
    -                  "STATE": {
    -                    "description": "reg_state_ch3.",
    -                    "offset": 22,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "MEM_OWNER_ERR": {
    -                    "description": "reg_mem_owner_err_ch3.",
    -                    "offset": 25,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "MEM_FULL": {
    -                    "description": "reg_mem_full_ch3.",
    -                    "offset": 26,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "APB_MEM_RD_ERR": {
    -                    "description": "reg_apb_mem_rd_err_ch3.",
    -                    "offset": 27,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_RAW": {
    -              "description": "RMT_INT_RAW_REG.",
    -              "offset": 56,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CH2_RX_THR_EVENT_INT_RAW": {
    -                    "description": "reg_ch2_rx_thr_event_int_raw.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CH3_RX_THR_EVENT_INT_RAW": {
    -                    "description": "reg_ch3_rx_thr_event_int_raw.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ST": {
    -              "description": "RMT_INT_ST_REG.",
    -              "offset": 60,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CH2_RX_THR_EVENT_INT_ST": {
    -                    "description": "reg_ch2_rx_thr_event_int_st.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CH3_RX_THR_EVENT_INT_ST": {
    -                    "description": "reg_ch3_rx_thr_event_int_st.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ENA": {
    -              "description": "RMT_INT_ENA_REG.",
    -              "offset": 64,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CH2_RX_THR_EVENT_INT_ENA": {
    -                    "description": "reg_ch2_rx_thr_event_int_ena.",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "CH3_RX_THR_EVENT_INT_ENA": {
    -                    "description": "reg_ch3_rx_thr_event_int_ena.",
    -                    "offset": 11,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INT_CLR": {
    -              "description": "RMT_INT_CLR_REG.",
    -              "offset": 68,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CH2_RX_THR_EVENT_INT_CLR": {
    -                    "description": "reg_ch2_rx_thr_event_int_clr.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "CH3_RX_THR_EVENT_INT_CLR": {
    -                    "description": "reg_ch3_rx_thr_event_int_clr.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CH0CARRIER_DUTY": {
    -              "description": "RMT_CH0CARRIER_DUTY_REG.",
    -              "offset": 72,
    -              "size": 32,
    -              "reset_value": 4194368,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CARRIER_LOW": {
    -                    "description": "reg_carrier_low_ch0.",
    -                    "offset": 0,
    -                    "size": 16
    -                  },
    -                  "CARRIER_HIGH": {
    -                    "description": "reg_carrier_high_ch0.",
    -                    "offset": 16,
    -                    "size": 16
    -                  }
    -                }
    -              }
    -            },
    -            "CH1CARRIER_DUTY": {
    -              "description": "RMT_CH1CARRIER_DUTY_REG.",
    -              "offset": 76,
    -              "size": 32,
    -              "reset_value": 4194368,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CARRIER_LOW": {
    -                    "description": "reg_carrier_low_ch1.",
    -                    "offset": 0,
    -                    "size": 16
    -                  },
    -                  "CARRIER_HIGH": {
    -                    "description": "reg_carrier_high_ch1.",
    -                    "offset": 16,
    -                    "size": 16
    -                  }
    -                }
    -              }
    -            },
    -            "CH2_RX_CARRIER_RM": {
    -              "description": "RMT_CH2_RX_CARRIER_RM_REG.",
    -              "offset": 80,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CARRIER_LOW_THRES": {
    -                    "description": "reg_carrier_low_thres_ch2.",
    -                    "offset": 0,
    -                    "size": 16
    -                  },
    -                  "CARRIER_HIGH_THRES": {
    -                    "description": "reg_carrier_high_thres_ch2.",
    -                    "offset": 16,
    -                    "size": 16
    -                  }
    -                }
    -              }
    -            },
    -            "CH3_RX_CARRIER_RM": {
    -              "description": "RMT_CH3_RX_CARRIER_RM_REG.",
    -              "offset": 84,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CARRIER_LOW_THRES": {
    -                    "description": "reg_carrier_low_thres_ch3.",
    -                    "offset": 0,
    -                    "size": 16
    -                  },
    -                  "CARRIER_HIGH_THRES": {
    -                    "description": "reg_carrier_high_thres_ch3.",
    -                    "offset": 16,
    -                    "size": 16
    -                  }
    -                }
    -              }
    -            },
    -            "SYS_CONF": {
    -              "description": "RMT_SYS_CONF_REG.",
    -              "offset": 104,
    -              "size": 32,
    -              "reset_value": 83886096,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "APB_FIFO_MASK": {
    -                    "description": "reg_apb_fifo_mask.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "MEM_CLK_FORCE_ON": {
    -                    "description": "reg_mem_clk_force_on.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "MEM_FORCE_PD": {
    -                    "description": "reg_rmt_mem_force_pd.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "MEM_FORCE_PU": {
    -                    "description": "reg_rmt_mem_force_pu.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "SCLK_DIV_NUM": {
    -                    "description": "reg_rmt_sclk_div_num.",
    -                    "offset": 4,
    -                    "size": 8
    -                  },
    -                  "SCLK_DIV_A": {
    -                    "description": "reg_rmt_sclk_div_a.",
    -                    "offset": 12,
    -                    "size": 6
    -                  },
    -                  "SCLK_DIV_B": {
    -                    "description": "reg_rmt_sclk_div_b.",
    -                    "offset": 18,
    -                    "size": 6
    -                  },
    -                  "SCLK_SEL": {
    -                    "description": "reg_rmt_sclk_sel.",
    -                    "offset": 24,
    -                    "size": 2
    -                  },
    -                  "SCLK_ACTIVE": {
    -                    "description": "reg_rmt_sclk_active.",
    -                    "offset": 26,
    -                    "size": 1
    -                  },
    -                  "CLK_EN": {
    -                    "description": "reg_clk_en.",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "TX_SIM": {
    -              "description": "RMT_TX_SIM_REG.",
    -              "offset": 108,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_SIM_CH0": {
    -                    "description": "reg_rmt_tx_sim_ch0.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "TX_SIM_CH1": {
    -                    "description": "reg_rmt_tx_sim_ch1.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "TX_SIM_EN": {
    -                    "description": "reg_rmt_tx_sim_en.",
    -                    "offset": 2,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "REF_CNT_RST": {
    -              "description": "RMT_REF_CNT_RST_REG.",
    -              "offset": 112,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CH0": {
    -                    "description": "reg_ref_cnt_rst_ch0.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "CH1": {
    -                    "description": "reg_ref_cnt_rst_ch1.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "CH2": {
    -                    "description": "reg_ref_cnt_rst_ch2.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "CH3": {
    -                    "description": "reg_ref_cnt_rst_ch3.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DATE": {
    -              "description": "RMT_DATE_REG.",
    -              "offset": 204,
    -              "size": 32,
    -              "reset_value": 33579569,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATE": {
    -                    "description": "reg_rmt_date.",
    -                    "offset": 0,
    -                    "size": 28
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "RNG": {
    -        "description": "Hardware random number generator",
    -        "children": {
    -          "registers": {
    -            "DATA": {
    -              "description": "Random number data",
    -              "offset": 176,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295
    -            }
    -          }
    -        }
    -      },
    -      "RSA": {
    -        "description": "RSA (Rivest Shamir Adleman) Accelerator",
    -        "children": {
    -          "registers": {
    -            "M_MEM": {
    -              "description": "The memory that stores M",
    -              "offset": 0,
    -              "size": 8,
    -              "count": 16,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295
    -            },
    -            "Z_MEM": {
    -              "description": "The memory that stores Z",
    -              "offset": 512,
    -              "size": 8,
    -              "count": 16,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295
    -            },
    -            "Y_MEM": {
    -              "description": "The memory that stores Y",
    -              "offset": 1024,
    -              "size": 8,
    -              "count": 16,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295
    -            },
    -            "X_MEM": {
    -              "description": "The memory that stores X",
    -              "offset": 1536,
    -              "size": 8,
    -              "count": 16,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295
    -            },
    -            "M_PRIME": {
    -              "description": "RSA M_prime register",
    -              "offset": 2048,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "M_PRIME": {
    -                    "description": "Those bits stores m'",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "MODE": {
    -              "description": "RSA mode register",
    -              "offset": 2052,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "MODE": {
    -                    "description": "rsa mode (rsa length).",
    -                    "offset": 0,
    -                    "size": 7
    -                  }
    -                }
    -              }
    -            },
    -            "QUERY_CLEAN": {
    -              "description": "RSA query clean register",
    -              "offset": 2056,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "QUERY_CLEAN": {
    -                    "description": "query clean",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "SET_START_MODEXP": {
    -              "description": "RSA modular exponentiation trigger register.",
    -              "offset": 2060,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SET_START_MODEXP": {
    -                    "description": "start modular exponentiation",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "SET_START_MODMULT": {
    -              "description": "RSA modular multiplication trigger register.",
    -              "offset": 2064,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SET_START_MODMULT": {
    -                    "description": "start modular multiplication",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "SET_START_MULT": {
    -              "description": "RSA normal multiplication trigger register.",
    -              "offset": 2068,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SET_START_MULT": {
    -                    "description": "start multiplicaiton",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "QUERY_IDLE": {
    -              "description": "RSA query idle register",
    -              "offset": 2072,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "QUERY_IDLE": {
    -                    "description": "query rsa idle. 1'b0: busy, 1'b1: idle",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_CLR": {
    -              "description": "RSA interrupt clear register",
    -              "offset": 2076,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CLEAR_INTERRUPT": {
    -                    "description": "set this bit to clear RSA interrupt.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CONSTANT_TIME": {
    -              "description": "RSA constant time option register",
    -              "offset": 2080,
    -              "size": 32,
    -              "reset_value": 1,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CONSTANT_TIME": {
    -                    "description": "Configure this bit to 0 for acceleration. 0: with acceleration, 1: without acceleration(defalut).",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "SEARCH_ENABLE": {
    -              "description": "RSA search option",
    -              "offset": 2084,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SEARCH_ENABLE": {
    -                    "description": "Configure this bit to 1 for acceleration. 1: with acceleration, 0: without acceleration(default). This option should be used together with RSA_SEARCH_POS.",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "SEARCH_POS": {
    -              "description": "RSA search position configure register",
    -              "offset": 2088,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SEARCH_POS": {
    -                    "description": "Configure this field to set search position. This field should be used together with RSA_SEARCH_ENABLE. The field is only meaningful when RSA_SEARCH_ENABLE is high.",
    -                    "offset": 0,
    -                    "size": 12
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ENA": {
    -              "description": "RSA interrupt enable register",
    -              "offset": 2092,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INT_ENA": {
    -                    "description": "Set this bit to enable interrupt that occurs when rsa calculation is done. 1'b0: disable, 1'b1: enable(default).",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DATE": {
    -              "description": "RSA version control register",
    -              "offset": 2096,
    -              "size": 32,
    -              "reset_value": 538969624,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATE": {
    -                    "description": "rsa version information",
    -                    "offset": 0,
    -                    "size": 30
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "RTC_CNTL": {
    -        "description": "Real-Time Clock Control",
    -        "children": {
    -          "registers": {
    -            "OPTIONS0": {
    -              "description": "rtc configure register",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 469803008,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SW_STALL_APPCPU_C0": {
    -                    "description": "{reg_sw_stall_appcpu_c1[5:0],  reg_sw_stall_appcpu_c0[1:0]} == 0x86 will stall APP CPU",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "SW_STALL_PROCPU_C0": {
    -                    "description": "{reg_sw_stall_procpu_c1[5:0],  reg_sw_stall_procpu_c0[1:0]} == 0x86 will stall PRO CPU",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "SW_APPCPU_RST": {
    -                    "description": "APP CPU SW reset",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SW_PROCPU_RST": {
    -                    "description": "PRO CPU SW reset",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "BB_I2C_FORCE_PD": {
    -                    "description": "BB_I2C force power down",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "BB_I2C_FORCE_PU": {
    -                    "description": "BB_I2C force power up",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "BBPLL_I2C_FORCE_PD": {
    -                    "description": "BB_PLL _I2C force power down",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "BBPLL_I2C_FORCE_PU": {
    -                    "description": "BB_PLL_I2C force power up",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "BBPLL_FORCE_PD": {
    -                    "description": "BB_PLL force power down",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "BBPLL_FORCE_PU": {
    -                    "description": "BB_PLL force power up",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "XTL_FORCE_PD": {
    -                    "description": "crystall force power down",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "XTL_FORCE_PU": {
    -                    "description": "crystall force power up",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "XTL_EN_WAIT": {
    -                    "description": "wait bias_sleep and current source wakeup",
    -                    "offset": 14,
    -                    "size": 4
    -                  },
    -                  "XTL_EXT_CTR_SEL": {
    -                    "description": "analog configure",
    -                    "offset": 20,
    -                    "size": 3
    -                  },
    -                  "XTL_FORCE_ISO": {
    -                    "description": "analog configure",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "PLL_FORCE_ISO": {
    -                    "description": "analog configure",
    -                    "offset": 24,
    -                    "size": 1
    -                  },
    -                  "ANALOG_FORCE_ISO": {
    -                    "description": "analog configure",
    -                    "offset": 25,
    -                    "size": 1
    -                  },
    -                  "XTL_FORCE_NOISO": {
    -                    "description": "analog configure",
    -                    "offset": 26,
    -                    "size": 1
    -                  },
    -                  "PLL_FORCE_NOISO": {
    -                    "description": "analog configure",
    -                    "offset": 27,
    -                    "size": 1
    -                  },
    -                  "ANALOG_FORCE_NOISO": {
    -                    "description": "analog configure",
    -                    "offset": 28,
    -                    "size": 1
    -                  },
    -                  "DG_WRAP_FORCE_RST": {
    -                    "description": "digital wrap force reset in deep sleep",
    -                    "offset": 29,
    -                    "size": 1
    -                  },
    -                  "DG_WRAP_FORCE_NORST": {
    -                    "description": "digital core force no reset in deep sleep",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "SW_SYS_RST": {
    -                    "description": "SW system reset",
    -                    "offset": 31,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "SLP_TIMER0": {
    -              "description": "rtc configure register",
    -              "offset": 4,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SLP_VAL_LO": {
    -                    "description": "configure the  sleep time",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "SLP_TIMER1": {
    -              "description": "rtc configure register",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SLP_VAL_HI": {
    -                    "description": "RTC sleep timer high 16 bits",
    -                    "offset": 0,
    -                    "size": 16
    -                  },
    -                  "RTC_MAIN_TIMER_ALARM_EN": {
    -                    "description": "timer alarm enable bit",
    -                    "offset": 16,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "TIME_UPDATE": {
    -              "description": "rtc configure register",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_SYS_STALL": {
    -                    "description": "Enable to record system stall time",
    -                    "offset": 27,
    -                    "size": 1
    -                  },
    -                  "TIMER_XTL_OFF": {
    -                    "description": "Enable to record 40M XTAL OFF time",
    -                    "offset": 28,
    -                    "size": 1
    -                  },
    -                  "TIMER_SYS_RST": {
    -                    "description": "enable to record system reset time",
    -                    "offset": 29,
    -                    "size": 1
    -                  },
    -                  "RTC_TIME_UPDATE": {
    -                    "description": "Set 1: to update register with RTC timer",
    -                    "offset": 31,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "TIME_LOW0": {
    -              "description": "rtc configure register",
    -              "offset": 16,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_TIMER_VALUE0_LOW": {
    -                    "description": "RTC timer low 32 bits",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "TIME_HIGH0": {
    -              "description": "rtc configure register",
    -              "offset": 20,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_TIMER_VALUE0_HIGH": {
    -                    "description": "RTC timer high 16 bits",
    -                    "offset": 0,
    -                    "size": 16,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "STATE0": {
    -              "description": "rtc configure register",
    -              "offset": 24,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_SW_CPU_INT": {
    -                    "description": "rtc software interrupt to main cpu",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RTC_SLP_REJECT_CAUSE_CLR": {
    -                    "description": "clear rtc sleep reject cause",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "APB2RTC_BRIDGE_SEL": {
    -                    "description": "1: APB to RTC using bridge",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "SDIO_ACTIVE_IND": {
    -                    "description": "SDIO active indication",
    -                    "offset": 28,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SLP_WAKEUP": {
    -                    "description": "leep wakeup bit",
    -                    "offset": 29,
    -                    "size": 1
    -                  },
    -                  "SLP_REJECT": {
    -                    "description": "leep reject bit",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "SLEEP_EN": {
    -                    "description": "sleep enable bit",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "TIMER1": {
    -              "description": "rtc configure register",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 672400387,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_STALL_EN": {
    -                    "description": "CPU stall enable bit",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "CPU_STALL_WAIT": {
    -                    "description": "CPU stall wait cycles in fast_clk_rtc",
    -                    "offset": 1,
    -                    "size": 5
    -                  },
    -                  "CK8M_WAIT": {
    -                    "description": "CK8M wait cycles in slow_clk_rtc",
    -                    "offset": 6,
    -                    "size": 8
    -                  },
    -                  "XTL_BUF_WAIT": {
    -                    "description": "XTAL wait cycles in slow_clk_rtc",
    -                    "offset": 14,
    -                    "size": 10
    -                  },
    -                  "PLL_BUF_WAIT": {
    -                    "description": "PLL wait cycles in slow_clk_rtc",
    -                    "offset": 24,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "TIMER2": {
    -              "description": "rtc configure register",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 16777216,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "MIN_TIME_CK8M_OFF": {
    -                    "description": "minimal cycles in slow_clk_rtc for CK8M in power down state",
    -                    "offset": 24,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "TIMER3": {
    -              "description": "rtc configure register",
    -              "offset": 36,
    -              "size": 32,
    -              "reset_value": 168299016,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WIFI_WAIT_TIMER": {
    -                    "description": "wifi power domain wakeup time",
    -                    "offset": 0,
    -                    "size": 9
    -                  },
    -                  "WIFI_POWERUP_TIMER": {
    -                    "description": "wifi power domain power on time",
    -                    "offset": 9,
    -                    "size": 7
    -                  },
    -                  "BT_WAIT_TIMER": {
    -                    "description": "bt power domain wakeup time",
    -                    "offset": 16,
    -                    "size": 9
    -                  },
    -                  "BT_POWERUP_TIMER": {
    -                    "description": "bt power domain power on time",
    -                    "offset": 25,
    -                    "size": 7
    -                  }
    -                }
    -              }
    -            },
    -            "TIMER4": {
    -              "description": "rtc configure register",
    -              "offset": 40,
    -              "size": 32,
    -              "reset_value": 270535176,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_TOP_WAIT_TIMER": {
    -                    "description": "cpu top power domain wakeup time",
    -                    "offset": 0,
    -                    "size": 9
    -                  },
    -                  "CPU_TOP_POWERUP_TIMER": {
    -                    "description": "cpu top power domain power on time",
    -                    "offset": 9,
    -                    "size": 7
    -                  },
    -                  "DG_WRAP_WAIT_TIMER": {
    -                    "description": "digital wrap power domain wakeup time",
    -                    "offset": 16,
    -                    "size": 9
    -                  },
    -                  "DG_WRAP_POWERUP_TIMER": {
    -                    "description": "digital wrap power domain power on time",
    -                    "offset": 25,
    -                    "size": 7
    -                  }
    -                }
    -              }
    -            },
    -            "TIMER5": {
    -              "description": "rtc configure register",
    -              "offset": 44,
    -              "size": 32,
    -              "reset_value": 32768,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "MIN_SLP_VAL": {
    -                    "description": "minimal sleep cycles in slow_clk_rtc",
    -                    "offset": 8,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "TIMER6": {
    -              "description": "rtc configure register",
    -              "offset": 48,
    -              "size": 32,
    -              "reset_value": 168296448,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DG_PERI_WAIT_TIMER": {
    -                    "description": "digital peri power domain wakeup time",
    -                    "offset": 16,
    -                    "size": 9
    -                  },
    -                  "DG_PERI_POWERUP_TIMER": {
    -                    "description": "digital peri power domain power on time",
    -                    "offset": 25,
    -                    "size": 7
    -                  }
    -                }
    -              }
    -            },
    -            "ANA_CONF": {
    -              "description": "rtc configure register",
    -              "offset": 52,
    -              "size": 32,
    -              "reset_value": 12845056,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RESET_POR_FORCE_PD": {
    -                    "description": "force no bypass i2c power on reset",
    -                    "offset": 18,
    -                    "size": 1
    -                  },
    -                  "RESET_POR_FORCE_PU": {
    -                    "description": "force bypass i2c power on reset",
    -                    "offset": 19,
    -                    "size": 1
    -                  },
    -                  "GLITCH_RST_EN": {
    -                    "description": "enable glitch reset",
    -                    "offset": 20,
    -                    "size": 1
    -                  },
    -                  "SAR_I2C_PU": {
    -                    "description": "PLLA force power up",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "PLLA_FORCE_PD": {
    -                    "description": "PLLA force power down",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "PLLA_FORCE_PU": {
    -                    "description": "PLLA force power up",
    -                    "offset": 24,
    -                    "size": 1
    -                  },
    -                  "BBPLL_CAL_SLP_START": {
    -                    "description": "start BBPLL calibration during sleep",
    -                    "offset": 25,
    -                    "size": 1
    -                  },
    -                  "PVTMON_PU": {
    -                    "description": "1: PVTMON power up",
    -                    "offset": 26,
    -                    "size": 1
    -                  },
    -                  "TXRF_I2C_PU": {
    -                    "description": "1: TXRF_I2C power up",
    -                    "offset": 27,
    -                    "size": 1
    -                  },
    -                  "RFRX_PBUS_PU": {
    -                    "description": "1: RFRX_PBUS power up",
    -                    "offset": 28,
    -                    "size": 1
    -                  },
    -                  "CKGEN_I2C_PU": {
    -                    "description": "1: CKGEN_I2C power up",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "PLL_I2C_PU": {
    -                    "description": "power up pll i2c",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "RESET_STATE": {
    -              "description": "rtc configure register",
    -              "offset": 56,
    -              "size": 32,
    -              "reset_value": 12288,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RESET_CAUSE_PROCPU": {
    -                    "description": "reset cause of PRO CPU",
    -                    "offset": 0,
    -                    "size": 6,
    -                    "access": "read-only"
    -                  },
    -                  "RESET_CAUSE_APPCPU": {
    -                    "description": "reset cause of APP CPU",
    -                    "offset": 6,
    -                    "size": 6,
    -                    "access": "read-only"
    -                  },
    -                  "STAT_VECTOR_SEL_APPCPU": {
    -                    "description": "APP CPU state vector sel",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "STAT_VECTOR_SEL_PROCPU": {
    -                    "description": "PRO CPU state vector sel",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "ALL_RESET_FLAG_PROCPU": {
    -                    "description": "PRO CPU reset_flag",
    -                    "offset": 14,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "ALL_RESET_FLAG_APPCPU": {
    -                    "description": "APP CPU reset flag",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "ALL_RESET_FLAG_CLR_PROCPU": {
    -                    "description": "clear PRO CPU reset_flag",
    -                    "offset": 16,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "ALL_RESET_FLAG_CLR_APPCPU": {
    -                    "description": "clear APP CPU reset flag",
    -                    "offset": 17,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OCD_HALT_ON_RESET_APPCPU": {
    -                    "description": "APPCPU OcdHaltOnReset",
    -                    "offset": 18,
    -                    "size": 1
    -                  },
    -                  "OCD_HALT_ON_RESET_PROCPU": {
    -                    "description": "PROCPU OcdHaltOnReset",
    -                    "offset": 19,
    -                    "size": 1
    -                  },
    -                  "JTAG_RESET_FLAG_PROCPU": {
    -                    "description": "configure jtag reset configure",
    -                    "offset": 20,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "JTAG_RESET_FLAG_APPCPU": {
    -                    "description": "configure jtag reset configure",
    -                    "offset": 21,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "JTAG_RESET_FLAG_CLR_PROCPU": {
    -                    "description": "configure jtag reset configure",
    -                    "offset": 22,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "JTAG_RESET_FLAG_CLR_APPCPU": {
    -                    "description": "configure jtag reset configure",
    -                    "offset": 23,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RTC_DRESET_MASK_APPCPU": {
    -                    "description": "configure dreset configure",
    -                    "offset": 24,
    -                    "size": 1
    -                  },
    -                  "RTC_DRESET_MASK_PROCPU": {
    -                    "description": "configure dreset configure",
    -                    "offset": 25,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "WAKEUP_STATE": {
    -              "description": "rtc configure register",
    -              "offset": 60,
    -              "size": 32,
    -              "reset_value": 393216,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_WAKEUP_ENA": {
    -                    "description": "wakeup enable bitmap",
    -                    "offset": 15,
    -                    "size": 17
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ENA_RTC": {
    -              "description": "rtc configure register",
    -              "offset": 64,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SLP_WAKEUP_INT_ENA": {
    -                    "description": "enable sleep wakeup interrupt",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "SLP_REJECT_INT_ENA": {
    -                    "description": "enable sleep reject interrupt",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "RTC_WDT_INT_ENA": {
    -                    "description": "enable RTC WDT interrupt",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "RTC_BROWN_OUT_INT_ENA": {
    -                    "description": "enable brown out interrupt",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "RTC_MAIN_TIMER_INT_ENA": {
    -                    "description": "enable RTC main timer interrupt",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "RTC_SWD_INT_ENA": {
    -                    "description": "enable super watch dog interrupt",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "RTC_XTAL32K_DEAD_INT_ENA": {
    -                    "description": "enable xtal32k_dead  interrupt",
    -                    "offset": 16,
    -                    "size": 1
    -                  },
    -                  "RTC_GLITCH_DET_INT_ENA": {
    -                    "description": "enbale gitch det interrupt",
    -                    "offset": 19,
    -                    "size": 1
    -                  },
    -                  "RTC_BBPLL_CAL_INT_ENA": {
    -                    "description": "enbale bbpll cal end interrupt",
    -                    "offset": 20,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INT_RAW_RTC": {
    -              "description": "rtc configure register",
    -              "offset": 68,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SLP_WAKEUP_INT_RAW": {
    -                    "description": "sleep wakeup interrupt raw",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SLP_REJECT_INT_RAW": {
    -                    "description": "sleep reject interrupt raw",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_WDT_INT_RAW": {
    -                    "description": "RTC WDT interrupt raw",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_BROWN_OUT_INT_RAW": {
    -                    "description": "brown out interrupt raw",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_MAIN_TIMER_INT_RAW": {
    -                    "description": "RTC main timer interrupt raw",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_SWD_INT_RAW": {
    -                    "description": "super watch dog interrupt raw",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_XTAL32K_DEAD_INT_RAW": {
    -                    "description": "xtal32k dead detection interrupt raw",
    -                    "offset": 16,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_GLITCH_DET_INT_RAW": {
    -                    "description": "glitch_det_interrupt_raw",
    -                    "offset": 19,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_BBPLL_CAL_INT_RAW": {
    -                    "description": "bbpll cal end interrupt state",
    -                    "offset": 20,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ST_RTC": {
    -              "description": "rtc configure register",
    -              "offset": 72,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SLP_WAKEUP_INT_ST": {
    -                    "description": "sleep wakeup interrupt state",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SLP_REJECT_INT_ST": {
    -                    "description": "sleep reject interrupt state",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_WDT_INT_ST": {
    -                    "description": "RTC WDT interrupt state",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_BROWN_OUT_INT_ST": {
    -                    "description": "brown out interrupt state",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_MAIN_TIMER_INT_ST": {
    -                    "description": "RTC main timer interrupt state",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_SWD_INT_ST": {
    -                    "description": "super watch dog interrupt state",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_XTAL32K_DEAD_INT_ST": {
    -                    "description": "xtal32k dead detection interrupt state",
    -                    "offset": 16,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_GLITCH_DET_INT_ST": {
    -                    "description": "glitch_det_interrupt state",
    -                    "offset": 19,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_BBPLL_CAL_INT_ST": {
    -                    "description": "bbpll cal end interrupt state",
    -                    "offset": 20,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_CLR_RTC": {
    -              "description": "rtc configure register",
    -              "offset": 76,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SLP_WAKEUP_INT_CLR": {
    -                    "description": "Clear sleep wakeup interrupt state",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SLP_REJECT_INT_CLR": {
    -                    "description": "Clear sleep reject interrupt state",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RTC_WDT_INT_CLR": {
    -                    "description": "Clear RTC WDT interrupt state",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RTC_BROWN_OUT_INT_CLR": {
    -                    "description": "Clear brown out interrupt state",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RTC_MAIN_TIMER_INT_CLR": {
    -                    "description": "Clear RTC main timer interrupt state",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RTC_SWD_INT_CLR": {
    -                    "description": "Clear super watch dog interrupt state",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RTC_XTAL32K_DEAD_INT_CLR": {
    -                    "description": "Clear RTC WDT interrupt state",
    -                    "offset": 16,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RTC_GLITCH_DET_INT_CLR": {
    -                    "description": "Clear glitch det interrupt state",
    -                    "offset": 19,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RTC_BBPLL_CAL_INT_CLR": {
    -                    "description": "clear bbpll cal end interrupt state",
    -                    "offset": 20,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "STORE0": {
    -              "description": "rtc configure register",
    -              "offset": 80,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_SCRATCH0": {
    -                    "description": "reserved register",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "STORE1": {
    -              "description": "rtc configure register",
    -              "offset": 84,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_SCRATCH1": {
    -                    "description": "reserved register",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "STORE2": {
    -              "description": "rtc configure register",
    -              "offset": 88,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_SCRATCH2": {
    -                    "description": "reserved register",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "STORE3": {
    -              "description": "rtc configure register",
    -              "offset": 92,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_SCRATCH3": {
    -                    "description": "reserved register",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "EXT_XTL_CONF": {
    -              "description": "rtc configure register",
    -              "offset": 96,
    -              "size": 32,
    -              "reset_value": 420992,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "XTAL32K_WDT_EN": {
    -                    "description": "xtal 32k watch dog enable",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "XTAL32K_WDT_CLK_FO": {
    -                    "description": "xtal 32k watch dog clock force on",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "XTAL32K_WDT_RESET": {
    -                    "description": "xtal 32k watch dog sw reset",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "XTAL32K_EXT_CLK_FO": {
    -                    "description": "xtal 32k external xtal clock force on",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "XTAL32K_AUTO_BACKUP": {
    -                    "description": "xtal 32k switch to back up clock when xtal is dead",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "XTAL32K_AUTO_RESTART": {
    -                    "description": "xtal 32k restart xtal when xtal is dead",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "XTAL32K_AUTO_RETURN": {
    -                    "description": "xtal 32k switch back xtal when xtal is restarted",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "XTAL32K_XPD_FORCE": {
    -                    "description": "Xtal 32k xpd control by sw or fsm",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "ENCKINIT_XTAL_32K": {
    -                    "description": "apply an internal clock to help xtal 32k to start",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "DBUF_XTAL_32K": {
    -                    "description": "0: single-end buffer 1: differential buffer",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "DGM_XTAL_32K": {
    -                    "description": "xtal_32k gm control",
    -                    "offset": 10,
    -                    "size": 3
    -                  },
    -                  "DRES_XTAL_32K": {
    -                    "description": "DRES_XTAL_32K",
    -                    "offset": 13,
    -                    "size": 3
    -                  },
    -                  "XPD_XTAL_32K": {
    -                    "description": "XPD_XTAL_32K",
    -                    "offset": 16,
    -                    "size": 1
    -                  },
    -                  "DAC_XTAL_32K": {
    -                    "description": "DAC_XTAL_32K",
    -                    "offset": 17,
    -                    "size": 3
    -                  },
    -                  "RTC_WDT_STATE": {
    -                    "description": "state of 32k_wdt",
    -                    "offset": 20,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_XTAL32K_GPIO_SEL": {
    -                    "description": "XTAL_32K sel. 0: external XTAL_32K",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "XTL_EXT_CTR_LV": {
    -                    "description": "0: power down XTAL at high level",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "XTL_EXT_CTR_EN": {
    -                    "description": "enable gpio configure xtal power on",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "EXT_WAKEUP_CONF": {
    -              "description": "rtc configure register",
    -              "offset": 100,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "GPIO_WAKEUP_FILTER": {
    -                    "description": "enable filter for gpio wakeup event",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "SLP_REJECT_CONF": {
    -              "description": "rtc configure register",
    -              "offset": 104,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_SLEEP_REJECT_ENA": {
    -                    "description": "sleep reject enable",
    -                    "offset": 12,
    -                    "size": 18
    -                  },
    -                  "LIGHT_SLP_REJECT_EN": {
    -                    "description": "enable reject for light sleep",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "DEEP_SLP_REJECT_EN": {
    -                    "description": "enable reject for deep sleep",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_PERIOD_CONF": {
    -              "description": "rtc configure register",
    -              "offset": 108,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_CPUSEL_CONF": {
    -                    "description": "CPU sel option",
    -                    "offset": 29,
    -                    "size": 1
    -                  },
    -                  "RTC_CPUPERIOD_SEL": {
    -                    "description": "CPU clk sel option",
    -                    "offset": 30,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "CLK_CONF": {
    -              "description": "rtc configure register",
    -              "offset": 112,
    -              "size": 32,
    -              "reset_value": 290992664,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "EFUSE_CLK_FORCE_GATING": {
    -                    "description": "efuse_clk_force_gating",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "EFUSE_CLK_FORCE_NOGATING": {
    -                    "description": "efuse_clk_force_nogating",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "CK8M_DIV_SEL_VLD": {
    -                    "description": "used to sync reg_ck8m_div_sel bus. Clear vld before set reg_ck8m_div_sel",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "CK8M_DIV": {
    -                    "description": "CK8M_D256_OUT divider. 00: div128",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "ENB_CK8M": {
    -                    "description": "disable CK8M and CK8M_D256_OUT",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "ENB_CK8M_DIV": {
    -                    "description": "1: CK8M_D256_OUT is actually CK8M",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "DIG_XTAL32K_EN": {
    -                    "description": "enable CK_XTAL_32K for digital core (no relationship with RTC core)",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "DIG_CLK8M_D256_EN": {
    -                    "description": "enable CK8M_D256_OUT for digital core (no relationship with RTC core)",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "DIG_CLK8M_EN": {
    -                    "description": "enable CK8M for digital core (no relationship with RTC core)",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "CK8M_DIV_SEL": {
    -                    "description": "divider = reg_ck8m_div_sel + 1",
    -                    "offset": 12,
    -                    "size": 3
    -                  },
    -                  "XTAL_FORCE_NOGATING": {
    -                    "description": "XTAL force no gating during sleep",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "CK8M_FORCE_NOGATING": {
    -                    "description": "CK8M force no gating during sleep",
    -                    "offset": 16,
    -                    "size": 1
    -                  },
    -                  "CK8M_DFREQ": {
    -                    "description": "CK8M_DFREQ",
    -                    "offset": 17,
    -                    "size": 8
    -                  },
    -                  "CK8M_FORCE_PD": {
    -                    "description": "CK8M force power down",
    -                    "offset": 25,
    -                    "size": 1
    -                  },
    -                  "CK8M_FORCE_PU": {
    -                    "description": "CK8M force power up",
    -                    "offset": 26,
    -                    "size": 1
    -                  },
    -                  "XTAL_GLOBAL_FORCE_GATING": {
    -                    "description": "force enable xtal clk gating",
    -                    "offset": 27,
    -                    "size": 1
    -                  },
    -                  "XTAL_GLOBAL_FORCE_NOGATING": {
    -                    "description": "force bypass xtal clk gating",
    -                    "offset": 28,
    -                    "size": 1
    -                  },
    -                  "FAST_CLK_RTC_SEL": {
    -                    "description": "fast_clk_rtc sel. 0: XTAL div 4",
    -                    "offset": 29,
    -                    "size": 1
    -                  },
    -                  "ANA_CLK_RTC_SEL": {
    -                    "description": "slelect rtc slow clk",
    -                    "offset": 30,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "SLOW_CLK_CONF": {
    -              "description": "rtc configure register",
    -              "offset": 116,
    -              "size": 32,
    -              "reset_value": 4194304,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_ANA_CLK_DIV_VLD": {
    -                    "description": "used to sync div bus. clear vld before set reg_rtc_ana_clk_div",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "RTC_ANA_CLK_DIV": {
    -                    "description": "the clk divider num of RTC_CLK",
    -                    "offset": 23,
    -                    "size": 8
    -                  },
    -                  "RTC_SLOW_CLK_NEXT_EDGE": {
    -                    "description": "flag rtc_slow_clk_next_edge",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "SDIO_CONF": {
    -              "description": "rtc configure register",
    -              "offset": 120,
    -              "size": 32,
    -              "reset_value": 179355146,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SDIO_TIMER_TARGET": {
    -                    "description": "timer count to apply reg_sdio_dcap after sdio power on",
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "SDIO_DTHDRV": {
    -                    "description": "Tieh = 1 mode drive ability. Initially set to 0 to limit charge current",
    -                    "offset": 9,
    -                    "size": 2
    -                  },
    -                  "SDIO_DCAP": {
    -                    "description": "ability to prevent LDO from overshoot",
    -                    "offset": 11,
    -                    "size": 2
    -                  },
    -                  "SDIO_INITI": {
    -                    "description": "add resistor from ldo output to ground. 0: no res",
    -                    "offset": 13,
    -                    "size": 2
    -                  },
    -                  "SDIO_EN_INITI": {
    -                    "description": "0 to set init[1:0]=0",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "SDIO_DCURLIM": {
    -                    "description": "tune current limit threshold when tieh = 0. About 800mA/(8+d)",
    -                    "offset": 16,
    -                    "size": 3
    -                  },
    -                  "SDIO_MODECURLIM": {
    -                    "description": "select current limit mode",
    -                    "offset": 19,
    -                    "size": 1
    -                  },
    -                  "SDIO_ENCURLIM": {
    -                    "description": "enable current limit",
    -                    "offset": 20,
    -                    "size": 1
    -                  },
    -                  "SDIO_REG_PD_EN": {
    -                    "description": "power down SDIO_REG in sleep. Only active when reg_sdio_force = 0",
    -                    "offset": 21,
    -                    "size": 1
    -                  },
    -                  "SDIO_FORCE": {
    -                    "description": "1: use SW option to control SDIO_REG",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "SDIO_TIEH": {
    -                    "description": "SW option for SDIO_TIEH. Only active when reg_sdio_force = 1",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "_1P8_READY": {
    -                    "description": "read only register for REG1P8_READY",
    -                    "offset": 24,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DREFL_SDIO": {
    -                    "description": "SW option for DREFL_SDIO. Only active when reg_sdio_force = 1",
    -                    "offset": 25,
    -                    "size": 2
    -                  },
    -                  "DREFM_SDIO": {
    -                    "description": "SW option for DREFM_SDIO. Only active when reg_sdio_force = 1",
    -                    "offset": 27,
    -                    "size": 2
    -                  },
    -                  "DREFH_SDIO": {
    -                    "description": "SW option for DREFH_SDIO. Only active when reg_sdio_force = 1",
    -                    "offset": 29,
    -                    "size": 2
    -                  },
    -                  "XPD_SDIO": {
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "BIAS_CONF": {
    -              "description": "rtc configure register",
    -              "offset": 124,
    -              "size": 32,
    -              "reset_value": 67584,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DG_VDD_DRV_B_SLP": {
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "DG_VDD_DRV_B_SLP_EN": {
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "BIAS_BUF_IDLE": {
    -                    "description": "bias buf when rtc in normal work state",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "BIAS_BUF_WAKE": {
    -                    "description": "bias buf when rtc in wakeup state",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "BIAS_BUF_DEEP_SLP": {
    -                    "description": "bias buf when rtc in sleep state",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "BIAS_BUF_MONITOR": {
    -                    "description": "bias buf when rtc in monitor state",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "PD_CUR_DEEP_SLP": {
    -                    "description": "xpd cur when rtc in sleep_state",
    -                    "offset": 14,
    -                    "size": 1
    -                  },
    -                  "PD_CUR_MONITOR": {
    -                    "description": "xpd cur when rtc in monitor state",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "BIAS_SLEEP_DEEP_SLP": {
    -                    "description": "bias_sleep when rtc in sleep_state",
    -                    "offset": 16,
    -                    "size": 1
    -                  },
    -                  "BIAS_SLEEP_MONITOR": {
    -                    "description": "bias_sleep when rtc in monitor state",
    -                    "offset": 17,
    -                    "size": 1
    -                  },
    -                  "DBG_ATTEN_DEEP_SLP": {
    -                    "description": "DBG_ATTEN when rtc in sleep state",
    -                    "offset": 18,
    -                    "size": 4
    -                  },
    -                  "DBG_ATTEN_MONITOR": {
    -                    "description": "DBG_ATTEN when rtc in monitor state",
    -                    "offset": 22,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "RTC_CNTL": {
    -              "description": "rtc configure register",
    -              "offset": 128,
    -              "size": 32,
    -              "reset_value": 2684354560,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DIG_REG_CAL_EN": {
    -                    "description": "software enable digital regulator cali",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "SCK_DCAP": {
    -                    "description": "SCK_DCAP",
    -                    "offset": 14,
    -                    "size": 8
    -                  },
    -                  "DBOOST_FORCE_PD": {
    -                    "description": "RTC_DBOOST force power down",
    -                    "offset": 28,
    -                    "size": 1
    -                  },
    -                  "DBOOST_FORCE_PU": {
    -                    "description": "RTC_DBOOST force power up",
    -                    "offset": 29,
    -                    "size": 1
    -                  },
    -                  "REGULATOR_FORCE_PD": {
    -                    "description": "RTC_REG force power down (for RTC_REG power down means decrease the voltage to 0.8v or lower )",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "REGULATOR_FORCE_PU": {
    -                    "description": "RTC_REG force power up",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "PWC": {
    -              "description": "rtc configure register",
    -              "offset": 132,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_PAD_FORCE_HOLD": {
    -                    "description": "rtc pad force hold",
    -                    "offset": 21,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DIG_PWC": {
    -              "description": "rtc configure register",
    -              "offset": 136,
    -              "size": 32,
    -              "reset_value": 5591056,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "VDD_SPI_PWR_DRV": {
    -                    "description": "vdd_spi drv's software value",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "VDD_SPI_PWR_FORCE": {
    -                    "description": "vdd_spi drv use software value",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "LSLP_MEM_FORCE_PD": {
    -                    "description": "memories in digital core force PD in sleep",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "LSLP_MEM_FORCE_PU": {
    -                    "description": "memories in digital core force PU in sleep",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "BT_FORCE_PD": {
    -                    "description": "bt force power down",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "BT_FORCE_PU": {
    -                    "description": "bt force power up",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "DG_PERI_FORCE_PD": {
    -                    "description": "digital peri force power down",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "DG_PERI_FORCE_PU": {
    -                    "description": "digital peri force power up",
    -                    "offset": 14,
    -                    "size": 1
    -                  },
    -                  "RTC_FASTMEM_FORCE_LPD": {
    -                    "description": "fastmemory  retention mode in sleep",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "RTC_FASTMEM_FORCE_LPU": {
    -                    "description": "fastmemory donlt entry retention mode in sleep",
    -                    "offset": 16,
    -                    "size": 1
    -                  },
    -                  "WIFI_FORCE_PD": {
    -                    "description": "wifi force power down",
    -                    "offset": 17,
    -                    "size": 1
    -                  },
    -                  "WIFI_FORCE_PU": {
    -                    "description": "wifi force power up",
    -                    "offset": 18,
    -                    "size": 1
    -                  },
    -                  "DG_WRAP_FORCE_PD": {
    -                    "description": "digital core force power down",
    -                    "offset": 19,
    -                    "size": 1
    -                  },
    -                  "DG_WRAP_FORCE_PU": {
    -                    "description": "digital core force power up",
    -                    "offset": 20,
    -                    "size": 1
    -                  },
    -                  "CPU_TOP_FORCE_PD": {
    -                    "description": "cpu core force power down",
    -                    "offset": 21,
    -                    "size": 1
    -                  },
    -                  "CPU_TOP_FORCE_PU": {
    -                    "description": "cpu force power up",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "BT_PD_EN": {
    -                    "description": "enable power down bt in sleep",
    -                    "offset": 27,
    -                    "size": 1
    -                  },
    -                  "DG_PERI_PD_EN": {
    -                    "description": "enable power down digital peri in sleep",
    -                    "offset": 28,
    -                    "size": 1
    -                  },
    -                  "CPU_TOP_PD_EN": {
    -                    "description": "enable power down cpu in sleep",
    -                    "offset": 29,
    -                    "size": 1
    -                  },
    -                  "WIFI_PD_EN": {
    -                    "description": "enable power down wifi in sleep",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "DG_WRAP_PD_EN": {
    -                    "description": "enable power down digital wrap in sleep",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DIG_ISO": {
    -              "description": "rtc configure register",
    -              "offset": 140,
    -              "size": 32,
    -              "reset_value": 2860535936,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "FORCE_OFF": {
    -                    "description": "DIG_ISO force off",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "FORCE_ON": {
    -                    "description": "DIG_ISO force on",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "DG_PAD_AUTOHOLD": {
    -                    "description": "read only register to indicate digital pad auto-hold status",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CLR_DG_PAD_AUTOHOLD": {
    -                    "description": "wtite only register to clear digital pad auto-hold",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "DG_PAD_AUTOHOLD_EN": {
    -                    "description": "digital pad enable auto-hold",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "DG_PAD_FORCE_NOISO": {
    -                    "description": "digital pad force no ISO",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "DG_PAD_FORCE_ISO": {
    -                    "description": "digital pad force ISO",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "DG_PAD_FORCE_UNHOLD": {
    -                    "description": "digital pad force un-hold",
    -                    "offset": 14,
    -                    "size": 1
    -                  },
    -                  "DG_PAD_FORCE_HOLD": {
    -                    "description": "digital pad force hold",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "BT_FORCE_ISO": {
    -                    "description": "bt force ISO",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "BT_FORCE_NOISO": {
    -                    "description": "bt force no ISO",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "DG_PERI_FORCE_ISO": {
    -                    "description": "Digital peri force ISO",
    -                    "offset": 24,
    -                    "size": 1
    -                  },
    -                  "DG_PERI_FORCE_NOISO": {
    -                    "description": "digital peri force no ISO",
    -                    "offset": 25,
    -                    "size": 1
    -                  },
    -                  "CPU_TOP_FORCE_ISO": {
    -                    "description": "cpu force ISO",
    -                    "offset": 26,
    -                    "size": 1
    -                  },
    -                  "CPU_TOP_FORCE_NOISO": {
    -                    "description": "cpu force no ISO",
    -                    "offset": 27,
    -                    "size": 1
    -                  },
    -                  "WIFI_FORCE_ISO": {
    -                    "description": "wifi force ISO",
    -                    "offset": 28,
    -                    "size": 1
    -                  },
    -                  "WIFI_FORCE_NOISO": {
    -                    "description": "wifi force no ISO",
    -                    "offset": 29,
    -                    "size": 1
    -                  },
    -                  "DG_WRAP_FORCE_ISO": {
    -                    "description": "digital core force ISO",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "DG_WRAP_FORCE_NOISO": {
    -                    "description": "digital core force no ISO",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "WDTCONFIG0": {
    -              "description": "rtc configure register",
    -              "offset": 144,
    -              "size": 32,
    -              "reset_value": 78356,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WDT_CHIP_RESET_WIDTH": {
    -                    "description": "chip reset siginal pulse width",
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "WDT_CHIP_RESET_EN": {
    -                    "description": "wdt reset whole chip enable",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "WDT_PAUSE_IN_SLP": {
    -                    "description": "pause WDT in sleep",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "WDT_APPCPU_RESET_EN": {
    -                    "description": "enable WDT reset APP CPU",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "WDT_PROCPU_RESET_EN": {
    -                    "description": "enable WDT reset PRO CPU",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "WDT_FLASHBOOT_MOD_EN": {
    -                    "description": "enable WDT in flash boot",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "WDT_SYS_RESET_LENGTH": {
    -                    "description": "system reset counter length",
    -                    "offset": 13,
    -                    "size": 3
    -                  },
    -                  "WDT_CPU_RESET_LENGTH": {
    -                    "description": "CPU reset counter length",
    -                    "offset": 16,
    -                    "size": 3
    -                  },
    -                  "WDT_STG3": {
    -                    "description": "1: interrupt stage en",
    -                    "offset": 19,
    -                    "size": 3
    -                  },
    -                  "WDT_STG2": {
    -                    "description": "1: interrupt stage en",
    -                    "offset": 22,
    -                    "size": 3
    -                  },
    -                  "WDT_STG1": {
    -                    "description": "1: interrupt stage en",
    -                    "offset": 25,
    -                    "size": 3
    -                  },
    -                  "WDT_STG0": {
    -                    "description": "1: interrupt stage en",
    -                    "offset": 28,
    -                    "size": 3
    -                  },
    -                  "WDT_EN": {
    -                    "description": "enable rtc wdt",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "WDTCONFIG1": {
    -              "description": "rtc configure register",
    -              "offset": 148,
    -              "size": 32,
    -              "reset_value": 200000,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WDT_STG0_HOLD": {
    -                    "description": "the hold time of stage0",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "WDTCONFIG2": {
    -              "description": "rtc configure register",
    -              "offset": 152,
    -              "size": 32,
    -              "reset_value": 80000,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WDT_STG1_HOLD": {
    -                    "description": "the hold time of stage1",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "WDTCONFIG3": {
    -              "description": "rtc configure register",
    -              "offset": 156,
    -              "size": 32,
    -              "reset_value": 4095,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WDT_STG2_HOLD": {
    -                    "description": "the hold time of stage2",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "WDTCONFIG4": {
    -              "description": "rtc configure register",
    -              "offset": 160,
    -              "size": 32,
    -              "reset_value": 4095,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WDT_STG3_HOLD": {
    -                    "description": "the hold time of stage3",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "WDTFEED": {
    -              "description": "rtc configure register",
    -              "offset": 164,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_WDT_FEED": {
    -                    "description": "sw feed rtc wdt",
    -                    "offset": 31,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "WDTWPROTECT": {
    -              "description": "rtc configure register",
    -              "offset": 168,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WDT_WKEY": {
    -                    "description": "the key of rtc wdt",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "SWD_CONF": {
    -              "description": "rtc configure register",
    -              "offset": 172,
    -              "size": 32,
    -              "reset_value": 78643200,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SWD_RESET_FLAG": {
    -                    "description": "swd reset flag",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SWD_FEED_INT": {
    -                    "description": "swd interrupt for feeding",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SWD_BYPASS_RST": {
    -                    "description": "Bypass swd rst",
    -                    "offset": 17,
    -                    "size": 1
    -                  },
    -                  "SWD_SIGNAL_WIDTH": {
    -                    "description": "adjust signal width send to swd",
    -                    "offset": 18,
    -                    "size": 10
    -                  },
    -                  "SWD_RST_FLAG_CLR": {
    -                    "description": "reset swd reset flag",
    -                    "offset": 28,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SWD_FEED": {
    -                    "description": "Sw feed swd",
    -                    "offset": 29,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SWD_DISABLE": {
    -                    "description": "disabel SWD",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "SWD_AUTO_FEED_EN": {
    -                    "description": "automatically feed swd when int comes",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "SWD_WPROTECT": {
    -              "description": "rtc configure register",
    -              "offset": 176,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SWD_WKEY": {
    -                    "description": "the key of super wdt",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "SW_CPU_STALL": {
    -              "description": "rtc configure register",
    -              "offset": 180,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SW_STALL_APPCPU_C1": {
    -                    "description": "{reg_sw_stall_appcpu_c1[5:0]",
    -                    "offset": 20,
    -                    "size": 6
    -                  },
    -                  "SW_STALL_PROCPU_C1": {
    -                    "description": "stall cpu by software",
    -                    "offset": 26,
    -                    "size": 6
    -                  }
    -                }
    -              }
    -            },
    -            "STORE4": {
    -              "description": "rtc configure register",
    -              "offset": 184,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_SCRATCH4": {
    -                    "description": "reserved register",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "STORE5": {
    -              "description": "rtc configure register",
    -              "offset": 188,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_SCRATCH5": {
    -                    "description": "reserved register",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "STORE6": {
    -              "description": "rtc configure register",
    -              "offset": 192,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_SCRATCH6": {
    -                    "description": "reserved register",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "STORE7": {
    -              "description": "rtc configure register",
    -              "offset": 196,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_SCRATCH7": {
    -                    "description": "reserved register",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "LOW_POWER_ST": {
    -              "description": "rtc configure register",
    -              "offset": 200,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "XPD_ROM0": {
    -                    "description": "rom0 power down",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "XPD_DIG_DCDC": {
    -                    "description": "External DCDC power down",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_PERI_ISO": {
    -                    "description": "rtc peripheral iso",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "XPD_RTC_PERI": {
    -                    "description": "rtc peripheral power down",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "WIFI_ISO": {
    -                    "description": "wifi iso",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "XPD_WIFI": {
    -                    "description": "wifi wrap power down",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DIG_ISO": {
    -                    "description": "digital wrap iso",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "XPD_DIG": {
    -                    "description": "digital wrap power down",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_TOUCH_STATE_START": {
    -                    "description": "touch should start to work",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_TOUCH_STATE_SWITCH": {
    -                    "description": "touch is about to working. Switch rtc main state",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_TOUCH_STATE_SLP": {
    -                    "description": "touch is in sleep state",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_TOUCH_STATE_DONE": {
    -                    "description": "touch is done",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_COCPU_STATE_START": {
    -                    "description": "ulp/cocpu should start to work",
    -                    "offset": 13,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_COCPU_STATE_SWITCH": {
    -                    "description": "ulp/cocpu is about to working. Switch rtc main state",
    -                    "offset": 14,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_COCPU_STATE_SLP": {
    -                    "description": "ulp/cocpu is in sleep state",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_COCPU_STATE_DONE": {
    -                    "description": "ulp/cocpu is done",
    -                    "offset": 16,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_MAIN_STATE_XTAL_ISO": {
    -                    "description": "no use any more",
    -                    "offset": 17,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_MAIN_STATE_PLL_ON": {
    -                    "description": "rtc main state machine is in states that pll should be running",
    -                    "offset": 18,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_RDY_FOR_WAKEUP": {
    -                    "description": "rtc is ready to receive wake up trigger from wake up source",
    -                    "offset": 19,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_MAIN_STATE_WAIT_END": {
    -                    "description": "rtc main state machine has been waited for some cycles",
    -                    "offset": 20,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_IN_WAKEUP_STATE": {
    -                    "description": "rtc main state machine is in the states of wakeup process",
    -                    "offset": 21,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_IN_LOW_POWER_STATE": {
    -                    "description": "rtc main state machine is in the states of low power",
    -                    "offset": 22,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_MAIN_STATE_IN_WAIT_8M": {
    -                    "description": "rtc main state machine is in wait 8m state",
    -                    "offset": 23,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_MAIN_STATE_IN_WAIT_PLL": {
    -                    "description": "rtc main state machine is in wait pll state",
    -                    "offset": 24,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_MAIN_STATE_IN_WAIT_XTL": {
    -                    "description": "rtc main state machine is in wait xtal state",
    -                    "offset": 25,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_MAIN_STATE_IN_SLP": {
    -                    "description": "rtc main state machine is in sleep state",
    -                    "offset": 26,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_MAIN_STATE_IN_IDLE": {
    -                    "description": "rtc main state machine is in idle state",
    -                    "offset": 27,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_MAIN_STATE": {
    -                    "description": "rtc main state machine status",
    -                    "offset": 28,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DIAG0": {
    -              "description": "rtc configure register",
    -              "offset": 204,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_LOW_POWER_DIAG1": {
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "PAD_HOLD": {
    -              "description": "rtc configure register",
    -              "offset": 208,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_GPIO_PIN0_HOLD": {
    -                    "description": "the hold configure of rtc gpio0",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "RTC_GPIO_PIN1_HOLD": {
    -                    "description": "the hold configure of rtc gpio1",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "RTC_GPIO_PIN2_HOLD": {
    -                    "description": "the hold configure of rtc gpio2",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "RTC_GPIO_PIN3_HOLD": {
    -                    "description": "the hold configure of rtc gpio3",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "RTC_GPIO_PIN4_HOLD": {
    -                    "description": "the hold configure of rtc gpio4",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "RTC_GPIO_PIN5_HOLD": {
    -                    "description": "the hold configure of rtc gpio5",
    -                    "offset": 5,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DIG_PAD_HOLD": {
    -              "description": "rtc configure register",
    -              "offset": 212,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DIG_PAD_HOLD": {
    -                    "description": "the configure of digital pad",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "BROWN_OUT": {
    -              "description": "rtc configure register",
    -              "offset": 216,
    -              "size": 32,
    -              "reset_value": 1140785168,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INT_WAIT": {
    -                    "description": "brown out interrupt wait cycles",
    -                    "offset": 4,
    -                    "size": 10
    -                  },
    -                  "CLOSE_FLASH_ENA": {
    -                    "description": "enable close flash when brown out happens",
    -                    "offset": 14,
    -                    "size": 1
    -                  },
    -                  "PD_RF_ENA": {
    -                    "description": "enable power down RF when brown out happens",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "RST_WAIT": {
    -                    "description": "brown out reset wait cycles",
    -                    "offset": 16,
    -                    "size": 10
    -                  },
    -                  "RST_ENA": {
    -                    "description": "enable brown out reset",
    -                    "offset": 26,
    -                    "size": 1
    -                  },
    -                  "RST_SEL": {
    -                    "description": "1:  4-pos reset",
    -                    "offset": 27,
    -                    "size": 1
    -                  },
    -                  "ANA_RST_EN": {
    -                    "description": "brown_out origin reset enable",
    -                    "offset": 28,
    -                    "size": 1
    -                  },
    -                  "CNT_CLR": {
    -                    "description": "clear brown out counter",
    -                    "offset": 29,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "ENA": {
    -                    "description": "enable brown out",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "DET": {
    -                    "description": "the flag of brown det from analog",
    -                    "offset": 31,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "TIME_LOW1": {
    -              "description": "rtc configure register",
    -              "offset": 220,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_TIMER_VALUE1_LOW": {
    -                    "description": "RTC timer low 32 bits",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "TIME_HIGH1": {
    -              "description": "rtc configure register",
    -              "offset": 224,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_TIMER_VALUE1_HIGH": {
    -                    "description": "RTC timer high 16 bits",
    -                    "offset": 0,
    -                    "size": 16,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "XTAL32K_CLK_FACTOR": {
    -              "description": "rtc configure register",
    -              "offset": 228,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "XTAL32K_CLK_FACTOR": {
    -                    "description": "xtal 32k watch dog backup clock factor",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "XTAL32K_CONF": {
    -              "description": "rtc configure register",
    -              "offset": 232,
    -              "size": 32,
    -              "reset_value": 267386880,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "XTAL32K_RETURN_WAIT": {
    -                    "description": "cycles to wait to return noral xtal 32k",
    -                    "offset": 0,
    -                    "size": 4
    -                  },
    -                  "XTAL32K_RESTART_WAIT": {
    -                    "description": "cycles to wait to repower on xtal 32k",
    -                    "offset": 4,
    -                    "size": 16
    -                  },
    -                  "XTAL32K_WDT_TIMEOUT": {
    -                    "description": "If no clock detected for this amount of time",
    -                    "offset": 20,
    -                    "size": 8
    -                  },
    -                  "XTAL32K_STABLE_THRES": {
    -                    "description": "if restarted xtal32k period is smaller than this",
    -                    "offset": 28,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "USB_CONF": {
    -              "description": "rtc configure register",
    -              "offset": 236,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IO_MUX_RESET_DISABLE": {
    -                    "description": "disable io_mux reset",
    -                    "offset": 18,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "SLP_REJECT_CAUSE": {
    -              "description": "RTC_CNTL_RTC_SLP_REJECT_CAUSE_REG",
    -              "offset": 240,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "REJECT_CAUSE": {
    -                    "description": "sleep reject cause",
    -                    "offset": 0,
    -                    "size": 18,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OPTION1": {
    -              "description": "rtc configure register",
    -              "offset": 244,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "FORCE_DOWNLOAD_BOOT": {
    -                    "description": "force chip entry download mode",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "SLP_WAKEUP_CAUSE": {
    -              "description": "RTC_CNTL_RTC_SLP_WAKEUP_CAUSE_REG",
    -              "offset": 248,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WAKEUP_CAUSE": {
    -                    "description": "sleep wakeup cause",
    -                    "offset": 0,
    -                    "size": 17,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "ULP_CP_TIMER_1": {
    -              "description": "rtc configure register",
    -              "offset": 252,
    -              "size": 32,
    -              "reset_value": 51200,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ULP_CP_TIMER_SLP_CYCLE": {
    -                    "description": "sleep cycles for ULP-coprocessor timer",
    -                    "offset": 8,
    -                    "size": 24
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ENA_RTC_W1TS": {
    -              "description": "rtc configure register",
    -              "offset": 256,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SLP_WAKEUP_INT_ENA_W1TS": {
    -                    "description": "enable sleep wakeup interrupt",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SLP_REJECT_INT_ENA_W1TS": {
    -                    "description": "enable sleep reject interrupt",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RTC_WDT_INT_ENA_W1TS": {
    -                    "description": "enable RTC WDT interrupt",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RTC_BROWN_OUT_INT_ENA_W1TS": {
    -                    "description": "enable brown out interrupt",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RTC_MAIN_TIMER_INT_ENA_W1TS": {
    -                    "description": "enable RTC main timer interrupt",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RTC_SWD_INT_ENA_W1TS": {
    -                    "description": "enable super watch dog interrupt",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RTC_XTAL32K_DEAD_INT_ENA_W1TS": {
    -                    "description": "enable xtal32k_dead  interrupt",
    -                    "offset": 16,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RTC_GLITCH_DET_INT_ENA_W1TS": {
    -                    "description": "enbale gitch det interrupt",
    -                    "offset": 19,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RTC_BBPLL_CAL_INT_ENA_W1TS": {
    -                    "description": "enbale bbpll cal interrupt",
    -                    "offset": 20,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ENA_RTC_W1TC": {
    -              "description": "rtc configure register",
    -              "offset": 260,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SLP_WAKEUP_INT_ENA_W1TC": {
    -                    "description": "clear sleep wakeup interrupt enable",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SLP_REJECT_INT_ENA_W1TC": {
    -                    "description": "clear sleep reject interrupt enable",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RTC_WDT_INT_ENA_W1TC": {
    -                    "description": "clear RTC WDT interrupt enable",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RTC_BROWN_OUT_INT_ENA_W1TC": {
    -                    "description": "clear brown out interrupt enable",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RTC_MAIN_TIMER_INT_ENA_W1TC": {
    -                    "description": "Clear RTC main timer interrupt enable",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RTC_SWD_INT_ENA_W1TC": {
    -                    "description": "clear super watch dog interrupt enable",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RTC_XTAL32K_DEAD_INT_ENA_W1TC": {
    -                    "description": "clear xtal32k_dead  interrupt enable",
    -                    "offset": 16,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RTC_GLITCH_DET_INT_ENA_W1TC": {
    -                    "description": "clear gitch det interrupt enable",
    -                    "offset": 19,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RTC_BBPLL_CAL_INT_ENA_W1TC": {
    -                    "description": "clear bbpll cal interrupt enable",
    -                    "offset": 20,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RETENTION_CTRL": {
    -              "description": "rtc configure register",
    -              "offset": 264,
    -              "size": 32,
    -              "reset_value": 2697986048,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RETENTION_CLK_SEL": {
    -                    "description": "Retention clk sel",
    -                    "offset": 18,
    -                    "size": 1
    -                  },
    -                  "RETENTION_DONE_WAIT": {
    -                    "description": "Retention done wait time",
    -                    "offset": 19,
    -                    "size": 3
    -                  },
    -                  "RETENTION_CLKOFF_WAIT": {
    -                    "description": "Retention clkoff wait time",
    -                    "offset": 22,
    -                    "size": 4
    -                  },
    -                  "RETENTION_EN": {
    -                    "description": "enable cpu retention when light sleep",
    -                    "offset": 26,
    -                    "size": 1
    -                  },
    -                  "RETENTION_WAIT": {
    -                    "description": "wait cycles for rention operation",
    -                    "offset": 27,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "FIB_SEL": {
    -              "description": "rtc configure register",
    -              "offset": 268,
    -              "size": 32,
    -              "reset_value": 7,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_FIB_SEL": {
    -                    "description": "select use analog fib signal",
    -                    "offset": 0,
    -                    "size": 3
    -                  }
    -                }
    -              }
    -            },
    -            "GPIO_WAKEUP": {
    -              "description": "rtc configure register",
    -              "offset": 272,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_GPIO_WAKEUP_STATUS": {
    -                    "description": "rtc gpio wakeup flag",
    -                    "offset": 0,
    -                    "size": 6,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_GPIO_WAKEUP_STATUS_CLR": {
    -                    "description": "clear rtc gpio wakeup flag",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "RTC_GPIO_PIN_CLK_GATE": {
    -                    "description": "enable rtc io clk gate",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "RTC_GPIO_PIN5_INT_TYPE": {
    -                    "description": "configure gpio wakeup type",
    -                    "offset": 8,
    -                    "size": 3
    -                  },
    -                  "RTC_GPIO_PIN4_INT_TYPE": {
    -                    "description": "configure gpio wakeup type",
    -                    "offset": 11,
    -                    "size": 3
    -                  },
    -                  "RTC_GPIO_PIN3_INT_TYPE": {
    -                    "description": "configure gpio wakeup type",
    -                    "offset": 14,
    -                    "size": 3
    -                  },
    -                  "RTC_GPIO_PIN2_INT_TYPE": {
    -                    "description": "configure gpio wakeup type",
    -                    "offset": 17,
    -                    "size": 3
    -                  },
    -                  "RTC_GPIO_PIN1_INT_TYPE": {
    -                    "description": "configure gpio wakeup type",
    -                    "offset": 20,
    -                    "size": 3
    -                  },
    -                  "RTC_GPIO_PIN0_INT_TYPE": {
    -                    "description": "configure gpio wakeup type",
    -                    "offset": 23,
    -                    "size": 3
    -                  },
    -                  "RTC_GPIO_PIN5_WAKEUP_ENABLE": {
    -                    "description": "enable wakeup from rtc gpio5",
    -                    "offset": 26,
    -                    "size": 1
    -                  },
    -                  "RTC_GPIO_PIN4_WAKEUP_ENABLE": {
    -                    "description": "enable wakeup from rtc gpio4",
    -                    "offset": 27,
    -                    "size": 1
    -                  },
    -                  "RTC_GPIO_PIN3_WAKEUP_ENABLE": {
    -                    "description": "enable wakeup from rtc gpio3",
    -                    "offset": 28,
    -                    "size": 1
    -                  },
    -                  "RTC_GPIO_PIN2_WAKEUP_ENABLE": {
    -                    "description": "enable wakeup from rtc gpio2",
    -                    "offset": 29,
    -                    "size": 1
    -                  },
    -                  "RTC_GPIO_PIN1_WAKEUP_ENABLE": {
    -                    "description": "enable wakeup from rtc gpio1",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "RTC_GPIO_PIN0_WAKEUP_ENABLE": {
    -                    "description": "enable wakeup from rtc gpio0",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DBG_SEL": {
    -              "description": "rtc configure register",
    -              "offset": 276,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_DEBUG_12M_NO_GATING": {
    -                    "description": "use for debug",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "RTC_DEBUG_BIT_SEL": {
    -                    "description": "use for debug",
    -                    "offset": 2,
    -                    "size": 5
    -                  },
    -                  "RTC_DEBUG_SEL0": {
    -                    "description": "use for debug",
    -                    "offset": 7,
    -                    "size": 5
    -                  },
    -                  "RTC_DEBUG_SEL1": {
    -                    "description": "use for debug",
    -                    "offset": 12,
    -                    "size": 5
    -                  },
    -                  "RTC_DEBUG_SEL2": {
    -                    "description": "use for debug",
    -                    "offset": 17,
    -                    "size": 5
    -                  },
    -                  "RTC_DEBUG_SEL3": {
    -                    "description": "use for debug",
    -                    "offset": 22,
    -                    "size": 5
    -                  },
    -                  "RTC_DEBUG_SEL4": {
    -                    "description": "use for debug",
    -                    "offset": 27,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "DBG_MAP": {
    -              "description": "rtc configure register",
    -              "offset": 280,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_GPIO_PIN5_MUX_SEL": {
    -                    "description": "use for debug",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "RTC_GPIO_PIN4_MUX_SEL": {
    -                    "description": "use for debug",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "RTC_GPIO_PIN3_MUX_SEL": {
    -                    "description": "use for debug",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "RTC_GPIO_PIN2_MUX_SEL": {
    -                    "description": "use for debug",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "RTC_GPIO_PIN1_MUX_SEL": {
    -                    "description": "use for debug",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "RTC_GPIO_PIN0_MUX_SEL": {
    -                    "description": "use for debug",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "RTC_GPIO_PIN5_FUN_SEL": {
    -                    "description": "use for debug",
    -                    "offset": 8,
    -                    "size": 4
    -                  },
    -                  "RTC_GPIO_PIN4_FUN_SEL": {
    -                    "description": "use for debug",
    -                    "offset": 12,
    -                    "size": 4
    -                  },
    -                  "RTC_GPIO_PIN3_FUN_SEL": {
    -                    "description": "use for debug",
    -                    "offset": 16,
    -                    "size": 4
    -                  },
    -                  "RTC_GPIO_PIN2_FUN_SEL": {
    -                    "description": "use for debug",
    -                    "offset": 20,
    -                    "size": 4
    -                  },
    -                  "RTC_GPIO_PIN1_FUN_SEL": {
    -                    "description": "use for debug",
    -                    "offset": 24,
    -                    "size": 4
    -                  },
    -                  "RTC_GPIO_PIN0_FUN_SEL": {
    -                    "description": "use for debug",
    -                    "offset": 28,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "SENSOR_CTRL": {
    -              "description": "rtc configure register",
    -              "offset": 284,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SAR2_PWDET_CCT": {
    -                    "description": "reg_sar2_pwdet_cct",
    -                    "offset": 27,
    -                    "size": 3
    -                  },
    -                  "FORCE_XPD_SAR": {
    -                    "description": "force power up SAR",
    -                    "offset": 30,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "DBG_SAR_SEL": {
    -              "description": "rtc configure register",
    -              "offset": 288,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SAR_DEBUG_SEL": {
    -                    "description": "use for debug",
    -                    "offset": 27,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "PG_CTRL": {
    -              "description": "rtc configure register",
    -              "offset": 292,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "POWER_GLITCH_DSENSE": {
    -                    "description": "power glitch desense",
    -                    "offset": 26,
    -                    "size": 2
    -                  },
    -                  "POWER_GLITCH_FORCE_PD": {
    -                    "description": "force disable power glitch",
    -                    "offset": 28,
    -                    "size": 1
    -                  },
    -                  "POWER_GLITCH_FORCE_PU": {
    -                    "description": "force enable power glitch",
    -                    "offset": 29,
    -                    "size": 1
    -                  },
    -                  "POWER_GLITCH_EFUSE_SEL": {
    -                    "description": "use efuse value control power glitch enable",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "POWER_GLITCH_EN": {
    -                    "description": "enable power glitch",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DATE": {
    -              "description": "rtc configure register",
    -              "offset": 508,
    -              "size": 32,
    -              "reset_value": 33583728,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_CNTL_DATE": {
    -                    "description": "verision",
    -                    "offset": 0,
    -                    "size": 28
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "SENSITIVE": {
    -        "description": "Sensitive",
    -        "children": {
    -          "registers": {
    -            "ROM_TABLE_LOCK": {
    -              "description": "SENSITIVE_ROM_TABLE_LOCK_REG",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ROM_TABLE_LOCK": {
    -                    "description": "rom_table_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "ROM_TABLE": {
    -              "description": "SENSITIVE_ROM_TABLE_REG",
    -              "offset": 4,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ROM_TABLE": {
    -                    "description": "rom_table",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "PRIVILEGE_MODE_SEL_LOCK": {
    -              "description": "SENSITIVE_PRIVILEGE_MODE_SEL_LOCK_REG",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PRIVILEGE_MODE_SEL_LOCK": {
    -                    "description": "privilege_mode_sel_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "PRIVILEGE_MODE_SEL": {
    -              "description": "SENSITIVE_PRIVILEGE_MODE_SEL_REG",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PRIVILEGE_MODE_SEL": {
    -                    "description": "privilege_mode_sel",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "APB_PERIPHERAL_ACCESS_0": {
    -              "description": "SENSITIVE_APB_PERIPHERAL_ACCESS_0_REG",
    -              "offset": 16,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "APB_PERIPHERAL_ACCESS_LOCK": {
    -                    "description": "apb_peripheral_access_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "APB_PERIPHERAL_ACCESS_1": {
    -              "description": "SENSITIVE_APB_PERIPHERAL_ACCESS_1_REG",
    -              "offset": 20,
    -              "size": 32,
    -              "reset_value": 1,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "APB_PERIPHERAL_ACCESS_SPLIT_BURST": {
    -                    "description": "apb_peripheral_access_split_burst",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INTERNAL_SRAM_USAGE_0": {
    -              "description": "SENSITIVE_INTERNAL_SRAM_USAGE_0_REG",
    -              "offset": 24,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INTERNAL_SRAM_USAGE_LOCK": {
    -                    "description": "internal_sram_usage_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INTERNAL_SRAM_USAGE_1": {
    -              "description": "SENSITIVE_INTERNAL_SRAM_USAGE_1_REG",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 15,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INTERNAL_SRAM_USAGE_CPU_CACHE": {
    -                    "description": "internal_sram_usage_cpu_cache",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "INTERNAL_SRAM_USAGE_CPU_SRAM": {
    -                    "description": "internal_sram_usage_cpu_sram",
    -                    "offset": 1,
    -                    "size": 3
    -                  }
    -                }
    -              }
    -            },
    -            "INTERNAL_SRAM_USAGE_3": {
    -              "description": "SENSITIVE_INTERNAL_SRAM_USAGE_3_REG",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INTERNAL_SRAM_USAGE_MAC_DUMP_SRAM": {
    -                    "description": "internal_sram_usage_mac_dump_sram",
    -                    "offset": 0,
    -                    "size": 3
    -                  },
    -                  "INTERNAL_SRAM_ALLOC_MAC_DUMP": {
    -                    "description": "internal_sram_alloc_mac_dump",
    -                    "offset": 3,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INTERNAL_SRAM_USAGE_4": {
    -              "description": "SENSITIVE_INTERNAL_SRAM_USAGE_4_REG",
    -              "offset": 36,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INTERNAL_SRAM_USAGE_LOG_SRAM": {
    -                    "description": "internal_sram_usage_log_sram",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_TAG_ACCESS_0": {
    -              "description": "SENSITIVE_CACHE_TAG_ACCESS_0_REG",
    -              "offset": 40,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CACHE_TAG_ACCESS_LOCK": {
    -                    "description": "cache_tag_access_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_TAG_ACCESS_1": {
    -              "description": "SENSITIVE_CACHE_TAG_ACCESS_1_REG",
    -              "offset": 44,
    -              "size": 32,
    -              "reset_value": 15,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PRO_I_TAG_RD_ACS": {
    -                    "description": "pro_i_tag_rd_acs",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "PRO_I_TAG_WR_ACS": {
    -                    "description": "pro_i_tag_wr_acs",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "PRO_D_TAG_RD_ACS": {
    -                    "description": "pro_d_tag_rd_acs",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "PRO_D_TAG_WR_ACS": {
    -                    "description": "pro_d_tag_wr_acs",
    -                    "offset": 3,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_MMU_ACCESS_0": {
    -              "description": "SENSITIVE_CACHE_MMU_ACCESS_0_REG",
    -              "offset": 48,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CACHE_MMU_ACCESS_LOCK": {
    -                    "description": "cache_mmu_access_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_MMU_ACCESS_1": {
    -              "description": "SENSITIVE_CACHE_MMU_ACCESS_1_REG",
    -              "offset": 52,
    -              "size": 32,
    -              "reset_value": 3,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PRO_MMU_RD_ACS": {
    -                    "description": "pro_mmu_rd_acs",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "PRO_MMU_WR_ACS": {
    -                    "description": "pro_mmu_wr_acs",
    -                    "offset": 1,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_APBPERI_SPI2_PMS_CONSTRAIN_0": {
    -              "description": "SENSITIVE_DMA_APBPERI_SPI2_PMS_CONSTRAIN_0_REG",
    -              "offset": 56,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_APBPERI_SPI2_PMS_CONSTRAIN_LOCK": {
    -                    "description": "dma_apbperi_spi2_pms_constrain_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_APBPERI_SPI2_PMS_CONSTRAIN_1": {
    -              "description": "SENSITIVE_DMA_APBPERI_SPI2_PMS_CONSTRAIN_1_REG",
    -              "offset": 60,
    -              "size": 32,
    -              "reset_value": 1044735,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0": {
    -                    "description": "dma_apbperi_spi2_pms_constrain_sram_world_0_pms_0",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1": {
    -                    "description": "dma_apbperi_spi2_pms_constrain_sram_world_0_pms_1",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2": {
    -                    "description": "dma_apbperi_spi2_pms_constrain_sram_world_0_pms_2",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3": {
    -                    "description": "dma_apbperi_spi2_pms_constrain_sram_world_0_pms_3",
    -                    "offset": 6,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0": {
    -                    "description": "dma_apbperi_spi2_pms_constrain_sram_world_1_pms_0",
    -                    "offset": 12,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1": {
    -                    "description": "dma_apbperi_spi2_pms_constrain_sram_world_1_pms_1",
    -                    "offset": 14,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2": {
    -                    "description": "dma_apbperi_spi2_pms_constrain_sram_world_1_pms_2",
    -                    "offset": 16,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3": {
    -                    "description": "dma_apbperi_spi2_pms_constrain_sram_world_1_pms_3",
    -                    "offset": 18,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_APBPERI_UCHI0_PMS_CONSTRAIN_0": {
    -              "description": "SENSITIVE_DMA_APBPERI_UCHI0_PMS_CONSTRAIN_0_REG",
    -              "offset": 64,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_APBPERI_UCHI0_PMS_CONSTRAIN_LOCK": {
    -                    "description": "dma_apbperi_uchi0_pms_constrain_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_APBPERI_UCHI0_PMS_CONSTRAIN_1": {
    -              "description": "SENSITIVE_DMA_APBPERI_UCHI0_PMS_CONSTRAIN_1_REG",
    -              "offset": 68,
    -              "size": 32,
    -              "reset_value": 1044735,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0": {
    -                    "description": "dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_0",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1": {
    -                    "description": "dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_1",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2": {
    -                    "description": "dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_2",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3": {
    -                    "description": "dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_3",
    -                    "offset": 6,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0": {
    -                    "description": "dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_0",
    -                    "offset": 12,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1": {
    -                    "description": "dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_1",
    -                    "offset": 14,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2": {
    -                    "description": "dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_2",
    -                    "offset": 16,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3": {
    -                    "description": "dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_3",
    -                    "offset": 18,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_APBPERI_I2S0_PMS_CONSTRAIN_0": {
    -              "description": "SENSITIVE_DMA_APBPERI_I2S0_PMS_CONSTRAIN_0_REG",
    -              "offset": 72,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_APBPERI_I2S0_PMS_CONSTRAIN_LOCK": {
    -                    "description": "dma_apbperi_i2s0_pms_constrain_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_APBPERI_I2S0_PMS_CONSTRAIN_1": {
    -              "description": "SENSITIVE_DMA_APBPERI_I2S0_PMS_CONSTRAIN_1_REG",
    -              "offset": 76,
    -              "size": 32,
    -              "reset_value": 1044735,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0": {
    -                    "description": "dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_0",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1": {
    -                    "description": "dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_1",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2": {
    -                    "description": "dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_2",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3": {
    -                    "description": "dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_3",
    -                    "offset": 6,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0": {
    -                    "description": "dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_0",
    -                    "offset": 12,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1": {
    -                    "description": "dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_1",
    -                    "offset": 14,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2": {
    -                    "description": "dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_2",
    -                    "offset": 16,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3": {
    -                    "description": "dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_3",
    -                    "offset": 18,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_APBPERI_MAC_PMS_CONSTRAIN_0": {
    -              "description": "SENSITIVE_DMA_APBPERI_MAC_PMS_CONSTRAIN_0_REG",
    -              "offset": 80,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_APBPERI_MAC_PMS_CONSTRAIN_LOCK": {
    -                    "description": "dma_apbperi_mac_pms_constrain_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_APBPERI_MAC_PMS_CONSTRAIN_1": {
    -              "description": "SENSITIVE_DMA_APBPERI_MAC_PMS_CONSTRAIN_1_REG",
    -              "offset": 84,
    -              "size": 32,
    -              "reset_value": 1044735,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0": {
    -                    "description": "dma_apbperi_mac_pms_constrain_sram_world_0_pms_0",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1": {
    -                    "description": "dma_apbperi_mac_pms_constrain_sram_world_0_pms_1",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2": {
    -                    "description": "dma_apbperi_mac_pms_constrain_sram_world_0_pms_2",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3": {
    -                    "description": "dma_apbperi_mac_pms_constrain_sram_world_0_pms_3",
    -                    "offset": 6,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0": {
    -                    "description": "dma_apbperi_mac_pms_constrain_sram_world_1_pms_0",
    -                    "offset": 12,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1": {
    -                    "description": "dma_apbperi_mac_pms_constrain_sram_world_1_pms_1",
    -                    "offset": 14,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2": {
    -                    "description": "dma_apbperi_mac_pms_constrain_sram_world_1_pms_2",
    -                    "offset": 16,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3": {
    -                    "description": "dma_apbperi_mac_pms_constrain_sram_world_1_pms_3",
    -                    "offset": 18,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_APBPERI_BACKUP_PMS_CONSTRAIN_0": {
    -              "description": "SENSITIVE_DMA_APBPERI_BACKUP_PMS_CONSTRAIN_0_REG",
    -              "offset": 88,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_APBPERI_BACKUP_PMS_CONSTRAIN_LOCK": {
    -                    "description": "dma_apbperi_backup_pms_constrain_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_APBPERI_BACKUP_PMS_CONSTRAIN_1": {
    -              "description": "SENSITIVE_DMA_APBPERI_BACKUP_PMS_CONSTRAIN_1_REG",
    -              "offset": 92,
    -              "size": 32,
    -              "reset_value": 1044735,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0": {
    -                    "description": "dma_apbperi_backup_pms_constrain_sram_world_0_pms_0",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1": {
    -                    "description": "dma_apbperi_backup_pms_constrain_sram_world_0_pms_1",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2": {
    -                    "description": "dma_apbperi_backup_pms_constrain_sram_world_0_pms_2",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3": {
    -                    "description": "dma_apbperi_backup_pms_constrain_sram_world_0_pms_3",
    -                    "offset": 6,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0": {
    -                    "description": "dma_apbperi_backup_pms_constrain_sram_world_1_pms_0",
    -                    "offset": 12,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1": {
    -                    "description": "dma_apbperi_backup_pms_constrain_sram_world_1_pms_1",
    -                    "offset": 14,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2": {
    -                    "description": "dma_apbperi_backup_pms_constrain_sram_world_1_pms_2",
    -                    "offset": 16,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3": {
    -                    "description": "dma_apbperi_backup_pms_constrain_sram_world_1_pms_3",
    -                    "offset": 18,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_APBPERI_LC_PMS_CONSTRAIN_0": {
    -              "description": "SENSITIVE_DMA_APBPERI_LC_PMS_CONSTRAIN_0_REG",
    -              "offset": 96,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_APBPERI_LC_PMS_CONSTRAIN_LOCK": {
    -                    "description": "dma_apbperi_lc_pms_constrain_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_APBPERI_LC_PMS_CONSTRAIN_1": {
    -              "description": "SENSITIVE_DMA_APBPERI_LC_PMS_CONSTRAIN_1_REG",
    -              "offset": 100,
    -              "size": 32,
    -              "reset_value": 1044735,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0": {
    -                    "description": "dma_apbperi_lc_pms_constrain_sram_world_0_pms_0",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1": {
    -                    "description": "dma_apbperi_lc_pms_constrain_sram_world_0_pms_1",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2": {
    -                    "description": "dma_apbperi_lc_pms_constrain_sram_world_0_pms_2",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3": {
    -                    "description": "dma_apbperi_lc_pms_constrain_sram_world_0_pms_3",
    -                    "offset": 6,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0": {
    -                    "description": "dma_apbperi_lc_pms_constrain_sram_world_1_pms_0",
    -                    "offset": 12,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1": {
    -                    "description": "dma_apbperi_lc_pms_constrain_sram_world_1_pms_1",
    -                    "offset": 14,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2": {
    -                    "description": "dma_apbperi_lc_pms_constrain_sram_world_1_pms_2",
    -                    "offset": 16,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3": {
    -                    "description": "dma_apbperi_lc_pms_constrain_sram_world_1_pms_3",
    -                    "offset": 18,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_APBPERI_AES_PMS_CONSTRAIN_0": {
    -              "description": "SENSITIVE_DMA_APBPERI_AES_PMS_CONSTRAIN_0_REG",
    -              "offset": 104,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_APBPERI_AES_PMS_CONSTRAIN_LOCK": {
    -                    "description": "dma_apbperi_aes_pms_constrain_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_APBPERI_AES_PMS_CONSTRAIN_1": {
    -              "description": "SENSITIVE_DMA_APBPERI_AES_PMS_CONSTRAIN_1_REG",
    -              "offset": 108,
    -              "size": 32,
    -              "reset_value": 1044735,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0": {
    -                    "description": "dma_apbperi_aes_pms_constrain_sram_world_0_pms_0",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1": {
    -                    "description": "dma_apbperi_aes_pms_constrain_sram_world_0_pms_1",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2": {
    -                    "description": "dma_apbperi_aes_pms_constrain_sram_world_0_pms_2",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3": {
    -                    "description": "dma_apbperi_aes_pms_constrain_sram_world_0_pms_3",
    -                    "offset": 6,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0": {
    -                    "description": "dma_apbperi_aes_pms_constrain_sram_world_1_pms_0",
    -                    "offset": 12,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1": {
    -                    "description": "dma_apbperi_aes_pms_constrain_sram_world_1_pms_1",
    -                    "offset": 14,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2": {
    -                    "description": "dma_apbperi_aes_pms_constrain_sram_world_1_pms_2",
    -                    "offset": 16,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3": {
    -                    "description": "dma_apbperi_aes_pms_constrain_sram_world_1_pms_3",
    -                    "offset": 18,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_APBPERI_SHA_PMS_CONSTRAIN_0": {
    -              "description": "SENSITIVE_DMA_APBPERI_SHA_PMS_CONSTRAIN_0_REG",
    -              "offset": 112,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_APBPERI_SHA_PMS_CONSTRAIN_LOCK": {
    -                    "description": "dma_apbperi_sha_pms_constrain_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_APBPERI_SHA_PMS_CONSTRAIN_1": {
    -              "description": "SENSITIVE_DMA_APBPERI_SHA_PMS_CONSTRAIN_1_REG",
    -              "offset": 116,
    -              "size": 32,
    -              "reset_value": 1044735,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0": {
    -                    "description": "dma_apbperi_sha_pms_constrain_sram_world_0_pms_0",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1": {
    -                    "description": "dma_apbperi_sha_pms_constrain_sram_world_0_pms_1",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2": {
    -                    "description": "dma_apbperi_sha_pms_constrain_sram_world_0_pms_2",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3": {
    -                    "description": "dma_apbperi_sha_pms_constrain_sram_world_0_pms_3",
    -                    "offset": 6,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0": {
    -                    "description": "dma_apbperi_sha_pms_constrain_sram_world_1_pms_0",
    -                    "offset": 12,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1": {
    -                    "description": "dma_apbperi_sha_pms_constrain_sram_world_1_pms_1",
    -                    "offset": 14,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2": {
    -                    "description": "dma_apbperi_sha_pms_constrain_sram_world_1_pms_2",
    -                    "offset": 16,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3": {
    -                    "description": "dma_apbperi_sha_pms_constrain_sram_world_1_pms_3",
    -                    "offset": 18,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_0": {
    -              "description": "SENSITIVE_DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_0_REG",
    -              "offset": 120,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_LOCK": {
    -                    "description": "dma_apbperi_adc_dac_pms_constrain_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_1": {
    -              "description": "SENSITIVE_DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_1_REG",
    -              "offset": 124,
    -              "size": 32,
    -              "reset_value": 1044735,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0": {
    -                    "description": "dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_0",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1": {
    -                    "description": "dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_1",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2": {
    -                    "description": "dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_2",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3": {
    -                    "description": "dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_3",
    -                    "offset": 6,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0": {
    -                    "description": "dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_0",
    -                    "offset": 12,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1": {
    -                    "description": "dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_1",
    -                    "offset": 14,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2": {
    -                    "description": "dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_2",
    -                    "offset": 16,
    -                    "size": 2
    -                  },
    -                  "DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3": {
    -                    "description": "dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_3",
    -                    "offset": 18,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_APBPERI_PMS_MONITOR_0": {
    -              "description": "SENSITIVE_DMA_APBPERI_PMS_MONITOR_0_REG",
    -              "offset": 128,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_APBPERI_PMS_MONITOR_LOCK": {
    -                    "description": "dma_apbperi_pms_monitor_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_APBPERI_PMS_MONITOR_1": {
    -              "description": "SENSITIVE_DMA_APBPERI_PMS_MONITOR_1_REG",
    -              "offset": 132,
    -              "size": 32,
    -              "reset_value": 3,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_APBPERI_PMS_MONITOR_VIOLATE_CLR": {
    -                    "description": "dma_apbperi_pms_monitor_violate_clr",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "DMA_APBPERI_PMS_MONITOR_VIOLATE_EN": {
    -                    "description": "dma_apbperi_pms_monitor_violate_en",
    -                    "offset": 1,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_APBPERI_PMS_MONITOR_2": {
    -              "description": "SENSITIVE_DMA_APBPERI_PMS_MONITOR_2_REG",
    -              "offset": 136,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_APBPERI_PMS_MONITOR_VIOLATE_INTR": {
    -                    "description": "dma_apbperi_pms_monitor_violate_intr",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_WORLD": {
    -                    "description": "dma_apbperi_pms_monitor_violate_status_world",
    -                    "offset": 1,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_ADDR": {
    -                    "description": "dma_apbperi_pms_monitor_violate_status_addr",
    -                    "offset": 3,
    -                    "size": 24,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_APBPERI_PMS_MONITOR_3": {
    -              "description": "SENSITIVE_DMA_APBPERI_PMS_MONITOR_3_REG",
    -              "offset": 140,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_WR": {
    -                    "description": "dma_apbperi_pms_monitor_violate_status_wr",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_BYTEEN": {
    -                    "description": "dma_apbperi_pms_monitor_violate_status_byteen",
    -                    "offset": 1,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_0": {
    -              "description": "SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_0_REG",
    -              "offset": 144,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_LOCK": {
    -                    "description": "core_x_iram0_dram0_dma_split_line_constrain_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_1": {
    -              "description": "SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_1_REG",
    -              "offset": 148,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_X_IRAM0_DRAM0_DMA_SRAM_CATEGORY_0": {
    -                    "description": "core_x_iram0_dram0_dma_sram_category_0",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "CORE_X_IRAM0_DRAM0_DMA_SRAM_CATEGORY_1": {
    -                    "description": "core_x_iram0_dram0_dma_sram_category_1",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "CORE_X_IRAM0_DRAM0_DMA_SRAM_CATEGORY_2": {
    -                    "description": "core_x_iram0_dram0_dma_sram_category_2",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "CORE_X_IRAM0_DRAM0_DMA_SRAM_SPLITADDR": {
    -                    "description": "core_x_iram0_dram0_dma_sram_splitaddr",
    -                    "offset": 14,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_2": {
    -              "description": "SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_2_REG",
    -              "offset": 152,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_X_IRAM0_SRAM_LINE_0_CATEGORY_0": {
    -                    "description": "core_x_iram0_sram_line_0_category_0",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "CORE_X_IRAM0_SRAM_LINE_0_CATEGORY_1": {
    -                    "description": "core_x_iram0_sram_line_0_category_1",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "CORE_X_IRAM0_SRAM_LINE_0_CATEGORY_2": {
    -                    "description": "core_x_iram0_sram_line_0_category_2",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "CORE_X_IRAM0_SRAM_LINE_0_SPLITADDR": {
    -                    "description": "core_x_iram0_sram_line_0_splitaddr",
    -                    "offset": 14,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_3": {
    -              "description": "SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_3_REG",
    -              "offset": 156,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_X_IRAM0_SRAM_LINE_1_CATEGORY_0": {
    -                    "description": "core_x_iram0_sram_line_1_category_0",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "CORE_X_IRAM0_SRAM_LINE_1_CATEGORY_1": {
    -                    "description": "core_x_iram0_sram_line_1_category_1",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "CORE_X_IRAM0_SRAM_LINE_1_CATEGORY_2": {
    -                    "description": "core_x_iram0_sram_line_1_category_2",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "CORE_X_IRAM0_SRAM_LINE_1_SPLITADDR": {
    -                    "description": "core_x_iram0_sram_line_1_splitaddr",
    -                    "offset": 14,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_4": {
    -              "description": "SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_4_REG",
    -              "offset": 160,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_X_DRAM0_DMA_SRAM_LINE_0_CATEGORY_0": {
    -                    "description": "core_x_dram0_dma_sram_line_0_category_0",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "CORE_X_DRAM0_DMA_SRAM_LINE_0_CATEGORY_1": {
    -                    "description": "core_x_dram0_dma_sram_line_0_category_1",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "CORE_X_DRAM0_DMA_SRAM_LINE_0_CATEGORY_2": {
    -                    "description": "core_x_dram0_dma_sram_line_0_category_2",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "CORE_X_DRAM0_DMA_SRAM_LINE_0_SPLITADDR": {
    -                    "description": "core_x_dram0_dma_sram_line_0_splitaddr",
    -                    "offset": 14,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_5": {
    -              "description": "SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_5_REG",
    -              "offset": 164,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_X_DRAM0_DMA_SRAM_LINE_1_CATEGORY_0": {
    -                    "description": "core_x_dram0_dma_sram_line_1_category_0",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "CORE_X_DRAM0_DMA_SRAM_LINE_1_CATEGORY_1": {
    -                    "description": "core_x_dram0_dma_sram_line_1_category_1",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "CORE_X_DRAM0_DMA_SRAM_LINE_1_CATEGORY_2": {
    -                    "description": "core_x_dram0_dma_sram_line_1_category_2",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "CORE_X_DRAM0_DMA_SRAM_LINE_1_SPLITADDR": {
    -                    "description": "core_x_dram0_dma_sram_line_1_splitaddr",
    -                    "offset": 14,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_X_IRAM0_PMS_CONSTRAIN_0": {
    -              "description": "SENSITIVE_CORE_X_IRAM0_PMS_CONSTRAIN_0_REG",
    -              "offset": 168,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_X_IRAM0_PMS_CONSTRAIN_LOCK": {
    -                    "description": "core_x_iram0_pms_constrain_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_X_IRAM0_PMS_CONSTRAIN_1": {
    -              "description": "SENSITIVE_CORE_X_IRAM0_PMS_CONSTRAIN_1_REG",
    -              "offset": 172,
    -              "size": 32,
    -              "reset_value": 1867775,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0": {
    -                    "description": "core_x_iram0_pms_constrain_sram_world_1_pms_0",
    -                    "offset": 0,
    -                    "size": 3
    -                  },
    -                  "CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1": {
    -                    "description": "core_x_iram0_pms_constrain_sram_world_1_pms_1",
    -                    "offset": 3,
    -                    "size": 3
    -                  },
    -                  "CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2": {
    -                    "description": "core_x_iram0_pms_constrain_sram_world_1_pms_2",
    -                    "offset": 6,
    -                    "size": 3
    -                  },
    -                  "CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3": {
    -                    "description": "core_x_iram0_pms_constrain_sram_world_1_pms_3",
    -                    "offset": 9,
    -                    "size": 3
    -                  },
    -                  "CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_CACHEDATAARRAY_PMS_0": {
    -                    "description": "core_x_iram0_pms_constrain_sram_world_1_cachedataarray_pms_0",
    -                    "offset": 12,
    -                    "size": 3
    -                  },
    -                  "CORE_X_IRAM0_PMS_CONSTRAIN_ROM_WORLD_1_PMS": {
    -                    "description": "core_x_iram0_pms_constrain_rom_world_1_pms",
    -                    "offset": 18,
    -                    "size": 3
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_X_IRAM0_PMS_CONSTRAIN_2": {
    -              "description": "SENSITIVE_CORE_X_IRAM0_PMS_CONSTRAIN_2_REG",
    -              "offset": 176,
    -              "size": 32,
    -              "reset_value": 1867775,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0": {
    -                    "description": "core_x_iram0_pms_constrain_sram_world_0_pms_0",
    -                    "offset": 0,
    -                    "size": 3
    -                  },
    -                  "CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1": {
    -                    "description": "core_x_iram0_pms_constrain_sram_world_0_pms_1",
    -                    "offset": 3,
    -                    "size": 3
    -                  },
    -                  "CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2": {
    -                    "description": "core_x_iram0_pms_constrain_sram_world_0_pms_2",
    -                    "offset": 6,
    -                    "size": 3
    -                  },
    -                  "CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3": {
    -                    "description": "core_x_iram0_pms_constrain_sram_world_0_pms_3",
    -                    "offset": 9,
    -                    "size": 3
    -                  },
    -                  "CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_CACHEDATAARRAY_PMS_0": {
    -                    "description": "core_x_iram0_pms_constrain_sram_world_0_cachedataarray_pms_0",
    -                    "offset": 12,
    -                    "size": 3
    -                  },
    -                  "CORE_X_IRAM0_PMS_CONSTRAIN_ROM_WORLD_0_PMS": {
    -                    "description": "core_x_iram0_pms_constrain_rom_world_0_pms",
    -                    "offset": 18,
    -                    "size": 3
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_IRAM0_PMS_MONITOR_0": {
    -              "description": "SENSITIVE_CORE_0_IRAM0_PMS_MONITOR_0_REG",
    -              "offset": 180,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_IRAM0_PMS_MONITOR_LOCK": {
    -                    "description": "core_0_iram0_pms_monitor_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_IRAM0_PMS_MONITOR_1": {
    -              "description": "SENSITIVE_CORE_0_IRAM0_PMS_MONITOR_1_REG",
    -              "offset": 184,
    -              "size": 32,
    -              "reset_value": 3,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_IRAM0_PMS_MONITOR_VIOLATE_CLR": {
    -                    "description": "core_0_iram0_pms_monitor_violate_clr",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "CORE_0_IRAM0_PMS_MONITOR_VIOLATE_EN": {
    -                    "description": "core_0_iram0_pms_monitor_violate_en",
    -                    "offset": 1,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_IRAM0_PMS_MONITOR_2": {
    -              "description": "SENSITIVE_CORE_0_IRAM0_PMS_MONITOR_2_REG",
    -              "offset": 188,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_IRAM0_PMS_MONITOR_VIOLATE_INTR": {
    -                    "description": "core_0_iram0_pms_monitor_violate_intr",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_WR": {
    -                    "description": "core_0_iram0_pms_monitor_violate_status_wr",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_LOADSTORE": {
    -                    "description": "core_0_iram0_pms_monitor_violate_status_loadstore",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_WORLD": {
    -                    "description": "core_0_iram0_pms_monitor_violate_status_world",
    -                    "offset": 3,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_ADDR": {
    -                    "description": "core_0_iram0_pms_monitor_violate_status_addr",
    -                    "offset": 5,
    -                    "size": 24,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_X_DRAM0_PMS_CONSTRAIN_0": {
    -              "description": "SENSITIVE_CORE_X_DRAM0_PMS_CONSTRAIN_0_REG",
    -              "offset": 192,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_X_DRAM0_PMS_CONSTRAIN_LOCK": {
    -                    "description": "core_x_dram0_pms_constrain_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_X_DRAM0_PMS_CONSTRAIN_1": {
    -              "description": "SENSITIVE_CORE_X_DRAM0_PMS_CONSTRAIN_1_REG",
    -              "offset": 196,
    -              "size": 32,
    -              "reset_value": 252702975,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0": {
    -                    "description": "core_x_dram0_pms_constrain_sram_world_0_pms_0",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1": {
    -                    "description": "core_x_dram0_pms_constrain_sram_world_0_pms_1",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2": {
    -                    "description": "core_x_dram0_pms_constrain_sram_world_0_pms_2",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3": {
    -                    "description": "core_x_dram0_pms_constrain_sram_world_0_pms_3",
    -                    "offset": 6,
    -                    "size": 2
    -                  },
    -                  "CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0": {
    -                    "description": "core_x_dram0_pms_constrain_sram_world_1_pms_0",
    -                    "offset": 12,
    -                    "size": 2
    -                  },
    -                  "CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1": {
    -                    "description": "core_x_dram0_pms_constrain_sram_world_1_pms_1",
    -                    "offset": 14,
    -                    "size": 2
    -                  },
    -                  "CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2": {
    -                    "description": "core_x_dram0_pms_constrain_sram_world_1_pms_2",
    -                    "offset": 16,
    -                    "size": 2
    -                  },
    -                  "CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3": {
    -                    "description": "core_x_dram0_pms_constrain_sram_world_1_pms_3",
    -                    "offset": 18,
    -                    "size": 2
    -                  },
    -                  "CORE_X_DRAM0_PMS_CONSTRAIN_ROM_WORLD_0_PMS": {
    -                    "description": "core_x_dram0_pms_constrain_rom_world_0_pms",
    -                    "offset": 24,
    -                    "size": 2
    -                  },
    -                  "CORE_X_DRAM0_PMS_CONSTRAIN_ROM_WORLD_1_PMS": {
    -                    "description": "core_x_dram0_pms_constrain_rom_world_1_pms",
    -                    "offset": 26,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_DRAM0_PMS_MONITOR_0": {
    -              "description": "SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_0_REG",
    -              "offset": 200,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_DRAM0_PMS_MONITOR_LOCK": {
    -                    "description": "core_0_dram0_pms_monitor_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_DRAM0_PMS_MONITOR_1": {
    -              "description": "SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_1_REG",
    -              "offset": 204,
    -              "size": 32,
    -              "reset_value": 3,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_DRAM0_PMS_MONITOR_VIOLATE_CLR": {
    -                    "description": "core_0_dram0_pms_monitor_violate_clr",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "CORE_0_DRAM0_PMS_MONITOR_VIOLATE_EN": {
    -                    "description": "core_0_dram0_pms_monitor_violate_en",
    -                    "offset": 1,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_DRAM0_PMS_MONITOR_2": {
    -              "description": "SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_2_REG",
    -              "offset": 208,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_DRAM0_PMS_MONITOR_VIOLATE_INTR": {
    -                    "description": "core_0_dram0_pms_monitor_violate_intr",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_LOCK": {
    -                    "description": "core_0_dram0_pms_monitor_violate_status_lock",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_WORLD": {
    -                    "description": "core_0_dram0_pms_monitor_violate_status_world",
    -                    "offset": 2,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_ADDR": {
    -                    "description": "core_0_dram0_pms_monitor_violate_status_addr",
    -                    "offset": 4,
    -                    "size": 24,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_DRAM0_PMS_MONITOR_3": {
    -              "description": "SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_3_REG",
    -              "offset": 212,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_WR": {
    -                    "description": "core_0_dram0_pms_monitor_violate_status_wr",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_BYTEEN": {
    -                    "description": "core_0_dram0_pms_monitor_violate_status_byteen",
    -                    "offset": 1,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_PIF_PMS_CONSTRAIN_0": {
    -              "description": "SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_0_REG",
    -              "offset": 216,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_PIF_PMS_CONSTRAIN_LOCK": {
    -                    "description": "core_0_pif_pms_constrain_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_PIF_PMS_CONSTRAIN_1": {
    -              "description": "SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_1_REG",
    -              "offset": 220,
    -              "size": 32,
    -              "reset_value": 3473932287,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_UART": {
    -                    "description": "core_0_pif_pms_constrain_world_0_uart",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_G0SPI_1": {
    -                    "description": "core_0_pif_pms_constrain_world_0_g0spi_1",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_G0SPI_0": {
    -                    "description": "core_0_pif_pms_constrain_world_0_g0spi_0",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_GPIO": {
    -                    "description": "core_0_pif_pms_constrain_world_0_gpio",
    -                    "offset": 6,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_FE2": {
    -                    "description": "core_0_pif_pms_constrain_world_0_fe2",
    -                    "offset": 8,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_FE": {
    -                    "description": "core_0_pif_pms_constrain_world_0_fe",
    -                    "offset": 10,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_TIMER": {
    -                    "description": "core_0_pif_pms_constrain_world_0_timer",
    -                    "offset": 12,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_RTC": {
    -                    "description": "core_0_pif_pms_constrain_world_0_rtc",
    -                    "offset": 14,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_IO_MUX": {
    -                    "description": "core_0_pif_pms_constrain_world_0_io_mux",
    -                    "offset": 16,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_WDG": {
    -                    "description": "core_0_pif_pms_constrain_world_0_wdg",
    -                    "offset": 18,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_MISC": {
    -                    "description": "core_0_pif_pms_constrain_world_0_misc",
    -                    "offset": 24,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_I2C": {
    -                    "description": "core_0_pif_pms_constrain_world_0_i2c",
    -                    "offset": 26,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_UART1": {
    -                    "description": "core_0_pif_pms_constrain_world_0_uart1",
    -                    "offset": 30,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_PIF_PMS_CONSTRAIN_2": {
    -              "description": "SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_2_REG",
    -              "offset": 224,
    -              "size": 32,
    -              "reset_value": 4240641267,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_BT": {
    -                    "description": "core_0_pif_pms_constrain_world_0_bt",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_I2C_EXT0": {
    -                    "description": "core_0_pif_pms_constrain_world_0_i2c_ext0",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_UHCI0": {
    -                    "description": "core_0_pif_pms_constrain_world_0_uhci0",
    -                    "offset": 6,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_RMT": {
    -                    "description": "core_0_pif_pms_constrain_world_0_rmt",
    -                    "offset": 10,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_LEDC": {
    -                    "description": "core_0_pif_pms_constrain_world_0_ledc",
    -                    "offset": 16,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_BB": {
    -                    "description": "core_0_pif_pms_constrain_world_0_bb",
    -                    "offset": 22,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_TIMERGROUP": {
    -                    "description": "core_0_pif_pms_constrain_world_0_timergroup",
    -                    "offset": 26,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_TIMERGROUP1": {
    -                    "description": "core_0_pif_pms_constrain_world_0_timergroup1",
    -                    "offset": 28,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SYSTIMER": {
    -                    "description": "core_0_pif_pms_constrain_world_0_systimer",
    -                    "offset": 30,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_PIF_PMS_CONSTRAIN_3": {
    -              "description": "SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_3_REG",
    -              "offset": 228,
    -              "size": 32,
    -              "reset_value": 1019268147,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SPI_2": {
    -                    "description": "core_0_pif_pms_constrain_world_0_spi_2",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_APB_CTRL": {
    -                    "description": "core_0_pif_pms_constrain_world_0_apb_ctrl",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CAN": {
    -                    "description": "core_0_pif_pms_constrain_world_0_can",
    -                    "offset": 10,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_I2S1": {
    -                    "description": "core_0_pif_pms_constrain_world_0_i2s1",
    -                    "offset": 14,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_RWBT": {
    -                    "description": "core_0_pif_pms_constrain_world_0_rwbt",
    -                    "offset": 22,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_WIFIMAC": {
    -                    "description": "core_0_pif_pms_constrain_world_0_wifimac",
    -                    "offset": 26,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_PWR": {
    -                    "description": "core_0_pif_pms_constrain_world_0_pwr",
    -                    "offset": 28,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_PIF_PMS_CONSTRAIN_4": {
    -              "description": "SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_4_REG",
    -              "offset": 232,
    -              "size": 32,
    -              "reset_value": 4294964220,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_USB_WRAP": {
    -                    "description": "core_0_pif_pms_constrain_world_0_usb_wrap",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CRYPTO_PERI": {
    -                    "description": "core_0_pif_pms_constrain_world_0_crypto_peri",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CRYPTO_DMA": {
    -                    "description": "core_0_pif_pms_constrain_world_0_crypto_dma",
    -                    "offset": 6,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_APB_ADC": {
    -                    "description": "core_0_pif_pms_constrain_world_0_apb_adc",
    -                    "offset": 8,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_BT_PWR": {
    -                    "description": "core_0_pif_pms_constrain_world_0_bt_pwr",
    -                    "offset": 12,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_USB_DEVICE": {
    -                    "description": "core_0_pif_pms_constrain_world_0_usb_device",
    -                    "offset": 14,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SYSTEM": {
    -                    "description": "core_0_pif_pms_constrain_world_0_system",
    -                    "offset": 16,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SENSITIVE": {
    -                    "description": "core_0_pif_pms_constrain_world_0_sensitive",
    -                    "offset": 18,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_INTERRUPT": {
    -                    "description": "core_0_pif_pms_constrain_world_0_interrupt",
    -                    "offset": 20,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_DMA_COPY": {
    -                    "description": "core_0_pif_pms_constrain_world_0_dma_copy",
    -                    "offset": 22,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CACHE_CONFIG": {
    -                    "description": "core_0_pif_pms_constrain_world_0_cache_config",
    -                    "offset": 24,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_AD": {
    -                    "description": "core_0_pif_pms_constrain_world_0_ad",
    -                    "offset": 26,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_DIO": {
    -                    "description": "core_0_pif_pms_constrain_world_0_dio",
    -                    "offset": 28,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_WORLD_CONTROLLER": {
    -                    "description": "core_0_pif_pms_constrain_world_0_world_controller",
    -                    "offset": 30,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_PIF_PMS_CONSTRAIN_5": {
    -              "description": "SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_5_REG",
    -              "offset": 236,
    -              "size": 32,
    -              "reset_value": 3473932287,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_UART": {
    -                    "description": "core_0_pif_pms_constrain_world_1_uart",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_G0SPI_1": {
    -                    "description": "core_0_pif_pms_constrain_world_1_g0spi_1",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_G0SPI_0": {
    -                    "description": "core_0_pif_pms_constrain_world_1_g0spi_0",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_GPIO": {
    -                    "description": "core_0_pif_pms_constrain_world_1_gpio",
    -                    "offset": 6,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_FE2": {
    -                    "description": "core_0_pif_pms_constrain_world_1_fe2",
    -                    "offset": 8,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_FE": {
    -                    "description": "core_0_pif_pms_constrain_world_1_fe",
    -                    "offset": 10,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_TIMER": {
    -                    "description": "core_0_pif_pms_constrain_world_1_timer",
    -                    "offset": 12,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_RTC": {
    -                    "description": "core_0_pif_pms_constrain_world_1_rtc",
    -                    "offset": 14,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_IO_MUX": {
    -                    "description": "core_0_pif_pms_constrain_world_1_io_mux",
    -                    "offset": 16,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_WDG": {
    -                    "description": "core_0_pif_pms_constrain_world_1_wdg",
    -                    "offset": 18,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_MISC": {
    -                    "description": "core_0_pif_pms_constrain_world_1_misc",
    -                    "offset": 24,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_I2C": {
    -                    "description": "core_0_pif_pms_constrain_world_1_i2c",
    -                    "offset": 26,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_UART1": {
    -                    "description": "core_0_pif_pms_constrain_world_1_uart1",
    -                    "offset": 30,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_PIF_PMS_CONSTRAIN_6": {
    -              "description": "SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_6_REG",
    -              "offset": 240,
    -              "size": 32,
    -              "reset_value": 4240641267,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_BT": {
    -                    "description": "core_0_pif_pms_constrain_world_1_bt",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_I2C_EXT0": {
    -                    "description": "core_0_pif_pms_constrain_world_1_i2c_ext0",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_UHCI0": {
    -                    "description": "core_0_pif_pms_constrain_world_1_uhci0",
    -                    "offset": 6,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_RMT": {
    -                    "description": "core_0_pif_pms_constrain_world_1_rmt",
    -                    "offset": 10,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_LEDC": {
    -                    "description": "core_0_pif_pms_constrain_world_1_ledc",
    -                    "offset": 16,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_BB": {
    -                    "description": "core_0_pif_pms_constrain_world_1_bb",
    -                    "offset": 22,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_TIMERGROUP": {
    -                    "description": "core_0_pif_pms_constrain_world_1_timergroup",
    -                    "offset": 26,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_TIMERGROUP1": {
    -                    "description": "core_0_pif_pms_constrain_world_1_timergroup1",
    -                    "offset": 28,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SYSTIMER": {
    -                    "description": "core_0_pif_pms_constrain_world_1_systimer",
    -                    "offset": 30,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_PIF_PMS_CONSTRAIN_7": {
    -              "description": "SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_7_REG",
    -              "offset": 244,
    -              "size": 32,
    -              "reset_value": 1019268147,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SPI_2": {
    -                    "description": "core_0_pif_pms_constrain_world_1_spi_2",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_APB_CTRL": {
    -                    "description": "core_0_pif_pms_constrain_world_1_apb_ctrl",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CAN": {
    -                    "description": "core_0_pif_pms_constrain_world_1_can",
    -                    "offset": 10,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_I2S1": {
    -                    "description": "core_0_pif_pms_constrain_world_1_i2s1",
    -                    "offset": 14,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_RWBT": {
    -                    "description": "core_0_pif_pms_constrain_world_1_rwbt",
    -                    "offset": 22,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_WIFIMAC": {
    -                    "description": "core_0_pif_pms_constrain_world_1_wifimac",
    -                    "offset": 26,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_PWR": {
    -                    "description": "core_0_pif_pms_constrain_world_1_pwr",
    -                    "offset": 28,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_PIF_PMS_CONSTRAIN_8": {
    -              "description": "SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_8_REG",
    -              "offset": 248,
    -              "size": 32,
    -              "reset_value": 4294964220,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_USB_WRAP": {
    -                    "description": "core_0_pif_pms_constrain_world_1_usb_wrap",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CRYPTO_PERI": {
    -                    "description": "core_0_pif_pms_constrain_world_1_crypto_peri",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CRYPTO_DMA": {
    -                    "description": "core_0_pif_pms_constrain_world_1_crypto_dma",
    -                    "offset": 6,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_APB_ADC": {
    -                    "description": "core_0_pif_pms_constrain_world_1_apb_adc",
    -                    "offset": 8,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_BT_PWR": {
    -                    "description": "core_0_pif_pms_constrain_world_1_bt_pwr",
    -                    "offset": 12,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_USB_DEVICE": {
    -                    "description": "core_0_pif_pms_constrain_world_1_usb_device",
    -                    "offset": 14,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SYSTEM": {
    -                    "description": "core_0_pif_pms_constrain_world_1_system",
    -                    "offset": 16,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SENSITIVE": {
    -                    "description": "core_0_pif_pms_constrain_world_1_sensitive",
    -                    "offset": 18,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_INTERRUPT": {
    -                    "description": "core_0_pif_pms_constrain_world_1_interrupt",
    -                    "offset": 20,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_DMA_COPY": {
    -                    "description": "core_0_pif_pms_constrain_world_1_dma_copy",
    -                    "offset": 22,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CACHE_CONFIG": {
    -                    "description": "core_0_pif_pms_constrain_world_1_cache_config",
    -                    "offset": 24,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_AD": {
    -                    "description": "core_0_pif_pms_constrain_world_1_ad",
    -                    "offset": 26,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_DIO": {
    -                    "description": "core_0_pif_pms_constrain_world_1_dio",
    -                    "offset": 28,
    -                    "size": 2
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_WORLD_CONTROLLER": {
    -                    "description": "core_0_pif_pms_constrain_world_1_world_controller",
    -                    "offset": 30,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_PIF_PMS_CONSTRAIN_9": {
    -              "description": "SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_9_REG",
    -              "offset": 252,
    -              "size": 32,
    -              "reset_value": 4194303,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_SPLTADDR_WORLD_0": {
    -                    "description": "core_0_pif_pms_constrain_rtcfast_spltaddr_world_0",
    -                    "offset": 0,
    -                    "size": 11
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_SPLTADDR_WORLD_1": {
    -                    "description": "core_0_pif_pms_constrain_rtcfast_spltaddr_world_1",
    -                    "offset": 11,
    -                    "size": 11
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_PIF_PMS_CONSTRAIN_10": {
    -              "description": "SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_10_REG",
    -              "offset": 256,
    -              "size": 32,
    -              "reset_value": 4095,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_0_L": {
    -                    "description": "core_0_pif_pms_constrain_rtcfast_world_0_l",
    -                    "offset": 0,
    -                    "size": 3
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_0_H": {
    -                    "description": "core_0_pif_pms_constrain_rtcfast_world_0_h",
    -                    "offset": 3,
    -                    "size": 3
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_1_L": {
    -                    "description": "core_0_pif_pms_constrain_rtcfast_world_1_l",
    -                    "offset": 6,
    -                    "size": 3
    -                  },
    -                  "CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_1_H": {
    -                    "description": "core_0_pif_pms_constrain_rtcfast_world_1_h",
    -                    "offset": 9,
    -                    "size": 3
    -                  }
    -                }
    -              }
    -            },
    -            "REGION_PMS_CONSTRAIN_0": {
    -              "description": "SENSITIVE_REGION_PMS_CONSTRAIN_0_REG",
    -              "offset": 260,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "REGION_PMS_CONSTRAIN_LOCK": {
    -                    "description": "region_pms_constrain_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "REGION_PMS_CONSTRAIN_1": {
    -              "description": "SENSITIVE_REGION_PMS_CONSTRAIN_1_REG",
    -              "offset": 264,
    -              "size": 32,
    -              "reset_value": 16383,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "REGION_PMS_CONSTRAIN_WORLD_0_AREA_0": {
    -                    "description": "region_pms_constrain_world_0_area_0",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "REGION_PMS_CONSTRAIN_WORLD_0_AREA_1": {
    -                    "description": "region_pms_constrain_world_0_area_1",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "REGION_PMS_CONSTRAIN_WORLD_0_AREA_2": {
    -                    "description": "region_pms_constrain_world_0_area_2",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "REGION_PMS_CONSTRAIN_WORLD_0_AREA_3": {
    -                    "description": "region_pms_constrain_world_0_area_3",
    -                    "offset": 6,
    -                    "size": 2
    -                  },
    -                  "REGION_PMS_CONSTRAIN_WORLD_0_AREA_4": {
    -                    "description": "region_pms_constrain_world_0_area_4",
    -                    "offset": 8,
    -                    "size": 2
    -                  },
    -                  "REGION_PMS_CONSTRAIN_WORLD_0_AREA_5": {
    -                    "description": "region_pms_constrain_world_0_area_5",
    -                    "offset": 10,
    -                    "size": 2
    -                  },
    -                  "REGION_PMS_CONSTRAIN_WORLD_0_AREA_6": {
    -                    "description": "region_pms_constrain_world_0_area_6",
    -                    "offset": 12,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "REGION_PMS_CONSTRAIN_2": {
    -              "description": "SENSITIVE_REGION_PMS_CONSTRAIN_2_REG",
    -              "offset": 268,
    -              "size": 32,
    -              "reset_value": 16383,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "REGION_PMS_CONSTRAIN_WORLD_1_AREA_0": {
    -                    "description": "region_pms_constrain_world_1_area_0",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "REGION_PMS_CONSTRAIN_WORLD_1_AREA_1": {
    -                    "description": "region_pms_constrain_world_1_area_1",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "REGION_PMS_CONSTRAIN_WORLD_1_AREA_2": {
    -                    "description": "region_pms_constrain_world_1_area_2",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "REGION_PMS_CONSTRAIN_WORLD_1_AREA_3": {
    -                    "description": "region_pms_constrain_world_1_area_3",
    -                    "offset": 6,
    -                    "size": 2
    -                  },
    -                  "REGION_PMS_CONSTRAIN_WORLD_1_AREA_4": {
    -                    "description": "region_pms_constrain_world_1_area_4",
    -                    "offset": 8,
    -                    "size": 2
    -                  },
    -                  "REGION_PMS_CONSTRAIN_WORLD_1_AREA_5": {
    -                    "description": "region_pms_constrain_world_1_area_5",
    -                    "offset": 10,
    -                    "size": 2
    -                  },
    -                  "REGION_PMS_CONSTRAIN_WORLD_1_AREA_6": {
    -                    "description": "region_pms_constrain_world_1_area_6",
    -                    "offset": 12,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "REGION_PMS_CONSTRAIN_3": {
    -              "description": "SENSITIVE_REGION_PMS_CONSTRAIN_3_REG",
    -              "offset": 272,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "REGION_PMS_CONSTRAIN_ADDR_0": {
    -                    "description": "region_pms_constrain_addr_0",
    -                    "offset": 0,
    -                    "size": 30
    -                  }
    -                }
    -              }
    -            },
    -            "REGION_PMS_CONSTRAIN_4": {
    -              "description": "SENSITIVE_REGION_PMS_CONSTRAIN_4_REG",
    -              "offset": 276,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "REGION_PMS_CONSTRAIN_ADDR_1": {
    -                    "description": "region_pms_constrain_addr_1",
    -                    "offset": 0,
    -                    "size": 30
    -                  }
    -                }
    -              }
    -            },
    -            "REGION_PMS_CONSTRAIN_5": {
    -              "description": "SENSITIVE_REGION_PMS_CONSTRAIN_5_REG",
    -              "offset": 280,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "REGION_PMS_CONSTRAIN_ADDR_2": {
    -                    "description": "region_pms_constrain_addr_2",
    -                    "offset": 0,
    -                    "size": 30
    -                  }
    -                }
    -              }
    -            },
    -            "REGION_PMS_CONSTRAIN_6": {
    -              "description": "SENSITIVE_REGION_PMS_CONSTRAIN_6_REG",
    -              "offset": 284,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "REGION_PMS_CONSTRAIN_ADDR_3": {
    -                    "description": "region_pms_constrain_addr_3",
    -                    "offset": 0,
    -                    "size": 30
    -                  }
    -                }
    -              }
    -            },
    -            "REGION_PMS_CONSTRAIN_7": {
    -              "description": "SENSITIVE_REGION_PMS_CONSTRAIN_7_REG",
    -              "offset": 288,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "REGION_PMS_CONSTRAIN_ADDR_4": {
    -                    "description": "region_pms_constrain_addr_4",
    -                    "offset": 0,
    -                    "size": 30
    -                  }
    -                }
    -              }
    -            },
    -            "REGION_PMS_CONSTRAIN_8": {
    -              "description": "SENSITIVE_REGION_PMS_CONSTRAIN_8_REG",
    -              "offset": 292,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "REGION_PMS_CONSTRAIN_ADDR_5": {
    -                    "description": "region_pms_constrain_addr_5",
    -                    "offset": 0,
    -                    "size": 30
    -                  }
    -                }
    -              }
    -            },
    -            "REGION_PMS_CONSTRAIN_9": {
    -              "description": "SENSITIVE_REGION_PMS_CONSTRAIN_9_REG",
    -              "offset": 296,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "REGION_PMS_CONSTRAIN_ADDR_6": {
    -                    "description": "region_pms_constrain_addr_6",
    -                    "offset": 0,
    -                    "size": 30
    -                  }
    -                }
    -              }
    -            },
    -            "REGION_PMS_CONSTRAIN_10": {
    -              "description": "SENSITIVE_REGION_PMS_CONSTRAIN_10_REG",
    -              "offset": 300,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "REGION_PMS_CONSTRAIN_ADDR_7": {
    -                    "description": "region_pms_constrain_addr_7",
    -                    "offset": 0,
    -                    "size": 30
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_PIF_PMS_MONITOR_0": {
    -              "description": "SENSITIVE_CORE_0_PIF_PMS_MONITOR_0_REG",
    -              "offset": 304,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_PIF_PMS_MONITOR_LOCK": {
    -                    "description": "core_0_pif_pms_monitor_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_PIF_PMS_MONITOR_1": {
    -              "description": "SENSITIVE_CORE_0_PIF_PMS_MONITOR_1_REG",
    -              "offset": 308,
    -              "size": 32,
    -              "reset_value": 3,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_PIF_PMS_MONITOR_VIOLATE_CLR": {
    -                    "description": "core_0_pif_pms_monitor_violate_clr",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "CORE_0_PIF_PMS_MONITOR_VIOLATE_EN": {
    -                    "description": "core_0_pif_pms_monitor_violate_en",
    -                    "offset": 1,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_PIF_PMS_MONITOR_2": {
    -              "description": "SENSITIVE_CORE_0_PIF_PMS_MONITOR_2_REG",
    -              "offset": 312,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_PIF_PMS_MONITOR_VIOLATE_INTR": {
    -                    "description": "core_0_pif_pms_monitor_violate_intr",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HPORT_0": {
    -                    "description": "core_0_pif_pms_monitor_violate_status_hport_0",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HSIZE": {
    -                    "description": "core_0_pif_pms_monitor_violate_status_hsize",
    -                    "offset": 2,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HWRITE": {
    -                    "description": "core_0_pif_pms_monitor_violate_status_hwrite",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HWORLD": {
    -                    "description": "core_0_pif_pms_monitor_violate_status_hworld",
    -                    "offset": 6,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_PIF_PMS_MONITOR_3": {
    -              "description": "SENSITIVE_CORE_0_PIF_PMS_MONITOR_3_REG",
    -              "offset": 316,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HADDR": {
    -                    "description": "core_0_pif_pms_monitor_violate_status_haddr",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_PIF_PMS_MONITOR_4": {
    -              "description": "SENSITIVE_CORE_0_PIF_PMS_MONITOR_4_REG",
    -              "offset": 320,
    -              "size": 32,
    -              "reset_value": 3,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_CLR": {
    -                    "description": "core_0_pif_pms_monitor_nonword_violate_clr",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_EN": {
    -                    "description": "core_0_pif_pms_monitor_nonword_violate_en",
    -                    "offset": 1,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_PIF_PMS_MONITOR_5": {
    -              "description": "SENSITIVE_CORE_0_PIF_PMS_MONITOR_5_REG",
    -              "offset": 324,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_INTR": {
    -                    "description": "core_0_pif_pms_monitor_nonword_violate_intr",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_STATUS_HSIZE": {
    -                    "description": "core_0_pif_pms_monitor_nonword_violate_status_hsize",
    -                    "offset": 1,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_STATUS_HWORLD": {
    -                    "description": "core_0_pif_pms_monitor_nonword_violate_status_hworld",
    -                    "offset": 3,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_0_PIF_PMS_MONITOR_6": {
    -              "description": "SENSITIVE_CORE_0_PIF_PMS_MONITOR_6_REG",
    -              "offset": 328,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_STATUS_HADDR": {
    -                    "description": "core_0_pif_pms_monitor_nonword_violate_status_haddr",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "BACKUP_BUS_PMS_CONSTRAIN_0": {
    -              "description": "SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_0_REG",
    -              "offset": 332,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BACKUP_BUS_PMS_CONSTRAIN_LOCK": {
    -                    "description": "backup_bus_pms_constrain_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "BACKUP_BUS_PMS_CONSTRAIN_1": {
    -              "description": "SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_1_REG",
    -              "offset": 336,
    -              "size": 32,
    -              "reset_value": 3473932287,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BACKUP_BUS_PMS_CONSTRAIN_UART": {
    -                    "description": "backup_bus_pms_constrain_uart",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_G0SPI_1": {
    -                    "description": "backup_bus_pms_constrain_g0spi_1",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_G0SPI_0": {
    -                    "description": "backup_bus_pms_constrain_g0spi_0",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_GPIO": {
    -                    "description": "backup_bus_pms_constrain_gpio",
    -                    "offset": 6,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_FE2": {
    -                    "description": "backup_bus_pms_constrain_fe2",
    -                    "offset": 8,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_FE": {
    -                    "description": "backup_bus_pms_constrain_fe",
    -                    "offset": 10,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_TIMER": {
    -                    "description": "backup_bus_pms_constrain_timer",
    -                    "offset": 12,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_RTC": {
    -                    "description": "backup_bus_pms_constrain_rtc",
    -                    "offset": 14,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_IO_MUX": {
    -                    "description": "backup_bus_pms_constrain_io_mux",
    -                    "offset": 16,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_WDG": {
    -                    "description": "backup_bus_pms_constrain_wdg",
    -                    "offset": 18,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_MISC": {
    -                    "description": "backup_bus_pms_constrain_misc",
    -                    "offset": 24,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_I2C": {
    -                    "description": "backup_bus_pms_constrain_i2c",
    -                    "offset": 26,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_UART1": {
    -                    "description": "backup_bus_pms_constrain_uart1",
    -                    "offset": 30,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "BACKUP_BUS_PMS_CONSTRAIN_2": {
    -              "description": "SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_2_REG",
    -              "offset": 340,
    -              "size": 32,
    -              "reset_value": 4240641267,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BACKUP_BUS_PMS_CONSTRAIN_BT": {
    -                    "description": "backup_bus_pms_constrain_bt",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_I2C_EXT0": {
    -                    "description": "backup_bus_pms_constrain_i2c_ext0",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_UHCI0": {
    -                    "description": "backup_bus_pms_constrain_uhci0",
    -                    "offset": 6,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_RMT": {
    -                    "description": "backup_bus_pms_constrain_rmt",
    -                    "offset": 10,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_LEDC": {
    -                    "description": "backup_bus_pms_constrain_ledc",
    -                    "offset": 16,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_BB": {
    -                    "description": "backup_bus_pms_constrain_bb",
    -                    "offset": 22,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_TIMERGROUP": {
    -                    "description": "backup_bus_pms_constrain_timergroup",
    -                    "offset": 26,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_TIMERGROUP1": {
    -                    "description": "backup_bus_pms_constrain_timergroup1",
    -                    "offset": 28,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_SYSTIMER": {
    -                    "description": "backup_bus_pms_constrain_systimer",
    -                    "offset": 30,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "BACKUP_BUS_PMS_CONSTRAIN_3": {
    -              "description": "SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_3_REG",
    -              "offset": 344,
    -              "size": 32,
    -              "reset_value": 1019268147,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BACKUP_BUS_PMS_CONSTRAIN_SPI_2": {
    -                    "description": "backup_bus_pms_constrain_spi_2",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_APB_CTRL": {
    -                    "description": "backup_bus_pms_constrain_apb_ctrl",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_CAN": {
    -                    "description": "backup_bus_pms_constrain_can",
    -                    "offset": 10,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_I2S1": {
    -                    "description": "backup_bus_pms_constrain_i2s1",
    -                    "offset": 14,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_RWBT": {
    -                    "description": "backup_bus_pms_constrain_rwbt",
    -                    "offset": 22,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_WIFIMAC": {
    -                    "description": "backup_bus_pms_constrain_wifimac",
    -                    "offset": 26,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_PWR": {
    -                    "description": "backup_bus_pms_constrain_pwr",
    -                    "offset": 28,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "BACKUP_BUS_PMS_CONSTRAIN_4": {
    -              "description": "SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_4_REG",
    -              "offset": 348,
    -              "size": 32,
    -              "reset_value": 62460,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BACKUP_BUS_PMS_CONSTRAIN_USB_WRAP": {
    -                    "description": "backup_bus_pms_constrain_usb_wrap",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_CRYPTO_PERI": {
    -                    "description": "backup_bus_pms_constrain_crypto_peri",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_CRYPTO_DMA": {
    -                    "description": "backup_bus_pms_constrain_crypto_dma",
    -                    "offset": 6,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_APB_ADC": {
    -                    "description": "backup_bus_pms_constrain_apb_adc",
    -                    "offset": 8,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_BT_PWR": {
    -                    "description": "backup_bus_pms_constrain_bt_pwr",
    -                    "offset": 12,
    -                    "size": 2
    -                  },
    -                  "BACKUP_BUS_PMS_CONSTRAIN_USB_DEVICE": {
    -                    "description": "backup_bus_pms_constrain_usb_device",
    -                    "offset": 14,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "BACKUP_BUS_PMS_MONITOR_0": {
    -              "description": "SENSITIVE_BACKUP_BUS_PMS_MONITOR_0_REG",
    -              "offset": 352,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BACKUP_BUS_PMS_MONITOR_LOCK": {
    -                    "description": "backup_bus_pms_monitor_lock",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "BACKUP_BUS_PMS_MONITOR_1": {
    -              "description": "SENSITIVE_BACKUP_BUS_PMS_MONITOR_1_REG",
    -              "offset": 356,
    -              "size": 32,
    -              "reset_value": 3,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BACKUP_BUS_PMS_MONITOR_VIOLATE_CLR": {
    -                    "description": "backup_bus_pms_monitor_violate_clr",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "BACKUP_BUS_PMS_MONITOR_VIOLATE_EN": {
    -                    "description": "backup_bus_pms_monitor_violate_en",
    -                    "offset": 1,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "BACKUP_BUS_PMS_MONITOR_2": {
    -              "description": "SENSITIVE_BACKUP_BUS_PMS_MONITOR_2_REG",
    -              "offset": 360,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BACKUP_BUS_PMS_MONITOR_VIOLATE_INTR": {
    -                    "description": "backup_bus_pms_monitor_violate_intr",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "BACKUP_BUS_PMS_MONITOR_VIOLATE_STATUS_HTRANS": {
    -                    "description": "backup_bus_pms_monitor_violate_status_htrans",
    -                    "offset": 1,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "BACKUP_BUS_PMS_MONITOR_VIOLATE_STATUS_HSIZE": {
    -                    "description": "backup_bus_pms_monitor_violate_status_hsize",
    -                    "offset": 3,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "BACKUP_BUS_PMS_MONITOR_VIOLATE_STATUS_HWRITE": {
    -                    "description": "backup_bus_pms_monitor_violate_status_hwrite",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "BACKUP_BUS_PMS_MONITOR_3": {
    -              "description": "SENSITIVE_BACKUP_BUS_PMS_MONITOR_3_REG",
    -              "offset": 364,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BACKUP_BUS_PMS_MONITOR_VIOLATE_HADDR": {
    -                    "description": "backup_bus_pms_monitor_violate_haddr",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CLOCK_GATE": {
    -              "description": "SENSITIVE_CLOCK_GATE_REG",
    -              "offset": 368,
    -              "size": 32,
    -              "reset_value": 1,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CLK_EN": {
    -                    "description": "clk_en",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DATE": {
    -              "description": "SENSITIVE_DATE_REG",
    -              "offset": 4092,
    -              "size": 32,
    -              "reset_value": 33620480,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATE": {
    -                    "description": "reg_date",
    -                    "offset": 0,
    -                    "size": 28
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "SHA": {
    -        "description": "SHA (Secure Hash Algorithm) Accelerator",
    -        "children": {
    -          "registers": {
    -            "MODE": {
    -              "description": "Initial configuration register.",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "MODE": {
    -                    "description": "Sha mode.",
    -                    "offset": 0,
    -                    "size": 3
    -                  }
    -                }
    -              }
    -            },
    -            "T_STRING": {
    -              "description": "SHA 512/t configuration register 0.",
    -              "offset": 4,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "T_STRING": {
    -                    "description": "Sha t_string (used if and only if mode == SHA_512/t).",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "T_LENGTH": {
    -              "description": "SHA 512/t configuration register 1.",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "T_LENGTH": {
    -                    "description": "Sha t_length (used if and only if mode == SHA_512/t).",
    -                    "offset": 0,
    -                    "size": 6
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_BLOCK_NUM": {
    -              "description": "DMA configuration register 0.",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_BLOCK_NUM": {
    -                    "description": "Dma-sha block number.",
    -                    "offset": 0,
    -                    "size": 6
    -                  }
    -                }
    -              }
    -            },
    -            "START": {
    -              "description": "Typical SHA configuration register 0.",
    -              "offset": 16,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "START": {
    -                    "description": "Reserved.",
    -                    "offset": 1,
    -                    "size": 31,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CONTINUE": {
    -              "description": "Typical SHA configuration register 1.",
    -              "offset": 20,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CONTINUE": {
    -                    "description": "Reserved.",
    -                    "offset": 1,
    -                    "size": 31,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "BUSY": {
    -              "description": "Busy register.",
    -              "offset": 24,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "STATE": {
    -                    "description": "Sha busy state. 1'b0: idle. 1'b1: busy.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_START": {
    -              "description": "DMA configuration register 1.",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_START": {
    -                    "description": "Start dma-sha.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_CONTINUE": {
    -              "description": "DMA configuration register 2.",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_CONTINUE": {
    -                    "description": "Continue dma-sha.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CLEAR_IRQ": {
    -              "description": "Interrupt clear register.",
    -              "offset": 36,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CLEAR_INTERRUPT": {
    -                    "description": "Clear sha interrupt.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IRQ_ENA": {
    -              "description": "Interrupt enable register.",
    -              "offset": 40,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "INTERRUPT_ENA": {
    -                    "description": "Sha interrupt enable register. 1'b0: disable(default). 1'b1: enable.",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DATE": {
    -              "description": "Date register.",
    -              "offset": 44,
    -              "size": 32,
    -              "reset_value": 538969622,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATE": {
    -                    "description": "Sha date information/ sha version information.",
    -                    "offset": 0,
    -                    "size": 30
    -                  }
    -                }
    -              }
    -            },
    -            "H_MEM": {
    -              "description": "Sha H memory which contains intermediate hash or finial hash.",
    -              "offset": 64,
    -              "size": 8,
    -              "count": 64,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295
    -            },
    -            "M_MEM": {
    -              "description": "Sha M memory which contains message.",
    -              "offset": 128,
    -              "size": 8,
    -              "count": 64,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295
    -            }
    -          }
    -        }
    -      },
    -      "SPI0": {
    -        "description": "SPI (Serial Peripheral Interface) Controller",
    -        "children": {
    -          "registers": {
    -            "CTRL": {
    -              "description": "SPI0 control register.",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 2891776,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "FDUMMY_OUT": {
    -                    "description": "In the dummy phase the signal level of spi is output by the spi controller.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "FCMD_DUAL": {
    -                    "description": "Apply 2 signals during command phase 1:enable 0: disable",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "FCMD_QUAD": {
    -                    "description": "Apply 4 signals during command phase 1:enable 0: disable",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "FASTRD_MODE": {
    -                    "description": "This bit enable the bits: spi_mem_fread_qio, spi_mem_fread_dio, spi_mem_fread_qout and spi_mem_fread_dout. 1: enable 0: disable.",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "FREAD_DUAL": {
    -                    "description": "In the read operations, read-data phase apply 2 signals. 1: enable 0: disable.",
    -                    "offset": 14,
    -                    "size": 1
    -                  },
    -                  "Q_POL": {
    -                    "description": "The bit is used to set MISO line polarity, 1: high 0, low",
    -                    "offset": 18,
    -                    "size": 1
    -                  },
    -                  "D_POL": {
    -                    "description": "The bit is used to set MOSI line polarity, 1: high 0, low",
    -                    "offset": 19,
    -                    "size": 1
    -                  },
    -                  "FREAD_QUAD": {
    -                    "description": "In the read operations read-data phase apply 4 signals. 1: enable 0: disable.",
    -                    "offset": 20,
    -                    "size": 1
    -                  },
    -                  "WP": {
    -                    "description": "Write protect signal output when SPI is idle.  1: output high, 0: output low.",
    -                    "offset": 21,
    -                    "size": 1
    -                  },
    -                  "FREAD_DIO": {
    -                    "description": "In the read operations address phase and read-data phase apply 2 signals. 1: enable 0: disable.",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "FREAD_QIO": {
    -                    "description": "In the read operations address phase and read-data phase apply 4 signals. 1: enable 0: disable.",
    -                    "offset": 24,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CTRL1": {
    -              "description": "SPI0 control1 register.",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CLK_MODE": {
    -                    "description": "SPI clock mode bits. 0: SPI clock is off when CS inactive 1: SPI clock is delayed one cycle after CS inactive 2: SPI clock is delayed two cycles after CS inactive 3: SPI clock is alwasy on.",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "RXFIFO_RST": {
    -                    "description": "SPI0 RX FIFO reset signal.",
    -                    "offset": 30,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CTRL2": {
    -              "description": "SPI0 control2 register.",
    -              "offset": 16,
    -              "size": 32,
    -              "reset_value": 33,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CS_SETUP_TIME": {
    -                    "description": "(cycles-1) of prepare phase by spi clock this bits are combined with spi_mem_cs_setup bit.",
    -                    "offset": 0,
    -                    "size": 5
    -                  },
    -                  "CS_HOLD_TIME": {
    -                    "description": "Spi cs signal is delayed to inactive by spi clock this bits are combined with spi_mem_cs_hold bit.",
    -                    "offset": 5,
    -                    "size": 5
    -                  },
    -                  "CS_HOLD_DELAY": {
    -                    "description": "These bits are used to set the minimum CS high time tSHSL between SPI burst transfer when accesses to flash. tSHSL is (SPI_MEM_CS_HOLD_DELAY[5:0] + 1) MSPI core clock cycles.",
    -                    "offset": 25,
    -                    "size": 6
    -                  },
    -                  "SYNC_RESET": {
    -                    "description": "The FSM will be reset.",
    -                    "offset": 31,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CLOCK": {
    -              "description": "SPI clock division control register.",
    -              "offset": 20,
    -              "size": 32,
    -              "reset_value": 196867,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CLKCNT_L": {
    -                    "description": "In the master mode it must be equal to spi_mem_clkcnt_N.",
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "CLKCNT_H": {
    -                    "description": "In the master mode it must be floor((spi_mem_clkcnt_N+1)/2-1).",
    -                    "offset": 8,
    -                    "size": 8
    -                  },
    -                  "CLKCNT_N": {
    -                    "description": "In the master mode it is the divider of spi_mem_clk. So spi_mem_clk frequency is system/(spi_mem_clkcnt_N+1)",
    -                    "offset": 16,
    -                    "size": 8
    -                  },
    -                  "CLK_EQU_SYSCLK": {
    -                    "description": "Set this bit in 1-division mode.",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "USER": {
    -              "description": "SPI0 user register.",
    -              "offset": 24,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CS_HOLD": {
    -                    "description": "spi cs keep low when spi is in  done  phase. 1: enable 0: disable.",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "CS_SETUP": {
    -                    "description": "spi cs is enable when spi is in  prepare  phase. 1: enable 0: disable.",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "CK_OUT_EDGE": {
    -                    "description": "the bit combined with spi_mem_mosi_delay_mode bits to set mosi signal delay mode.",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "USR_DUMMY_IDLE": {
    -                    "description": "spi clock is disable in dummy phase when the bit is enable.",
    -                    "offset": 26,
    -                    "size": 1
    -                  },
    -                  "USR_DUMMY": {
    -                    "description": "This bit enable the dummy phase of an operation.",
    -                    "offset": 29,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "USER1": {
    -              "description": "SPI0 user1 register.",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 1543503879,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "USR_DUMMY_CYCLELEN": {
    -                    "description": "The length in spi_mem_clk cycles of dummy phase. The register value shall be (cycle_num-1).",
    -                    "offset": 0,
    -                    "size": 6
    -                  },
    -                  "USR_ADDR_BITLEN": {
    -                    "description": "The length in bits of address phase. The register value shall be (bit_num-1).",
    -                    "offset": 26,
    -                    "size": 6
    -                  }
    -                }
    -              }
    -            },
    -            "USER2": {
    -              "description": "SPI0 user2 register.",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 1879048192,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "USR_COMMAND_VALUE": {
    -                    "description": "The value of  command.",
    -                    "offset": 0,
    -                    "size": 16
    -                  },
    -                  "USR_COMMAND_BITLEN": {
    -                    "description": "The length in bits of command phase. The register value shall be (bit_num-1)",
    -                    "offset": 28,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "RD_STATUS": {
    -              "description": "SPI0 read control register.",
    -              "offset": 44,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WB_MODE": {
    -                    "description": "Mode bits in the flash fast read mode  it is combined with spi_mem_fastrd_mode bit.",
    -                    "offset": 16,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "MISC": {
    -              "description": "SPI0 misc register",
    -              "offset": 52,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TRANS_END": {
    -                    "description": "The bit is used to indicate the  spi0_mst_st controlled transmitting is done.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "TRANS_END_INT_ENA": {
    -                    "description": "The bit is used to enable the interrupt of  spi0_mst_st controlled transmitting is done.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "CSPI_ST_TRANS_END": {
    -                    "description": "The bit is used to indicate the  spi0_slv_st controlled transmitting is done.",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "CSPI_ST_TRANS_END_INT_ENA": {
    -                    "description": "The bit is used to enable the interrupt of spi0_slv_st controlled transmitting is done.",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "CK_IDLE_EDGE": {
    -                    "description": "1: spi clk line is high when idle     0: spi clk line is low when idle",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "CS_KEEP_ACTIVE": {
    -                    "description": "spi cs line keep low when the bit is set.",
    -                    "offset": 10,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_FCTRL": {
    -              "description": "SPI0 bit mode control register.",
    -              "offset": 60,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CACHE_REQ_EN": {
    -                    "description": "For SPI0, Cache access enable, 1: enable, 0:disable.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "CACHE_USR_ADDR_4BYTE": {
    -                    "description": "For SPI0,  cache  read flash with 4 bytes address, 1: enable, 0:disable.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "CACHE_FLASH_USR_CMD": {
    -                    "description": "For SPI0,  cache  read flash for user define command, 1: enable, 0:disable.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "FDIN_DUAL": {
    -                    "description": "For SPI0 flash, din phase apply 2 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_dio.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "FDOUT_DUAL": {
    -                    "description": "For SPI0 flash, dout phase apply 2 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_dio.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "FADDR_DUAL": {
    -                    "description": "For SPI0 flash, address phase apply 2 signals. 1: enable 0: disable.  The bit is the same with spi_mem_fread_dio.",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "FDIN_QUAD": {
    -                    "description": "For SPI0 flash, din phase apply 4 signals. 1: enable 0: disable.  The bit is the same with spi_mem_fread_qio.",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "FDOUT_QUAD": {
    -                    "description": "For SPI0 flash, dout phase apply 4 signals. 1: enable 0: disable.  The bit is the same with spi_mem_fread_qio.",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "FADDR_QUAD": {
    -                    "description": "For SPI0 flash, address phase apply 4 signals. 1: enable 0: disable.  The bit is the same with spi_mem_fread_qio.",
    -                    "offset": 8,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "FSM": {
    -              "description": "SPI0 FSM status register",
    -              "offset": 84,
    -              "size": 32,
    -              "reset_value": 512,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CSPI_ST": {
    -                    "description": "The current status of SPI0 slave FSM: spi0_slv_st. 0: idle state, 1: preparation state, 2: send command state, 3: send address state, 4: wait state, 5: read data state, 6:write data state, 7: done state, 8: read data end state.",
    -                    "offset": 0,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  },
    -                  "EM_ST": {
    -                    "description": "The current status of SPI0 master FSM: spi0_mst_st. 0: idle state, 1:EM_CACHE_GRANT , 2: program/erase suspend state, 3: SPI0 read data state, 4: wait cache/EDMA sent data is stored in SPI0 TX FIFO, 5: SPI0 write data state.",
    -                    "offset": 4,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "CSPI_LOCK_DELAY_TIME": {
    -                    "description": "The lock delay time of SPI0/1 arbiter by spi0_slv_st, after PER is sent by SPI1.",
    -                    "offset": 7,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "TIMING_CALI": {
    -              "description": "SPI0 timing calibration register",
    -              "offset": 168,
    -              "size": 32,
    -              "reset_value": 1,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMING_CLK_ENA": {
    -                    "description": "The bit is used to enable timing adjust clock for all reading operations.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "TIMING_CALI": {
    -                    "description": "The bit is used to enable timing auto-calibration for all reading operations.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "EXTRA_DUMMY_CYCLELEN": {
    -                    "description": "add extra dummy spi clock cycle length for spi clock calibration.",
    -                    "offset": 2,
    -                    "size": 3
    -                  }
    -                }
    -              }
    -            },
    -            "DIN_MODE": {
    -              "description": "SPI0 input delay mode control register",
    -              "offset": 172,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DIN0_MODE": {
    -                    "description": "the input signals are delayed by system clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb,  3: input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input with the spi_clk high edge,  6: input with the spi_clk low edge",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "DIN1_MODE": {
    -                    "description": "the input signals are delayed by system clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb,  3: input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input with the spi_clk high edge,  6: input with the spi_clk low edge",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "DIN2_MODE": {
    -                    "description": "the input signals are delayed by system clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb,  3: input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input with the spi_clk high edge,  6: input with the spi_clk low edge",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "DIN3_MODE": {
    -                    "description": "the input signals are delayed by system clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb,  3: input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input with the spi_clk high edge,  6: input with the spi_clk low edge",
    -                    "offset": 6,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "DIN_NUM": {
    -              "description": "SPI0 input delay number control register",
    -              "offset": 176,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DIN0_NUM": {
    -                    "description": "the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "DIN1_NUM": {
    -                    "description": "the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "DIN2_NUM": {
    -                    "description": "the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "DIN3_NUM": {
    -                    "description": "the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...",
    -                    "offset": 6,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "DOUT_MODE": {
    -              "description": "SPI0 output delay mode control register",
    -              "offset": 180,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DOUT0_MODE": {
    -                    "description": "the output signals are delayed by system clock cycles, 0: output without delayed, 1: output with the posedge of clk_apb,2 output with the negedge of clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low edge",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "DOUT1_MODE": {
    -                    "description": "the output signals are delayed by system clock cycles, 0: output without delayed, 1: output with the posedge of clk_apb,2 output with the negedge of clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low edge",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "DOUT2_MODE": {
    -                    "description": "the output signals are delayed by system clock cycles, 0: output without delayed, 1: output with the posedge of clk_apb,2 output with the negedge of clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low edge",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "DOUT3_MODE": {
    -                    "description": "the output signals are delayed by system clock cycles, 0: output without delayed, 1: output with the posedge of clk_apb,2 output with the negedge of clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low edge",
    -                    "offset": 3,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CLOCK_GATE": {
    -              "description": "SPI0 clk_gate register",
    -              "offset": 220,
    -              "size": 32,
    -              "reset_value": 1,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CLK_EN": {
    -                    "description": "Register clock gate enable signal. 1: Enable. 0: Disable.",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CORE_CLK_SEL": {
    -              "description": "SPI0 module clock select register",
    -              "offset": 224,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SPI01_CLK_SEL": {
    -                    "description": "When the digital system clock selects PLL clock and the frequency of PLL clock is 480MHz, the value of reg_spi01_clk_sel:  0: SPI0/1 module clock (clk) is 80MHz. 1: SPI0/1 module clock (clk) is 120MHz.  2: SPI0/1 module clock (clk) 160MHz. 3: Not used. When the digital system clock selects PLL clock and the frequency of PLL clock is 320MHz, the value of reg_spi01_clk_sel:  0: SPI0/1 module clock (clk) is 80MHz. 1: SPI0/1 module clock (clk) is 80MHz.  2: SPI0/1 module clock (clk) 160MHz. 3: Not used.",
    -                    "offset": 0,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "DATE": {
    -              "description": "Version control register",
    -              "offset": 1020,
    -              "size": 32,
    -              "reset_value": 33583408,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATE": {
    -                    "description": "SPI register version.",
    -                    "offset": 0,
    -                    "size": 28
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "SPI1": {
    -        "description": "SPI (Serial Peripheral Interface) Controller",
    -        "children": {
    -          "registers": {
    -            "CMD": {
    -              "description": "SPI1 memory command register",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SPI1_MST_ST": {
    -                    "description": "The current status of SPI1 master FSM.",
    -                    "offset": 0,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  },
    -                  "MSPI_ST": {
    -                    "description": "The current status of SPI1 slave FSM: mspi_st. 0: idle state, 1: preparation state, 2: send command state, 3: send address state, 4: wait state, 5: read data state, 6:write data state, 7: done state, 8: read data end state.",
    -                    "offset": 4,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  },
    -                  "FLASH_PE": {
    -                    "description": "In user mode, it is set to indicate that program/erase operation will be triggered. The bit is combined with spi_mem_usr bit. The bit will be cleared once the operation done.1: enable 0: disable.",
    -                    "offset": 17,
    -                    "size": 1
    -                  },
    -                  "USR": {
    -                    "description": "User define command enable.  An operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.",
    -                    "offset": 18,
    -                    "size": 1
    -                  },
    -                  "FLASH_HPM": {
    -                    "description": "Drive Flash into high performance mode.  The bit will be cleared once the operation done.1: enable 0: disable.",
    -                    "offset": 19,
    -                    "size": 1
    -                  },
    -                  "FLASH_RES": {
    -                    "description": "This bit combined with reg_resandres bit releases Flash from the power-down state or high performance mode and obtains the devices ID. The bit will be cleared once the operation done.1: enable 0: disable.",
    -                    "offset": 20,
    -                    "size": 1
    -                  },
    -                  "FLASH_DP": {
    -                    "description": "Drive Flash into power down.  An operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.",
    -                    "offset": 21,
    -                    "size": 1
    -                  },
    -                  "FLASH_CE": {
    -                    "description": "Chip erase enable. Chip erase operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "FLASH_BE": {
    -                    "description": "Block erase enable(32KB) .  Block erase operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "FLASH_SE": {
    -                    "description": "Sector erase enable(4KB). Sector erase operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.",
    -                    "offset": 24,
    -                    "size": 1
    -                  },
    -                  "FLASH_PP": {
    -                    "description": "Page program enable(1 byte ~256 bytes data to be programmed). Page program operation  will be triggered when the bit is set. The bit will be cleared once the operation done .1: enable 0: disable.",
    -                    "offset": 25,
    -                    "size": 1
    -                  },
    -                  "FLASH_WRSR": {
    -                    "description": "Write status register enable.   Write status operation  will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.",
    -                    "offset": 26,
    -                    "size": 1
    -                  },
    -                  "FLASH_RDSR": {
    -                    "description": "Read status register-1.  Read status operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.",
    -                    "offset": 27,
    -                    "size": 1
    -                  },
    -                  "FLASH_RDID": {
    -                    "description": "Read JEDEC ID . Read ID command will be sent when the bit is set. The bit will be cleared once the operation done. 1: enable 0: disable.",
    -                    "offset": 28,
    -                    "size": 1
    -                  },
    -                  "FLASH_WRDI": {
    -                    "description": "Write flash disable. Write disable command will be sent when the bit is set. The bit will be cleared once the operation done. 1: enable 0: disable.",
    -                    "offset": 29,
    -                    "size": 1
    -                  },
    -                  "FLASH_WREN": {
    -                    "description": "Write flash enable.  Write enable command will be sent when the bit is set. The bit will be cleared once the operation done. 1: enable 0: disable.",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "FLASH_READ": {
    -                    "description": "Read flash enable. Read flash operation will be triggered when the bit is set. The bit will be cleared once the operation done. 1: enable 0: disable.",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "ADDR": {
    -              "description": "SPI1 address register",
    -              "offset": 4,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "USR_ADDR_VALUE": {
    -                    "description": "In user mode, it is the memory address. other then the bit0-bit23 is the memory address, the bit24-bit31 are the byte length of a transfer.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "CTRL": {
    -              "description": "SPI1 control register.",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 2924544,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "FDUMMY_OUT": {
    -                    "description": "In the dummy phase the signal level of spi is output by the spi controller.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "FCMD_DUAL": {
    -                    "description": "Apply 2 signals during command phase 1:enable 0: disable",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "FCMD_QUAD": {
    -                    "description": "Apply 4 signals during command phase 1:enable 0: disable",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "FCS_CRC_EN": {
    -                    "description": "For SPI1,  initialize crc32 module before writing encrypted data to flash. Active low.",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "TX_CRC_EN": {
    -                    "description": "For SPI1,  enable crc32 when writing encrypted data to flash. 1: enable 0:disable",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "FASTRD_MODE": {
    -                    "description": "This bit enable the bits: spi_mem_fread_qio, spi_mem_fread_dio, spi_mem_fread_qout and spi_mem_fread_dout. 1: enable 0: disable.",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "FREAD_DUAL": {
    -                    "description": "In the read operations, read-data phase apply 2 signals. 1: enable 0: disable.",
    -                    "offset": 14,
    -                    "size": 1
    -                  },
    -                  "RESANDRES": {
    -                    "description": "The Device ID is read out to SPI_MEM_RD_STATUS register,  this bit combine with spi_mem_flash_res bit. 1: enable 0: disable.",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "Q_POL": {
    -                    "description": "The bit is used to set MISO line polarity, 1: high 0, low",
    -                    "offset": 18,
    -                    "size": 1
    -                  },
    -                  "D_POL": {
    -                    "description": "The bit is used to set MOSI line polarity, 1: high 0, low",
    -                    "offset": 19,
    -                    "size": 1
    -                  },
    -                  "FREAD_QUAD": {
    -                    "description": "In the read operations read-data phase apply 4 signals. 1: enable 0: disable.",
    -                    "offset": 20,
    -                    "size": 1
    -                  },
    -                  "WP": {
    -                    "description": "Write protect signal output when SPI is idle.  1: output high, 0: output low.",
    -                    "offset": 21,
    -                    "size": 1
    -                  },
    -                  "WRSR_2B": {
    -                    "description": "two bytes data will be written to status register when it is set. 1: enable 0: disable.",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "FREAD_DIO": {
    -                    "description": "In the read operations address phase and read-data phase apply 2 signals. 1: enable 0: disable.",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "FREAD_QIO": {
    -                    "description": "In the read operations address phase and read-data phase apply 4 signals. 1: enable 0: disable.",
    -                    "offset": 24,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CTRL1": {
    -              "description": "SPI1 control1 register.",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 4092,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CLK_MODE": {
    -                    "description": "SPI clock mode bits. 0: SPI clock is off when CS inactive 1: SPI clock is delayed one cycle after CS inactive 2: SPI clock is delayed two cycles after CS inactive 3: SPI clock is alwasy on.",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "CS_HOLD_DLY_RES": {
    -                    "description": "After RES/DP/HPM command is sent, SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 512) SPI_CLK cycles.",
    -                    "offset": 2,
    -                    "size": 10
    -                  }
    -                }
    -              }
    -            },
    -            "CTRL2": {
    -              "description": "SPI1 control2 register.",
    -              "offset": 16,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SYNC_RESET": {
    -                    "description": "The FSM will be reset.",
    -                    "offset": 31,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CLOCK": {
    -              "description": "SPI1 clock division control register.",
    -              "offset": 20,
    -              "size": 32,
    -              "reset_value": 196867,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CLKCNT_L": {
    -                    "description": "In the master mode it must be equal to spi_mem_clkcnt_N.",
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "CLKCNT_H": {
    -                    "description": "In the master mode it must be floor((spi_mem_clkcnt_N+1)/2-1).",
    -                    "offset": 8,
    -                    "size": 8
    -                  },
    -                  "CLKCNT_N": {
    -                    "description": "In the master mode it is the divider of spi_mem_clk. So spi_mem_clk frequency is system/(spi_mem_clkcnt_N+1)",
    -                    "offset": 16,
    -                    "size": 8
    -                  },
    -                  "CLK_EQU_SYSCLK": {
    -                    "description": "reserved",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "USER": {
    -              "description": "SPI1 user register.",
    -              "offset": 24,
    -              "size": 32,
    -              "reset_value": 2147483648,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CK_OUT_EDGE": {
    -                    "description": "the bit combined with spi_mem_mosi_delay_mode bits to set mosi signal delay mode.",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "FWRITE_DUAL": {
    -                    "description": "In the write operations read-data phase apply 2 signals",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "FWRITE_QUAD": {
    -                    "description": "In the write operations read-data phase apply 4 signals",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "FWRITE_DIO": {
    -                    "description": "In the write operations address phase and read-data phase apply 2 signals.",
    -                    "offset": 14,
    -                    "size": 1
    -                  },
    -                  "FWRITE_QIO": {
    -                    "description": "In the write operations address phase and read-data phase apply 4 signals.",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "USR_MISO_HIGHPART": {
    -                    "description": "read-data phase only access to high-part of the buffer spi_mem_w8~spi_mem_w15. 1: enable 0: disable.",
    -                    "offset": 24,
    -                    "size": 1
    -                  },
    -                  "USR_MOSI_HIGHPART": {
    -                    "description": "write-data phase only access to high-part of the buffer spi_mem_w8~spi_mem_w15. 1: enable 0: disable.",
    -                    "offset": 25,
    -                    "size": 1
    -                  },
    -                  "USR_DUMMY_IDLE": {
    -                    "description": "SPI clock is disable in dummy phase when the bit is enable.",
    -                    "offset": 26,
    -                    "size": 1
    -                  },
    -                  "USR_MOSI": {
    -                    "description": "This bit enable the write-data phase of an operation.",
    -                    "offset": 27,
    -                    "size": 1
    -                  },
    -                  "USR_MISO": {
    -                    "description": "This bit enable the read-data phase of an operation.",
    -                    "offset": 28,
    -                    "size": 1
    -                  },
    -                  "USR_DUMMY": {
    -                    "description": "This bit enable the dummy phase of an operation.",
    -                    "offset": 29,
    -                    "size": 1
    -                  },
    -                  "USR_ADDR": {
    -                    "description": "This bit enable the address phase of an operation.",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "USR_COMMAND": {
    -                    "description": "This bit enable the command phase of an operation.",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "USER1": {
    -              "description": "SPI1 user1 register.",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 1543503879,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "USR_DUMMY_CYCLELEN": {
    -                    "description": "The length in spi_mem_clk cycles of dummy phase. The register value shall be (cycle_num-1).",
    -                    "offset": 0,
    -                    "size": 6
    -                  },
    -                  "USR_ADDR_BITLEN": {
    -                    "description": "The length in bits of address phase. The register value shall be (bit_num-1).",
    -                    "offset": 26,
    -                    "size": 6
    -                  }
    -                }
    -              }
    -            },
    -            "USER2": {
    -              "description": "SPI1 user2 register.",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 1879048192,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "USR_COMMAND_VALUE": {
    -                    "description": "The value of  command.",
    -                    "offset": 0,
    -                    "size": 16
    -                  },
    -                  "USR_COMMAND_BITLEN": {
    -                    "description": "The length in bits of command phase. The register value shall be (bit_num-1)",
    -                    "offset": 28,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "MOSI_DLEN": {
    -              "description": "SPI1 send data bit length control register.",
    -              "offset": 36,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "USR_MOSI_DBITLEN": {
    -                    "description": "The length in bits of write-data. The register value shall be (bit_num-1).",
    -                    "offset": 0,
    -                    "size": 10
    -                  }
    -                }
    -              }
    -            },
    -            "MISO_DLEN": {
    -              "description": "SPI1 receive data bit length control register.",
    -              "offset": 40,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "USR_MISO_DBITLEN": {
    -                    "description": "The length in bits of  read-data. The register value shall be (bit_num-1).",
    -                    "offset": 0,
    -                    "size": 10
    -                  }
    -                }
    -              }
    -            },
    -            "RD_STATUS": {
    -              "description": "SPI1 status register.",
    -              "offset": 44,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "STATUS": {
    -                    "description": "The value is stored when set spi_mem_flash_rdsr bit and spi_mem_flash_res bit.",
    -                    "offset": 0,
    -                    "size": 16
    -                  },
    -                  "WB_MODE": {
    -                    "description": "Mode bits in the flash fast read mode  it is combined with spi_mem_fastrd_mode bit.",
    -                    "offset": 16,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "MISC": {
    -              "description": "SPI1 misc register",
    -              "offset": 52,
    -              "size": 32,
    -              "reset_value": 2,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CS0_DIS": {
    -                    "description": "SPI_CS0 pin enable, 1: disable SPI_CS0, 0: SPI_CS0 pin is active to select SPI device, such as flash, external RAM and so on.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "CS1_DIS": {
    -                    "description": "SPI_CS1 pin enable, 1: disable SPI_CS1, 0: SPI_CS1 pin is active to select SPI device, such as flash, external RAM and so on.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "CK_IDLE_EDGE": {
    -                    "description": "1: spi clk line is high when idle     0: spi clk line is low when idle",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "CS_KEEP_ACTIVE": {
    -                    "description": "spi cs line keep low when the bit is set.",
    -                    "offset": 10,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "TX_CRC": {
    -              "description": "SPI1 TX CRC data register.",
    -              "offset": 56,
    -              "size": 32,
    -              "reset_value": 4294967295,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATA": {
    -                    "description": "For SPI1, the value of crc32.",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_FCTRL": {
    -              "description": "SPI1 bit mode control register.",
    -              "offset": 60,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CACHE_USR_ADDR_4BYTE": {
    -                    "description": "For SPI1,  cache  read flash with 4 bytes address, 1: enable, 0:disable.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "FDIN_DUAL": {
    -                    "description": "For SPI1, din phase apply 2 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_dio.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "FDOUT_DUAL": {
    -                    "description": "For SPI1, dout phase apply 2 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_dio.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "FADDR_DUAL": {
    -                    "description": "For SPI1, address phase apply 2 signals. 1: enable 0: disable.  The bit is the same with spi_mem_fread_dio.",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "FDIN_QUAD": {
    -                    "description": "For SPI1, din phase apply 4 signals. 1: enable 0: disable.  The bit is the same with spi_mem_fread_qio.",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "FDOUT_QUAD": {
    -                    "description": "For SPI1, dout phase apply 4 signals. 1: enable 0: disable.  The bit is the same with spi_mem_fread_qio.",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "FADDR_QUAD": {
    -                    "description": "For SPI1, address phase apply 4 signals. 1: enable 0: disable.  The bit is the same with spi_mem_fread_qio.",
    -                    "offset": 8,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "W0": {
    -              "description": "SPI1 memory data buffer0",
    -              "offset": 88,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF0": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W1": {
    -              "description": "SPI1 memory data buffer1",
    -              "offset": 92,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF1": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W2": {
    -              "description": "SPI1 memory data buffer2",
    -              "offset": 96,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF2": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W3": {
    -              "description": "SPI1 memory data buffer3",
    -              "offset": 100,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF3": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W4": {
    -              "description": "SPI1 memory data buffer4",
    -              "offset": 104,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF4": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W5": {
    -              "description": "SPI1 memory data buffer5",
    -              "offset": 108,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF5": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W6": {
    -              "description": "SPI1 memory data buffer6",
    -              "offset": 112,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF6": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W7": {
    -              "description": "SPI1 memory data buffer7",
    -              "offset": 116,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF7": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W8": {
    -              "description": "SPI1 memory data buffer8",
    -              "offset": 120,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF8": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W9": {
    -              "description": "SPI1 memory data buffer9",
    -              "offset": 124,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF9": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W10": {
    -              "description": "SPI1 memory data buffer10",
    -              "offset": 128,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF10": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W11": {
    -              "description": "SPI1 memory data buffer11",
    -              "offset": 132,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF11": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W12": {
    -              "description": "SPI1 memory data buffer12",
    -              "offset": 136,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF12": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W13": {
    -              "description": "SPI1 memory data buffer13",
    -              "offset": 140,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF13": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W14": {
    -              "description": "SPI1 memory data buffer14",
    -              "offset": 144,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF14": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W15": {
    -              "description": "SPI1 memory data buffer15",
    -              "offset": 148,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF15": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "FLASH_WAITI_CTRL": {
    -              "description": "SPI1 wait idle control register",
    -              "offset": 152,
    -              "size": 32,
    -              "reset_value": 20,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WAITI_DUMMY": {
    -                    "description": "The dummy phase enable when wait flash idle (RDSR)",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "WAITI_CMD": {
    -                    "description": "The command to wait flash idle(RDSR).",
    -                    "offset": 2,
    -                    "size": 8
    -                  },
    -                  "WAITI_DUMMY_CYCLELEN": {
    -                    "description": "The dummy cycle length when wait flash idle(RDSR).",
    -                    "offset": 10,
    -                    "size": 6
    -                  }
    -                }
    -              }
    -            },
    -            "FLASH_SUS_CTRL": {
    -              "description": "SPI1 flash suspend control register",
    -              "offset": 156,
    -              "size": 32,
    -              "reset_value": 134225920,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "FLASH_PER": {
    -                    "description": "program erase resume bit, program erase suspend operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "FLASH_PES": {
    -                    "description": "program erase suspend bit, program erase suspend operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "FLASH_PER_WAIT_EN": {
    -                    "description": "1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4 or *128) SPI_CLK cycles after program erase resume command is sent. 0: SPI1 does not wait after program erase resume command is sent.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "FLASH_PES_WAIT_EN": {
    -                    "description": "1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4 or *128) SPI_CLK cycles after program erase suspend command is sent. 0: SPI1 does not wait after program erase suspend command is sent.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "PES_PER_EN": {
    -                    "description": "Set this bit to enable PES end triggers PER transfer option. If this bit is 0, application should send PER after PES is done.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "FLASH_PES_EN": {
    -                    "description": "Set this bit to enable Auto-suspending function.",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "PESR_END_MSK": {
    -                    "description": "The mask value when check SUS/SUS1/SUS2 status bit. If the read status value is status_in[15:0](only status_in[7:0] is valid when only one byte of data is read out, status_in[15:0] is valid when two bytes of data are read out), SUS/SUS1/SUS2 = status_in[15:0]^ SPI_MEM_PESR_END_MSK[15:0].",
    -                    "offset": 6,
    -                    "size": 16
    -                  },
    -                  "RD_SUS_2B": {
    -                    "description": "1: Read two bytes when check flash SUS/SUS1/SUS2 status bit. 0:  Read one byte when check flash SUS/SUS1/SUS2 status bit",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "PER_END_EN": {
    -                    "description": "1: Both WIP and SUS/SUS1/SUS2 bits should be checked to insure the resume status of flash. 0: Only need to check WIP is 0.",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "PES_END_EN": {
    -                    "description": "1: Both WIP and SUS/SUS1/SUS2 bits should be checked to insure the suspend status of flash. 0: Only need to check WIP is 0.",
    -                    "offset": 24,
    -                    "size": 1
    -                  },
    -                  "SUS_TIMEOUT_CNT": {
    -                    "description": "When SPI1 checks SUS/SUS1/SUS2 bits fail for SPI_MEM_SUS_TIMEOUT_CNT[6:0] times, it will be treated as check pass.",
    -                    "offset": 25,
    -                    "size": 7
    -                  }
    -                }
    -              }
    -            },
    -            "FLASH_SUS_CMD": {
    -              "description": "SPI1 flash suspend command register",
    -              "offset": 160,
    -              "size": 32,
    -              "reset_value": 357754,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "FLASH_PER_COMMAND": {
    -                    "description": "Program/Erase resume command.",
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "FLASH_PES_COMMAND": {
    -                    "description": "Program/Erase suspend command.",
    -                    "offset": 8,
    -                    "size": 8
    -                  },
    -                  "WAIT_PESR_COMMAND": {
    -                    "description": "Flash SUS/SUS1/SUS2 status bit read command. The command should be sent when SUS/SUS1/SUS2 bit should be checked to insure the suspend or resume status of flash.",
    -                    "offset": 16,
    -                    "size": 16
    -                  }
    -                }
    -              }
    -            },
    -            "SUS_STATUS": {
    -              "description": "SPI1 flash suspend status register",
    -              "offset": 164,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "FLASH_SUS": {
    -                    "description": "The status of flash suspend, only used in SPI1.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "WAIT_PESR_CMD_2B": {
    -                    "description": "1: SPI1 sends out SPI_MEM_WAIT_PESR_COMMAND[15:0] to check SUS/SUS1/SUS2 bit. 0: SPI1 sends out SPI_MEM_WAIT_PESR_COMMAND[7:0] to check SUS/SUS1/SUS2 bit.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "FLASH_HPM_DLY_128": {
    -                    "description": "1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after HPM command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after HPM command is sent.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "FLASH_RES_DLY_128": {
    -                    "description": "1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after RES command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after RES command is sent.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "FLASH_DP_DLY_128": {
    -                    "description": "1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after DP command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after DP command is sent.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "FLASH_PER_DLY_128": {
    -                    "description": "Valid when SPI_MEM_FLASH_PER_WAIT_EN is 1. 1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after PER command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after PER command is sent.",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "FLASH_PES_DLY_128": {
    -                    "description": "Valid when SPI_MEM_FLASH_PES_WAIT_EN is 1. 1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after PES command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after PES command is sent.",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "SPI0_LOCK_EN": {
    -                    "description": "1: Enable SPI0 lock SPI0/1 arbiter option. 0: Disable it.",
    -                    "offset": 7,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "TIMING_CALI": {
    -              "description": "SPI1 timing control register",
    -              "offset": 168,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMING_CALI": {
    -                    "description": "The bit is used to enable timing auto-calibration for all reading operations.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "EXTRA_DUMMY_CYCLELEN": {
    -                    "description": "add extra dummy spi clock cycle length for spi clock calibration.",
    -                    "offset": 2,
    -                    "size": 3
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ENA": {
    -              "description": "SPI1 interrupt enable register",
    -              "offset": 192,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PER_END_INT_ENA": {
    -                    "description": "The enable bit for SPI_MEM_PER_END_INT interrupt.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "PES_END_INT_ENA": {
    -                    "description": "The enable bit for SPI_MEM_PES_END_INT interrupt.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "WPE_END_INT_ENA": {
    -                    "description": "The enable bit for SPI_MEM_WPE_END_INT interrupt.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "SLV_ST_END_INT_ENA": {
    -                    "description": "The enable bit for SPI_MEM_SLV_ST_END_INT interrupt.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "MST_ST_END_INT_ENA": {
    -                    "description": "The enable bit for SPI_MEM_MST_ST_END_INT interrupt.",
    -                    "offset": 4,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INT_CLR": {
    -              "description": "SPI1 interrupt clear register",
    -              "offset": 196,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PER_END_INT_CLR": {
    -                    "description": "The clear bit for SPI_MEM_PER_END_INT interrupt.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "PES_END_INT_CLR": {
    -                    "description": "The clear bit for SPI_MEM_PES_END_INT interrupt.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "WPE_END_INT_CLR": {
    -                    "description": "The clear bit for SPI_MEM_WPE_END_INT interrupt.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SLV_ST_END_INT_CLR": {
    -                    "description": "The clear bit for SPI_MEM_SLV_ST_END_INT interrupt.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "MST_ST_END_INT_CLR": {
    -                    "description": "The clear bit for SPI_MEM_MST_ST_END_INT interrupt.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_RAW": {
    -              "description": "SPI1 interrupt raw register",
    -              "offset": 200,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PER_END_INT_RAW": {
    -                    "description": "The raw bit for SPI_MEM_PER_END_INT interrupt. 1: Triggered when Auto Resume command (0x7A) is sent and flash is resumed. 0: Others.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "PES_END_INT_RAW": {
    -                    "description": "The raw bit for SPI_MEM_PES_END_INT interrupt.1: Triggered when Auto Suspend command (0x75) is sent and flash is suspended. 0: Others.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "WPE_END_INT_RAW": {
    -                    "description": "The raw bit for SPI_MEM_WPE_END_INT interrupt. 1: Triggered when WRSR/PP/SE/BE/CE is sent and flash is already idle. 0: Others.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SLV_ST_END_INT_RAW": {
    -                    "description": "The raw bit for SPI_MEM_SLV_ST_END_INT interrupt. 1: Triggered when spi1_slv_st is changed from non idle state to idle state. It means that SPI_CS raises high. 0: Others",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "MST_ST_END_INT_RAW": {
    -                    "description": "The raw bit for SPI_MEM_MST_ST_END_INT interrupt. 1: Triggered when spi1_mst_st is changed from non idle state to idle state. 0: Others.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ST": {
    -              "description": "SPI1 interrupt status register",
    -              "offset": 204,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PER_END_INT_ST": {
    -                    "description": "The status bit for SPI_MEM_PER_END_INT interrupt.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "PES_END_INT_ST": {
    -                    "description": "The status bit for SPI_MEM_PES_END_INT interrupt.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "WPE_END_INT_ST": {
    -                    "description": "The status bit for SPI_MEM_WPE_END_INT interrupt.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SLV_ST_END_INT_ST": {
    -                    "description": "The status bit for SPI_MEM_SLV_ST_END_INT interrupt.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "MST_ST_END_INT_ST": {
    -                    "description": "The status bit for SPI_MEM_MST_ST_END_INT interrupt.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CLOCK_GATE": {
    -              "description": "SPI1 clk_gate register",
    -              "offset": 220,
    -              "size": 32,
    -              "reset_value": 1,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CLK_EN": {
    -                    "description": "Register clock gate enable signal. 1: Enable. 0: Disable.",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DATE": {
    -              "description": "Version control register",
    -              "offset": 1020,
    -              "size": 32,
    -              "reset_value": 33583472,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATE": {
    -                    "description": "Version control register",
    -                    "offset": 0,
    -                    "size": 28
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "SPI2": {
    -        "description": "SPI (Serial Peripheral Interface) Controller",
    -        "children": {
    -          "registers": {
    -            "CMD": {
    -              "description": "Command control register",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CONF_BITLEN": {
    -                    "description": "Define the APB cycles of  SPI_CONF state. Can be configured in CONF state.",
    -                    "offset": 0,
    -                    "size": 18
    -                  },
    -                  "UPDATE": {
    -                    "description": "Set this bit to synchronize SPI registers from APB clock domain into SPI module clock domain, which is only used in SPI master mode.",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "USR": {
    -                    "description": "User define command enable.  An operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable. Can not be changed by CONF_buf.",
    -                    "offset": 24,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "ADDR": {
    -              "description": "Address value register",
    -              "offset": 4,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "USR_ADDR_VALUE": {
    -                    "description": "Address to slave. Can be configured in CONF state.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "CTRL": {
    -              "description": "SPI control register",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 3932160,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DUMMY_OUT": {
    -                    "description": "In the dummy phase the signal level of spi is output by the spi controller. Can be configured in CONF state.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "FADDR_DUAL": {
    -                    "description": "Apply 2 signals during addr phase 1:enable 0: disable. Can be configured in CONF state.",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "FADDR_QUAD": {
    -                    "description": "Apply 4 signals during addr phase 1:enable 0: disable. Can be configured in CONF state.",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "FCMD_DUAL": {
    -                    "description": "Apply 2 signals during command phase 1:enable 0: disable. Can be configured in CONF state.",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "FCMD_QUAD": {
    -                    "description": "Apply 4 signals during command phase 1:enable 0: disable. Can be configured in CONF state.",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "FREAD_DUAL": {
    -                    "description": "In the read operations, read-data phase apply 2 signals. 1: enable 0: disable. Can be configured in CONF state.",
    -                    "offset": 14,
    -                    "size": 1
    -                  },
    -                  "FREAD_QUAD": {
    -                    "description": "In the read operations read-data phase apply 4 signals. 1: enable 0: disable.  Can be configured in CONF state.",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "Q_POL": {
    -                    "description": "The bit is used to set MISO line polarity, 1: high 0, low. Can be configured in CONF state.",
    -                    "offset": 18,
    -                    "size": 1
    -                  },
    -                  "D_POL": {
    -                    "description": "The bit is used to set MOSI line polarity, 1: high 0, low. Can be configured in CONF state.",
    -                    "offset": 19,
    -                    "size": 1
    -                  },
    -                  "HOLD_POL": {
    -                    "description": "SPI_HOLD output value when SPI is idle. 1: output high, 0: output low. Can be configured in CONF state.",
    -                    "offset": 20,
    -                    "size": 1
    -                  },
    -                  "WP_POL": {
    -                    "description": "Write protect signal output when SPI is idle.  1: output high, 0: output low.  Can be configured in CONF state.",
    -                    "offset": 21,
    -                    "size": 1
    -                  },
    -                  "RD_BIT_ORDER": {
    -                    "description": "In read-data (MISO) phase 1: LSB first 0: MSB first. Can be configured in CONF state.",
    -                    "offset": 25,
    -                    "size": 1
    -                  },
    -                  "WR_BIT_ORDER": {
    -                    "description": "In command address write-data (MOSI) phases 1: LSB firs 0: MSB first. Can be configured in CONF state.",
    -                    "offset": 26,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CLOCK": {
    -              "description": "SPI clock control register",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 2147496003,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CLKCNT_L": {
    -                    "description": "In the master mode it must be equal to spi_clkcnt_N. In the slave mode it must be 0. Can be configured in CONF state.",
    -                    "offset": 0,
    -                    "size": 6
    -                  },
    -                  "CLKCNT_H": {
    -                    "description": "In the master mode it must be floor((spi_clkcnt_N+1)/2-1). In the slave mode it must be 0. Can be configured in CONF state.",
    -                    "offset": 6,
    -                    "size": 6
    -                  },
    -                  "CLKCNT_N": {
    -                    "description": "In the master mode it is the divider of spi_clk. So spi_clk frequency is system/(spi_clkdiv_pre+1)/(spi_clkcnt_N+1). Can be configured in CONF state.",
    -                    "offset": 12,
    -                    "size": 6
    -                  },
    -                  "CLKDIV_PRE": {
    -                    "description": "In the master mode it is pre-divider of spi_clk.  Can be configured in CONF state.",
    -                    "offset": 18,
    -                    "size": 4
    -                  },
    -                  "CLK_EQU_SYSCLK": {
    -                    "description": "In the master mode 1: spi_clk is eqaul to system 0: spi_clk is divided from system clock. Can be configured in CONF state.",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "USER": {
    -              "description": "SPI USER control register",
    -              "offset": 16,
    -              "size": 32,
    -              "reset_value": 2147483840,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DOUTDIN": {
    -                    "description": "Set the bit to enable full duplex communication. 1: enable 0: disable. Can be configured in CONF state.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "QPI_MODE": {
    -                    "description": "Both for master mode and slave mode. 1: spi controller is in QPI mode. 0: others. Can be configured in CONF state.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "TSCK_I_EDGE": {
    -                    "description": "In the slave mode, this bit can be used to change the polarity of tsck. 0: tsck = spi_ck_i. 1:tsck = !spi_ck_i.",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "CS_HOLD": {
    -                    "description": "spi cs keep low when spi is in  done  phase. 1: enable 0: disable. Can be configured in CONF state.",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "CS_SETUP": {
    -                    "description": "spi cs is enable when spi is in  prepare  phase. 1: enable 0: disable. Can be configured in CONF state.",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "RSCK_I_EDGE": {
    -                    "description": "In the slave mode, this bit can be used to change the polarity of rsck. 0: rsck = !spi_ck_i. 1:rsck = spi_ck_i.",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "CK_OUT_EDGE": {
    -                    "description": "the bit combined with spi_mosi_delay_mode bits to set mosi signal delay mode. Can be configured in CONF state.",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "FWRITE_DUAL": {
    -                    "description": "In the write operations read-data phase apply 2 signals. Can be configured in CONF state.",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "FWRITE_QUAD": {
    -                    "description": "In the write operations read-data phase apply 4 signals. Can be configured in CONF state.",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "USR_CONF_NXT": {
    -                    "description": "1: Enable the DMA CONF phase of next seg-trans operation, which means seg-trans will continue. 0: The seg-trans will end after the current SPI seg-trans or this is not seg-trans mode. Can be configured in CONF state.",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "SIO": {
    -                    "description": "Set the bit to enable 3-line half duplex communication mosi and miso signals share the same pin. 1: enable 0: disable. Can be configured in CONF state.",
    -                    "offset": 17,
    -                    "size": 1
    -                  },
    -                  "USR_MISO_HIGHPART": {
    -                    "description": "read-data phase only access to high-part of the buffer spi_w8~spi_w15. 1: enable 0: disable. Can be configured in CONF state.",
    -                    "offset": 24,
    -                    "size": 1
    -                  },
    -                  "USR_MOSI_HIGHPART": {
    -                    "description": "write-data phase only access to high-part of the buffer spi_w8~spi_w15. 1: enable 0: disable.  Can be configured in CONF state.",
    -                    "offset": 25,
    -                    "size": 1
    -                  },
    -                  "USR_DUMMY_IDLE": {
    -                    "description": "spi clock is disable in dummy phase when the bit is enable. Can be configured in CONF state.",
    -                    "offset": 26,
    -                    "size": 1
    -                  },
    -                  "USR_MOSI": {
    -                    "description": "This bit enable the write-data phase of an operation. Can be configured in CONF state.",
    -                    "offset": 27,
    -                    "size": 1
    -                  },
    -                  "USR_MISO": {
    -                    "description": "This bit enable the read-data phase of an operation. Can be configured in CONF state.",
    -                    "offset": 28,
    -                    "size": 1
    -                  },
    -                  "USR_DUMMY": {
    -                    "description": "This bit enable the dummy phase of an operation. Can be configured in CONF state.",
    -                    "offset": 29,
    -                    "size": 1
    -                  },
    -                  "USR_ADDR": {
    -                    "description": "This bit enable the address phase of an operation. Can be configured in CONF state.",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "USR_COMMAND": {
    -                    "description": "This bit enable the command phase of an operation. Can be configured in CONF state.",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "USER1": {
    -              "description": "SPI USER control register 1",
    -              "offset": 20,
    -              "size": 32,
    -              "reset_value": 3091267591,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "USR_DUMMY_CYCLELEN": {
    -                    "description": "The length in spi_clk cycles of dummy phase. The register value shall be (cycle_num-1). Can be configured in CONF state.",
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "MST_WFULL_ERR_END_EN": {
    -                    "description": "1: SPI transfer is ended when SPI RX AFIFO wfull error is valid in GP-SPI master FD/HD-mode. 0: SPI transfer is not ended when SPI RX AFIFO wfull error is valid in GP-SPI master FD/HD-mode.",
    -                    "offset": 16,
    -                    "size": 1
    -                  },
    -                  "CS_SETUP_TIME": {
    -                    "description": "(cycles+1) of prepare phase by spi clock this bits are combined with spi_cs_setup bit. Can be configured in CONF state.",
    -                    "offset": 17,
    -                    "size": 5
    -                  },
    -                  "CS_HOLD_TIME": {
    -                    "description": "delay cycles of cs pin by spi clock this bits are combined with spi_cs_hold bit. Can be configured in CONF state.",
    -                    "offset": 22,
    -                    "size": 5
    -                  },
    -                  "USR_ADDR_BITLEN": {
    -                    "description": "The length in bits of address phase. The register value shall be (bit_num-1). Can be configured in CONF state.",
    -                    "offset": 27,
    -                    "size": 5
    -                  }
    -                }
    -              }
    -            },
    -            "USER2": {
    -              "description": "SPI USER control register 2",
    -              "offset": 24,
    -              "size": 32,
    -              "reset_value": 2013265920,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "USR_COMMAND_VALUE": {
    -                    "description": "The value of  command. Can be configured in CONF state.",
    -                    "offset": 0,
    -                    "size": 16
    -                  },
    -                  "MST_REMPTY_ERR_END_EN": {
    -                    "description": "1: SPI transfer is ended when SPI TX AFIFO read empty error is valid in GP-SPI master FD/HD-mode. 0: SPI transfer is not ended when SPI TX AFIFO read empty error is valid in GP-SPI master FD/HD-mode.",
    -                    "offset": 27,
    -                    "size": 1
    -                  },
    -                  "USR_COMMAND_BITLEN": {
    -                    "description": "The length in bits of command phase. The register value shall be (bit_num-1). Can be configured in CONF state.",
    -                    "offset": 28,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "MS_DLEN": {
    -              "description": "SPI data bit length control register",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "MS_DATA_BITLEN": {
    -                    "description": "The value of these bits is the configured SPI transmission data bit length in master mode DMA controlled transfer or CPU controlled transfer. The value is also the configured bit length in slave mode DMA RX controlled transfer. The register value shall be (bit_num-1). Can be configured in CONF state.",
    -                    "offset": 0,
    -                    "size": 18
    -                  }
    -                }
    -              }
    -            },
    -            "MISC": {
    -              "description": "SPI misc register",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 62,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CS0_DIS": {
    -                    "description": "SPI CS0 pin enable, 1: disable CS0, 0: spi_cs0 signal is from/to CS0 pin. Can be configured in CONF state.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "CS1_DIS": {
    -                    "description": "SPI CS1 pin enable, 1: disable CS1, 0: spi_cs1 signal is from/to CS1 pin. Can be configured in CONF state.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "CS2_DIS": {
    -                    "description": "SPI CS2 pin enable, 1: disable CS2, 0: spi_cs2 signal is from/to CS2 pin. Can be configured in CONF state.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "CS3_DIS": {
    -                    "description": "SPI CS3 pin enable, 1: disable CS3, 0: spi_cs3 signal is from/to CS3 pin. Can be configured in CONF state.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "CS4_DIS": {
    -                    "description": "SPI CS4 pin enable, 1: disable CS4, 0: spi_cs4 signal is from/to CS4 pin. Can be configured in CONF state.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "CS5_DIS": {
    -                    "description": "SPI CS5 pin enable, 1: disable CS5, 0: spi_cs5 signal is from/to CS5 pin. Can be configured in CONF state.",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "CK_DIS": {
    -                    "description": "1: spi clk out disable,  0: spi clk out enable. Can be configured in CONF state.",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "MASTER_CS_POL": {
    -                    "description": "In the master mode the bits are the polarity of spi cs line, the value is equivalent to spi_cs ^ spi_master_cs_pol. Can be configured in CONF state.",
    -                    "offset": 7,
    -                    "size": 6
    -                  },
    -                  "SLAVE_CS_POL": {
    -                    "description": "spi slave input cs polarity select. 1: inv  0: not change. Can be configured in CONF state.",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "CK_IDLE_EDGE": {
    -                    "description": "1: spi clk line is high when idle     0: spi clk line is low when idle. Can be configured in CONF state.",
    -                    "offset": 29,
    -                    "size": 1
    -                  },
    -                  "CS_KEEP_ACTIVE": {
    -                    "description": "spi cs line keep low when the bit is set. Can be configured in CONF state.",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "QUAD_DIN_PIN_SWAP": {
    -                    "description": "1:  spi quad input swap enable  0:  spi quad input swap disable. Can be configured in CONF state.",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DIN_MODE": {
    -              "description": "SPI input delay mode configuration",
    -              "offset": 36,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DIN0_MODE": {
    -                    "description": "the input signals are delayed by SPI module clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the spi_clk. Can be configured in CONF state.",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "DIN1_MODE": {
    -                    "description": "the input signals are delayed by SPI module clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the spi_clk. Can be configured in CONF state.",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "DIN2_MODE": {
    -                    "description": "the input signals are delayed by SPI module clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the spi_clk. Can be configured in CONF state.",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "DIN3_MODE": {
    -                    "description": "the input signals are delayed by SPI module clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the spi_clk. Can be configured in CONF state.",
    -                    "offset": 6,
    -                    "size": 2
    -                  },
    -                  "TIMING_HCLK_ACTIVE": {
    -                    "description": "1:enable hclk in SPI input timing module.  0: disable it. Can be configured in CONF state.",
    -                    "offset": 16,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DIN_NUM": {
    -              "description": "SPI input delay number configuration",
    -              "offset": 40,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DIN0_NUM": {
    -                    "description": "the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...  Can be configured in CONF state.",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "DIN1_NUM": {
    -                    "description": "the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...  Can be configured in CONF state.",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "DIN2_NUM": {
    -                    "description": "the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...  Can be configured in CONF state.",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "DIN3_NUM": {
    -                    "description": "the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...  Can be configured in CONF state.",
    -                    "offset": 6,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "DOUT_MODE": {
    -              "description": "SPI output delay mode configuration",
    -              "offset": 44,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DOUT0_MODE": {
    -                    "description": "The output signal 0 is delayed by the SPI module clock, 0: output without delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can be configured in CONF state.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "DOUT1_MODE": {
    -                    "description": "The output signal 1 is delayed by the SPI module clock, 0: output without delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can be configured in CONF state.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "DOUT2_MODE": {
    -                    "description": "The output signal 2 is delayed by the SPI module clock, 0: output without delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can be configured in CONF state.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "DOUT3_MODE": {
    -                    "description": "The output signal 3 is delayed by the SPI module clock, 0: output without delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can be configured in CONF state.",
    -                    "offset": 3,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_CONF": {
    -              "description": "SPI DMA control register",
    -              "offset": 48,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_SLV_SEG_TRANS_EN": {
    -                    "description": "Enable dma segment transfer in spi dma half slave mode. 1: enable. 0: disable.",
    -                    "offset": 18,
    -                    "size": 1
    -                  },
    -                  "SLV_RX_SEG_TRANS_CLR_EN": {
    -                    "description": "1: spi_dma_infifo_full_vld is cleared by spi slave cmd 5. 0: spi_dma_infifo_full_vld is cleared by spi_trans_done.",
    -                    "offset": 19,
    -                    "size": 1
    -                  },
    -                  "SLV_TX_SEG_TRANS_CLR_EN": {
    -                    "description": "1: spi_dma_outfifo_empty_vld is cleared by spi slave cmd 6. 0: spi_dma_outfifo_empty_vld is cleared by spi_trans_done.",
    -                    "offset": 20,
    -                    "size": 1
    -                  },
    -                  "RX_EOF_EN": {
    -                    "description": "1: spi_dma_inlink_eof is set when the number of dma pushed data bytes is equal to the value of spi_slv/mst_dma_rd_bytelen[19:0] in spi dma transition.  0: spi_dma_inlink_eof is set by spi_trans_done in non-seg-trans or spi_dma_seg_trans_done in seg-trans.",
    -                    "offset": 21,
    -                    "size": 1
    -                  },
    -                  "DMA_RX_ENA": {
    -                    "description": "Set this bit to enable SPI DMA controlled receive data mode.",
    -                    "offset": 27,
    -                    "size": 1
    -                  },
    -                  "DMA_TX_ENA": {
    -                    "description": "Set this bit to enable SPI DMA controlled send data mode.",
    -                    "offset": 28,
    -                    "size": 1
    -                  },
    -                  "RX_AFIFO_RST": {
    -                    "description": "Set this bit to reset RX AFIFO, which is used to receive data in SPI master and slave mode transfer.",
    -                    "offset": 29,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "BUF_AFIFO_RST": {
    -                    "description": "Set this bit to reset BUF TX AFIFO, which is used send data out in SPI slave CPU controlled mode transfer and master mode transfer.",
    -                    "offset": 30,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "DMA_AFIFO_RST": {
    -                    "description": "Set this bit to reset DMA TX AFIFO, which is used to send data out in SPI slave DMA controlled mode transfer.",
    -                    "offset": 31,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_INT_ENA": {
    -              "description": "SPI DMA interrupt enable register",
    -              "offset": 52,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_INFIFO_FULL_ERR_INT_ENA": {
    -                    "description": "The enable bit for SPI_DMA_INFIFO_FULL_ERR_INT interrupt.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "DMA_OUTFIFO_EMPTY_ERR_INT_ENA": {
    -                    "description": "The enable bit for SPI_DMA_OUTFIFO_EMPTY_ERR_INT interrupt.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "SLV_EX_QPI_INT_ENA": {
    -                    "description": "The enable bit for SPI slave Ex_QPI interrupt.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "SLV_EN_QPI_INT_ENA": {
    -                    "description": "The enable bit for SPI slave En_QPI interrupt.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "SLV_CMD7_INT_ENA": {
    -                    "description": "The enable bit for SPI slave CMD7 interrupt.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "SLV_CMD8_INT_ENA": {
    -                    "description": "The enable bit for SPI slave CMD8 interrupt.",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "SLV_CMD9_INT_ENA": {
    -                    "description": "The enable bit for SPI slave CMD9 interrupt.",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "SLV_CMDA_INT_ENA": {
    -                    "description": "The enable bit for SPI slave CMDA interrupt.",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "SLV_RD_DMA_DONE_INT_ENA": {
    -                    "description": "The enable bit for SPI_SLV_RD_DMA_DONE_INT interrupt.",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "SLV_WR_DMA_DONE_INT_ENA": {
    -                    "description": "The enable bit for SPI_SLV_WR_DMA_DONE_INT interrupt.",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "SLV_RD_BUF_DONE_INT_ENA": {
    -                    "description": "The enable bit for SPI_SLV_RD_BUF_DONE_INT interrupt.",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "SLV_WR_BUF_DONE_INT_ENA": {
    -                    "description": "The enable bit for SPI_SLV_WR_BUF_DONE_INT interrupt.",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "TRANS_DONE_INT_ENA": {
    -                    "description": "The enable bit for SPI_TRANS_DONE_INT interrupt.",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "DMA_SEG_TRANS_DONE_INT_ENA": {
    -                    "description": "The enable bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt.",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "SEG_MAGIC_ERR_INT_ENA": {
    -                    "description": "The enable bit for SPI_SEG_MAGIC_ERR_INT interrupt.",
    -                    "offset": 14,
    -                    "size": 1
    -                  },
    -                  "SLV_BUF_ADDR_ERR_INT_ENA": {
    -                    "description": "The enable bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt.",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "SLV_CMD_ERR_INT_ENA": {
    -                    "description": "The enable bit for SPI_SLV_CMD_ERR_INT interrupt.",
    -                    "offset": 16,
    -                    "size": 1
    -                  },
    -                  "MST_RX_AFIFO_WFULL_ERR_INT_ENA": {
    -                    "description": "The enable bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt.",
    -                    "offset": 17,
    -                    "size": 1
    -                  },
    -                  "MST_TX_AFIFO_REMPTY_ERR_INT_ENA": {
    -                    "description": "The enable bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt.",
    -                    "offset": 18,
    -                    "size": 1
    -                  },
    -                  "APP2_INT_ENA": {
    -                    "description": "The enable bit for SPI_APP2_INT interrupt.",
    -                    "offset": 19,
    -                    "size": 1
    -                  },
    -                  "APP1_INT_ENA": {
    -                    "description": "The enable bit for SPI_APP1_INT interrupt.",
    -                    "offset": 20,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_INT_CLR": {
    -              "description": "SPI DMA interrupt clear register",
    -              "offset": 56,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_INFIFO_FULL_ERR_INT_CLR": {
    -                    "description": "The clear bit for SPI_DMA_INFIFO_FULL_ERR_INT interrupt.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "DMA_OUTFIFO_EMPTY_ERR_INT_CLR": {
    -                    "description": "The clear bit for SPI_DMA_OUTFIFO_EMPTY_ERR_INT interrupt.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SLV_EX_QPI_INT_CLR": {
    -                    "description": "The clear bit for SPI slave Ex_QPI interrupt.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SLV_EN_QPI_INT_CLR": {
    -                    "description": "The clear bit for SPI slave En_QPI interrupt.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SLV_CMD7_INT_CLR": {
    -                    "description": "The clear bit for SPI slave CMD7 interrupt.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SLV_CMD8_INT_CLR": {
    -                    "description": "The clear bit for SPI slave CMD8 interrupt.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SLV_CMD9_INT_CLR": {
    -                    "description": "The clear bit for SPI slave CMD9 interrupt.",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SLV_CMDA_INT_CLR": {
    -                    "description": "The clear bit for SPI slave CMDA interrupt.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SLV_RD_DMA_DONE_INT_CLR": {
    -                    "description": "The clear bit for SPI_SLV_RD_DMA_DONE_INT interrupt.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SLV_WR_DMA_DONE_INT_CLR": {
    -                    "description": "The clear bit for SPI_SLV_WR_DMA_DONE_INT interrupt.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SLV_RD_BUF_DONE_INT_CLR": {
    -                    "description": "The clear bit for SPI_SLV_RD_BUF_DONE_INT interrupt.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SLV_WR_BUF_DONE_INT_CLR": {
    -                    "description": "The clear bit for SPI_SLV_WR_BUF_DONE_INT interrupt.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "TRANS_DONE_INT_CLR": {
    -                    "description": "The clear bit for SPI_TRANS_DONE_INT interrupt.",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "DMA_SEG_TRANS_DONE_INT_CLR": {
    -                    "description": "The clear bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt.",
    -                    "offset": 13,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SEG_MAGIC_ERR_INT_CLR": {
    -                    "description": "The clear bit for SPI_SEG_MAGIC_ERR_INT interrupt.",
    -                    "offset": 14,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SLV_BUF_ADDR_ERR_INT_CLR": {
    -                    "description": "The clear bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt.",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SLV_CMD_ERR_INT_CLR": {
    -                    "description": "The clear bit for SPI_SLV_CMD_ERR_INT interrupt.",
    -                    "offset": 16,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "MST_RX_AFIFO_WFULL_ERR_INT_CLR": {
    -                    "description": "The clear bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt.",
    -                    "offset": 17,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "MST_TX_AFIFO_REMPTY_ERR_INT_CLR": {
    -                    "description": "The clear bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt.",
    -                    "offset": 18,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "APP2_INT_CLR": {
    -                    "description": "The clear bit for SPI_APP2_INT interrupt.",
    -                    "offset": 19,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "APP1_INT_CLR": {
    -                    "description": "The clear bit for SPI_APP1_INT interrupt.",
    -                    "offset": 20,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_INT_RAW": {
    -              "description": "SPI DMA interrupt raw register",
    -              "offset": 60,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_INFIFO_FULL_ERR_INT_RAW": {
    -                    "description": "1: The current data rate of DMA Rx is smaller than that of SPI, which will lose the receive data.  0: Others.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "DMA_OUTFIFO_EMPTY_ERR_INT_RAW": {
    -                    "description": "1: The current data rate of DMA TX is smaller than that of SPI. SPI will stop in master mode and send out all 0 in slave mode.  0: Others.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "SLV_EX_QPI_INT_RAW": {
    -                    "description": "The raw bit for SPI slave Ex_QPI interrupt. 1: SPI slave mode Ex_QPI transmission is ended. 0: Others.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "SLV_EN_QPI_INT_RAW": {
    -                    "description": "The raw bit for SPI slave En_QPI interrupt. 1: SPI slave mode En_QPI transmission is ended. 0: Others.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "SLV_CMD7_INT_RAW": {
    -                    "description": "The raw bit for SPI slave CMD7 interrupt. 1: SPI slave mode CMD7 transmission is ended. 0: Others.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "SLV_CMD8_INT_RAW": {
    -                    "description": "The raw bit for SPI slave CMD8 interrupt. 1: SPI slave mode CMD8 transmission is ended. 0: Others.",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "SLV_CMD9_INT_RAW": {
    -                    "description": "The raw bit for SPI slave CMD9 interrupt. 1: SPI slave mode CMD9 transmission is ended. 0: Others.",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "SLV_CMDA_INT_RAW": {
    -                    "description": "The raw bit for SPI slave CMDA interrupt. 1: SPI slave mode CMDA transmission is ended. 0: Others.",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "SLV_RD_DMA_DONE_INT_RAW": {
    -                    "description": "The raw bit for SPI_SLV_RD_DMA_DONE_INT interrupt. 1: SPI slave mode Rd_DMA transmission is ended. 0: Others.",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "SLV_WR_DMA_DONE_INT_RAW": {
    -                    "description": "The raw bit for SPI_SLV_WR_DMA_DONE_INT interrupt. 1: SPI slave mode Wr_DMA transmission is ended. 0: Others.",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "SLV_RD_BUF_DONE_INT_RAW": {
    -                    "description": "The raw bit for SPI_SLV_RD_BUF_DONE_INT interrupt. 1: SPI slave mode Rd_BUF transmission is ended. 0: Others.",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "SLV_WR_BUF_DONE_INT_RAW": {
    -                    "description": "The raw bit for SPI_SLV_WR_BUF_DONE_INT interrupt. 1: SPI slave mode Wr_BUF transmission is ended. 0: Others.",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "TRANS_DONE_INT_RAW": {
    -                    "description": "The raw bit for SPI_TRANS_DONE_INT interrupt. 1: SPI master mode transmission is ended. 0: others.",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "DMA_SEG_TRANS_DONE_INT_RAW": {
    -                    "description": "The raw bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt. 1:  spi master DMA full-duplex/half-duplex seg-conf-trans ends or slave half-duplex seg-trans ends. And data has been pushed to corresponding memory.  0:  seg-conf-trans or seg-trans is not ended or not occurred.",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "SEG_MAGIC_ERR_INT_RAW": {
    -                    "description": "The raw bit for SPI_SEG_MAGIC_ERR_INT interrupt. 1: The magic value in CONF buffer is error in the DMA seg-conf-trans. 0: others.",
    -                    "offset": 14,
    -                    "size": 1
    -                  },
    -                  "SLV_BUF_ADDR_ERR_INT_RAW": {
    -                    "description": "The raw bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt. 1: The accessing data address of the current SPI slave mode CPU controlled FD, Wr_BUF or Rd_BUF transmission is bigger than 63. 0: Others.",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "SLV_CMD_ERR_INT_RAW": {
    -                    "description": "The raw bit for SPI_SLV_CMD_ERR_INT interrupt. 1: The slave command value in the current SPI slave HD mode transmission is not supported. 0: Others.",
    -                    "offset": 16,
    -                    "size": 1
    -                  },
    -                  "MST_RX_AFIFO_WFULL_ERR_INT_RAW": {
    -                    "description": "The raw bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt. 1: There is a RX AFIFO write-full error when SPI inputs data in master mode. 0: Others.",
    -                    "offset": 17,
    -                    "size": 1
    -                  },
    -                  "MST_TX_AFIFO_REMPTY_ERR_INT_RAW": {
    -                    "description": "The raw bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt. 1: There is a TX BUF AFIFO read-empty error when SPI outputs data in master mode. 0: Others.",
    -                    "offset": 18,
    -                    "size": 1
    -                  },
    -                  "APP2_INT_RAW": {
    -                    "description": "The raw bit for SPI_APP2_INT interrupt. The value is only controlled by application.",
    -                    "offset": 19,
    -                    "size": 1
    -                  },
    -                  "APP1_INT_RAW": {
    -                    "description": "The raw bit for SPI_APP1_INT interrupt. The value is only controlled by application.",
    -                    "offset": 20,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DMA_INT_ST": {
    -              "description": "SPI DMA interrupt status register",
    -              "offset": 64,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DMA_INFIFO_FULL_ERR_INT_ST": {
    -                    "description": "The status bit for SPI_DMA_INFIFO_FULL_ERR_INT interrupt.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DMA_OUTFIFO_EMPTY_ERR_INT_ST": {
    -                    "description": "The status bit for SPI_DMA_OUTFIFO_EMPTY_ERR_INT interrupt.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SLV_EX_QPI_INT_ST": {
    -                    "description": "The status bit for SPI slave Ex_QPI interrupt.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SLV_EN_QPI_INT_ST": {
    -                    "description": "The status bit for SPI slave En_QPI interrupt.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SLV_CMD7_INT_ST": {
    -                    "description": "The status bit for SPI slave CMD7 interrupt.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SLV_CMD8_INT_ST": {
    -                    "description": "The status bit for SPI slave CMD8 interrupt.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SLV_CMD9_INT_ST": {
    -                    "description": "The status bit for SPI slave CMD9 interrupt.",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SLV_CMDA_INT_ST": {
    -                    "description": "The status bit for SPI slave CMDA interrupt.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SLV_RD_DMA_DONE_INT_ST": {
    -                    "description": "The status bit for SPI_SLV_RD_DMA_DONE_INT interrupt.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SLV_WR_DMA_DONE_INT_ST": {
    -                    "description": "The status bit for SPI_SLV_WR_DMA_DONE_INT interrupt.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SLV_RD_BUF_DONE_INT_ST": {
    -                    "description": "The status bit for SPI_SLV_RD_BUF_DONE_INT interrupt.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SLV_WR_BUF_DONE_INT_ST": {
    -                    "description": "The status bit for SPI_SLV_WR_BUF_DONE_INT interrupt.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TRANS_DONE_INT_ST": {
    -                    "description": "The status bit for SPI_TRANS_DONE_INT interrupt.",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DMA_SEG_TRANS_DONE_INT_ST": {
    -                    "description": "The status bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt.",
    -                    "offset": 13,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SEG_MAGIC_ERR_INT_ST": {
    -                    "description": "The status bit for SPI_SEG_MAGIC_ERR_INT interrupt.",
    -                    "offset": 14,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SLV_BUF_ADDR_ERR_INT_ST": {
    -                    "description": "The status bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt.",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SLV_CMD_ERR_INT_ST": {
    -                    "description": "The status bit for SPI_SLV_CMD_ERR_INT interrupt.",
    -                    "offset": 16,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "MST_RX_AFIFO_WFULL_ERR_INT_ST": {
    -                    "description": "The status bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt.",
    -                    "offset": 17,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "MST_TX_AFIFO_REMPTY_ERR_INT_ST": {
    -                    "description": "The status bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt.",
    -                    "offset": 18,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "APP2_INT_ST": {
    -                    "description": "The status bit for SPI_APP2_INT interrupt.",
    -                    "offset": 19,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "APP1_INT_ST": {
    -                    "description": "The status bit for SPI_APP1_INT interrupt.",
    -                    "offset": 20,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "W0": {
    -              "description": "SPI CPU-controlled buffer0",
    -              "offset": 152,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF0": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W1": {
    -              "description": "SPI CPU-controlled buffer1",
    -              "offset": 156,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF1": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W2": {
    -              "description": "SPI CPU-controlled buffer2",
    -              "offset": 160,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF2": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W3": {
    -              "description": "SPI CPU-controlled buffer3",
    -              "offset": 164,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF3": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W4": {
    -              "description": "SPI CPU-controlled buffer4",
    -              "offset": 168,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF4": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W5": {
    -              "description": "SPI CPU-controlled buffer5",
    -              "offset": 172,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF5": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W6": {
    -              "description": "SPI CPU-controlled buffer6",
    -              "offset": 176,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF6": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W7": {
    -              "description": "SPI CPU-controlled buffer7",
    -              "offset": 180,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF7": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W8": {
    -              "description": "SPI CPU-controlled buffer8",
    -              "offset": 184,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF8": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W9": {
    -              "description": "SPI CPU-controlled buffer9",
    -              "offset": 188,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF9": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W10": {
    -              "description": "SPI CPU-controlled buffer10",
    -              "offset": 192,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF10": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W11": {
    -              "description": "SPI CPU-controlled buffer11",
    -              "offset": 196,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF11": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W12": {
    -              "description": "SPI CPU-controlled buffer12",
    -              "offset": 200,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF12": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W13": {
    -              "description": "SPI CPU-controlled buffer13",
    -              "offset": 204,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF13": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W14": {
    -              "description": "SPI CPU-controlled buffer14",
    -              "offset": 208,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF14": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "W15": {
    -              "description": "SPI CPU-controlled buffer15",
    -              "offset": 212,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BUF15": {
    -                    "description": "data buffer",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "SLAVE": {
    -              "description": "SPI slave control register",
    -              "offset": 224,
    -              "size": 32,
    -              "reset_value": 41943040,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CLK_MODE": {
    -                    "description": "SPI clock mode bits. 0: SPI clock is off when CS inactive 1: SPI clock is delayed one cycle after CS inactive 2: SPI clock is delayed two cycles after CS inactive 3: SPI clock is alwasy on. Can be configured in CONF state.",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "CLK_MODE_13": {
    -                    "description": "{CPOL, CPHA},1: support spi clk mode 1 and 3, first edge output data B[0]/B[7].  0: support spi clk mode 0 and 2, first edge output data B[1]/B[6].",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "RSCK_DATA_OUT": {
    -                    "description": "It saves half a cycle when tsck is the same as rsck. 1: output data at rsck posedge   0: output data at tsck posedge",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "SLV_RDDMA_BITLEN_EN": {
    -                    "description": "1: SPI_SLV_DATA_BITLEN stores data bit length of master-read-slave data length in DMA controlled mode(Rd_DMA). 0: others",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "SLV_WRDMA_BITLEN_EN": {
    -                    "description": "1: SPI_SLV_DATA_BITLEN stores data bit length of master-write-to-slave data length in DMA controlled mode(Wr_DMA). 0: others",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "SLV_RDBUF_BITLEN_EN": {
    -                    "description": "1: SPI_SLV_DATA_BITLEN stores data bit length of master-read-slave data length in CPU controlled mode(Rd_BUF). 0: others",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "SLV_WRBUF_BITLEN_EN": {
    -                    "description": "1: SPI_SLV_DATA_BITLEN stores data bit length of master-write-to-slave data length in CPU controlled mode(Wr_BUF). 0: others",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "DMA_SEG_MAGIC_VALUE": {
    -                    "description": "The magic value of BM table in master DMA seg-trans.",
    -                    "offset": 22,
    -                    "size": 4
    -                  },
    -                  "MODE": {
    -                    "description": "Set SPI work mode. 1: slave mode 0: master mode.",
    -                    "offset": 26,
    -                    "size": 1
    -                  },
    -                  "SOFT_RESET": {
    -                    "description": "Software reset enable, reset the spi clock line cs line and data lines. Can be configured in CONF state.",
    -                    "offset": 27,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "USR_CONF": {
    -                    "description": "1: Enable the DMA CONF phase of current seg-trans operation, which means seg-trans will start. 0: This is not seg-trans mode.",
    -                    "offset": 28,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "SLAVE1": {
    -              "description": "SPI slave control register 1",
    -              "offset": 228,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SLV_DATA_BITLEN": {
    -                    "description": "The transferred data bit length in SPI slave FD and HD mode.",
    -                    "offset": 0,
    -                    "size": 18
    -                  },
    -                  "SLV_LAST_COMMAND": {
    -                    "description": "In the slave mode it is the value of command.",
    -                    "offset": 18,
    -                    "size": 8
    -                  },
    -                  "SLV_LAST_ADDR": {
    -                    "description": "In the slave mode it is the value of address.",
    -                    "offset": 26,
    -                    "size": 6
    -                  }
    -                }
    -              }
    -            },
    -            "CLK_GATE": {
    -              "description": "SPI module clock and register clock control",
    -              "offset": 232,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CLK_EN": {
    -                    "description": "Set this bit to enable clk gate",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "MST_CLK_ACTIVE": {
    -                    "description": "Set this bit to power on the SPI module clock.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "MST_CLK_SEL": {
    -                    "description": "This bit is used to select SPI module clock source in master mode. 1: PLL_CLK_80M. 0: XTAL CLK.",
    -                    "offset": 2,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DATE": {
    -              "description": "Version control",
    -              "offset": 240,
    -              "size": 32,
    -              "reset_value": 33583648,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATE": {
    -                    "description": "SPI register version.",
    -                    "offset": 0,
    -                    "size": 28
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "SYSTEM": {
    -        "description": "System",
    -        "children": {
    -          "registers": {
    -            "CPU_PERI_CLK_EN": {
    -              "description": "cpu_peripheral clock gating register",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CLK_EN_ASSIST_DEBUG": {
    -                    "description": "reg_clk_en_assist_debug",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "CLK_EN_DEDICATED_GPIO": {
    -                    "description": "reg_clk_en_dedicated_gpio",
    -                    "offset": 7,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_PERI_RST_EN": {
    -              "description": "cpu_peripheral reset register",
    -              "offset": 4,
    -              "size": 32,
    -              "reset_value": 192,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RST_EN_ASSIST_DEBUG": {
    -                    "description": "reg_rst_en_assist_debug",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "RST_EN_DEDICATED_GPIO": {
    -                    "description": "reg_rst_en_dedicated_gpio",
    -                    "offset": 7,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_PER_CONF": {
    -              "description": "cpu clock config register",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 12,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPUPERIOD_SEL": {
    -                    "description": "reg_cpuperiod_sel",
    -                    "offset": 0,
    -                    "size": 2
    -                  },
    -                  "PLL_FREQ_SEL": {
    -                    "description": "reg_pll_freq_sel",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "CPU_WAIT_MODE_FORCE_ON": {
    -                    "description": "reg_cpu_wait_mode_force_on",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "CPU_WAITI_DELAY_NUM": {
    -                    "description": "reg_cpu_waiti_delay_num",
    -                    "offset": 4,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "MEM_PD_MASK": {
    -              "description": "memory power down mask register",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 1,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LSLP_MEM_PD_MASK": {
    -                    "description": "reg_lslp_mem_pd_mask",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "PERIP_CLK_EN0": {
    -              "description": "peripheral clock gating register",
    -              "offset": 16,
    -              "size": 32,
    -              "reset_value": 4190232687,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMERS_CLK_EN": {
    -                    "description": "reg_timers_clk_en",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "SPI01_CLK_EN": {
    -                    "description": "reg_spi01_clk_en",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "UART_CLK_EN": {
    -                    "description": "reg_uart_clk_en",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "WDG_CLK_EN": {
    -                    "description": "reg_wdg_clk_en",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "I2S0_CLK_EN": {
    -                    "description": "reg_i2s0_clk_en",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "UART1_CLK_EN": {
    -                    "description": "reg_uart1_clk_en",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "SPI2_CLK_EN": {
    -                    "description": "reg_spi2_clk_en",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "I2C_EXT0_CLK_EN": {
    -                    "description": "reg_ext0_clk_en",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "UHCI0_CLK_EN": {
    -                    "description": "reg_uhci0_clk_en",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "RMT_CLK_EN": {
    -                    "description": "reg_rmt_clk_en",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "PCNT_CLK_EN": {
    -                    "description": "reg_pcnt_clk_en",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "LEDC_CLK_EN": {
    -                    "description": "reg_ledc_clk_en",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "UHCI1_CLK_EN": {
    -                    "description": "reg_uhci1_clk_en",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "TIMERGROUP_CLK_EN": {
    -                    "description": "reg_timergroup_clk_en",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "EFUSE_CLK_EN": {
    -                    "description": "reg_efuse_clk_en",
    -                    "offset": 14,
    -                    "size": 1
    -                  },
    -                  "TIMERGROUP1_CLK_EN": {
    -                    "description": "reg_timergroup1_clk_en",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "SPI3_CLK_EN": {
    -                    "description": "reg_spi3_clk_en",
    -                    "offset": 16,
    -                    "size": 1
    -                  },
    -                  "PWM0_CLK_EN": {
    -                    "description": "reg_pwm0_clk_en",
    -                    "offset": 17,
    -                    "size": 1
    -                  },
    -                  "EXT1_CLK_EN": {
    -                    "description": "reg_ext1_clk_en",
    -                    "offset": 18,
    -                    "size": 1
    -                  },
    -                  "CAN_CLK_EN": {
    -                    "description": "reg_can_clk_en",
    -                    "offset": 19,
    -                    "size": 1
    -                  },
    -                  "PWM1_CLK_EN": {
    -                    "description": "reg_pwm1_clk_en",
    -                    "offset": 20,
    -                    "size": 1
    -                  },
    -                  "I2S1_CLK_EN": {
    -                    "description": "reg_i2s1_clk_en",
    -                    "offset": 21,
    -                    "size": 1
    -                  },
    -                  "SPI2_DMA_CLK_EN": {
    -                    "description": "reg_spi2_dma_clk_en",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "USB_DEVICE_CLK_EN": {
    -                    "description": "reg_usb_device_clk_en",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "UART_MEM_CLK_EN": {
    -                    "description": "reg_uart_mem_clk_en",
    -                    "offset": 24,
    -                    "size": 1
    -                  },
    -                  "PWM2_CLK_EN": {
    -                    "description": "reg_pwm2_clk_en",
    -                    "offset": 25,
    -                    "size": 1
    -                  },
    -                  "PWM3_CLK_EN": {
    -                    "description": "reg_pwm3_clk_en",
    -                    "offset": 26,
    -                    "size": 1
    -                  },
    -                  "SPI3_DMA_CLK_EN": {
    -                    "description": "reg_spi3_dma_clk_en",
    -                    "offset": 27,
    -                    "size": 1
    -                  },
    -                  "APB_SARADC_CLK_EN": {
    -                    "description": "reg_apb_saradc_clk_en",
    -                    "offset": 28,
    -                    "size": 1
    -                  },
    -                  "SYSTIMER_CLK_EN": {
    -                    "description": "reg_systimer_clk_en",
    -                    "offset": 29,
    -                    "size": 1
    -                  },
    -                  "ADC2_ARB_CLK_EN": {
    -                    "description": "reg_adc2_arb_clk_en",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "SPI4_CLK_EN": {
    -                    "description": "reg_spi4_clk_en",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "PERIP_CLK_EN1": {
    -              "description": "peripheral clock gating register",
    -              "offset": 20,
    -              "size": 32,
    -              "reset_value": 512,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CRYPTO_AES_CLK_EN": {
    -                    "description": "reg_crypto_aes_clk_en",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "CRYPTO_SHA_CLK_EN": {
    -                    "description": "reg_crypto_sha_clk_en",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "CRYPTO_RSA_CLK_EN": {
    -                    "description": "reg_crypto_rsa_clk_en",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "CRYPTO_DS_CLK_EN": {
    -                    "description": "reg_crypto_ds_clk_en",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "CRYPTO_HMAC_CLK_EN": {
    -                    "description": "reg_crypto_hmac_clk_en",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "DMA_CLK_EN": {
    -                    "description": "reg_dma_clk_en",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "SDIO_HOST_CLK_EN": {
    -                    "description": "reg_sdio_host_clk_en",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "LCD_CAM_CLK_EN": {
    -                    "description": "reg_lcd_cam_clk_en",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "UART2_CLK_EN": {
    -                    "description": "reg_uart2_clk_en",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "TSENS_CLK_EN": {
    -                    "description": "reg_tsens_clk_en",
    -                    "offset": 10,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "PERIP_RST_EN0": {
    -              "description": "reserved",
    -              "offset": 24,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMERS_RST": {
    -                    "description": "reg_timers_rst",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "SPI01_RST": {
    -                    "description": "reg_spi01_rst",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "UART_RST": {
    -                    "description": "reg_uart_rst",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "WDG_RST": {
    -                    "description": "reg_wdg_rst",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "I2S0_RST": {
    -                    "description": "reg_i2s0_rst",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "UART1_RST": {
    -                    "description": "reg_uart1_rst",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "SPI2_RST": {
    -                    "description": "reg_spi2_rst",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "I2C_EXT0_RST": {
    -                    "description": "reg_ext0_rst",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "UHCI0_RST": {
    -                    "description": "reg_uhci0_rst",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "RMT_RST": {
    -                    "description": "reg_rmt_rst",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "PCNT_RST": {
    -                    "description": "reg_pcnt_rst",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "LEDC_RST": {
    -                    "description": "reg_ledc_rst",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "UHCI1_RST": {
    -                    "description": "reg_uhci1_rst",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "TIMERGROUP_RST": {
    -                    "description": "reg_timergroup_rst",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "EFUSE_RST": {
    -                    "description": "reg_efuse_rst",
    -                    "offset": 14,
    -                    "size": 1
    -                  },
    -                  "TIMERGROUP1_RST": {
    -                    "description": "reg_timergroup1_rst",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "SPI3_RST": {
    -                    "description": "reg_spi3_rst",
    -                    "offset": 16,
    -                    "size": 1
    -                  },
    -                  "PWM0_RST": {
    -                    "description": "reg_pwm0_rst",
    -                    "offset": 17,
    -                    "size": 1
    -                  },
    -                  "EXT1_RST": {
    -                    "description": "reg_ext1_rst",
    -                    "offset": 18,
    -                    "size": 1
    -                  },
    -                  "CAN_RST": {
    -                    "description": "reg_can_rst",
    -                    "offset": 19,
    -                    "size": 1
    -                  },
    -                  "PWM1_RST": {
    -                    "description": "reg_pwm1_rst",
    -                    "offset": 20,
    -                    "size": 1
    -                  },
    -                  "I2S1_RST": {
    -                    "description": "reg_i2s1_rst",
    -                    "offset": 21,
    -                    "size": 1
    -                  },
    -                  "SPI2_DMA_RST": {
    -                    "description": "reg_spi2_dma_rst",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "USB_DEVICE_RST": {
    -                    "description": "reg_usb_device_rst",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "UART_MEM_RST": {
    -                    "description": "reg_uart_mem_rst",
    -                    "offset": 24,
    -                    "size": 1
    -                  },
    -                  "PWM2_RST": {
    -                    "description": "reg_pwm2_rst",
    -                    "offset": 25,
    -                    "size": 1
    -                  },
    -                  "PWM3_RST": {
    -                    "description": "reg_pwm3_rst",
    -                    "offset": 26,
    -                    "size": 1
    -                  },
    -                  "SPI3_DMA_RST": {
    -                    "description": "reg_spi3_dma_rst",
    -                    "offset": 27,
    -                    "size": 1
    -                  },
    -                  "APB_SARADC_RST": {
    -                    "description": "reg_apb_saradc_rst",
    -                    "offset": 28,
    -                    "size": 1
    -                  },
    -                  "SYSTIMER_RST": {
    -                    "description": "reg_systimer_rst",
    -                    "offset": 29,
    -                    "size": 1
    -                  },
    -                  "ADC2_ARB_RST": {
    -                    "description": "reg_adc2_arb_rst",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "SPI4_RST": {
    -                    "description": "reg_spi4_rst",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "PERIP_RST_EN1": {
    -              "description": "peripheral reset register",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 510,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CRYPTO_AES_RST": {
    -                    "description": "reg_crypto_aes_rst",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "CRYPTO_SHA_RST": {
    -                    "description": "reg_crypto_sha_rst",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "CRYPTO_RSA_RST": {
    -                    "description": "reg_crypto_rsa_rst",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "CRYPTO_DS_RST": {
    -                    "description": "reg_crypto_ds_rst",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "CRYPTO_HMAC_RST": {
    -                    "description": "reg_crypto_hmac_rst",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "DMA_RST": {
    -                    "description": "reg_dma_rst",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "SDIO_HOST_RST": {
    -                    "description": "reg_sdio_host_rst",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "LCD_CAM_RST": {
    -                    "description": "reg_lcd_cam_rst",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "UART2_RST": {
    -                    "description": "reg_uart2_rst",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "TSENS_RST": {
    -                    "description": "reg_tsens_rst",
    -                    "offset": 10,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "BT_LPCK_DIV_INT": {
    -              "description": "clock config register",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 255,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BT_LPCK_DIV_NUM": {
    -                    "description": "reg_bt_lpck_div_num",
    -                    "offset": 0,
    -                    "size": 12
    -                  }
    -                }
    -              }
    -            },
    -            "BT_LPCK_DIV_FRAC": {
    -              "description": "clock config register",
    -              "offset": 36,
    -              "size": 32,
    -              "reset_value": 33558529,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BT_LPCK_DIV_B": {
    -                    "description": "reg_bt_lpck_div_b",
    -                    "offset": 0,
    -                    "size": 12
    -                  },
    -                  "BT_LPCK_DIV_A": {
    -                    "description": "reg_bt_lpck_div_a",
    -                    "offset": 12,
    -                    "size": 12
    -                  },
    -                  "LPCLK_SEL_RTC_SLOW": {
    -                    "description": "reg_lpclk_sel_rtc_slow",
    -                    "offset": 24,
    -                    "size": 1
    -                  },
    -                  "LPCLK_SEL_8M": {
    -                    "description": "reg_lpclk_sel_8m",
    -                    "offset": 25,
    -                    "size": 1
    -                  },
    -                  "LPCLK_SEL_XTAL": {
    -                    "description": "reg_lpclk_sel_xtal",
    -                    "offset": 26,
    -                    "size": 1
    -                  },
    -                  "LPCLK_SEL_XTAL32K": {
    -                    "description": "reg_lpclk_sel_xtal32k",
    -                    "offset": 27,
    -                    "size": 1
    -                  },
    -                  "LPCLK_RTC_EN": {
    -                    "description": "reg_lpclk_rtc_en",
    -                    "offset": 28,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INTR_FROM_CPU_0": {
    -              "description": "interrupt generate register",
    -              "offset": 40,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_INTR_FROM_CPU_0": {
    -                    "description": "reg_cpu_intr_from_cpu_0",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INTR_FROM_CPU_1": {
    -              "description": "interrupt generate register",
    -              "offset": 44,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_INTR_FROM_CPU_1": {
    -                    "description": "reg_cpu_intr_from_cpu_1",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INTR_FROM_CPU_2": {
    -              "description": "interrupt generate register",
    -              "offset": 48,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_INTR_FROM_CPU_2": {
    -                    "description": "reg_cpu_intr_from_cpu_2",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CPU_INTR_FROM_CPU_3": {
    -              "description": "interrupt generate register",
    -              "offset": 52,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CPU_INTR_FROM_CPU_3": {
    -                    "description": "reg_cpu_intr_from_cpu_3",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "RSA_PD_CTRL": {
    -              "description": "rsa memory power control register",
    -              "offset": 56,
    -              "size": 32,
    -              "reset_value": 1,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RSA_MEM_PD": {
    -                    "description": "reg_rsa_mem_pd",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "RSA_MEM_FORCE_PU": {
    -                    "description": "reg_rsa_mem_force_pu",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "RSA_MEM_FORCE_PD": {
    -                    "description": "reg_rsa_mem_force_pd",
    -                    "offset": 2,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "EDMA_CTRL": {
    -              "description": "edma clcok and reset register",
    -              "offset": 60,
    -              "size": 32,
    -              "reset_value": 1,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "EDMA_CLK_ON": {
    -                    "description": "reg_edma_clk_on",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "EDMA_RESET": {
    -                    "description": "reg_edma_reset",
    -                    "offset": 1,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CACHE_CONTROL": {
    -              "description": "cache control register",
    -              "offset": 64,
    -              "size": 32,
    -              "reset_value": 5,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ICACHE_CLK_ON": {
    -                    "description": "reg_icache_clk_on",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "ICACHE_RESET": {
    -                    "description": "reg_icache_reset",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "DCACHE_CLK_ON": {
    -                    "description": "reg_dcache_clk_on",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "DCACHE_RESET": {
    -                    "description": "reg_dcache_reset",
    -                    "offset": 3,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "EXTERNAL_DEVICE_ENCRYPT_DECRYPT_CONTROL": {
    -              "description": "SYSTEM_EXTERNAL_DEVICE_ENCRYPT_DECRYPT_CONTROL_REG",
    -              "offset": 68,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ENABLE_SPI_MANUAL_ENCRYPT": {
    -                    "description": "reg_enable_spi_manual_encrypt",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "ENABLE_DOWNLOAD_DB_ENCRYPT": {
    -                    "description": "reg_enable_download_db_encrypt",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "ENABLE_DOWNLOAD_G0CB_DECRYPT": {
    -                    "description": "reg_enable_download_g0cb_decrypt",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "ENABLE_DOWNLOAD_MANUAL_ENCRYPT": {
    -                    "description": "reg_enable_download_manual_encrypt",
    -                    "offset": 3,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "RTC_FASTMEM_CONFIG": {
    -              "description": "fast memory config register",
    -              "offset": 72,
    -              "size": 32,
    -              "reset_value": 2146435072,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_MEM_CRC_START": {
    -                    "description": "reg_rtc_mem_crc_start",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "RTC_MEM_CRC_ADDR": {
    -                    "description": "reg_rtc_mem_crc_addr",
    -                    "offset": 9,
    -                    "size": 11
    -                  },
    -                  "RTC_MEM_CRC_LEN": {
    -                    "description": "reg_rtc_mem_crc_len",
    -                    "offset": 20,
    -                    "size": 11
    -                  },
    -                  "RTC_MEM_CRC_FINISH": {
    -                    "description": "reg_rtc_mem_crc_finish",
    -                    "offset": 31,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RTC_FASTMEM_CRC": {
    -              "description": "reserved",
    -              "offset": 76,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_MEM_CRC_RES": {
    -                    "description": "reg_rtc_mem_crc_res",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "REDUNDANT_ECO_CTRL": {
    -              "description": "eco register",
    -              "offset": 80,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "REDUNDANT_ECO_DRIVE": {
    -                    "description": "reg_redundant_eco_drive",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "REDUNDANT_ECO_RESULT": {
    -                    "description": "reg_redundant_eco_result",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CLOCK_GATE": {
    -              "description": "clock gating register",
    -              "offset": 84,
    -              "size": 32,
    -              "reset_value": 1,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CLK_EN": {
    -                    "description": "reg_clk_en",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "SYSCLK_CONF": {
    -              "description": "system clock config register",
    -              "offset": 88,
    -              "size": 32,
    -              "reset_value": 1,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PRE_DIV_CNT": {
    -                    "description": "reg_pre_div_cnt",
    -                    "offset": 0,
    -                    "size": 10
    -                  },
    -                  "SOC_CLK_SEL": {
    -                    "description": "reg_soc_clk_sel",
    -                    "offset": 10,
    -                    "size": 2
    -                  },
    -                  "CLK_XTAL_FREQ": {
    -                    "description": "reg_clk_xtal_freq",
    -                    "offset": 12,
    -                    "size": 7,
    -                    "access": "read-only"
    -                  },
    -                  "CLK_DIV_EN": {
    -                    "description": "reg_clk_div_en",
    -                    "offset": 19,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "MEM_PVT": {
    -              "description": "mem pvt register",
    -              "offset": 92,
    -              "size": 32,
    -              "reset_value": 3,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "MEM_PATH_LEN": {
    -                    "description": "reg_mem_path_len",
    -                    "offset": 0,
    -                    "size": 4
    -                  },
    -                  "MEM_ERR_CNT_CLR": {
    -                    "description": "reg_mem_err_cnt_clr",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "MONITOR_EN": {
    -                    "description": "reg_mem_pvt_monitor_en",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "MEM_TIMING_ERR_CNT": {
    -                    "description": "reg_mem_timing_err_cnt",
    -                    "offset": 6,
    -                    "size": 16,
    -                    "access": "read-only"
    -                  },
    -                  "MEM_VT_SEL": {
    -                    "description": "reg_mem_vt_sel",
    -                    "offset": 22,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "COMB_PVT_LVT_CONF": {
    -              "description": "mem pvt register",
    -              "offset": 96,
    -              "size": 32,
    -              "reset_value": 3,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "COMB_PATH_LEN_LVT": {
    -                    "description": "reg_comb_path_len_lvt",
    -                    "offset": 0,
    -                    "size": 5
    -                  },
    -                  "COMB_ERR_CNT_CLR_LVT": {
    -                    "description": "reg_comb_err_cnt_clr_lvt",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "COMB_PVT_MONITOR_EN_LVT": {
    -                    "description": "reg_comb_pvt_monitor_en_lvt",
    -                    "offset": 6,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "COMB_PVT_NVT_CONF": {
    -              "description": "mem pvt register",
    -              "offset": 100,
    -              "size": 32,
    -              "reset_value": 3,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "COMB_PATH_LEN_NVT": {
    -                    "description": "reg_comb_path_len_nvt",
    -                    "offset": 0,
    -                    "size": 5
    -                  },
    -                  "COMB_ERR_CNT_CLR_NVT": {
    -                    "description": "reg_comb_err_cnt_clr_nvt",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "COMB_PVT_MONITOR_EN_NVT": {
    -                    "description": "reg_comb_pvt_monitor_en_nvt",
    -                    "offset": 6,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "COMB_PVT_HVT_CONF": {
    -              "description": "mem pvt register",
    -              "offset": 104,
    -              "size": 32,
    -              "reset_value": 3,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "COMB_PATH_LEN_HVT": {
    -                    "description": "reg_comb_path_len_hvt",
    -                    "offset": 0,
    -                    "size": 5
    -                  },
    -                  "COMB_ERR_CNT_CLR_HVT": {
    -                    "description": "reg_comb_err_cnt_clr_hvt",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "COMB_PVT_MONITOR_EN_HVT": {
    -                    "description": "reg_comb_pvt_monitor_en_hvt",
    -                    "offset": 6,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "COMB_PVT_ERR_LVT_SITE0": {
    -              "description": "mem pvt register",
    -              "offset": 108,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "COMB_TIMING_ERR_CNT_LVT_SITE0": {
    -                    "description": "reg_comb_timing_err_cnt_lvt_site0",
    -                    "offset": 0,
    -                    "size": 16,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "COMB_PVT_ERR_NVT_SITE0": {
    -              "description": "mem pvt register",
    -              "offset": 112,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "COMB_TIMING_ERR_CNT_NVT_SITE0": {
    -                    "description": "reg_comb_timing_err_cnt_nvt_site0",
    -                    "offset": 0,
    -                    "size": 16,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "COMB_PVT_ERR_HVT_SITE0": {
    -              "description": "mem pvt register",
    -              "offset": 116,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "COMB_TIMING_ERR_CNT_HVT_SITE0": {
    -                    "description": "reg_comb_timing_err_cnt_hvt_site0",
    -                    "offset": 0,
    -                    "size": 16,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "COMB_PVT_ERR_LVT_SITE1": {
    -              "description": "mem pvt register",
    -              "offset": 120,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "COMB_TIMING_ERR_CNT_LVT_SITE1": {
    -                    "description": "reg_comb_timing_err_cnt_lvt_site1",
    -                    "offset": 0,
    -                    "size": 16,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "COMB_PVT_ERR_NVT_SITE1": {
    -              "description": "mem pvt register",
    -              "offset": 124,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "COMB_TIMING_ERR_CNT_NVT_SITE1": {
    -                    "description": "reg_comb_timing_err_cnt_nvt_site1",
    -                    "offset": 0,
    -                    "size": 16,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "COMB_PVT_ERR_HVT_SITE1": {
    -              "description": "mem pvt register",
    -              "offset": 128,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "COMB_TIMING_ERR_CNT_HVT_SITE1": {
    -                    "description": "reg_comb_timing_err_cnt_hvt_site1",
    -                    "offset": 0,
    -                    "size": 16,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "COMB_PVT_ERR_LVT_SITE2": {
    -              "description": "mem pvt register",
    -              "offset": 132,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "COMB_TIMING_ERR_CNT_LVT_SITE2": {
    -                    "description": "reg_comb_timing_err_cnt_lvt_site2",
    -                    "offset": 0,
    -                    "size": 16,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "COMB_PVT_ERR_NVT_SITE2": {
    -              "description": "mem pvt register",
    -              "offset": 136,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "COMB_TIMING_ERR_CNT_NVT_SITE2": {
    -                    "description": "reg_comb_timing_err_cnt_nvt_site2",
    -                    "offset": 0,
    -                    "size": 16,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "COMB_PVT_ERR_HVT_SITE2": {
    -              "description": "mem pvt register",
    -              "offset": 140,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "COMB_TIMING_ERR_CNT_HVT_SITE2": {
    -                    "description": "reg_comb_timing_err_cnt_hvt_site2",
    -                    "offset": 0,
    -                    "size": 16,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "COMB_PVT_ERR_LVT_SITE3": {
    -              "description": "mem pvt register",
    -              "offset": 144,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "COMB_TIMING_ERR_CNT_LVT_SITE3": {
    -                    "description": "reg_comb_timing_err_cnt_lvt_site3",
    -                    "offset": 0,
    -                    "size": 16,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "COMB_PVT_ERR_NVT_SITE3": {
    -              "description": "mem pvt register",
    -              "offset": 148,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "COMB_TIMING_ERR_CNT_NVT_SITE3": {
    -                    "description": "reg_comb_timing_err_cnt_nvt_site3",
    -                    "offset": 0,
    -                    "size": 16,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "COMB_PVT_ERR_HVT_SITE3": {
    -              "description": "mem pvt register",
    -              "offset": 152,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "COMB_TIMING_ERR_CNT_HVT_SITE3": {
    -                    "description": "reg_comb_timing_err_cnt_hvt_site3",
    -                    "offset": 0,
    -                    "size": 16,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "SYSTEM_REG_DATE": {
    -              "description": "Version register",
    -              "offset": 4092,
    -              "size": 32,
    -              "reset_value": 33583440,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SYSTEM_REG_DATE": {
    -                    "description": "reg_system_reg_date",
    -                    "offset": 0,
    -                    "size": 28
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "SYSTIMER": {
    -        "description": "System Timer",
    -        "children": {
    -          "registers": {
    -            "CONF": {
    -              "description": "SYSTIMER_CONF.",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 1174405120,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SYSTIMER_CLK_FO": {
    -                    "description": "systimer clock force on",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "TARGET2_WORK_EN": {
    -                    "description": "target2 work enable",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "TARGET1_WORK_EN": {
    -                    "description": "target1 work enable",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "TARGET0_WORK_EN": {
    -                    "description": "target0 work enable",
    -                    "offset": 24,
    -                    "size": 1
    -                  },
    -                  "TIMER_UNIT1_CORE1_STALL_EN": {
    -                    "description": "If timer unit1 is stalled when core1 stalled",
    -                    "offset": 25,
    -                    "size": 1
    -                  },
    -                  "TIMER_UNIT1_CORE0_STALL_EN": {
    -                    "description": "If timer unit1 is stalled when core0 stalled",
    -                    "offset": 26,
    -                    "size": 1
    -                  },
    -                  "TIMER_UNIT0_CORE1_STALL_EN": {
    -                    "description": "If timer unit0 is stalled when core1 stalled",
    -                    "offset": 27,
    -                    "size": 1
    -                  },
    -                  "TIMER_UNIT0_CORE0_STALL_EN": {
    -                    "description": "If timer unit0 is stalled when core0 stalled",
    -                    "offset": 28,
    -                    "size": 1
    -                  },
    -                  "TIMER_UNIT1_WORK_EN": {
    -                    "description": "timer unit1 work enable",
    -                    "offset": 29,
    -                    "size": 1
    -                  },
    -                  "TIMER_UNIT0_WORK_EN": {
    -                    "description": "timer unit0 work enable",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "CLK_EN": {
    -                    "description": "register file clk gating",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "UNIT0_OP": {
    -              "description": "SYSTIMER_UNIT0_OP.",
    -              "offset": 4,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_UNIT0_VALUE_VALID": {
    -                    "description": "reg_timer_unit0_value_valid",
    -                    "offset": 29,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TIMER_UNIT0_UPDATE": {
    -                    "description": "update timer_unit0",
    -                    "offset": 30,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "UNIT1_OP": {
    -              "description": "SYSTIMER_UNIT1_OP.",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_UNIT1_VALUE_VALID": {
    -                    "description": "timer value is sync and valid",
    -                    "offset": 29,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TIMER_UNIT1_UPDATE": {
    -                    "description": "update timer unit1",
    -                    "offset": 30,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "UNIT0_LOAD_HI": {
    -              "description": "SYSTIMER_UNIT0_LOAD_HI.",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_UNIT0_LOAD_HI": {
    -                    "description": "timer unit0 load high 32 bit",
    -                    "offset": 0,
    -                    "size": 20
    -                  }
    -                }
    -              }
    -            },
    -            "UNIT0_LOAD_LO": {
    -              "description": "SYSTIMER_UNIT0_LOAD_LO.",
    -              "offset": 16,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_UNIT0_LOAD_LO": {
    -                    "description": "timer unit0 load low 32 bit",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "UNIT1_LOAD_HI": {
    -              "description": "SYSTIMER_UNIT1_LOAD_HI.",
    -              "offset": 20,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_UNIT1_LOAD_HI": {
    -                    "description": "timer unit1 load high 32 bit",
    -                    "offset": 0,
    -                    "size": 20
    -                  }
    -                }
    -              }
    -            },
    -            "UNIT1_LOAD_LO": {
    -              "description": "SYSTIMER_UNIT1_LOAD_LO.",
    -              "offset": 24,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_UNIT1_LOAD_LO": {
    -                    "description": "timer unit1 load low 32 bit",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "TARGET0_HI": {
    -              "description": "SYSTIMER_TARGET0_HI.",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_TARGET0_HI": {
    -                    "description": "timer taget0 high 32 bit",
    -                    "offset": 0,
    -                    "size": 20
    -                  }
    -                }
    -              }
    -            },
    -            "TARGET0_LO": {
    -              "description": "SYSTIMER_TARGET0_LO.",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_TARGET0_LO": {
    -                    "description": "timer taget0 low 32 bit",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "TARGET1_HI": {
    -              "description": "SYSTIMER_TARGET1_HI.",
    -              "offset": 36,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_TARGET1_HI": {
    -                    "description": "timer taget1 high 32 bit",
    -                    "offset": 0,
    -                    "size": 20
    -                  }
    -                }
    -              }
    -            },
    -            "TARGET1_LO": {
    -              "description": "SYSTIMER_TARGET1_LO.",
    -              "offset": 40,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_TARGET1_LO": {
    -                    "description": "timer taget1 low 32 bit",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "TARGET2_HI": {
    -              "description": "SYSTIMER_TARGET2_HI.",
    -              "offset": 44,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_TARGET2_HI": {
    -                    "description": "timer taget2 high 32 bit",
    -                    "offset": 0,
    -                    "size": 20
    -                  }
    -                }
    -              }
    -            },
    -            "TARGET2_LO": {
    -              "description": "SYSTIMER_TARGET2_LO.",
    -              "offset": 48,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_TARGET2_LO": {
    -                    "description": "timer taget2 low 32 bit",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "TARGET0_CONF": {
    -              "description": "SYSTIMER_TARGET0_CONF.",
    -              "offset": 52,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TARGET0_PERIOD": {
    -                    "description": "target0 period",
    -                    "offset": 0,
    -                    "size": 26
    -                  },
    -                  "TARGET0_PERIOD_MODE": {
    -                    "description": "Set target0 to period mode",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "TARGET0_TIMER_UNIT_SEL": {
    -                    "description": "select which unit to compare",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "TARGET1_CONF": {
    -              "description": "SYSTIMER_TARGET1_CONF.",
    -              "offset": 56,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TARGET1_PERIOD": {
    -                    "description": "target1 period",
    -                    "offset": 0,
    -                    "size": 26
    -                  },
    -                  "TARGET1_PERIOD_MODE": {
    -                    "description": "Set target1 to period mode",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "TARGET1_TIMER_UNIT_SEL": {
    -                    "description": "select which unit to compare",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "TARGET2_CONF": {
    -              "description": "SYSTIMER_TARGET2_CONF.",
    -              "offset": 60,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TARGET2_PERIOD": {
    -                    "description": "target2 period",
    -                    "offset": 0,
    -                    "size": 26
    -                  },
    -                  "TARGET2_PERIOD_MODE": {
    -                    "description": "Set target2 to period mode",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "TARGET2_TIMER_UNIT_SEL": {
    -                    "description": "select which unit to compare",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "UNIT0_VALUE_HI": {
    -              "description": "SYSTIMER_UNIT0_VALUE_HI.",
    -              "offset": 64,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_UNIT0_VALUE_HI": {
    -                    "description": "timer read value high 32bit",
    -                    "offset": 0,
    -                    "size": 20,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "UNIT0_VALUE_LO": {
    -              "description": "SYSTIMER_UNIT0_VALUE_LO.",
    -              "offset": 68,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_UNIT0_VALUE_LO": {
    -                    "description": "timer read value low 32bit",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "UNIT1_VALUE_HI": {
    -              "description": "SYSTIMER_UNIT1_VALUE_HI.",
    -              "offset": 72,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_UNIT1_VALUE_HI": {
    -                    "description": "timer read value high 32bit",
    -                    "offset": 0,
    -                    "size": 20,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "UNIT1_VALUE_LO": {
    -              "description": "SYSTIMER_UNIT1_VALUE_LO.",
    -              "offset": 76,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_UNIT1_VALUE_LO": {
    -                    "description": "timer read value low 32bit",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "COMP0_LOAD": {
    -              "description": "SYSTIMER_COMP0_LOAD.",
    -              "offset": 80,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_COMP0_LOAD": {
    -                    "description": "timer comp0 load value",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "COMP1_LOAD": {
    -              "description": "SYSTIMER_COMP1_LOAD.",
    -              "offset": 84,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_COMP1_LOAD": {
    -                    "description": "timer comp1 load value",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "COMP2_LOAD": {
    -              "description": "SYSTIMER_COMP2_LOAD.",
    -              "offset": 88,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_COMP2_LOAD": {
    -                    "description": "timer comp2 load value",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "UNIT0_LOAD": {
    -              "description": "SYSTIMER_UNIT0_LOAD.",
    -              "offset": 92,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_UNIT0_LOAD": {
    -                    "description": "timer unit0 load value",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "UNIT1_LOAD": {
    -              "description": "SYSTIMER_UNIT1_LOAD.",
    -              "offset": 96,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIMER_UNIT1_LOAD": {
    -                    "description": "timer unit1 load value",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ENA": {
    -              "description": "SYSTIMER_INT_ENA.",
    -              "offset": 100,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TARGET0_INT_ENA": {
    -                    "description": "interupt0 enable",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "TARGET1_INT_ENA": {
    -                    "description": "interupt1 enable",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "TARGET2_INT_ENA": {
    -                    "description": "interupt2 enable",
    -                    "offset": 2,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INT_RAW": {
    -              "description": "SYSTIMER_INT_RAW.",
    -              "offset": 104,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TARGET0_INT_RAW": {
    -                    "description": "interupt0 raw",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TARGET1_INT_RAW": {
    -                    "description": "interupt1 raw",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TARGET2_INT_RAW": {
    -                    "description": "interupt2 raw",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_CLR": {
    -              "description": "SYSTIMER_INT_CLR.",
    -              "offset": 108,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TARGET0_INT_CLR": {
    -                    "description": "interupt0 clear",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "TARGET1_INT_CLR": {
    -                    "description": "interupt1 clear",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "TARGET2_INT_CLR": {
    -                    "description": "interupt2 clear",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ST": {
    -              "description": "SYSTIMER_INT_ST.",
    -              "offset": 112,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TARGET0_INT_ST": {
    -                    "description": "reg_target0_int_st",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TARGET1_INT_ST": {
    -                    "description": "reg_target1_int_st",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TARGET2_INT_ST": {
    -                    "description": "reg_target2_int_st",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DATE": {
    -              "description": "SYSTIMER_DATE.",
    -              "offset": 252,
    -              "size": 32,
    -              "reset_value": 33579377,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATE": {
    -                    "description": "reg_date",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "TIMG0": {
    -        "description": "Timer Group",
    -        "children": {
    -          "registers": {
    -            "T0CONFIG": {
    -              "description": "TIMG_T0CONFIG_REG.",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 1610620928,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "T0_USE_XTAL": {
    -                    "description": "reg_t0_use_xtal.",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "T0_ALARM_EN": {
    -                    "description": "reg_t0_alarm_en.",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "T0_DIVCNT_RST": {
    -                    "description": "reg_t0_divcnt_rst.",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "T0_DIVIDER": {
    -                    "description": "reg_t0_divider.",
    -                    "offset": 13,
    -                    "size": 16
    -                  },
    -                  "T0_AUTORELOAD": {
    -                    "description": "reg_t0_autoreload.",
    -                    "offset": 29,
    -                    "size": 1
    -                  },
    -                  "T0_INCREASE": {
    -                    "description": "reg_t0_increase.",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "T0_EN": {
    -                    "description": "reg_t0_en.",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "T0LO": {
    -              "description": "TIMG_T0LO_REG.",
    -              "offset": 4,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "T0_LO": {
    -                    "description": "t0_lo",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "T0HI": {
    -              "description": "TIMG_T0HI_REG.",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "T0_HI": {
    -                    "description": "t0_hi",
    -                    "offset": 0,
    -                    "size": 22,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "T0UPDATE": {
    -              "description": "TIMG_T0UPDATE_REG.",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "T0_UPDATE": {
    -                    "description": "t0_update",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "T0ALARMLO": {
    -              "description": "TIMG_T0ALARMLO_REG.",
    -              "offset": 16,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "T0_ALARM_LO": {
    -                    "description": "reg_t0_alarm_lo.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "T0ALARMHI": {
    -              "description": "TIMG_T0ALARMHI_REG.",
    -              "offset": 20,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "T0_ALARM_HI": {
    -                    "description": "reg_t0_alarm_hi.",
    -                    "offset": 0,
    -                    "size": 22
    -                  }
    -                }
    -              }
    -            },
    -            "T0LOADLO": {
    -              "description": "TIMG_T0LOADLO_REG.",
    -              "offset": 24,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "T0_LOAD_LO": {
    -                    "description": "reg_t0_load_lo.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "T0LOADHI": {
    -              "description": "TIMG_T0LOADHI_REG.",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "T0_LOAD_HI": {
    -                    "description": "reg_t0_load_hi.",
    -                    "offset": 0,
    -                    "size": 22
    -                  }
    -                }
    -              }
    -            },
    -            "T0LOAD": {
    -              "description": "TIMG_T0LOAD_REG.",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "T0_LOAD": {
    -                    "description": "t0_load",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "WDTCONFIG0": {
    -              "description": "TIMG_WDTCONFIG0_REG.",
    -              "offset": 72,
    -              "size": 32,
    -              "reset_value": 311296,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WDT_APPCPU_RESET_EN": {
    -                    "description": "reg_wdt_appcpu_reset_en.",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "WDT_PROCPU_RESET_EN": {
    -                    "description": "reg_wdt_procpu_reset_en.",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "WDT_FLASHBOOT_MOD_EN": {
    -                    "description": "reg_wdt_flashboot_mod_en.",
    -                    "offset": 14,
    -                    "size": 1
    -                  },
    -                  "WDT_SYS_RESET_LENGTH": {
    -                    "description": "reg_wdt_sys_reset_length.",
    -                    "offset": 15,
    -                    "size": 3
    -                  },
    -                  "WDT_CPU_RESET_LENGTH": {
    -                    "description": "reg_wdt_cpu_reset_length.",
    -                    "offset": 18,
    -                    "size": 3
    -                  },
    -                  "WDT_USE_XTAL": {
    -                    "description": "reg_wdt_use_xtal.",
    -                    "offset": 21,
    -                    "size": 1
    -                  },
    -                  "WDT_CONF_UPDATE_EN": {
    -                    "description": "reg_wdt_conf_update_en.",
    -                    "offset": 22,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "WDT_STG3": {
    -                    "description": "reg_wdt_stg3.",
    -                    "offset": 23,
    -                    "size": 2
    -                  },
    -                  "WDT_STG2": {
    -                    "description": "reg_wdt_stg2.",
    -                    "offset": 25,
    -                    "size": 2
    -                  },
    -                  "WDT_STG1": {
    -                    "description": "reg_wdt_stg1.",
    -                    "offset": 27,
    -                    "size": 2
    -                  },
    -                  "WDT_STG0": {
    -                    "description": "reg_wdt_stg0.",
    -                    "offset": 29,
    -                    "size": 2
    -                  },
    -                  "WDT_EN": {
    -                    "description": "reg_wdt_en.",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "WDTCONFIG1": {
    -              "description": "TIMG_WDTCONFIG1_REG.",
    -              "offset": 76,
    -              "size": 32,
    -              "reset_value": 65536,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WDT_DIVCNT_RST": {
    -                    "description": "reg_wdt_divcnt_rst.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "WDT_CLK_PRESCALE": {
    -                    "description": "reg_wdt_clk_prescale.",
    -                    "offset": 16,
    -                    "size": 16
    -                  }
    -                }
    -              }
    -            },
    -            "WDTCONFIG2": {
    -              "description": "TIMG_WDTCONFIG2_REG.",
    -              "offset": 80,
    -              "size": 32,
    -              "reset_value": 26000000,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WDT_STG0_HOLD": {
    -                    "description": "reg_wdt_stg0_hold.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "WDTCONFIG3": {
    -              "description": "TIMG_WDTCONFIG3_REG.",
    -              "offset": 84,
    -              "size": 32,
    -              "reset_value": 134217727,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WDT_STG1_HOLD": {
    -                    "description": "reg_wdt_stg1_hold.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "WDTCONFIG4": {
    -              "description": "TIMG_WDTCONFIG4_REG.",
    -              "offset": 88,
    -              "size": 32,
    -              "reset_value": 1048575,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WDT_STG2_HOLD": {
    -                    "description": "reg_wdt_stg2_hold.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "WDTCONFIG5": {
    -              "description": "TIMG_WDTCONFIG5_REG.",
    -              "offset": 92,
    -              "size": 32,
    -              "reset_value": 1048575,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WDT_STG3_HOLD": {
    -                    "description": "reg_wdt_stg3_hold.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "WDTFEED": {
    -              "description": "TIMG_WDTFEED_REG.",
    -              "offset": 96,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WDT_FEED": {
    -                    "description": "wdt_feed",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "WDTWPROTECT": {
    -              "description": "TIMG_WDTWPROTECT_REG.",
    -              "offset": 100,
    -              "size": 32,
    -              "reset_value": 1356348065,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WDT_WKEY": {
    -                    "description": "reg_wdt_wkey.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "RTCCALICFG": {
    -              "description": "TIMG_RTCCALICFG_REG.",
    -              "offset": 104,
    -              "size": 32,
    -              "reset_value": 77824,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_CALI_START_CYCLING": {
    -                    "description": "reg_rtc_cali_start_cycling.",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "RTC_CALI_CLK_SEL": {
    -                    "description": "reg_rtc_cali_clk_sel.0:rtcslowclock.1:clk_80m.2:xtal_32k",
    -                    "offset": 13,
    -                    "size": 2
    -                  },
    -                  "RTC_CALI_RDY": {
    -                    "description": "rtc_cali_rdy",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_CALI_MAX": {
    -                    "description": "reg_rtc_cali_max.",
    -                    "offset": 16,
    -                    "size": 15
    -                  },
    -                  "RTC_CALI_START": {
    -                    "description": "reg_rtc_cali_start.",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "RTCCALICFG1": {
    -              "description": "TIMG_RTCCALICFG1_REG.",
    -              "offset": 108,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_CALI_CYCLING_DATA_VLD": {
    -                    "description": "rtc_cali_cycling_data_vld",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_CALI_VALUE": {
    -                    "description": "rtc_cali_value",
    -                    "offset": 7,
    -                    "size": 25,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ENA_TIMERS": {
    -              "description": "INT_ENA_TIMG_REG",
    -              "offset": 112,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "T0_INT_ENA": {
    -                    "description": "t0_int_ena",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "WDT_INT_ENA": {
    -                    "description": "wdt_int_ena",
    -                    "offset": 1,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INT_RAW_TIMERS": {
    -              "description": "INT_RAW_TIMG_REG",
    -              "offset": 116,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "T0_INT_RAW": {
    -                    "description": "t0_int_raw",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "WDT_INT_RAW": {
    -                    "description": "wdt_int_raw",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ST_TIMERS": {
    -              "description": "INT_ST_TIMG_REG",
    -              "offset": 120,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "T0_INT_ST": {
    -                    "description": "t0_int_st",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "WDT_INT_ST": {
    -                    "description": "wdt_int_st",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_CLR_TIMERS": {
    -              "description": "INT_CLR_TIMG_REG",
    -              "offset": 124,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "T0_INT_CLR": {
    -                    "description": "t0_int_clr",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "WDT_INT_CLR": {
    -                    "description": "wdt_int_clr",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RTCCALICFG2": {
    -              "description": "TIMG_RTCCALICFG2_REG.",
    -              "offset": 128,
    -              "size": 32,
    -              "reset_value": 4294967192,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RTC_CALI_TIMEOUT": {
    -                    "description": "timeoutindicator",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTC_CALI_TIMEOUT_RST_CNT": {
    -                    "description": "reg_rtc_cali_timeout_rst_cnt.Cyclesthatreleasecalibrationtimeoutreset",
    -                    "offset": 3,
    -                    "size": 4
    -                  },
    -                  "RTC_CALI_TIMEOUT_THRES": {
    -                    "description": "reg_rtc_cali_timeout_thres.timeoutifcalivaluecountsoverthreshold",
    -                    "offset": 7,
    -                    "size": 25
    -                  }
    -                }
    -              }
    -            },
    -            "NTIMG_DATE": {
    -              "description": "TIMG_NTIMG_DATE_REG.",
    -              "offset": 248,
    -              "size": 32,
    -              "reset_value": 33579409,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "NTIMGS_DATE": {
    -                    "description": "reg_ntimers_date.",
    -                    "offset": 0,
    -                    "size": 28
    -                  }
    -                }
    -              }
    -            },
    -            "REGCLK": {
    -              "description": "TIMG_REGCLK_REG.",
    -              "offset": 252,
    -              "size": 32,
    -              "reset_value": 1610612736,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WDT_CLK_IS_ACTIVE": {
    -                    "description": "reg_wdt_clk_is_active.",
    -                    "offset": 29,
    -                    "size": 1
    -                  },
    -                  "TIMER_CLK_IS_ACTIVE": {
    -                    "description": "reg_timer_clk_is_active.",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "CLK_EN": {
    -                    "description": "reg_clk_en.",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "XTS_AES": {
    -        "description": "XTS-AES-128 Flash Encryption",
    -        "children": {
    -          "registers": {
    -            "PLAIN_MEM": {
    -              "description": "The memory that stores plaintext",
    -              "offset": 0,
    -              "size": 8,
    -              "count": 16,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295
    -            },
    -            "LINESIZE": {
    -              "description": "XTS-AES line-size register",
    -              "offset": 64,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "LINESIZE": {
    -                    "description": "This bit stores the line size parameter. 0: 16Byte, 1: 32Byte.",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DESTINATION": {
    -              "description": "XTS-AES destination register",
    -              "offset": 68,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DESTINATION": {
    -                    "description": "This bit stores the destination. 0: flash(default). 1: reserved.",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "PHYSICAL_ADDRESS": {
    -              "description": "XTS-AES physical address register",
    -              "offset": 72,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PHYSICAL_ADDRESS": {
    -                    "description": "Those bits stores the physical address. If linesize is 16-byte, the physical address should be aligned of 16 bytes. If linesize is 32-byte, the physical address should be aligned of 32 bytes.",
    -                    "offset": 0,
    -                    "size": 30
    -                  }
    -                }
    -              }
    -            },
    -            "TRIGGER": {
    -              "description": "XTS-AES trigger register",
    -              "offset": 76,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TRIGGER": {
    -                    "description": "Set this bit to start manual encryption calculation",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RELEASE": {
    -              "description": "XTS-AES release register",
    -              "offset": 80,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RELEASE": {
    -                    "description": "Set this bit to release the manual encrypted result, after that the result will be visible to spi",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DESTROY": {
    -              "description": "XTS-AES destroy register",
    -              "offset": 84,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DESTROY": {
    -                    "description": "Set this bit to destroy XTS-AES result.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "STATE": {
    -              "description": "XTS-AES status register",
    -              "offset": 88,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "STATE": {
    -                    "description": "Those bits shows XTS-AES status. 0=IDLE, 1=WORK, 2=RELEASE, 3=USE. IDLE means that XTS-AES is idle. WORK means that XTS-AES is busy with calculation. RELEASE means the encrypted result is generated but not visible to mspi. USE means that the encrypted result is visible to mspi.",
    -                    "offset": 0,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DATE": {
    -              "description": "XTS-AES version control register",
    -              "offset": 92,
    -              "size": 32,
    -              "reset_value": 538969635,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATE": {
    -                    "description": "Those bits stores the version information of XTS-AES.",
    -                    "offset": 0,
    -                    "size": 30
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "TWAI": {
    -        "description": "Two-Wire Automotive Interface",
    -        "children": {
    -          "registers": {
    -            "MODE": {
    -              "description": "Mode Register",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 1,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RESET_MODE": {
    -                    "description": "This bit is used to configure the operating mode of the TWAI Controller. 1: Reset mode; 0: Operating mode.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "LISTEN_ONLY_MODE": {
    -                    "description": "1: Listen only mode. In this mode the nodes will only receive messages from the bus, without generating the acknowledge signal nor updating the RX error counter.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "SELF_TEST_MODE": {
    -                    "description": "1: Self test mode. In this mode the TX nodes can perform a successful transmission without receiving the acknowledge signal. This mode is often used to test a single node with the self reception request command.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "RX_FILTER_MODE": {
    -                    "description": "This bit is used to configure the filter mode. 0: Dual filter mode; 1: Single filter mode.",
    -                    "offset": 3,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CMD": {
    -              "description": "Command Register",
    -              "offset": 4,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_REQ": {
    -                    "description": "Set the bit to 1 to allow the driving nodes start transmission.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "ABORT_TX": {
    -                    "description": "Set the bit to 1 to cancel a pending transmission request.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RELEASE_BUF": {
    -                    "description": "Set the bit to 1 to release the RX buffer.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "CLR_OVERRUN": {
    -                    "description": "Set the bit to 1 to clear the data overrun status bit.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SELF_RX_REQ": {
    -                    "description": "Self reception request command. Set the bit to 1 to allow a message be transmitted and received simultaneously.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "STATUS": {
    -              "description": "Status register",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_BUF_ST": {
    -                    "description": "1: The data in the RX buffer is not empty, with at least one received data packet.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OVERRUN_ST": {
    -                    "description": "1: The RX FIFO is full and data overrun has occurred.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TX_BUF_ST": {
    -                    "description": "1: The TX buffer is empty, the CPU may write a message into it.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TX_COMPLETE": {
    -                    "description": "1: The TWAI controller has successfully received a packet from the bus.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RX_ST": {
    -                    "description": "1: The TWAI Controller is receiving a message from the bus.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TX_ST": {
    -                    "description": "1: The TWAI Controller is transmitting a message to the bus.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "ERR_ST": {
    -                    "description": "1: At least one of the RX/TX error counter has reached or exceeded the value set in register TWAI_ERR_WARNING_LIMIT_REG.",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "BUS_OFF_ST": {
    -                    "description": "1: In bus-off status, the TWAI Controller is no longer involved in bus activities.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "MISS_ST": {
    -                    "description": "This bit reflects whether the data packet in the RX FIFO is complete. 1: The current packet is missing; 0: The current packet is complete",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_RAW": {
    -              "description": "Interrupt Register",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_INT_ST": {
    -                    "description": "Receive interrupt. If this bit is set to 1, it indicates there are messages to be handled in the RX FIFO.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TX_INT_ST": {
    -                    "description": "Transmit interrupt. If this bit is set to 1, it indicates the message transmitting mis- sion is finished and a new transmission is able to execute.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "ERR_WARN_INT_ST": {
    -                    "description": "Error warning interrupt. If this bit is set to 1, it indicates the error status signal and the bus-off status signal of Status register have changed (e.g., switched from 0 to 1 or from 1 to 0).",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OVERRUN_INT_ST": {
    -                    "description": "Data overrun interrupt. If this bit is set to 1, it indicates a data overrun interrupt is generated in the RX FIFO.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "ERR_PASSIVE_INT_ST": {
    -                    "description": "Error passive interrupt. If this bit is set to 1, it indicates the TWAI Controller is switched between error active status and error passive status due to the change of error counters.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "ARB_LOST_INT_ST": {
    -                    "description": "Arbitration lost interrupt. If this bit is set to 1, it indicates an arbitration lost interrupt is generated.",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "BUS_ERR_INT_ST": {
    -                    "description": "Error interrupt. If this bit is set to 1, it indicates an error is detected on the bus.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ENA": {
    -              "description": "Interrupt Enable Register",
    -              "offset": 16,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_INT_ENA": {
    -                    "description": "Set this bit to 1 to enable receive interrupt.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "TX_INT_ENA": {
    -                    "description": "Set this bit to 1 to enable transmit interrupt.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "ERR_WARN_INT_ENA": {
    -                    "description": "Set this bit to 1 to enable error warning interrupt.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "OVERRUN_INT_ENA": {
    -                    "description": "Set this bit to 1 to enable data overrun interrupt.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "ERR_PASSIVE_INT_ENA": {
    -                    "description": "Set this bit to 1 to enable error passive interrupt.",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "ARB_LOST_INT_ENA": {
    -                    "description": "Set this bit to 1 to enable arbitration lost interrupt.",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "BUS_ERR_INT_ENA": {
    -                    "description": "Set this bit to 1 to enable error interrupt.",
    -                    "offset": 7,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "BUS_TIMING_0": {
    -              "description": "Bus Timing Register 0",
    -              "offset": 24,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "BAUD_PRESC": {
    -                    "description": "Baud Rate Prescaler, determines the frequency dividing ratio.",
    -                    "offset": 0,
    -                    "size": 13
    -                  },
    -                  "SYNC_JUMP_WIDTH": {
    -                    "description": "Synchronization Jump Width (SJW), 1 \\verb+~+ 14 Tq wide.",
    -                    "offset": 14,
    -                    "size": 2
    -                  }
    -                }
    -              }
    -            },
    -            "BUS_TIMING_1": {
    -              "description": "Bus Timing Register 1",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TIME_SEG1": {
    -                    "description": "The width of PBS1.",
    -                    "offset": 0,
    -                    "size": 4
    -                  },
    -                  "TIME_SEG2": {
    -                    "description": "The width of PBS2.",
    -                    "offset": 4,
    -                    "size": 3
    -                  },
    -                  "TIME_SAMP": {
    -                    "description": "The number of sample points. 0: the bus is sampled once; 1: the bus is sampled three times",
    -                    "offset": 7,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "ARB_LOST_CAP": {
    -              "description": "Arbitration Lost Capture Register",
    -              "offset": 44,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ARB_LOST_CAP": {
    -                    "description": "This register contains information about the bit position of lost arbitration.",
    -                    "offset": 0,
    -                    "size": 5,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "ERR_CODE_CAP": {
    -              "description": "Error Code Capture Register",
    -              "offset": 48,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ECC_SEGMENT": {
    -                    "description": "This register contains information about the location of errors, see Table 181 for details.",
    -                    "offset": 0,
    -                    "size": 5,
    -                    "access": "read-only"
    -                  },
    -                  "ECC_DIRECTION": {
    -                    "description": "This register contains information about transmission direction of the node when error occurs. 1: Error occurs when receiving a message; 0: Error occurs when transmitting a message",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "ECC_TYPE": {
    -                    "description": "This register contains information about error types: 00: bit error; 01: form error; 10: stuff error; 11: other type of error",
    -                    "offset": 6,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "ERR_WARNING_LIMIT": {
    -              "description": "Error Warning Limit Register",
    -              "offset": 52,
    -              "size": 32,
    -              "reset_value": 96,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ERR_WARNING_LIMIT": {
    -                    "description": "Error warning threshold. In the case when any of a error counter value exceeds the threshold, or all the error counter values are below the threshold, an error warning interrupt will be triggered (given the enable signal is valid).",
    -                    "offset": 0,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "RX_ERR_CNT": {
    -              "description": "Receive Error Counter Register",
    -              "offset": 56,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_ERR_CNT": {
    -                    "description": "The RX error counter register, reflects value changes under reception status.",
    -                    "offset": 0,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "TX_ERR_CNT": {
    -              "description": "Transmit Error Counter Register",
    -              "offset": 60,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_ERR_CNT": {
    -                    "description": "The TX error counter register, reflects value changes under transmission status.",
    -                    "offset": 0,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "DATA_0": {
    -              "description": "Data register 0",
    -              "offset": 64,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_BYTE_0": {
    -                    "description": "In reset mode, it is acceptance code register 0 with R/W Permission. In operation mode, it stores the 0th byte information of the data to be transmitted under operating mode.",
    -                    "offset": 0,
    -                    "size": 8,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DATA_1": {
    -              "description": "Data register 1",
    -              "offset": 68,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_BYTE_1": {
    -                    "description": "In reset mode, it is acceptance code register 1 with R/W Permission. In operation mode, it stores the 1st byte information of the data to be transmitted under operating mode.",
    -                    "offset": 0,
    -                    "size": 8,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DATA_2": {
    -              "description": "Data register 2",
    -              "offset": 72,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_BYTE_2": {
    -                    "description": "In reset mode, it is acceptance code register 2 with R/W Permission. In operation mode, it stores the 2nd byte information of the data to be transmitted under operating mode.",
    -                    "offset": 0,
    -                    "size": 8,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DATA_3": {
    -              "description": "Data register 3",
    -              "offset": 76,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_BYTE_3": {
    -                    "description": "In reset mode, it is acceptance code register 3 with R/W Permission. In operation mode, it stores the 3rd byte information of the data to be transmitted under operating mode.",
    -                    "offset": 0,
    -                    "size": 8,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DATA_4": {
    -              "description": "Data register 4",
    -              "offset": 80,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_BYTE_4": {
    -                    "description": "In reset mode, it is acceptance mask register 0 with R/W Permission. In operation mode, it stores the 4th byte information of the data to be transmitted under operating mode.",
    -                    "offset": 0,
    -                    "size": 8,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DATA_5": {
    -              "description": "Data register 5",
    -              "offset": 84,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_BYTE_5": {
    -                    "description": "In reset mode, it is acceptance mask register 1 with R/W Permission. In operation mode, it stores the 5th byte information of the data to be transmitted under operating mode.",
    -                    "offset": 0,
    -                    "size": 8,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DATA_6": {
    -              "description": "Data register 6",
    -              "offset": 88,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_BYTE_6": {
    -                    "description": "In reset mode, it is acceptance mask register 2 with R/W Permission. In operation mode, it stores the 6th byte information of the data to be transmitted under operating mode.",
    -                    "offset": 0,
    -                    "size": 8,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DATA_7": {
    -              "description": "Data register 7",
    -              "offset": 92,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_BYTE_7": {
    -                    "description": "In reset mode, it is acceptance mask register 3 with R/W Permission. In operation mode, it stores the 7th byte information of the data to be transmitted under operating mode.",
    -                    "offset": 0,
    -                    "size": 8,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DATA_8": {
    -              "description": "Data register 8",
    -              "offset": 96,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_BYTE_8": {
    -                    "description": "Stored the 8th byte information of the data to be transmitted under operating mode.",
    -                    "offset": 0,
    -                    "size": 8,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DATA_9": {
    -              "description": "Data register 9",
    -              "offset": 100,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_BYTE_9": {
    -                    "description": "Stored the 9th byte information of the data to be transmitted under operating mode.",
    -                    "offset": 0,
    -                    "size": 8,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DATA_10": {
    -              "description": "Data register 10",
    -              "offset": 104,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_BYTE_10": {
    -                    "description": "Stored the 10th byte information of the data to be transmitted under operating mode.",
    -                    "offset": 0,
    -                    "size": 8,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DATA_11": {
    -              "description": "Data register 11",
    -              "offset": 108,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_BYTE_11": {
    -                    "description": "Stored the 11th byte information of the data to be transmitted under operating mode.",
    -                    "offset": 0,
    -                    "size": 8,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "DATA_12": {
    -              "description": "Data register 12",
    -              "offset": 112,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_BYTE_12": {
    -                    "description": "Stored the 12th byte information of the data to be transmitted under operating mode.",
    -                    "offset": 0,
    -                    "size": 8,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RX_MESSAGE_CNT": {
    -              "description": "Receive Message Counter Register",
    -              "offset": 116,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_MESSAGE_COUNTER": {
    -                    "description": "This register reflects the number of messages available within the RX FIFO.",
    -                    "offset": 0,
    -                    "size": 7,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CLOCK_DIVIDER": {
    -              "description": "Clock Divider register",
    -              "offset": 124,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CD": {
    -                    "description": "These bits are used to configure frequency dividing coefficients of the external CLKOUT pin.",
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "CLOCK_OFF": {
    -                    "description": "This bit can be configured under reset mode. 1: Disable the external CLKOUT pin; 0: Enable the external CLKOUT pin",
    -                    "offset": 8,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "UART0": {
    -        "description": "UART (Universal Asynchronous Receiver-Transmitter) Controller",
    -        "children": {
    -          "registers": {
    -            "FIFO": {
    -              "description": "FIFO data register",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RXFIFO_RD_BYTE": {
    -                    "description": "UART 0 accesses FIFO via this register.",
    -                    "offset": 0,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "INT_RAW": {
    -              "description": "Raw interrupt status",
    -              "offset": 4,
    -              "size": 32,
    -              "reset_value": 2,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RXFIFO_FULL_INT_RAW": {
    -                    "description": "This interrupt raw bit turns to high level when receiver receives more data than what rxfifo_full_thrhd specifies.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TXFIFO_EMPTY_INT_RAW": {
    -                    "description": "This interrupt raw bit turns to high level when the amount of data in Tx-FIFO is less than what txfifo_empty_thrhd specifies .",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "PARITY_ERR_INT_RAW": {
    -                    "description": "This interrupt raw bit turns to high level when receiver detects a parity error in the data.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "FRM_ERR_INT_RAW": {
    -                    "description": "This interrupt raw bit turns to high level when receiver detects a data frame error .",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RXFIFO_OVF_INT_RAW": {
    -                    "description": "This interrupt raw bit turns to high level when receiver receives more data than the FIFO can store.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DSR_CHG_INT_RAW": {
    -                    "description": "This interrupt raw bit turns to high level when receiver detects the edge change of DSRn signal.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CTS_CHG_INT_RAW": {
    -                    "description": "This interrupt raw bit turns to high level when receiver detects the edge change of CTSn signal.",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "BRK_DET_INT_RAW": {
    -                    "description": "This interrupt raw bit turns to high level when receiver detects a 0 after the stop bit.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RXFIFO_TOUT_INT_RAW": {
    -                    "description": "This interrupt raw bit turns to high level when receiver takes more time than rx_tout_thrhd to receive a byte.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SW_XON_INT_RAW": {
    -                    "description": "This interrupt raw bit turns to high level when receiver recevies Xon char when uart_sw_flow_con_en is set to 1.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SW_XOFF_INT_RAW": {
    -                    "description": "This interrupt raw bit turns to high level when receiver receives Xoff char when uart_sw_flow_con_en is set to 1.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "GLITCH_DET_INT_RAW": {
    -                    "description": "This interrupt raw bit turns to high level when receiver detects a glitch in the middle of a start bit.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TX_BRK_DONE_INT_RAW": {
    -                    "description": "This interrupt raw bit turns to high level when transmitter completes  sending  NULL characters, after all data in Tx-FIFO are sent.",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TX_BRK_IDLE_DONE_INT_RAW": {
    -                    "description": "This interrupt raw bit turns to high level when transmitter has kept the shortest duration after sending the  last data.",
    -                    "offset": 13,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TX_DONE_INT_RAW": {
    -                    "description": "This interrupt raw bit turns to high level when transmitter has send out all data in FIFO.",
    -                    "offset": 14,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RS485_PARITY_ERR_INT_RAW": {
    -                    "description": "This interrupt raw bit turns to high level when receiver detects a parity error from the echo of transmitter in rs485 mode.",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RS485_FRM_ERR_INT_RAW": {
    -                    "description": "This interrupt raw bit turns to high level when receiver detects a data frame error from the echo of transmitter in rs485 mode.",
    -                    "offset": 16,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RS485_CLASH_INT_RAW": {
    -                    "description": "This interrupt raw bit turns to high level when detects a clash between transmitter and receiver in rs485 mode.",
    -                    "offset": 17,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "AT_CMD_CHAR_DET_INT_RAW": {
    -                    "description": "This interrupt raw bit turns to high level when receiver detects the configured at_cmd char.",
    -                    "offset": 18,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "WAKEUP_INT_RAW": {
    -                    "description": "This interrupt raw bit turns to high level when input rxd edge changes more times than what reg_active_threshold specifies in light sleeping mode.",
    -                    "offset": 19,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ST": {
    -              "description": "Masked interrupt status",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RXFIFO_FULL_INT_ST": {
    -                    "description": "This is the status bit for rxfifo_full_int_raw when rxfifo_full_int_ena is set to 1.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TXFIFO_EMPTY_INT_ST": {
    -                    "description": "This is the status bit for  txfifo_empty_int_raw  when txfifo_empty_int_ena is set to 1.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "PARITY_ERR_INT_ST": {
    -                    "description": "This is the status bit for parity_err_int_raw when parity_err_int_ena is set to 1.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "FRM_ERR_INT_ST": {
    -                    "description": "This is the status bit for frm_err_int_raw when frm_err_int_ena is set to 1.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RXFIFO_OVF_INT_ST": {
    -                    "description": "This is the status bit for rxfifo_ovf_int_raw when rxfifo_ovf_int_ena is set to 1.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "DSR_CHG_INT_ST": {
    -                    "description": "This is the status bit for dsr_chg_int_raw when dsr_chg_int_ena is set to 1.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CTS_CHG_INT_ST": {
    -                    "description": "This is the status bit for cts_chg_int_raw when cts_chg_int_ena is set to 1.",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "BRK_DET_INT_ST": {
    -                    "description": "This is the status bit for brk_det_int_raw when brk_det_int_ena is set to 1.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RXFIFO_TOUT_INT_ST": {
    -                    "description": "This is the status bit for rxfifo_tout_int_raw when rxfifo_tout_int_ena is set to 1.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SW_XON_INT_ST": {
    -                    "description": "This is the status bit for sw_xon_int_raw when sw_xon_int_ena is set to 1.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SW_XOFF_INT_ST": {
    -                    "description": "This is the status bit for sw_xoff_int_raw when sw_xoff_int_ena is set to 1.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "GLITCH_DET_INT_ST": {
    -                    "description": "This is the status bit for glitch_det_int_raw when glitch_det_int_ena is set to 1.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TX_BRK_DONE_INT_ST": {
    -                    "description": "This is the status bit for tx_brk_done_int_raw when tx_brk_done_int_ena is set to 1.",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TX_BRK_IDLE_DONE_INT_ST": {
    -                    "description": "This is the stauts bit for tx_brk_idle_done_int_raw when tx_brk_idle_done_int_ena is set to 1.",
    -                    "offset": 13,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TX_DONE_INT_ST": {
    -                    "description": "This is the status bit for tx_done_int_raw when tx_done_int_ena is set to 1.",
    -                    "offset": 14,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RS485_PARITY_ERR_INT_ST": {
    -                    "description": "This is the status bit for rs485_parity_err_int_raw when rs485_parity_int_ena is set to 1.",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RS485_FRM_ERR_INT_ST": {
    -                    "description": "This is the status bit for rs485_frm_err_int_raw when rs485_fm_err_int_ena is set to 1.",
    -                    "offset": 16,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RS485_CLASH_INT_ST": {
    -                    "description": "This is the status bit for rs485_clash_int_raw when rs485_clash_int_ena is set to 1.",
    -                    "offset": 17,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "AT_CMD_CHAR_DET_INT_ST": {
    -                    "description": "This is the status bit for at_cmd_det_int_raw when at_cmd_char_det_int_ena is set to 1.",
    -                    "offset": 18,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "WAKEUP_INT_ST": {
    -                    "description": "This is the status bit for uart_wakeup_int_raw when uart_wakeup_int_ena is set to 1.",
    -                    "offset": 19,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ENA": {
    -              "description": "Interrupt enable bits",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RXFIFO_FULL_INT_ENA": {
    -                    "description": "This is the enable bit for rxfifo_full_int_st register.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "TXFIFO_EMPTY_INT_ENA": {
    -                    "description": "This is the enable bit for txfifo_empty_int_st register.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "PARITY_ERR_INT_ENA": {
    -                    "description": "This is the enable bit for parity_err_int_st register.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "FRM_ERR_INT_ENA": {
    -                    "description": "This is the enable bit for frm_err_int_st register.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "RXFIFO_OVF_INT_ENA": {
    -                    "description": "This is the enable bit for rxfifo_ovf_int_st register.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "DSR_CHG_INT_ENA": {
    -                    "description": "This is the enable bit for dsr_chg_int_st register.",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "CTS_CHG_INT_ENA": {
    -                    "description": "This is the enable bit for cts_chg_int_st register.",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "BRK_DET_INT_ENA": {
    -                    "description": "This is the enable bit for brk_det_int_st register.",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "RXFIFO_TOUT_INT_ENA": {
    -                    "description": "This is the enable bit for rxfifo_tout_int_st register.",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "SW_XON_INT_ENA": {
    -                    "description": "This is the enable bit for sw_xon_int_st register.",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "SW_XOFF_INT_ENA": {
    -                    "description": "This is the enable bit for sw_xoff_int_st register.",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "GLITCH_DET_INT_ENA": {
    -                    "description": "This is the enable bit for glitch_det_int_st register.",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "TX_BRK_DONE_INT_ENA": {
    -                    "description": "This is the enable bit for tx_brk_done_int_st register.",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "TX_BRK_IDLE_DONE_INT_ENA": {
    -                    "description": "This is the enable bit for tx_brk_idle_done_int_st register.",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "TX_DONE_INT_ENA": {
    -                    "description": "This is the enable bit for tx_done_int_st register.",
    -                    "offset": 14,
    -                    "size": 1
    -                  },
    -                  "RS485_PARITY_ERR_INT_ENA": {
    -                    "description": "This is the enable bit for rs485_parity_err_int_st register.",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "RS485_FRM_ERR_INT_ENA": {
    -                    "description": "This is the enable bit for rs485_parity_err_int_st register.",
    -                    "offset": 16,
    -                    "size": 1
    -                  },
    -                  "RS485_CLASH_INT_ENA": {
    -                    "description": "This is the enable bit for rs485_clash_int_st register.",
    -                    "offset": 17,
    -                    "size": 1
    -                  },
    -                  "AT_CMD_CHAR_DET_INT_ENA": {
    -                    "description": "This is the enable bit for at_cmd_char_det_int_st register.",
    -                    "offset": 18,
    -                    "size": 1
    -                  },
    -                  "WAKEUP_INT_ENA": {
    -                    "description": "This is the enable bit for uart_wakeup_int_st register.",
    -                    "offset": 19,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INT_CLR": {
    -              "description": "Interrupt clear bits",
    -              "offset": 16,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RXFIFO_FULL_INT_CLR": {
    -                    "description": "Set this bit to clear the rxfifo_full_int_raw interrupt.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "TXFIFO_EMPTY_INT_CLR": {
    -                    "description": "Set this bit to clear txfifo_empty_int_raw interrupt.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "PARITY_ERR_INT_CLR": {
    -                    "description": "Set this bit to clear parity_err_int_raw interrupt.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "FRM_ERR_INT_CLR": {
    -                    "description": "Set this bit to clear frm_err_int_raw interrupt.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RXFIFO_OVF_INT_CLR": {
    -                    "description": "Set this bit to clear rxfifo_ovf_int_raw interrupt.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "DSR_CHG_INT_CLR": {
    -                    "description": "Set this bit to clear the dsr_chg_int_raw interrupt.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "CTS_CHG_INT_CLR": {
    -                    "description": "Set this bit to clear the cts_chg_int_raw interrupt.",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "BRK_DET_INT_CLR": {
    -                    "description": "Set this bit to clear the brk_det_int_raw interrupt.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RXFIFO_TOUT_INT_CLR": {
    -                    "description": "Set this bit to clear the rxfifo_tout_int_raw interrupt.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SW_XON_INT_CLR": {
    -                    "description": "Set this bit to clear the sw_xon_int_raw interrupt.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SW_XOFF_INT_CLR": {
    -                    "description": "Set this bit to clear the sw_xoff_int_raw interrupt.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "GLITCH_DET_INT_CLR": {
    -                    "description": "Set this bit to clear the glitch_det_int_raw interrupt.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "TX_BRK_DONE_INT_CLR": {
    -                    "description": "Set this bit to clear the tx_brk_done_int_raw interrupt..",
    -                    "offset": 12,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "TX_BRK_IDLE_DONE_INT_CLR": {
    -                    "description": "Set this bit to clear the tx_brk_idle_done_int_raw interrupt.",
    -                    "offset": 13,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "TX_DONE_INT_CLR": {
    -                    "description": "Set this bit to clear the tx_done_int_raw interrupt.",
    -                    "offset": 14,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RS485_PARITY_ERR_INT_CLR": {
    -                    "description": "Set this bit to clear the rs485_parity_err_int_raw interrupt.",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RS485_FRM_ERR_INT_CLR": {
    -                    "description": "Set this bit to clear the rs485_frm_err_int_raw interrupt.",
    -                    "offset": 16,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RS485_CLASH_INT_CLR": {
    -                    "description": "Set this bit to clear the rs485_clash_int_raw interrupt.",
    -                    "offset": 17,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "AT_CMD_CHAR_DET_INT_CLR": {
    -                    "description": "Set this bit to clear the at_cmd_char_det_int_raw interrupt.",
    -                    "offset": 18,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "WAKEUP_INT_CLR": {
    -                    "description": "Set this bit to clear the uart_wakeup_int_raw interrupt.",
    -                    "offset": 19,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CLKDIV": {
    -              "description": "Clock divider configuration",
    -              "offset": 20,
    -              "size": 32,
    -              "reset_value": 694,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CLKDIV": {
    -                    "description": "The integral part of the frequency divider factor.",
    -                    "offset": 0,
    -                    "size": 12
    -                  },
    -                  "FRAG": {
    -                    "description": "The decimal part of the frequency divider factor.",
    -                    "offset": 20,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "RX_FILT": {
    -              "description": "Rx Filter configuration",
    -              "offset": 24,
    -              "size": 32,
    -              "reset_value": 8,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "GLITCH_FILT": {
    -                    "description": "when input pulse width is lower than this value, the pulse is ignored.",
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "GLITCH_FILT_EN": {
    -                    "description": "Set this bit to enable Rx signal filter.",
    -                    "offset": 8,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "STATUS": {
    -              "description": "UART status register",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 3758145536,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RXFIFO_CNT": {
    -                    "description": "Stores the byte number of valid data in Rx-FIFO.",
    -                    "offset": 0,
    -                    "size": 10,
    -                    "access": "read-only"
    -                  },
    -                  "DSRN": {
    -                    "description": "The register represent the level value of the internal uart dsr signal.",
    -                    "offset": 13,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CTSN": {
    -                    "description": "This register represent the level value of the internal uart cts signal.",
    -                    "offset": 14,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RXD": {
    -                    "description": "This register represent the  level value of the internal uart rxd signal.",
    -                    "offset": 15,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TXFIFO_CNT": {
    -                    "description": "Stores the byte number of data in Tx-FIFO.",
    -                    "offset": 16,
    -                    "size": 10,
    -                    "access": "read-only"
    -                  },
    -                  "DTRN": {
    -                    "description": "This bit represents the level of the internal uart dtr signal.",
    -                    "offset": 29,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RTSN": {
    -                    "description": "This bit represents the level of the internal uart rts signal.",
    -                    "offset": 30,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TXD": {
    -                    "description": "This bit represents the  level of the internal uart txd signal.",
    -                    "offset": 31,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CONF0": {
    -              "description": "a",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 268435484,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PARITY": {
    -                    "description": "This register is used to configure the parity check mode.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "PARITY_EN": {
    -                    "description": "Set this bit to enable uart parity check.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "BIT_NUM": {
    -                    "description": "This register is used to set the length of data.",
    -                    "offset": 2,
    -                    "size": 2
    -                  },
    -                  "STOP_BIT_NUM": {
    -                    "description": "This register is used to set the length of  stop bit.",
    -                    "offset": 4,
    -                    "size": 2
    -                  },
    -                  "SW_RTS": {
    -                    "description": "This register is used to configure the software rts signal which is used in software flow control.",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "SW_DTR": {
    -                    "description": "This register is used to configure the software dtr signal which is used in software flow control.",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "TXD_BRK": {
    -                    "description": "Set this bit to enbale transmitter to  send NULL when the process of sending data is done.",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "IRDA_DPLX": {
    -                    "description": "Set this bit to enable IrDA loopback mode.",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "IRDA_TX_EN": {
    -                    "description": "This is the start enable bit for IrDA transmitter.",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "IRDA_WCTL": {
    -                    "description": "1'h1: The IrDA transmitter's 11th bit is the same as 10th bit. 1'h0: Set IrDA transmitter's 11th bit to 0.",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "IRDA_TX_INV": {
    -                    "description": "Set this bit to invert the level of  IrDA transmitter.",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "IRDA_RX_INV": {
    -                    "description": "Set this bit to invert the level of IrDA receiver.",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "LOOPBACK": {
    -                    "description": "Set this bit to enable uart loopback test mode.",
    -                    "offset": 14,
    -                    "size": 1
    -                  },
    -                  "TX_FLOW_EN": {
    -                    "description": "Set this bit to enable flow control function for transmitter.",
    -                    "offset": 15,
    -                    "size": 1
    -                  },
    -                  "IRDA_EN": {
    -                    "description": "Set this bit to enable IrDA protocol.",
    -                    "offset": 16,
    -                    "size": 1
    -                  },
    -                  "RXFIFO_RST": {
    -                    "description": "Set this bit to reset the uart receive-FIFO.",
    -                    "offset": 17,
    -                    "size": 1
    -                  },
    -                  "TXFIFO_RST": {
    -                    "description": "Set this bit to reset the uart transmit-FIFO.",
    -                    "offset": 18,
    -                    "size": 1
    -                  },
    -                  "RXD_INV": {
    -                    "description": "Set this bit to inverse the level value of uart rxd signal.",
    -                    "offset": 19,
    -                    "size": 1
    -                  },
    -                  "CTS_INV": {
    -                    "description": "Set this bit to inverse the level value of uart cts signal.",
    -                    "offset": 20,
    -                    "size": 1
    -                  },
    -                  "DSR_INV": {
    -                    "description": "Set this bit to inverse the level value of uart dsr signal.",
    -                    "offset": 21,
    -                    "size": 1
    -                  },
    -                  "TXD_INV": {
    -                    "description": "Set this bit to inverse the level value of uart txd signal.",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "RTS_INV": {
    -                    "description": "Set this bit to inverse the level value of uart rts signal.",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "DTR_INV": {
    -                    "description": "Set this bit to inverse the level value of uart dtr signal.",
    -                    "offset": 24,
    -                    "size": 1
    -                  },
    -                  "CLK_EN": {
    -                    "description": "1'h1: Force clock on for register. 1'h0: Support clock only when application writes registers.",
    -                    "offset": 25,
    -                    "size": 1
    -                  },
    -                  "ERR_WR_MASK": {
    -                    "description": "1'h1: Receiver stops storing data into FIFO when data is wrong. 1'h0: Receiver stores the data even if the  received data is wrong.",
    -                    "offset": 26,
    -                    "size": 1
    -                  },
    -                  "AUTOBAUD_EN": {
    -                    "description": "This is the enable bit for detecting baudrate.",
    -                    "offset": 27,
    -                    "size": 1
    -                  },
    -                  "MEM_CLK_EN": {
    -                    "description": "UART memory clock gate enable signal.",
    -                    "offset": 28,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "CONF1": {
    -              "description": "Configuration register 1",
    -              "offset": 36,
    -              "size": 32,
    -              "reset_value": 49248,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RXFIFO_FULL_THRHD": {
    -                    "description": "It will produce rxfifo_full_int interrupt when receiver receives more data than this register value.",
    -                    "offset": 0,
    -                    "size": 9
    -                  },
    -                  "TXFIFO_EMPTY_THRHD": {
    -                    "description": "It will produce txfifo_empty_int interrupt when the data amount in Tx-FIFO is less than this register value.",
    -                    "offset": 9,
    -                    "size": 9
    -                  },
    -                  "DIS_RX_DAT_OVF": {
    -                    "description": "Disable UART Rx data overflow detect.",
    -                    "offset": 18,
    -                    "size": 1
    -                  },
    -                  "RX_TOUT_FLOW_DIS": {
    -                    "description": "Set this bit to stop accumulating idle_cnt when hardware flow control works.",
    -                    "offset": 19,
    -                    "size": 1
    -                  },
    -                  "RX_FLOW_EN": {
    -                    "description": "This is the flow enable bit for UART receiver.",
    -                    "offset": 20,
    -                    "size": 1
    -                  },
    -                  "RX_TOUT_EN": {
    -                    "description": "This is the enble bit for uart receiver's timeout function.",
    -                    "offset": 21,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "LOWPULSE": {
    -              "description": "Autobaud minimum low pulse duration register",
    -              "offset": 40,
    -              "size": 32,
    -              "reset_value": 4095,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "MIN_CNT": {
    -                    "description": "This register stores the value of the minimum duration time of the low level pulse. It is used in baud rate-detect process.",
    -                    "offset": 0,
    -                    "size": 12,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "HIGHPULSE": {
    -              "description": "Autobaud minimum high pulse duration register",
    -              "offset": 44,
    -              "size": 32,
    -              "reset_value": 4095,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "MIN_CNT": {
    -                    "description": "This register stores  the value of the maxinum duration time for the high level pulse. It is used in baud rate-detect process.",
    -                    "offset": 0,
    -                    "size": 12,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RXD_CNT": {
    -              "description": "Autobaud edge change count register",
    -              "offset": 48,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RXD_EDGE_CNT": {
    -                    "description": "This register stores the count of rxd edge change. It is used in baud rate-detect process.",
    -                    "offset": 0,
    -                    "size": 10,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "FLOW_CONF": {
    -              "description": "Software flow-control configuration",
    -              "offset": 52,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SW_FLOW_CON_EN": {
    -                    "description": "Set this bit to enable software flow control. It is used with register sw_xon or sw_xoff.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "XONOFF_DEL": {
    -                    "description": "Set this bit to remove flow control char from the received data.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "FORCE_XON": {
    -                    "description": "Set this bit to enable the transmitter to go on sending data.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "FORCE_XOFF": {
    -                    "description": "Set this bit to stop the  transmitter from sending data.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "SEND_XON": {
    -                    "description": "Set this bit to send Xon char. It is cleared by hardware automatically.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "SEND_XOFF": {
    -                    "description": "Set this bit to send Xoff char. It is cleared by hardware automatically.",
    -                    "offset": 5,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "SLEEP_CONF": {
    -              "description": "Sleep-mode configuration",
    -              "offset": 56,
    -              "size": 32,
    -              "reset_value": 240,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ACTIVE_THRESHOLD": {
    -                    "description": "The uart is activated from light sleeping mode when the input rxd edge changes more times than this register value.",
    -                    "offset": 0,
    -                    "size": 10
    -                  }
    -                }
    -              }
    -            },
    -            "SWFC_CONF0": {
    -              "description": "Software flow-control character configuration",
    -              "offset": 60,
    -              "size": 32,
    -              "reset_value": 9952,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "XOFF_THRESHOLD": {
    -                    "description": "When the data amount in Rx-FIFO is more than this register value with uart_sw_flow_con_en set to 1, it will send a Xoff char.",
    -                    "offset": 0,
    -                    "size": 9
    -                  },
    -                  "XOFF_CHAR": {
    -                    "description": "This register stores the Xoff flow control char.",
    -                    "offset": 9,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "SWFC_CONF1": {
    -              "description": "Software flow-control character configuration",
    -              "offset": 64,
    -              "size": 32,
    -              "reset_value": 8704,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "XON_THRESHOLD": {
    -                    "description": "When the data amount in Rx-FIFO is less than this register value with uart_sw_flow_con_en set to 1, it will send a Xon char.",
    -                    "offset": 0,
    -                    "size": 9
    -                  },
    -                  "XON_CHAR": {
    -                    "description": "This register stores the Xon flow control char.",
    -                    "offset": 9,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "TXBRK_CONF": {
    -              "description": "Tx Break character configuration",
    -              "offset": 68,
    -              "size": 32,
    -              "reset_value": 10,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_BRK_NUM": {
    -                    "description": "This register is used to configure the number of 0 to be sent after the process of sending data is done. It is active when txd_brk is set to 1.",
    -                    "offset": 0,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "IDLE_CONF": {
    -              "description": "Frame-end idle configuration",
    -              "offset": 72,
    -              "size": 32,
    -              "reset_value": 262400,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_IDLE_THRHD": {
    -                    "description": "It will produce frame end signal when receiver takes more time to receive one byte data than this register value.",
    -                    "offset": 0,
    -                    "size": 10
    -                  },
    -                  "TX_IDLE_NUM": {
    -                    "description": "This register is used to configure the duration time between transfers.",
    -                    "offset": 10,
    -                    "size": 10
    -                  }
    -                }
    -              }
    -            },
    -            "RS485_CONF": {
    -              "description": "RS485 mode configuration",
    -              "offset": 76,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RS485_EN": {
    -                    "description": "Set this bit to choose the rs485 mode.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "DL0_EN": {
    -                    "description": "Set this bit to delay the stop bit by 1 bit.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "DL1_EN": {
    -                    "description": "Set this bit to delay the stop bit by 1 bit.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "RS485TX_RX_EN": {
    -                    "description": "Set this bit to enable receiver could receive data when the transmitter is transmitting data in rs485 mode.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "RS485RXBY_TX_EN": {
    -                    "description": "1'h1: enable rs485 transmitter to send data when rs485 receiver line is busy.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "RS485_RX_DLY_NUM": {
    -                    "description": "This register is used to delay the receiver's internal data signal.",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "RS485_TX_DLY_NUM": {
    -                    "description": "This register is used to delay the transmitter's internal data signal.",
    -                    "offset": 6,
    -                    "size": 4
    -                  }
    -                }
    -              }
    -            },
    -            "AT_CMD_PRECNT": {
    -              "description": "Pre-sequence timing configuration",
    -              "offset": 80,
    -              "size": 32,
    -              "reset_value": 2305,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PRE_IDLE_NUM": {
    -                    "description": "This register is used to configure the idle duration time before the first at_cmd is received by receiver.",
    -                    "offset": 0,
    -                    "size": 16
    -                  }
    -                }
    -              }
    -            },
    -            "AT_CMD_POSTCNT": {
    -              "description": "Post-sequence timing configuration",
    -              "offset": 84,
    -              "size": 32,
    -              "reset_value": 2305,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "POST_IDLE_NUM": {
    -                    "description": "This register is used to configure the duration time between the last at_cmd and the next data.",
    -                    "offset": 0,
    -                    "size": 16
    -                  }
    -                }
    -              }
    -            },
    -            "AT_CMD_GAPTOUT": {
    -              "description": "Timeout configuration",
    -              "offset": 88,
    -              "size": 32,
    -              "reset_value": 11,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_GAP_TOUT": {
    -                    "description": "This register is used to configure the duration time between the at_cmd chars.",
    -                    "offset": 0,
    -                    "size": 16
    -                  }
    -                }
    -              }
    -            },
    -            "AT_CMD_CHAR": {
    -              "description": "AT escape sequence detection configuration",
    -              "offset": 92,
    -              "size": 32,
    -              "reset_value": 811,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "AT_CMD_CHAR": {
    -                    "description": "This register is used to configure the content of at_cmd char.",
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "CHAR_NUM": {
    -                    "description": "This register is used to configure the num of continuous at_cmd chars received by receiver.",
    -                    "offset": 8,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "MEM_CONF": {
    -              "description": "UART threshold and allocation configuration",
    -              "offset": 96,
    -              "size": 32,
    -              "reset_value": 655378,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_SIZE": {
    -                    "description": "This register is used to configure the amount of mem allocated for receive-FIFO. The default number is 128 bytes.",
    -                    "offset": 1,
    -                    "size": 3
    -                  },
    -                  "TX_SIZE": {
    -                    "description": "This register is used to configure the amount of mem allocated for transmit-FIFO. The default number is 128 bytes.",
    -                    "offset": 4,
    -                    "size": 3
    -                  },
    -                  "RX_FLOW_THRHD": {
    -                    "description": "This register is used to configure the maximum amount of data that can be received  when hardware flow control works.",
    -                    "offset": 7,
    -                    "size": 9
    -                  },
    -                  "RX_TOUT_THRHD": {
    -                    "description": "This register is used to configure the threshold time that receiver takes to receive one byte. The rxfifo_tout_int interrupt will be trigger when the receiver takes more time to receive one byte with rx_tout_en set to 1.",
    -                    "offset": 16,
    -                    "size": 10
    -                  },
    -                  "MEM_FORCE_PD": {
    -                    "description": "Set this bit to force power down UART memory.",
    -                    "offset": 26,
    -                    "size": 1
    -                  },
    -                  "MEM_FORCE_PU": {
    -                    "description": "Set this bit to force power up UART memory.",
    -                    "offset": 27,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "MEM_TX_STATUS": {
    -              "description": "Tx-FIFO write and read offset address.",
    -              "offset": 100,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "APB_TX_WADDR": {
    -                    "description": "This register stores the offset address in Tx-FIFO when software writes Tx-FIFO via APB.",
    -                    "offset": 0,
    -                    "size": 10,
    -                    "access": "read-only"
    -                  },
    -                  "TX_RADDR": {
    -                    "description": "This register stores the offset address in Tx-FIFO when Tx-FSM reads data via Tx-FIFO_Ctrl.",
    -                    "offset": 11,
    -                    "size": 10,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "MEM_RX_STATUS": {
    -              "description": "Rx-FIFO write and read offset address.",
    -              "offset": 104,
    -              "size": 32,
    -              "reset_value": 524544,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "APB_RX_RADDR": {
    -                    "description": "This register stores the offset address in RX-FIFO when software reads data from Rx-FIFO via APB. UART0 is 10'h100. UART1 is 10'h180.",
    -                    "offset": 0,
    -                    "size": 10,
    -                    "access": "read-only"
    -                  },
    -                  "RX_WADDR": {
    -                    "description": "This register stores the offset address in Rx-FIFO when Rx-FIFO_Ctrl writes Rx-FIFO. UART0 is 10'h100. UART1 is 10'h180.",
    -                    "offset": 11,
    -                    "size": 10,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "FSM_STATUS": {
    -              "description": "UART transmit and receive status.",
    -              "offset": 108,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ST_URX_OUT": {
    -                    "description": "This is the status register of receiver.",
    -                    "offset": 0,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  },
    -                  "ST_UTX_OUT": {
    -                    "description": "This is the status register of transmitter.",
    -                    "offset": 4,
    -                    "size": 4,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "POSPULSE": {
    -              "description": "Autobaud high pulse register",
    -              "offset": 112,
    -              "size": 32,
    -              "reset_value": 4095,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "POSEDGE_MIN_CNT": {
    -                    "description": "This register stores the minimal input clock count between two positive edges. It is used in boudrate-detect process.",
    -                    "offset": 0,
    -                    "size": 12,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "NEGPULSE": {
    -              "description": "Autobaud low pulse register",
    -              "offset": 116,
    -              "size": 32,
    -              "reset_value": 4095,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "NEGEDGE_MIN_CNT": {
    -                    "description": "This register stores the minimal input clock count between two negative edges. It is used in boudrate-detect process.",
    -                    "offset": 0,
    -                    "size": 12,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CLK_CONF": {
    -              "description": "UART core clock configuration",
    -              "offset": 120,
    -              "size": 32,
    -              "reset_value": 57675776,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SCLK_DIV_B": {
    -                    "description": "The  denominator of the frequency divider factor.",
    -                    "offset": 0,
    -                    "size": 6
    -                  },
    -                  "SCLK_DIV_A": {
    -                    "description": "The numerator of the frequency divider factor.",
    -                    "offset": 6,
    -                    "size": 6
    -                  },
    -                  "SCLK_DIV_NUM": {
    -                    "description": "The integral part of the frequency divider factor.",
    -                    "offset": 12,
    -                    "size": 8
    -                  },
    -                  "SCLK_SEL": {
    -                    "description": "UART clock source select. 1: 80Mhz, 2: 8Mhz, 3: XTAL.",
    -                    "offset": 20,
    -                    "size": 2
    -                  },
    -                  "SCLK_EN": {
    -                    "description": "Set this bit to enable UART Tx/Rx clock.",
    -                    "offset": 22,
    -                    "size": 1
    -                  },
    -                  "RST_CORE": {
    -                    "description": "Write 1 then write 0 to this bit, reset UART Tx/Rx.",
    -                    "offset": 23,
    -                    "size": 1
    -                  },
    -                  "TX_SCLK_EN": {
    -                    "description": "Set this bit to enable UART Tx clock.",
    -                    "offset": 24,
    -                    "size": 1
    -                  },
    -                  "RX_SCLK_EN": {
    -                    "description": "Set this bit to enable UART Rx clock.",
    -                    "offset": 25,
    -                    "size": 1
    -                  },
    -                  "TX_RST_CORE": {
    -                    "description": "Write 1 then write 0 to this bit, reset UART Tx.",
    -                    "offset": 26,
    -                    "size": 1
    -                  },
    -                  "RX_RST_CORE": {
    -                    "description": "Write 1 then write 0 to this bit, reset UART Rx.",
    -                    "offset": 27,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DATE": {
    -              "description": "UART Version register",
    -              "offset": 124,
    -              "size": 32,
    -              "reset_value": 33587824,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATE": {
    -                    "description": "This is the version register.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "ID": {
    -              "description": "UART ID register",
    -              "offset": 128,
    -              "size": 32,
    -              "reset_value": 1073743104,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ID": {
    -                    "description": "This register is used to configure the uart_id.",
    -                    "offset": 0,
    -                    "size": 30
    -                  },
    -                  "HIGH_SPEED": {
    -                    "description": "This bit used to select synchronize mode. 1: Registers are auto synchronized into UART Core clock and UART core should be keep the same with APB clock. 0: After configure registers, software needs to write 1 to UART_REG_UPDATE to synchronize registers.",
    -                    "offset": 30,
    -                    "size": 1
    -                  },
    -                  "REG_UPDATE": {
    -                    "description": "Software write 1 would synchronize registers into UART Core clock domain and would be cleared by hardware after synchronization is done.",
    -                    "offset": 31,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "USB_DEVICE": {
    -        "description": "Full-speed USB Serial/JTAG Controller",
    -        "children": {
    -          "registers": {
    -            "EP1": {
    -              "description": "USB_DEVICE_EP1_REG.",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RDWR_BYTE": {
    -                    "description": "Write and read byte data to/from UART Tx/Rx FIFO through this field. When USB_DEVICE_SERIAL_IN_EMPTY_INT is set, then user can write data (up to 64 bytes) into UART Tx FIFO. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is set, user can check USB_DEVICE_OUT_EP1_WR_ADDR USB_DEVICE_OUT_EP0_RD_ADDR to know how many data is received, then read data from UART Rx FIFO.",
    -                    "offset": 0,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "EP1_CONF": {
    -              "description": "USB_DEVICE_EP1_CONF_REG.",
    -              "offset": 4,
    -              "size": 32,
    -              "reset_value": 2,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "WR_DONE": {
    -                    "description": "Set this bit to indicate writing byte data to UART Tx FIFO is done.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SERIAL_IN_EP_DATA_FREE": {
    -                    "description": "1'b1: Indicate UART Tx FIFO is not full and can write data into in. After writing USB_DEVICE_WR_DONE, this bit would be 0 until data in UART Tx FIFO is read by USB Host.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SERIAL_OUT_EP_DATA_AVAIL": {
    -                    "description": "1'b1: Indicate there is data in UART Rx FIFO.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_RAW": {
    -              "description": "USB_DEVICE_INT_RAW_REG.",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 8,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "JTAG_IN_FLUSH_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when flush cmd is received for IN endpoint 2 of JTAG.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SOF_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when SOF frame is received.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SERIAL_OUT_RECV_PKT_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when Serial Port OUT Endpoint received one packet.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SERIAL_IN_EMPTY_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when Serial Port IN Endpoint is empty.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "PID_ERR_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when pid error is detected.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CRC5_ERR_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when CRC5 error is detected.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CRC16_ERR_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when CRC16 error is detected.",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "STUFF_ERR_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when stuff error is detected.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_TOKEN_REC_IN_EP1_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when IN token for IN endpoint 1 is received.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "USB_BUS_RESET_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when usb bus reset is detected.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_EP1_ZERO_PAYLOAD_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when OUT endpoint 1 received packet with zero palyload.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_EP2_ZERO_PAYLOAD_INT_RAW": {
    -                    "description": "The raw interrupt bit turns to high level when OUT endpoint 2 received packet with zero palyload.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ST": {
    -              "description": "USB_DEVICE_INT_ST_REG.",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "JTAG_IN_FLUSH_INT_ST": {
    -                    "description": "The raw interrupt status bit for the USB_DEVICE_JTAG_IN_FLUSH_INT interrupt.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SOF_INT_ST": {
    -                    "description": "The raw interrupt status bit for the USB_DEVICE_SOF_INT interrupt.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SERIAL_OUT_RECV_PKT_INT_ST": {
    -                    "description": "The raw interrupt status bit for the USB_DEVICE_SERIAL_OUT_RECV_PKT_INT interrupt.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SERIAL_IN_EMPTY_INT_ST": {
    -                    "description": "The raw interrupt status bit for the USB_DEVICE_SERIAL_IN_EMPTY_INT interrupt.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "PID_ERR_INT_ST": {
    -                    "description": "The raw interrupt status bit for the USB_DEVICE_PID_ERR_INT interrupt.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CRC5_ERR_INT_ST": {
    -                    "description": "The raw interrupt status bit for the USB_DEVICE_CRC5_ERR_INT interrupt.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "CRC16_ERR_INT_ST": {
    -                    "description": "The raw interrupt status bit for the USB_DEVICE_CRC16_ERR_INT interrupt.",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "STUFF_ERR_INT_ST": {
    -                    "description": "The raw interrupt status bit for the USB_DEVICE_STUFF_ERR_INT interrupt.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_TOKEN_REC_IN_EP1_INT_ST": {
    -                    "description": "The raw interrupt status bit for the USB_DEVICE_IN_TOKEN_REC_IN_EP1_INT interrupt.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "USB_BUS_RESET_INT_ST": {
    -                    "description": "The raw interrupt status bit for the USB_DEVICE_USB_BUS_RESET_INT interrupt.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_EP1_ZERO_PAYLOAD_INT_ST": {
    -                    "description": "The raw interrupt status bit for the USB_DEVICE_OUT_EP1_ZERO_PAYLOAD_INT interrupt.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_EP2_ZERO_PAYLOAD_INT_ST": {
    -                    "description": "The raw interrupt status bit for the USB_DEVICE_OUT_EP2_ZERO_PAYLOAD_INT interrupt.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ENA": {
    -              "description": "USB_DEVICE_INT_ENA_REG.",
    -              "offset": 16,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "JTAG_IN_FLUSH_INT_ENA": {
    -                    "description": "The interrupt enable bit for the USB_DEVICE_JTAG_IN_FLUSH_INT interrupt.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "SOF_INT_ENA": {
    -                    "description": "The interrupt enable bit for the USB_DEVICE_SOF_INT interrupt.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "SERIAL_OUT_RECV_PKT_INT_ENA": {
    -                    "description": "The interrupt enable bit for the USB_DEVICE_SERIAL_OUT_RECV_PKT_INT interrupt.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "SERIAL_IN_EMPTY_INT_ENA": {
    -                    "description": "The interrupt enable bit for the USB_DEVICE_SERIAL_IN_EMPTY_INT interrupt.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "PID_ERR_INT_ENA": {
    -                    "description": "The interrupt enable bit for the USB_DEVICE_PID_ERR_INT interrupt.",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "CRC5_ERR_INT_ENA": {
    -                    "description": "The interrupt enable bit for the USB_DEVICE_CRC5_ERR_INT interrupt.",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "CRC16_ERR_INT_ENA": {
    -                    "description": "The interrupt enable bit for the USB_DEVICE_CRC16_ERR_INT interrupt.",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "STUFF_ERR_INT_ENA": {
    -                    "description": "The interrupt enable bit for the USB_DEVICE_STUFF_ERR_INT interrupt.",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "IN_TOKEN_REC_IN_EP1_INT_ENA": {
    -                    "description": "The interrupt enable bit for the USB_DEVICE_IN_TOKEN_REC_IN_EP1_INT interrupt.",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "USB_BUS_RESET_INT_ENA": {
    -                    "description": "The interrupt enable bit for the USB_DEVICE_USB_BUS_RESET_INT interrupt.",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "OUT_EP1_ZERO_PAYLOAD_INT_ENA": {
    -                    "description": "The interrupt enable bit for the USB_DEVICE_OUT_EP1_ZERO_PAYLOAD_INT interrupt.",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "OUT_EP2_ZERO_PAYLOAD_INT_ENA": {
    -                    "description": "The interrupt enable bit for the USB_DEVICE_OUT_EP2_ZERO_PAYLOAD_INT interrupt.",
    -                    "offset": 11,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INT_CLR": {
    -              "description": "USB_DEVICE_INT_CLR_REG.",
    -              "offset": 20,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "JTAG_IN_FLUSH_INT_CLR": {
    -                    "description": "Set this bit to clear the USB_DEVICE_JTAG_IN_FLUSH_INT interrupt.",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SOF_INT_CLR": {
    -                    "description": "Set this bit to clear the USB_DEVICE_JTAG_SOF_INT interrupt.",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SERIAL_OUT_RECV_PKT_INT_CLR": {
    -                    "description": "Set this bit to clear the USB_DEVICE_SERIAL_OUT_RECV_PKT_INT interrupt.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SERIAL_IN_EMPTY_INT_CLR": {
    -                    "description": "Set this bit to clear the USB_DEVICE_SERIAL_IN_EMPTY_INT interrupt.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "PID_ERR_INT_CLR": {
    -                    "description": "Set this bit to clear the USB_DEVICE_PID_ERR_INT interrupt.",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "CRC5_ERR_INT_CLR": {
    -                    "description": "Set this bit to clear the USB_DEVICE_CRC5_ERR_INT interrupt.",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "CRC16_ERR_INT_CLR": {
    -                    "description": "Set this bit to clear the USB_DEVICE_CRC16_ERR_INT interrupt.",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "STUFF_ERR_INT_CLR": {
    -                    "description": "Set this bit to clear the USB_DEVICE_STUFF_ERR_INT interrupt.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "IN_TOKEN_REC_IN_EP1_INT_CLR": {
    -                    "description": "Set this bit to clear the USB_DEVICE_IN_TOKEN_IN_EP1_INT interrupt.",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "USB_BUS_RESET_INT_CLR": {
    -                    "description": "Set this bit to clear the USB_DEVICE_USB_BUS_RESET_INT interrupt.",
    -                    "offset": 9,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OUT_EP1_ZERO_PAYLOAD_INT_CLR": {
    -                    "description": "Set this bit to clear the USB_DEVICE_OUT_EP1_ZERO_PAYLOAD_INT interrupt.",
    -                    "offset": 10,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OUT_EP2_ZERO_PAYLOAD_INT_CLR": {
    -                    "description": "Set this bit to clear the USB_DEVICE_OUT_EP2_ZERO_PAYLOAD_INT interrupt.",
    -                    "offset": 11,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CONF0": {
    -              "description": "USB_DEVICE_CONF0_REG.",
    -              "offset": 24,
    -              "size": 32,
    -              "reset_value": 16896,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PHY_SEL": {
    -                    "description": "Select internal/external PHY",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "EXCHG_PINS_OVERRIDE": {
    -                    "description": "Enable software control USB D+ D- exchange",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "EXCHG_PINS": {
    -                    "description": "USB D+ D- exchange",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "VREFH": {
    -                    "description": "Control single-end input high threshold,1.76V to 2V, step 80mV",
    -                    "offset": 3,
    -                    "size": 2
    -                  },
    -                  "VREFL": {
    -                    "description": "Control single-end input low threshold,0.8V to 1.04V, step 80mV",
    -                    "offset": 5,
    -                    "size": 2
    -                  },
    -                  "VREF_OVERRIDE": {
    -                    "description": "Enable software control input  threshold",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "PAD_PULL_OVERRIDE": {
    -                    "description": "Enable software control USB D+ D- pullup pulldown",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "DP_PULLUP": {
    -                    "description": "Control USB D+ pull up.",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "DP_PULLDOWN": {
    -                    "description": "Control USB D+ pull down.",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "DM_PULLUP": {
    -                    "description": "Control USB D- pull up.",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "DM_PULLDOWN": {
    -                    "description": "Control USB D- pull down.",
    -                    "offset": 12,
    -                    "size": 1
    -                  },
    -                  "PULLUP_VALUE": {
    -                    "description": "Control pull up value.",
    -                    "offset": 13,
    -                    "size": 1
    -                  },
    -                  "USB_PAD_ENABLE": {
    -                    "description": "Enable USB pad function.",
    -                    "offset": 14,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "TEST": {
    -              "description": "USB_DEVICE_TEST_REG.",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ENABLE": {
    -                    "description": "Enable test of the USB pad",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "USB_OE": {
    -                    "description": "USB pad oen in test",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "TX_DP": {
    -                    "description": "USB D+ tx value in test",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "TX_DM": {
    -                    "description": "USB D- tx value in test",
    -                    "offset": 3,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "JFIFO_ST": {
    -              "description": "USB_DEVICE_JFIFO_ST_REG.",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 68,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_FIFO_CNT": {
    -                    "description": "JTAT in fifo counter.",
    -                    "offset": 0,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "IN_FIFO_EMPTY": {
    -                    "description": "1: JTAG in fifo is empty.",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_FIFO_FULL": {
    -                    "description": "1: JTAG in fifo is full.",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_FIFO_CNT": {
    -                    "description": "JTAT out fifo counter.",
    -                    "offset": 4,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_FIFO_EMPTY": {
    -                    "description": "1: JTAG out fifo is empty.",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_FIFO_FULL": {
    -                    "description": "1: JTAG out fifo is full.",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "IN_FIFO_RESET": {
    -                    "description": "Write 1 to reset JTAG in fifo.",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "OUT_FIFO_RESET": {
    -                    "description": "Write 1 to reset JTAG out fifo.",
    -                    "offset": 9,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "FRAM_NUM": {
    -              "description": "USB_DEVICE_FRAM_NUM_REG.",
    -              "offset": 36,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SOF_FRAME_INDEX": {
    -                    "description": "Frame index of received SOF frame.",
    -                    "offset": 0,
    -                    "size": 11,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_EP0_ST": {
    -              "description": "USB_DEVICE_IN_EP0_ST_REG.",
    -              "offset": 40,
    -              "size": 32,
    -              "reset_value": 1,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_EP0_STATE": {
    -                    "description": "State of IN Endpoint 0.",
    -                    "offset": 0,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "IN_EP0_WR_ADDR": {
    -                    "description": "Write data address of IN endpoint 0.",
    -                    "offset": 2,
    -                    "size": 7,
    -                    "access": "read-only"
    -                  },
    -                  "IN_EP0_RD_ADDR": {
    -                    "description": "Read data address of IN endpoint 0.",
    -                    "offset": 9,
    -                    "size": 7,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_EP1_ST": {
    -              "description": "USB_DEVICE_IN_EP1_ST_REG.",
    -              "offset": 44,
    -              "size": 32,
    -              "reset_value": 1,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_EP1_STATE": {
    -                    "description": "State of IN Endpoint 1.",
    -                    "offset": 0,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "IN_EP1_WR_ADDR": {
    -                    "description": "Write data address of IN endpoint 1.",
    -                    "offset": 2,
    -                    "size": 7,
    -                    "access": "read-only"
    -                  },
    -                  "IN_EP1_RD_ADDR": {
    -                    "description": "Read data address of IN endpoint 1.",
    -                    "offset": 9,
    -                    "size": 7,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_EP2_ST": {
    -              "description": "USB_DEVICE_IN_EP2_ST_REG.",
    -              "offset": 48,
    -              "size": 32,
    -              "reset_value": 1,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_EP2_STATE": {
    -                    "description": "State of IN Endpoint 2.",
    -                    "offset": 0,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "IN_EP2_WR_ADDR": {
    -                    "description": "Write data address of IN endpoint 2.",
    -                    "offset": 2,
    -                    "size": 7,
    -                    "access": "read-only"
    -                  },
    -                  "IN_EP2_RD_ADDR": {
    -                    "description": "Read data address of IN endpoint 2.",
    -                    "offset": 9,
    -                    "size": 7,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "IN_EP3_ST": {
    -              "description": "USB_DEVICE_IN_EP3_ST_REG.",
    -              "offset": 52,
    -              "size": 32,
    -              "reset_value": 1,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "IN_EP3_STATE": {
    -                    "description": "State of IN Endpoint 3.",
    -                    "offset": 0,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "IN_EP3_WR_ADDR": {
    -                    "description": "Write data address of IN endpoint 3.",
    -                    "offset": 2,
    -                    "size": 7,
    -                    "access": "read-only"
    -                  },
    -                  "IN_EP3_RD_ADDR": {
    -                    "description": "Read data address of IN endpoint 3.",
    -                    "offset": 9,
    -                    "size": 7,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_EP0_ST": {
    -              "description": "USB_DEVICE_OUT_EP0_ST_REG.",
    -              "offset": 56,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUT_EP0_STATE": {
    -                    "description": "State of OUT Endpoint 0.",
    -                    "offset": 0,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_EP0_WR_ADDR": {
    -                    "description": "Write data address of OUT endpoint 0. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is detected, there are USB_DEVICE_OUT_EP0_WR_ADDR-2 bytes data in OUT EP0.",
    -                    "offset": 2,
    -                    "size": 7,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_EP0_RD_ADDR": {
    -                    "description": "Read data address of OUT endpoint 0.",
    -                    "offset": 9,
    -                    "size": 7,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_EP1_ST": {
    -              "description": "USB_DEVICE_OUT_EP1_ST_REG.",
    -              "offset": 60,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUT_EP1_STATE": {
    -                    "description": "State of OUT Endpoint 1.",
    -                    "offset": 0,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_EP1_WR_ADDR": {
    -                    "description": "Write data address of OUT endpoint 1. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is detected, there are USB_DEVICE_OUT_EP1_WR_ADDR-2 bytes data in OUT EP1.",
    -                    "offset": 2,
    -                    "size": 7,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_EP1_RD_ADDR": {
    -                    "description": "Read data address of OUT endpoint 1.",
    -                    "offset": 9,
    -                    "size": 7,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_EP1_REC_DATA_CNT": {
    -                    "description": "Data count in OUT endpoint 1 when one packet is received.",
    -                    "offset": 16,
    -                    "size": 7,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "OUT_EP2_ST": {
    -              "description": "USB_DEVICE_OUT_EP2_ST_REG.",
    -              "offset": 64,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "OUT_EP2_STATE": {
    -                    "description": "State of OUT Endpoint 2.",
    -                    "offset": 0,
    -                    "size": 2,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_EP2_WR_ADDR": {
    -                    "description": "Write data address of OUT endpoint 2. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is detected, there are USB_DEVICE_OUT_EP2_WR_ADDR-2 bytes data in OUT EP2.",
    -                    "offset": 2,
    -                    "size": 7,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_EP2_RD_ADDR": {
    -                    "description": "Read data address of OUT endpoint 2.",
    -                    "offset": 9,
    -                    "size": 7,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "MISC_CONF": {
    -              "description": "USB_DEVICE_MISC_CONF_REG.",
    -              "offset": 68,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CLK_EN": {
    -                    "description": "1'h1: Force clock on for register. 1'h0: Support clock only when application writes registers.",
    -                    "offset": 0,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "MEM_CONF": {
    -              "description": "USB_DEVICE_MEM_CONF_REG.",
    -              "offset": 72,
    -              "size": 32,
    -              "reset_value": 2,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "USB_MEM_PD": {
    -                    "description": "1: power down usb memory.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "USB_MEM_CLK_EN": {
    -                    "description": "1: Force clock on for usb memory.",
    -                    "offset": 1,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "DATE": {
    -              "description": "USB_DEVICE_DATE_REG.",
    -              "offset": 128,
    -              "size": 32,
    -              "reset_value": 33583872,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATE": {
    -                    "description": "register version.",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      },
    -      "UHCI0": {
    -        "description": "Universal Host Controller Interface",
    -        "children": {
    -          "registers": {
    -            "CONF0": {
    -              "description": "a",
    -              "offset": 0,
    -              "size": 32,
    -              "reset_value": 1760,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_RST": {
    -                    "description": "Write 1, then write 0 to this bit to reset decode state machine.",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "RX_RST": {
    -                    "description": "Write 1, then write 0 to this bit to reset encode state machine.",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "UART0_CE": {
    -                    "description": "Set this bit to link up HCI and UART0.",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "UART1_CE": {
    -                    "description": "Set this bit to link up HCI and UART1.",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "SEPER_EN": {
    -                    "description": "Set this bit to separate the data frame using a special char.",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "HEAD_EN": {
    -                    "description": "Set this bit to encode the data packet with a formatting header.",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "CRC_REC_EN": {
    -                    "description": "Set this bit to enable UHCI to receive the 16 bit CRC.",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "UART_IDLE_EOF_EN": {
    -                    "description": "If this bit is set to 1, UHCI will end the payload receiving process when UART has been in idle state.",
    -                    "offset": 8,
    -                    "size": 1
    -                  },
    -                  "LEN_EOF_EN": {
    -                    "description": "If this bit is set to 1, UHCI decoder receiving payload data is end when the receiving byte count has reached the specified value. The value is payload length indicated by UHCI packet header when UHCI_HEAD_EN is 1 or the value is configuration value when UHCI_HEAD_EN is 0. If this bit is set to 0, UHCI decoder receiving payload data is end when 0xc0 is received.",
    -                    "offset": 9,
    -                    "size": 1
    -                  },
    -                  "ENCODE_CRC_EN": {
    -                    "description": "Set this bit to enable data integrity checking by appending a 16 bit CCITT-CRC to end of the payload.",
    -                    "offset": 10,
    -                    "size": 1
    -                  },
    -                  "CLK_EN": {
    -                    "description": "1'b1: Force clock on for register. 1'b0: Support clock only when application writes registers.",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "UART_RX_BRK_EOF_EN": {
    -                    "description": "If this bit is set to 1, UHCI will end payload receive process when NULL frame is received by UART.",
    -                    "offset": 12,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INT_RAW": {
    -              "description": "a",
    -              "offset": 4,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_START_INT_RAW": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TX_START_INT_RAW": {
    -                    "description": "a",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RX_HUNG_INT_RAW": {
    -                    "description": "a",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TX_HUNG_INT_RAW": {
    -                    "description": "a",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SEND_S_REG_Q_INT_RAW": {
    -                    "description": "a",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SEND_A_REG_Q_INT_RAW": {
    -                    "description": "a",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUT_EOF_INT_RAW": {
    -                    "description": "This is the interrupt raw bit. Triggered when there are some errors in EOF in the",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "APP_CTRL0_INT_RAW": {
    -                    "description": "Soft control int raw bit.",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "APP_CTRL1_INT_RAW": {
    -                    "description": "Soft control int raw bit.",
    -                    "offset": 8,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ST": {
    -              "description": "a",
    -              "offset": 8,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_START_INT_ST": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TX_START_INT_ST": {
    -                    "description": "a",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "RX_HUNG_INT_ST": {
    -                    "description": "a",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "TX_HUNG_INT_ST": {
    -                    "description": "a",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SEND_S_REG_Q_INT_ST": {
    -                    "description": "a",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "SEND_A_REG_Q_INT_ST": {
    -                    "description": "a",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "OUTLINK_EOF_ERR_INT_ST": {
    -                    "description": "a",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "APP_CTRL0_INT_ST": {
    -                    "description": "a",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  },
    -                  "APP_CTRL1_INT_ST": {
    -                    "description": "a",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "INT_ENA": {
    -              "description": "a",
    -              "offset": 12,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_START_INT_ENA": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "TX_START_INT_ENA": {
    -                    "description": "a",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "RX_HUNG_INT_ENA": {
    -                    "description": "a",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "TX_HUNG_INT_ENA": {
    -                    "description": "a",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "SEND_S_REG_Q_INT_ENA": {
    -                    "description": "a",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "SEND_A_REG_Q_INT_ENA": {
    -                    "description": "a",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "OUTLINK_EOF_ERR_INT_ENA": {
    -                    "description": "a",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "APP_CTRL0_INT_ENA": {
    -                    "description": "a",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "APP_CTRL1_INT_ENA": {
    -                    "description": "a",
    -                    "offset": 8,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "INT_CLR": {
    -              "description": "a",
    -              "offset": 16,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_START_INT_CLR": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "TX_START_INT_CLR": {
    -                    "description": "a",
    -                    "offset": 1,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "RX_HUNG_INT_CLR": {
    -                    "description": "a",
    -                    "offset": 2,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "TX_HUNG_INT_CLR": {
    -                    "description": "a",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SEND_S_REG_Q_INT_CLR": {
    -                    "description": "a",
    -                    "offset": 4,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "SEND_A_REG_Q_INT_CLR": {
    -                    "description": "a",
    -                    "offset": 5,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "OUTLINK_EOF_ERR_INT_CLR": {
    -                    "description": "a",
    -                    "offset": 6,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "APP_CTRL0_INT_CLR": {
    -                    "description": "a",
    -                    "offset": 7,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  },
    -                  "APP_CTRL1_INT_CLR": {
    -                    "description": "a",
    -                    "offset": 8,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "CONF1": {
    -              "description": "a",
    -              "offset": 20,
    -              "size": 32,
    -              "reset_value": 51,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "CHECK_SUM_EN": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "CHECK_SEQ_EN": {
    -                    "description": "a",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "CRC_DISABLE": {
    -                    "description": "a",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "SAVE_HEAD": {
    -                    "description": "a",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "TX_CHECK_SUM_RE": {
    -                    "description": "a",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "TX_ACK_NUM_RE": {
    -                    "description": "a",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "WAIT_SW_START": {
    -                    "description": "a",
    -                    "offset": 7,
    -                    "size": 1
    -                  },
    -                  "SW_START": {
    -                    "description": "a",
    -                    "offset": 8,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "STATE0": {
    -              "description": "a",
    -              "offset": 24,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_ERR_CAUSE": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  },
    -                  "DECODE_STATE": {
    -                    "description": "a",
    -                    "offset": 3,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "STATE1": {
    -              "description": "a",
    -              "offset": 28,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ENCODE_STATE": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 3,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "ESCAPE_CONF": {
    -              "description": "a",
    -              "offset": 32,
    -              "size": 32,
    -              "reset_value": 51,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TX_C0_ESC_EN": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 1
    -                  },
    -                  "TX_DB_ESC_EN": {
    -                    "description": "a",
    -                    "offset": 1,
    -                    "size": 1
    -                  },
    -                  "TX_11_ESC_EN": {
    -                    "description": "a",
    -                    "offset": 2,
    -                    "size": 1
    -                  },
    -                  "TX_13_ESC_EN": {
    -                    "description": "a",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "RX_C0_ESC_EN": {
    -                    "description": "a",
    -                    "offset": 4,
    -                    "size": 1
    -                  },
    -                  "RX_DB_ESC_EN": {
    -                    "description": "a",
    -                    "offset": 5,
    -                    "size": 1
    -                  },
    -                  "RX_11_ESC_EN": {
    -                    "description": "a",
    -                    "offset": 6,
    -                    "size": 1
    -                  },
    -                  "RX_13_ESC_EN": {
    -                    "description": "a",
    -                    "offset": 7,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "HUNG_CONF": {
    -              "description": "a",
    -              "offset": 36,
    -              "size": 32,
    -              "reset_value": 8456208,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "TXFIFO_TIMEOUT": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "TXFIFO_TIMEOUT_SHIFT": {
    -                    "description": "a",
    -                    "offset": 8,
    -                    "size": 3
    -                  },
    -                  "TXFIFO_TIMEOUT_ENA": {
    -                    "description": "a",
    -                    "offset": 11,
    -                    "size": 1
    -                  },
    -                  "RXFIFO_TIMEOUT": {
    -                    "description": "a",
    -                    "offset": 12,
    -                    "size": 8
    -                  },
    -                  "RXFIFO_TIMEOUT_SHIFT": {
    -                    "description": "a",
    -                    "offset": 20,
    -                    "size": 3
    -                  },
    -                  "RXFIFO_TIMEOUT_ENA": {
    -                    "description": "a",
    -                    "offset": 23,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "ACK_NUM": {
    -              "description": "a",
    -              "offset": 40,
    -              "size": 32,
    -              "reset_value": 8,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ACK_NUM": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 3
    -                  },
    -                  "LOAD": {
    -                    "description": "a",
    -                    "offset": 3,
    -                    "size": 1,
    -                    "access": "write-only"
    -                  }
    -                }
    -              }
    -            },
    -            "RX_HEAD": {
    -              "description": "a",
    -              "offset": 44,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "RX_HEAD": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 32,
    -                    "access": "read-only"
    -                  }
    -                }
    -              }
    -            },
    -            "QUICK_SENT": {
    -              "description": "a",
    -              "offset": 48,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SINGLE_SEND_NUM": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 3
    -                  },
    -                  "SINGLE_SEND_EN": {
    -                    "description": "a",
    -                    "offset": 3,
    -                    "size": 1
    -                  },
    -                  "ALWAYS_SEND_NUM": {
    -                    "description": "a",
    -                    "offset": 4,
    -                    "size": 3
    -                  },
    -                  "ALWAYS_SEND_EN": {
    -                    "description": "a",
    -                    "offset": 7,
    -                    "size": 1
    -                  }
    -                }
    -              }
    -            },
    -            "REG_Q0_WORD0": {
    -              "description": "a",
    -              "offset": 52,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SEND_Q0_WORD0": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "REG_Q0_WORD1": {
    -              "description": "a",
    -              "offset": 56,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SEND_Q0_WORD1": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "REG_Q1_WORD0": {
    -              "description": "a",
    -              "offset": 60,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SEND_Q1_WORD0": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "REG_Q1_WORD1": {
    -              "description": "a",
    -              "offset": 64,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SEND_Q1_WORD1": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "REG_Q2_WORD0": {
    -              "description": "a",
    -              "offset": 68,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SEND_Q2_WORD0": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "REG_Q2_WORD1": {
    -              "description": "a",
    -              "offset": 72,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SEND_Q2_WORD1": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "REG_Q3_WORD0": {
    -              "description": "a",
    -              "offset": 76,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SEND_Q3_WORD0": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "REG_Q3_WORD1": {
    -              "description": "a",
    -              "offset": 80,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SEND_Q3_WORD1": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "REG_Q4_WORD0": {
    -              "description": "a",
    -              "offset": 84,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SEND_Q4_WORD0": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "REG_Q4_WORD1": {
    -              "description": "a",
    -              "offset": 88,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SEND_Q4_WORD1": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "REG_Q5_WORD0": {
    -              "description": "a",
    -              "offset": 92,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SEND_Q5_WORD0": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "REG_Q5_WORD1": {
    -              "description": "a",
    -              "offset": 96,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SEND_Q5_WORD1": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "REG_Q6_WORD0": {
    -              "description": "a",
    -              "offset": 100,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SEND_Q6_WORD0": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "REG_Q6_WORD1": {
    -              "description": "a",
    -              "offset": 104,
    -              "size": 32,
    -              "reset_value": 0,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SEND_Q6_WORD1": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            },
    -            "ESC_CONF0": {
    -              "description": "a",
    -              "offset": 108,
    -              "size": 32,
    -              "reset_value": 14474176,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "SEPER_CHAR": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "SEPER_ESC_CHAR0": {
    -                    "description": "a",
    -                    "offset": 8,
    -                    "size": 8
    -                  },
    -                  "SEPER_ESC_CHAR1": {
    -                    "description": "a",
    -                    "offset": 16,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "ESC_CONF1": {
    -              "description": "a",
    -              "offset": 112,
    -              "size": 32,
    -              "reset_value": 14539739,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ESC_SEQ0": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "ESC_SEQ0_CHAR0": {
    -                    "description": "a",
    -                    "offset": 8,
    -                    "size": 8
    -                  },
    -                  "ESC_SEQ0_CHAR1": {
    -                    "description": "a",
    -                    "offset": 16,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "ESC_CONF2": {
    -              "description": "a",
    -              "offset": 116,
    -              "size": 32,
    -              "reset_value": 14605073,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ESC_SEQ1": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "ESC_SEQ1_CHAR0": {
    -                    "description": "a",
    -                    "offset": 8,
    -                    "size": 8
    -                  },
    -                  "ESC_SEQ1_CHAR1": {
    -                    "description": "a",
    -                    "offset": 16,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "ESC_CONF3": {
    -              "description": "a",
    -              "offset": 120,
    -              "size": 32,
    -              "reset_value": 14670611,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "ESC_SEQ2": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 8
    -                  },
    -                  "ESC_SEQ2_CHAR0": {
    -                    "description": "a",
    -                    "offset": 8,
    -                    "size": 8
    -                  },
    -                  "ESC_SEQ2_CHAR1": {
    -                    "description": "a",
    -                    "offset": 16,
    -                    "size": 8
    -                  }
    -                }
    -              }
    -            },
    -            "PKT_THRES": {
    -              "description": "a",
    -              "offset": 124,
    -              "size": 32,
    -              "reset_value": 128,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "PKT_THRS": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 13
    -                  }
    -                }
    -              }
    -            },
    -            "DATE": {
    -              "description": "a",
    -              "offset": 128,
    -              "size": 32,
    -              "reset_value": 33583472,
    -              "reset_mask": 4294967295,
    -              "children": {
    -                "fields": {
    -                  "DATE": {
    -                    "description": "a",
    -                    "offset": 0,
    -                    "size": 32
    -                  }
    -                }
    -              }
    -            }
    -          }
    -        }
    -      }
    -    }
    -  },
    -  "devices": {
    -    "ESP32-C3": {
    -      "arch": "unknown",
    -      "description": "32-bit RISC-V MCU & 2.4 GHz Wi-Fi & Bluetooth 5 (LE)",
    -      "properties": {
    -        "cpu.mpuPresent": "false",
    -        "cpu.nvicPrioBits": "4",
    -        "cpu.vendorSystickConfig": "false",
    -        "cpu.revision": "r0p0",
    -        "cpu.endian": "little",
    -        "license": "\n    Copyright 2022 Espressif Systems (Shanghai) PTE LTD\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n        http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n",
    -        "cpu.name": "RV32IMC",
    -        "cpu.fpuPresent": "false"
    -      },
    -      "children": {
    -        "interrupts": {
    -          "AES": {
    -            "index": 48
    -          },
    -          "APB_ADC": {
    -            "index": 43
    -          },
    -          "ASSIST_DEBUG": {
    -            "index": 54
    -          },
    -          "DMA_CH0": {
    -            "index": 44
    -          },
    -          "DMA_CH1": {
    -            "index": 45
    -          },
    -          "DMA_CH2": {
    -            "index": 46
    -          },
    -          "EFUSE": {
    -            "index": 24
    -          },
    -          "GPIO": {
    -            "index": 16
    -          },
    -          "GPIO_NMI": {
    -            "index": 17
    -          },
    -          "I2C_EXT0": {
    -            "index": 29
    -          },
    -          "I2S": {
    -            "index": 20
    -          },
    -          "LEDC": {
    -            "index": 23
    -          },
    -          "RMT": {
    -            "index": 28
    -          },
    -          "RSA": {
    -            "index": 47
    -          },
    -          "RTC_CORE": {
    -            "index": 27
    -          },
    -          "SHA": {
    -            "index": 49
    -          },
    -          "SPI2": {
    -            "index": 19
    -          },
    -          "SYSTIMER_TARGET0": {
    -            "index": 37
    -          },
    -          "SYSTIMER_TARGET1": {
    -            "index": 38
    -          },
    -          "SYSTIMER_TARGET2": {
    -            "index": 39
    -          },
    -          "TG0_T0_LEVEL": {
    -            "index": 32
    -          },
    -          "TG0_WDT_LEVEL": {
    -            "index": 33
    -          },
    -          "TG1_T0_LEVEL": {
    -            "index": 34
    -          },
    -          "TG1_WDT_LEVEL": {
    -            "index": 35
    -          },
    -          "TWAI": {
    -            "index": 25
    -          },
    -          "UART0": {
    -            "index": 21
    -          },
    -          "UART1": {
    -            "index": 22
    -          },
    -          "UHCI0": {
    -            "index": 15
    -          },
    -          "USB_SERIAL_JTAG": {
    -            "index": 26
    -          }
    -        },
    -        "peripheral_instances": {
    -          "AES": {
    -            "description": "AES (Advanced Encryption Standard) Accelerator",
    -            "offset": 1610850304,
    -            "type": "types.peripherals.AES"
    -          },
    -          "APB_CTRL": {
    -            "description": "Advanced Peripheral Bus Controller",
    -            "offset": 1610768384,
    -            "type": "types.peripherals.APB_CTRL"
    -          },
    -          "APB_SARADC": {
    -            "description": "Successive Approximation Register Analog to Digital Converter",
    -            "offset": 1610874880,
    -            "type": "types.peripherals.APB_SARADC"
    -          },
    -          "ASSIST_DEBUG": {
    -            "description": "Debug Assist",
    -            "offset": 1611456512,
    -            "type": "types.peripherals.ASSIST_DEBUG"
    -          },
    -          "DMA": {
    -            "description": "DMA (Direct Memory Access) Controller",
    -            "offset": 1610870784,
    -            "type": "types.peripherals.DMA"
    -          },
    -          "DS": {
    -            "description": "Digital Signature",
    -            "offset": 1610862592,
    -            "type": "types.peripherals.DS"
    -          },
    -          "EFUSE": {
    -            "description": "eFuse Controller",
    -            "offset": 1610647552,
    -            "type": "types.peripherals.EFUSE"
    -          },
    -          "EXTMEM": {
    -            "description": "External Memory",
    -            "offset": 1611415552,
    -            "type": "types.peripherals.EXTMEM"
    -          },
    -          "GPIO": {
    -            "description": "General Purpose Input/Output",
    -            "offset": 1610629120,
    -            "type": "types.peripherals.GPIO"
    -          },
    -          "GPIOSD": {
    -            "description": "Sigma-Delta Modulation",
    -            "offset": 1610632960,
    -            "type": "types.peripherals.GPIOSD"
    -          },
    -          "HMAC": {
    -            "description": "HMAC (Hash-based Message Authentication Code) Accelerator",
    -            "offset": 1610866688,
    -            "type": "types.peripherals.HMAC"
    -          },
    -          "I2C0": {
    -            "description": "I2C (Inter-Integrated Circuit) Controller",
    -            "offset": 1610690560,
    -            "type": "types.peripherals.I2C0"
    -          },
    -          "I2S": {
    -            "description": "I2S (Inter-IC Sound) Controller",
    -            "offset": 1610797056,
    -            "type": "types.peripherals.I2S"
    -          },
    -          "INTERRUPT_CORE0": {
    -            "description": "Interrupt Core",
    -            "offset": 1611407360,
    -            "type": "types.peripherals.INTERRUPT_CORE0"
    -          },
    -          "IO_MUX": {
    -            "description": "Input/Output Multiplexer",
    -            "offset": 1610649600,
    -            "type": "types.peripherals.IO_MUX"
    -          },
    -          "LEDC": {
    -            "description": "LED Control PWM (Pulse Width Modulation)",
    -            "offset": 1610715136,
    -            "type": "types.peripherals.LEDC"
    -          },
    -          "RMT": {
    -            "description": "Remote Control Peripheral",
    -            "offset": 1610702848,
    -            "type": "types.peripherals.RMT"
    -          },
    -          "RNG": {
    -            "description": "Hardware random number generator",
    -            "offset": 1610768384,
    -            "type": "types.peripherals.RNG"
    -          },
    -          "RSA": {
    -            "description": "RSA (Rivest Shamir Adleman) Accelerator",
    -            "offset": 1610858496,
    -            "type": "types.peripherals.RSA"
    -          },
    -          "RTC_CNTL": {
    -            "description": "Real-Time Clock Control",
    -            "offset": 1610645504,
    -            "type": "types.peripherals.RTC_CNTL"
    -          },
    -          "SENSITIVE": {
    -            "description": "Sensitive",
    -            "offset": 1611403264,
    -            "type": "types.peripherals.SENSITIVE"
    -          },
    -          "SHA": {
    -            "description": "SHA (Secure Hash Algorithm) Accelerator",
    -            "offset": 1610854400,
    -            "type": "types.peripherals.SHA"
    -          },
    -          "SPI0": {
    -            "description": "SPI (Serial Peripheral Interface) Controller",
    -            "offset": 1610625024,
    -            "type": "types.peripherals.SPI0"
    -          },
    -          "SPI1": {
    -            "description": "SPI (Serial Peripheral Interface) Controller",
    -            "offset": 1610620928,
    -            "type": "types.peripherals.SPI1"
    -          },
    -          "SPI2": {
    -            "description": "SPI (Serial Peripheral Interface) Controller",
    -            "offset": 1610760192,
    -            "type": "types.peripherals.SPI2"
    -          },
    -          "SYSTEM": {
    -            "description": "System",
    -            "offset": 1611399168,
    -            "type": "types.peripherals.SYSTEM"
    -          },
    -          "SYSTIMER": {
    -            "description": "System Timer",
    -            "offset": 1610756096,
    -            "type": "types.peripherals.SYSTIMER"
    -          },
    -          "TIMG0": {
    -            "description": "Timer Group",
    -            "offset": 1610739712,
    -            "type": "types.peripherals.TIMG0"
    -          },
    -          "TIMG1": {
    -            "description": "Timer Group",
    -            "offset": 1610743808,
    -            "type": "types.peripherals.TIMG0"
    -          },
    -          "TWAI": {
    -            "description": "Two-Wire Automotive Interface",
    -            "offset": 1610788864,
    -            "type": "types.peripherals.TWAI"
    -          },
    -          "UART0": {
    -            "description": "UART (Universal Asynchronous Receiver-Transmitter) Controller",
    -            "offset": 1610612736,
    -            "type": "types.peripherals.UART0"
    -          },
    -          "UART1": {
    -            "description": "UART (Universal Asynchronous Receiver-Transmitter) Controller",
    -            "offset": 1610678272,
    -            "type": "types.peripherals.UART0"
    -          },
    -          "UHCI0": {
    -            "description": "Universal Host Controller Interface",
    -            "offset": 1610694656,
    -            "type": "types.peripherals.UHCI0"
    -          },
    -          "UHCI1": {
    -            "description": "Universal Host Controller Interface",
    -            "offset": 1610661888,
    -            "type": "types.peripherals.UHCI0"
    -          },
    -          "USB_DEVICE": {
    -            "description": "Full-speed USB Serial/JTAG Controller",
    -            "offset": 1610887168,
    -            "type": "types.peripherals.USB_DEVICE"
    -          },
    -          "XTS_AES": {
    -            "description": "XTS-AES-128 Flash Encryption",
    -            "offset": 1611448320,
    -            "type": "types.peripherals.XTS_AES"
    -          }
    -        }
    -      }
    -    }
    -  }
    -}
    \ No newline at end of file
    diff --git a/src/chips/ESP32_C3.zig b/src/chips/ESP32_C3.zig
    deleted file mode 100644
    index 8a632a0..0000000
    --- a/src/chips/ESP32_C3.zig
    +++ /dev/null
    @@ -1,12378 +0,0 @@
    -const micro = @import("microzig");
    -const mmio = micro.mmio;
    -
    -pub const devices = struct {
    -    ///  32-bit RISC-V MCU & 2.4 GHz Wi-Fi & Bluetooth 5 (LE)
    -    pub const @"ESP32-C3" = struct {
    -        pub const properties = struct {
    -            pub const @"cpu.mpuPresent" = "false";
    -            pub const @"cpu.nvicPrioBits" = "4";
    -            pub const @"cpu.vendorSystickConfig" = "false";
    -            pub const @"cpu.revision" = "r0p0";
    -            pub const @"cpu.endian" = "little";
    -            pub const license =
    -                \\
    -                \\    Copyright 2022 Espressif Systems (Shanghai) PTE LTD
    -                \\
    -                \\    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.
    -                \\
    -            ;
    -            pub const @"cpu.name" = "RV32IMC";
    -            pub const @"cpu.fpuPresent" = "false";
    -        };
    -
    -        pub const peripherals = struct {
    -            ///  UART (Universal Asynchronous Receiver-Transmitter) Controller
    -            pub const UART0 = @as(*volatile types.peripherals.UART0, @ptrFromInt(0x60000000));
    -            ///  SPI (Serial Peripheral Interface) Controller
    -            pub const SPI1 = @as(*volatile types.peripherals.SPI1, @ptrFromInt(0x60002000));
    -            ///  SPI (Serial Peripheral Interface) Controller
    -            pub const SPI0 = @as(*volatile types.peripherals.SPI0, @ptrFromInt(0x60003000));
    -            ///  General Purpose Input/Output
    -            pub const GPIO = @as(*volatile types.peripherals.GPIO, @ptrFromInt(0x60004000));
    -            ///  Sigma-Delta Modulation
    -            pub const GPIOSD = @as(*volatile types.peripherals.GPIOSD, @ptrFromInt(0x60004f00));
    -            ///  Real-Time Clock Control
    -            pub const RTC_CNTL = @as(*volatile types.peripherals.RTC_CNTL, @ptrFromInt(0x60008000));
    -            ///  eFuse Controller
    -            pub const EFUSE = @as(*volatile types.peripherals.EFUSE, @ptrFromInt(0x60008800));
    -            ///  Input/Output Multiplexer
    -            pub const IO_MUX = @as(*volatile types.peripherals.IO_MUX, @ptrFromInt(0x60009000));
    -            ///  Universal Host Controller Interface
    -            pub const UHCI1 = @as(*volatile types.peripherals.UHCI0, @ptrFromInt(0x6000c000));
    -            ///  UART (Universal Asynchronous Receiver-Transmitter) Controller
    -            pub const UART1 = @as(*volatile types.peripherals.UART0, @ptrFromInt(0x60010000));
    -            ///  I2C (Inter-Integrated Circuit) Controller
    -            pub const I2C0 = @as(*volatile types.peripherals.I2C0, @ptrFromInt(0x60013000));
    -            ///  Universal Host Controller Interface
    -            pub const UHCI0 = @as(*volatile types.peripherals.UHCI0, @ptrFromInt(0x60014000));
    -            ///  Remote Control Peripheral
    -            pub const RMT = @as(*volatile types.peripherals.RMT, @ptrFromInt(0x60016000));
    -            ///  LED Control PWM (Pulse Width Modulation)
    -            pub const LEDC = @as(*volatile types.peripherals.LEDC, @ptrFromInt(0x60019000));
    -            ///  Timer Group
    -            pub const TIMG0 = @as(*volatile types.peripherals.TIMG0, @ptrFromInt(0x6001f000));
    -            ///  Timer Group
    -            pub const TIMG1 = @as(*volatile types.peripherals.TIMG0, @ptrFromInt(0x60020000));
    -            ///  System Timer
    -            pub const SYSTIMER = @as(*volatile types.peripherals.SYSTIMER, @ptrFromInt(0x60023000));
    -            ///  SPI (Serial Peripheral Interface) Controller
    -            pub const SPI2 = @as(*volatile types.peripherals.SPI2, @ptrFromInt(0x60024000));
    -            ///  Advanced Peripheral Bus Controller
    -            pub const APB_CTRL = @as(*volatile types.peripherals.APB_CTRL, @ptrFromInt(0x60026000));
    -            ///  Hardware random number generator
    -            pub const RNG = @as(*volatile types.peripherals.RNG, @ptrFromInt(0x60026000));
    -            ///  Two-Wire Automotive Interface
    -            pub const TWAI = @as(*volatile types.peripherals.TWAI, @ptrFromInt(0x6002b000));
    -            ///  I2S (Inter-IC Sound) Controller
    -            pub const I2S = @as(*volatile types.peripherals.I2S, @ptrFromInt(0x6002d000));
    -            ///  AES (Advanced Encryption Standard) Accelerator
    -            pub const AES = @as(*volatile types.peripherals.AES, @ptrFromInt(0x6003a000));
    -            ///  SHA (Secure Hash Algorithm) Accelerator
    -            pub const SHA = @as(*volatile types.peripherals.SHA, @ptrFromInt(0x6003b000));
    -            ///  RSA (Rivest Shamir Adleman) Accelerator
    -            pub const RSA = @as(*volatile types.peripherals.RSA, @ptrFromInt(0x6003c000));
    -            ///  Digital Signature
    -            pub const DS = @as(*volatile types.peripherals.DS, @ptrFromInt(0x6003d000));
    -            ///  HMAC (Hash-based Message Authentication Code) Accelerator
    -            pub const HMAC = @as(*volatile types.peripherals.HMAC, @ptrFromInt(0x6003e000));
    -            ///  DMA (Direct Memory Access) Controller
    -            pub const DMA = @as(*volatile types.peripherals.DMA, @ptrFromInt(0x6003f000));
    -            ///  Successive Approximation Register Analog to Digital Converter
    -            pub const APB_SARADC = @as(*volatile types.peripherals.APB_SARADC, @ptrFromInt(0x60040000));
    -            ///  Full-speed USB Serial/JTAG Controller
    -            pub const USB_DEVICE = @as(*volatile types.peripherals.USB_DEVICE, @ptrFromInt(0x60043000));
    -            ///  System
    -            pub const SYSTEM = @as(*volatile types.peripherals.SYSTEM, @ptrFromInt(0x600c0000));
    -            ///  Sensitive
    -            pub const SENSITIVE = @as(*volatile types.peripherals.SENSITIVE, @ptrFromInt(0x600c1000));
    -            ///  Interrupt Core
    -            pub const INTERRUPT_CORE0 = @as(*volatile types.peripherals.INTERRUPT_CORE0, @ptrFromInt(0x600c2000));
    -            ///  External Memory
    -            pub const EXTMEM = @as(*volatile types.peripherals.EXTMEM, @ptrFromInt(0x600c4000));
    -            ///  XTS-AES-128 Flash Encryption
    -            pub const XTS_AES = @as(*volatile types.peripherals.XTS_AES, @ptrFromInt(0x600cc000));
    -            ///  Debug Assist
    -            pub const ASSIST_DEBUG = @as(*volatile types.peripherals.ASSIST_DEBUG, @ptrFromInt(0x600ce000));
    -        };
    -    };
    -};
    -
    -pub const types = struct {
    -    pub const peripherals = struct {
    -        ///  AES (Advanced Encryption Standard) Accelerator
    -        pub const AES = extern struct {
    -            ///  Key material key_0 configure register
    -            KEY_0: mmio.Mmio(packed struct(u32) {
    -                ///  This bits stores key_0 that is a part of key material.
    -                KEY_0: u32,
    -            }),
    -            ///  Key material key_1 configure register
    -            KEY_1: mmio.Mmio(packed struct(u32) {
    -                ///  This bits stores key_1 that is a part of key material.
    -                KEY_1: u32,
    -            }),
    -            ///  Key material key_2 configure register
    -            KEY_2: mmio.Mmio(packed struct(u32) {
    -                ///  This bits stores key_2 that is a part of key material.
    -                KEY_2: u32,
    -            }),
    -            ///  Key material key_3 configure register
    -            KEY_3: mmio.Mmio(packed struct(u32) {
    -                ///  This bits stores key_3 that is a part of key material.
    -                KEY_3: u32,
    -            }),
    -            ///  Key material key_4 configure register
    -            KEY_4: mmio.Mmio(packed struct(u32) {
    -                ///  This bits stores key_4 that is a part of key material.
    -                KEY_4: u32,
    -            }),
    -            ///  Key material key_5 configure register
    -            KEY_5: mmio.Mmio(packed struct(u32) {
    -                ///  This bits stores key_5 that is a part of key material.
    -                KEY_5: u32,
    -            }),
    -            ///  Key material key_6 configure register
    -            KEY_6: mmio.Mmio(packed struct(u32) {
    -                ///  This bits stores key_6 that is a part of key material.
    -                KEY_6: u32,
    -            }),
    -            ///  Key material key_7 configure register
    -            KEY_7: mmio.Mmio(packed struct(u32) {
    -                ///  This bits stores key_7 that is a part of key material.
    -                KEY_7: u32,
    -            }),
    -            ///  source text material text_in_0 configure register
    -            TEXT_IN_0: mmio.Mmio(packed struct(u32) {
    -                ///  This bits stores text_in_0 that is a part of source text material.
    -                TEXT_IN_0: u32,
    -            }),
    -            ///  source text material text_in_1 configure register
    -            TEXT_IN_1: mmio.Mmio(packed struct(u32) {
    -                ///  This bits stores text_in_1 that is a part of source text material.
    -                TEXT_IN_1: u32,
    -            }),
    -            ///  source text material text_in_2 configure register
    -            TEXT_IN_2: mmio.Mmio(packed struct(u32) {
    -                ///  This bits stores text_in_2 that is a part of source text material.
    -                TEXT_IN_2: u32,
    -            }),
    -            ///  source text material text_in_3 configure register
    -            TEXT_IN_3: mmio.Mmio(packed struct(u32) {
    -                ///  This bits stores text_in_3 that is a part of source text material.
    -                TEXT_IN_3: u32,
    -            }),
    -            ///  result text material text_out_0 configure register
    -            TEXT_OUT_0: mmio.Mmio(packed struct(u32) {
    -                ///  This bits stores text_out_0 that is a part of result text material.
    -                TEXT_OUT_0: u32,
    -            }),
    -            ///  result text material text_out_1 configure register
    -            TEXT_OUT_1: mmio.Mmio(packed struct(u32) {
    -                ///  This bits stores text_out_1 that is a part of result text material.
    -                TEXT_OUT_1: u32,
    -            }),
    -            ///  result text material text_out_2 configure register
    -            TEXT_OUT_2: mmio.Mmio(packed struct(u32) {
    -                ///  This bits stores text_out_2 that is a part of result text material.
    -                TEXT_OUT_2: u32,
    -            }),
    -            ///  result text material text_out_3 configure register
    -            TEXT_OUT_3: mmio.Mmio(packed struct(u32) {
    -                ///  This bits stores text_out_3 that is a part of result text material.
    -                TEXT_OUT_3: u32,
    -            }),
    -            ///  AES Mode register
    -            MODE: mmio.Mmio(packed struct(u32) {
    -                ///  This bits decides which one operation mode will be used. 3'd0: AES-EN-128, 3'd1: AES-EN-192, 3'd2: AES-EN-256, 3'd4: AES-DE-128, 3'd5: AES-DE-192, 3'd6: AES-DE-256.
    -                MODE: u3,
    -                padding: u29,
    -            }),
    -            ///  AES Endian configure register
    -            ENDIAN: mmio.Mmio(packed struct(u32) {
    -                ///  endian. [1:0] key endian, [3:2] text_in endian or in_stream endian, [5:4] text_out endian or out_stream endian
    -                ENDIAN: u6,
    -                padding: u26,
    -            }),
    -            ///  AES trigger register
    -            TRIGGER: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to start AES calculation.
    -                TRIGGER: u1,
    -                padding: u31,
    -            }),
    -            ///  AES state register
    -            STATE: mmio.Mmio(packed struct(u32) {
    -                ///  Those bits shows AES status. For typical AES, 0: idle, 1: busy. For DMA-AES, 0: idle, 1: busy, 2: calculation_done.
    -                STATE: u2,
    -                padding: u30,
    -            }),
    -            ///  The memory that stores initialization vector
    -            IV_MEM: [16]u8,
    -            ///  The memory that stores GCM hash subkey
    -            H_MEM: [16]u8,
    -            ///  The memory that stores J0
    -            J0_MEM: [16]u8,
    -            ///  The memory that stores T0
    -            T0_MEM: [16]u8,
    -            ///  DMA-AES working mode register
    -            DMA_ENABLE: mmio.Mmio(packed struct(u32) {
    -                ///  1'b0: typical AES working mode, 1'b1: DMA-AES working mode.
    -                DMA_ENABLE: u1,
    -                padding: u31,
    -            }),
    -            ///  AES cipher block mode register
    -            BLOCK_MODE: mmio.Mmio(packed struct(u32) {
    -                ///  Those bits decides which block mode will be used. 0x0: ECB, 0x1: CBC, 0x2: OFB, 0x3: CTR, 0x4: CFB-8, 0x5: CFB-128, 0x6: GCM, 0x7: reserved.
    -                BLOCK_MODE: u3,
    -                padding: u29,
    -            }),
    -            ///  AES block number register
    -            BLOCK_NUM: mmio.Mmio(packed struct(u32) {
    -                ///  Those bits stores the number of Plaintext/ciphertext block.
    -                BLOCK_NUM: u32,
    -            }),
    -            ///  Standard incrementing function configure register
    -            INC_SEL: mmio.Mmio(packed struct(u32) {
    -                ///  This bit decides the standard incrementing function. 0: INC32. 1: INC128.
    -                INC_SEL: u1,
    -                padding: u31,
    -            }),
    -            ///  Additional Authential Data block number register
    -            AAD_BLOCK_NUM: mmio.Mmio(packed struct(u32) {
    -                ///  Those bits stores the number of AAD block.
    -                AAD_BLOCK_NUM: u32,
    -            }),
    -            ///  AES remainder bit number register
    -            REMAINDER_BIT_NUM: mmio.Mmio(packed struct(u32) {
    -                ///  Those bits stores the number of remainder bit.
    -                REMAINDER_BIT_NUM: u7,
    -                padding: u25,
    -            }),
    -            ///  AES continue register
    -            CONTINUE: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to continue GCM operation.
    -                CONTINUE: u1,
    -                padding: u31,
    -            }),
    -            ///  AES Interrupt clear register
    -            INT_CLEAR: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to clear the AES interrupt.
    -                INT_CLEAR: u1,
    -                padding: u31,
    -            }),
    -            ///  AES Interrupt enable register
    -            INT_ENA: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to enable interrupt that occurs when DMA-AES calculation is done.
    -                INT_ENA: u1,
    -                padding: u31,
    -            }),
    -            ///  AES version control register
    -            DATE: mmio.Mmio(packed struct(u32) {
    -                ///  This bits stores the version information of AES.
    -                DATE: u30,
    -                padding: u2,
    -            }),
    -            ///  AES-DMA exit config
    -            DMA_EXIT: mmio.Mmio(packed struct(u32) {
    -                ///  Set this register to leave calculation done stage. Recommend to use it after software finishes reading DMA's output buffer.
    -                DMA_EXIT: u1,
    -                padding: u31,
    -            }),
    -        };
    -
    -        ///  Advanced Peripheral Bus Controller
    -        pub const APB_CTRL = extern struct {
    -            ///  APB_CTRL_SYSCLK_CONF_REG
    -            SYSCLK_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  reg_pre_div_cnt
    -                PRE_DIV_CNT: u10,
    -                ///  reg_clk_320m_en
    -                CLK_320M_EN: u1,
    -                ///  reg_clk_en
    -                CLK_EN: u1,
    -                ///  reg_rst_tick_cnt
    -                RST_TICK_CNT: u1,
    -                padding: u19,
    -            }),
    -            ///  APB_CTRL_TICK_CONF_REG
    -            TICK_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  reg_xtal_tick_num
    -                XTAL_TICK_NUM: u8,
    -                ///  reg_ck8m_tick_num
    -                CK8M_TICK_NUM: u8,
    -                ///  reg_tick_enable
    -                TICK_ENABLE: u1,
    -                padding: u15,
    -            }),
    -            ///  APB_CTRL_CLK_OUT_EN_REG
    -            CLK_OUT_EN: mmio.Mmio(packed struct(u32) {
    -                ///  reg_clk20_oen
    -                CLK20_OEN: u1,
    -                ///  reg_clk22_oen
    -                CLK22_OEN: u1,
    -                ///  reg_clk44_oen
    -                CLK44_OEN: u1,
    -                ///  reg_clk_bb_oen
    -                CLK_BB_OEN: u1,
    -                ///  reg_clk80_oen
    -                CLK80_OEN: u1,
    -                ///  reg_clk160_oen
    -                CLK160_OEN: u1,
    -                ///  reg_clk_320m_oen
    -                CLK_320M_OEN: u1,
    -                ///  reg_clk_adc_inf_oen
    -                CLK_ADC_INF_OEN: u1,
    -                ///  reg_clk_dac_cpu_oen
    -                CLK_DAC_CPU_OEN: u1,
    -                ///  reg_clk40x_bb_oen
    -                CLK40X_BB_OEN: u1,
    -                ///  reg_clk_xtal_oen
    -                CLK_XTAL_OEN: u1,
    -                padding: u21,
    -            }),
    -            ///  APB_CTRL_WIFI_BB_CFG_REG
    -            WIFI_BB_CFG: mmio.Mmio(packed struct(u32) {
    -                ///  reg_wifi_bb_cfg
    -                WIFI_BB_CFG: u32,
    -            }),
    -            ///  APB_CTRL_WIFI_BB_CFG_2_REG
    -            WIFI_BB_CFG_2: mmio.Mmio(packed struct(u32) {
    -                ///  reg_wifi_bb_cfg_2
    -                WIFI_BB_CFG_2: u32,
    -            }),
    -            ///  APB_CTRL_WIFI_CLK_EN_REG
    -            WIFI_CLK_EN: mmio.Mmio(packed struct(u32) {
    -                ///  reg_wifi_clk_en
    -                WIFI_CLK_EN: u32,
    -            }),
    -            ///  APB_CTRL_WIFI_RST_EN_REG
    -            WIFI_RST_EN: mmio.Mmio(packed struct(u32) {
    -                ///  reg_wifi_rst
    -                WIFI_RST: u32,
    -            }),
    -            ///  APB_CTRL_HOST_INF_SEL_REG
    -            HOST_INF_SEL: mmio.Mmio(packed struct(u32) {
    -                ///  reg_peri_io_swap
    -                PERI_IO_SWAP: u8,
    -                padding: u24,
    -            }),
    -            ///  APB_CTRL_EXT_MEM_PMS_LOCK_REG
    -            EXT_MEM_PMS_LOCK: mmio.Mmio(packed struct(u32) {
    -                ///  reg_ext_mem_pms_lock
    -                EXT_MEM_PMS_LOCK: u1,
    -                padding: u31,
    -            }),
    -            reserved40: [4]u8,
    -            ///  APB_CTRL_FLASH_ACE0_ATTR_REG
    -            FLASH_ACE0_ATTR: mmio.Mmio(packed struct(u32) {
    -                ///  reg_flash_ace0_attr
    -                FLASH_ACE0_ATTR: u2,
    -                padding: u30,
    -            }),
    -            ///  APB_CTRL_FLASH_ACE1_ATTR_REG
    -            FLASH_ACE1_ATTR: mmio.Mmio(packed struct(u32) {
    -                ///  reg_flash_ace1_attr
    -                FLASH_ACE1_ATTR: u2,
    -                padding: u30,
    -            }),
    -            ///  APB_CTRL_FLASH_ACE2_ATTR_REG
    -            FLASH_ACE2_ATTR: mmio.Mmio(packed struct(u32) {
    -                ///  reg_flash_ace2_attr
    -                FLASH_ACE2_ATTR: u2,
    -                padding: u30,
    -            }),
    -            ///  APB_CTRL_FLASH_ACE3_ATTR_REG
    -            FLASH_ACE3_ATTR: mmio.Mmio(packed struct(u32) {
    -                ///  reg_flash_ace3_attr
    -                FLASH_ACE3_ATTR: u2,
    -                padding: u30,
    -            }),
    -            ///  APB_CTRL_FLASH_ACE0_ADDR_REG
    -            FLASH_ACE0_ADDR: mmio.Mmio(packed struct(u32) {
    -                ///  reg_flash_ace0_addr_s
    -                S: u32,
    -            }),
    -            ///  APB_CTRL_FLASH_ACE1_ADDR_REG
    -            FLASH_ACE1_ADDR: mmio.Mmio(packed struct(u32) {
    -                ///  reg_flash_ace1_addr_s
    -                S: u32,
    -            }),
    -            ///  APB_CTRL_FLASH_ACE2_ADDR_REG
    -            FLASH_ACE2_ADDR: mmio.Mmio(packed struct(u32) {
    -                ///  reg_flash_ace2_addr_s
    -                S: u32,
    -            }),
    -            ///  APB_CTRL_FLASH_ACE3_ADDR_REG
    -            FLASH_ACE3_ADDR: mmio.Mmio(packed struct(u32) {
    -                ///  reg_flash_ace3_addr_s
    -                S: u32,
    -            }),
    -            ///  APB_CTRL_FLASH_ACE0_SIZE_REG
    -            FLASH_ACE0_SIZE: mmio.Mmio(packed struct(u32) {
    -                ///  reg_flash_ace0_size
    -                FLASH_ACE0_SIZE: u13,
    -                padding: u19,
    -            }),
    -            ///  APB_CTRL_FLASH_ACE1_SIZE_REG
    -            FLASH_ACE1_SIZE: mmio.Mmio(packed struct(u32) {
    -                ///  reg_flash_ace1_size
    -                FLASH_ACE1_SIZE: u13,
    -                padding: u19,
    -            }),
    -            ///  APB_CTRL_FLASH_ACE2_SIZE_REG
    -            FLASH_ACE2_SIZE: mmio.Mmio(packed struct(u32) {
    -                ///  reg_flash_ace2_size
    -                FLASH_ACE2_SIZE: u13,
    -                padding: u19,
    -            }),
    -            ///  APB_CTRL_FLASH_ACE3_SIZE_REG
    -            FLASH_ACE3_SIZE: mmio.Mmio(packed struct(u32) {
    -                ///  reg_flash_ace3_size
    -                FLASH_ACE3_SIZE: u13,
    -                padding: u19,
    -            }),
    -            reserved136: [48]u8,
    -            ///  APB_CTRL_SPI_MEM_PMS_CTRL_REG
    -            SPI_MEM_PMS_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  reg_spi_mem_reject_int
    -                SPI_MEM_REJECT_INT: u1,
    -                ///  reg_spi_mem_reject_clr
    -                SPI_MEM_REJECT_CLR: u1,
    -                ///  reg_spi_mem_reject_cde
    -                SPI_MEM_REJECT_CDE: u5,
    -                padding: u25,
    -            }),
    -            ///  APB_CTRL_SPI_MEM_REJECT_ADDR_REG
    -            SPI_MEM_REJECT_ADDR: mmio.Mmio(packed struct(u32) {
    -                ///  reg_spi_mem_reject_addr
    -                SPI_MEM_REJECT_ADDR: u32,
    -            }),
    -            ///  APB_CTRL_SDIO_CTRL_REG
    -            SDIO_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  reg_sdio_win_access_en
    -                SDIO_WIN_ACCESS_EN: u1,
    -                padding: u31,
    -            }),
    -            ///  APB_CTRL_REDCY_SIG0_REG
    -            REDCY_SIG0: mmio.Mmio(packed struct(u32) {
    -                ///  reg_redcy_sig0
    -                REDCY_SIG0: u31,
    -                ///  reg_redcy_andor
    -                REDCY_ANDOR: u1,
    -            }),
    -            ///  APB_CTRL_REDCY_SIG1_REG
    -            REDCY_SIG1: mmio.Mmio(packed struct(u32) {
    -                ///  reg_redcy_sig1
    -                REDCY_SIG1: u31,
    -                ///  reg_redcy_nandor
    -                REDCY_NANDOR: u1,
    -            }),
    -            ///  APB_CTRL_FRONT_END_MEM_PD_REG
    -            FRONT_END_MEM_PD: mmio.Mmio(packed struct(u32) {
    -                ///  reg_agc_mem_force_pu
    -                AGC_MEM_FORCE_PU: u1,
    -                ///  reg_agc_mem_force_pd
    -                AGC_MEM_FORCE_PD: u1,
    -                ///  reg_pbus_mem_force_pu
    -                PBUS_MEM_FORCE_PU: u1,
    -                ///  reg_pbus_mem_force_pd
    -                PBUS_MEM_FORCE_PD: u1,
    -                ///  reg_dc_mem_force_pu
    -                DC_MEM_FORCE_PU: u1,
    -                ///  reg_dc_mem_force_pd
    -                DC_MEM_FORCE_PD: u1,
    -                padding: u26,
    -            }),
    -            ///  APB_CTRL_RETENTION_CTRL_REG
    -            RETENTION_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  reg_retention_link_addr
    -                RETENTION_LINK_ADDR: u27,
    -                ///  reg_nobypass_cpu_iso_rst
    -                NOBYPASS_CPU_ISO_RST: u1,
    -                padding: u4,
    -            }),
    -            ///  APB_CTRL_CLKGATE_FORCE_ON_REG
    -            CLKGATE_FORCE_ON: mmio.Mmio(packed struct(u32) {
    -                ///  reg_rom_clkgate_force_on
    -                ROM_CLKGATE_FORCE_ON: u2,
    -                ///  reg_sram_clkgate_force_on
    -                SRAM_CLKGATE_FORCE_ON: u4,
    -                padding: u26,
    -            }),
    -            ///  APB_CTRL_MEM_POWER_DOWN_REG
    -            MEM_POWER_DOWN: mmio.Mmio(packed struct(u32) {
    -                ///  reg_rom_power_down
    -                ROM_POWER_DOWN: u2,
    -                ///  reg_sram_power_down
    -                SRAM_POWER_DOWN: u4,
    -                padding: u26,
    -            }),
    -            ///  APB_CTRL_MEM_POWER_UP_REG
    -            MEM_POWER_UP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_rom_power_up
    -                ROM_POWER_UP: u2,
    -                ///  reg_sram_power_up
    -                SRAM_POWER_UP: u4,
    -                padding: u26,
    -            }),
    -            ///  APB_CTRL_RND_DATA_REG
    -            RND_DATA: mmio.Mmio(packed struct(u32) {
    -                ///  reg_rnd_data
    -                RND_DATA: u32,
    -            }),
    -            ///  APB_CTRL_PERI_BACKUP_CONFIG_REG
    -            PERI_BACKUP_CONFIG: mmio.Mmio(packed struct(u32) {
    -                reserved1: u1,
    -                ///  reg_peri_backup_flow_err
    -                PERI_BACKUP_FLOW_ERR: u2,
    -                reserved4: u1,
    -                ///  reg_peri_backup_burst_limit
    -                PERI_BACKUP_BURST_LIMIT: u5,
    -                ///  reg_peri_backup_tout_thres
    -                PERI_BACKUP_TOUT_THRES: u10,
    -                ///  reg_peri_backup_size
    -                PERI_BACKUP_SIZE: u10,
    -                ///  reg_peri_backup_start
    -                PERI_BACKUP_START: u1,
    -                ///  reg_peri_backup_to_mem
    -                PERI_BACKUP_TO_MEM: u1,
    -                ///  reg_peri_backup_ena
    -                PERI_BACKUP_ENA: u1,
    -            }),
    -            ///  APB_CTRL_PERI_BACKUP_APB_ADDR_REG
    -            PERI_BACKUP_APB_ADDR: mmio.Mmio(packed struct(u32) {
    -                ///  reg_backup_apb_start_addr
    -                BACKUP_APB_START_ADDR: u32,
    -            }),
    -            ///  APB_CTRL_PERI_BACKUP_MEM_ADDR_REG
    -            PERI_BACKUP_MEM_ADDR: mmio.Mmio(packed struct(u32) {
    -                ///  reg_backup_mem_start_addr
    -                BACKUP_MEM_START_ADDR: u32,
    -            }),
    -            ///  APB_CTRL_PERI_BACKUP_INT_RAW_REG
    -            PERI_BACKUP_INT_RAW: mmio.Mmio(packed struct(u32) {
    -                ///  reg_peri_backup_done_int_raw
    -                PERI_BACKUP_DONE_INT_RAW: u1,
    -                ///  reg_peri_backup_err_int_raw
    -                PERI_BACKUP_ERR_INT_RAW: u1,
    -                padding: u30,
    -            }),
    -            ///  APB_CTRL_PERI_BACKUP_INT_ST_REG
    -            PERI_BACKUP_INT_ST: mmio.Mmio(packed struct(u32) {
    -                ///  reg_peri_backup_done_int_st
    -                PERI_BACKUP_DONE_INT_ST: u1,
    -                ///  reg_peri_backup_err_int_st
    -                PERI_BACKUP_ERR_INT_ST: u1,
    -                padding: u30,
    -            }),
    -            ///  APB_CTRL_PERI_BACKUP_INT_ENA_REG
    -            PERI_BACKUP_INT_ENA: mmio.Mmio(packed struct(u32) {
    -                ///  reg_peri_backup_done_int_ena
    -                PERI_BACKUP_DONE_INT_ENA: u1,
    -                ///  reg_peri_backup_err_int_ena
    -                PERI_BACKUP_ERR_INT_ENA: u1,
    -                padding: u30,
    -            }),
    -            reserved208: [4]u8,
    -            ///  APB_CTRL_PERI_BACKUP_INT_CLR_REG
    -            PERI_BACKUP_INT_CLR: mmio.Mmio(packed struct(u32) {
    -                ///  reg_peri_backup_done_int_clr
    -                PERI_BACKUP_DONE_INT_CLR: u1,
    -                ///  reg_peri_backup_err_int_clr
    -                PERI_BACKUP_ERR_INT_CLR: u1,
    -                padding: u30,
    -            }),
    -            reserved1020: [808]u8,
    -            ///  APB_CTRL_DATE_REG
    -            DATE: mmio.Mmio(packed struct(u32) {
    -                ///  reg_dateVersion control
    -                DATE: u32,
    -            }),
    -        };
    -
    -        ///  Successive Approximation Register Analog to Digital Converter
    -        pub const APB_SARADC = extern struct {
    -            ///  digital saradc configure register
    -            CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  select software enable saradc sample
    -                SARADC_START_FORCE: u1,
    -                ///  software enable saradc sample
    -                SARADC_START: u1,
    -                reserved6: u4,
    -                ///  SAR clock gated
    -                SARADC_SAR_CLK_GATED: u1,
    -                ///  SAR clock divider
    -                SARADC_SAR_CLK_DIV: u8,
    -                ///  0 ~ 15 means length 1 ~ 16
    -                SARADC_SAR_PATT_LEN: u3,
    -                reserved23: u5,
    -                ///  clear the pointer of pattern table for DIG ADC1 CTRL
    -                SARADC_SAR_PATT_P_CLEAR: u1,
    -                reserved27: u3,
    -                ///  force option to xpd sar blocks
    -                SARADC_XPD_SAR_FORCE: u2,
    -                reserved30: u1,
    -                ///  wait arbit signal stable after sar_done
    -                SARADC_WAIT_ARB_CYCLE: u2,
    -            }),
    -            ///  digital saradc configure register
    -            CTRL2: mmio.Mmio(packed struct(u32) {
    -                ///  enable max meas num
    -                SARADC_MEAS_NUM_LIMIT: u1,
    -                ///  max conversion number
    -                SARADC_MAX_MEAS_NUM: u8,
    -                ///  1: data to DIG ADC1 CTRL is inverted, otherwise not
    -                SARADC_SAR1_INV: u1,
    -                ///  1: data to DIG ADC2 CTRL is inverted, otherwise not
    -                SARADC_SAR2_INV: u1,
    -                reserved12: u1,
    -                ///  to set saradc timer target
    -                SARADC_TIMER_TARGET: u12,
    -                ///  to enable saradc timer trigger
    -                SARADC_TIMER_EN: u1,
    -                padding: u7,
    -            }),
    -            ///  digital saradc configure register
    -            FILTER_CTRL1: mmio.Mmio(packed struct(u32) {
    -                reserved26: u26,
    -                ///  Factor of saradc filter1
    -                APB_SARADC_FILTER_FACTOR1: u3,
    -                ///  Factor of saradc filter0
    -                APB_SARADC_FILTER_FACTOR0: u3,
    -            }),
    -            ///  digital saradc configure register
    -            FSM_WAIT: mmio.Mmio(packed struct(u32) {
    -                ///  saradc_xpd_wait
    -                SARADC_XPD_WAIT: u8,
    -                ///  saradc_rstb_wait
    -                SARADC_RSTB_WAIT: u8,
    -                ///  saradc_standby_wait
    -                SARADC_STANDBY_WAIT: u8,
    -                padding: u8,
    -            }),
    -            ///  digital saradc configure register
    -            SAR1_STATUS: mmio.Mmio(packed struct(u32) {
    -                ///  saradc1 status about data and channel
    -                SARADC_SAR1_STATUS: u32,
    -            }),
    -            ///  digital saradc configure register
    -            SAR2_STATUS: mmio.Mmio(packed struct(u32) {
    -                ///  saradc2 status about data and channel
    -                SARADC_SAR2_STATUS: u32,
    -            }),
    -            ///  digital saradc configure register
    -            SAR_PATT_TAB1: mmio.Mmio(packed struct(u32) {
    -                ///  item 0 ~ 3 for pattern table 1 (each item one byte)
    -                SARADC_SAR_PATT_TAB1: u24,
    -                padding: u8,
    -            }),
    -            ///  digital saradc configure register
    -            SAR_PATT_TAB2: mmio.Mmio(packed struct(u32) {
    -                ///  Item 4 ~ 7 for pattern table 1 (each item one byte)
    -                SARADC_SAR_PATT_TAB2: u24,
    -                padding: u8,
    -            }),
    -            ///  digital saradc configure register
    -            ONETIME_SAMPLE: mmio.Mmio(packed struct(u32) {
    -                reserved23: u23,
    -                ///  configure onetime atten
    -                SARADC_ONETIME_ATTEN: u2,
    -                ///  configure onetime channel
    -                SARADC_ONETIME_CHANNEL: u4,
    -                ///  trigger adc onetime sample
    -                SARADC_ONETIME_START: u1,
    -                ///  enable adc2 onetime sample
    -                SARADC2_ONETIME_SAMPLE: u1,
    -                ///  enable adc1 onetime sample
    -                SARADC1_ONETIME_SAMPLE: u1,
    -            }),
    -            ///  digital saradc configure register
    -            ARB_CTRL: mmio.Mmio(packed struct(u32) {
    -                reserved2: u2,
    -                ///  adc2 arbiter force to enableapb controller
    -                ADC_ARB_APB_FORCE: u1,
    -                ///  adc2 arbiter force to enable rtc controller
    -                ADC_ARB_RTC_FORCE: u1,
    -                ///  adc2 arbiter force to enable wifi controller
    -                ADC_ARB_WIFI_FORCE: u1,
    -                ///  adc2 arbiter force grant
    -                ADC_ARB_GRANT_FORCE: u1,
    -                ///  Set adc2 arbiterapb priority
    -                ADC_ARB_APB_PRIORITY: u2,
    -                ///  Set adc2 arbiter rtc priority
    -                ADC_ARB_RTC_PRIORITY: u2,
    -                ///  Set adc2 arbiter wifi priority
    -                ADC_ARB_WIFI_PRIORITY: u2,
    -                ///  adc2 arbiter uses fixed priority
    -                ADC_ARB_FIX_PRIORITY: u1,
    -                padding: u19,
    -            }),
    -            ///  digital saradc configure register
    -            FILTER_CTRL0: mmio.Mmio(packed struct(u32) {
    -                reserved18: u18,
    -                ///  configure filter1 to adc channel
    -                APB_SARADC_FILTER_CHANNEL1: u4,
    -                ///  configure filter0 to adc channel
    -                APB_SARADC_FILTER_CHANNEL0: u4,
    -                reserved31: u5,
    -                ///  enable apb_adc1_filter
    -                APB_SARADC_FILTER_RESET: u1,
    -            }),
    -            ///  digital saradc configure register
    -            SAR1DATA_STATUS: mmio.Mmio(packed struct(u32) {
    -                ///  saradc1 data
    -                APB_SARADC1_DATA: u17,
    -                padding: u15,
    -            }),
    -            ///  digital saradc configure register
    -            SAR2DATA_STATUS: mmio.Mmio(packed struct(u32) {
    -                ///  saradc2 data
    -                APB_SARADC2_DATA: u17,
    -                padding: u15,
    -            }),
    -            ///  digital saradc configure register
    -            THRES0_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  configure thres0 to adc channel
    -                APB_SARADC_THRES0_CHANNEL: u4,
    -                reserved5: u1,
    -                ///  saradc thres0 monitor thres
    -                APB_SARADC_THRES0_HIGH: u13,
    -                ///  saradc thres0 monitor thres
    -                APB_SARADC_THRES0_LOW: u13,
    -                padding: u1,
    -            }),
    -            ///  digital saradc configure register
    -            THRES1_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  configure thres1 to adc channel
    -                APB_SARADC_THRES1_CHANNEL: u4,
    -                reserved5: u1,
    -                ///  saradc thres1 monitor thres
    -                APB_SARADC_THRES1_HIGH: u13,
    -                ///  saradc thres1 monitor thres
    -                APB_SARADC_THRES1_LOW: u13,
    -                padding: u1,
    -            }),
    -            ///  digital saradc configure register
    -            THRES_CTRL: mmio.Mmio(packed struct(u32) {
    -                reserved27: u27,
    -                ///  enable thres to all channel
    -                APB_SARADC_THRES_ALL_EN: u1,
    -                reserved30: u2,
    -                ///  enable thres1
    -                APB_SARADC_THRES1_EN: u1,
    -                ///  enable thres0
    -                APB_SARADC_THRES0_EN: u1,
    -            }),
    -            ///  digital saradc int register
    -            INT_ENA: mmio.Mmio(packed struct(u32) {
    -                reserved26: u26,
    -                ///  saradc thres1 low interrupt enable
    -                APB_SARADC_THRES1_LOW_INT_ENA: u1,
    -                ///  saradc thres0 low interrupt enable
    -                APB_SARADC_THRES0_LOW_INT_ENA: u1,
    -                ///  saradc thres1 high interrupt enable
    -                APB_SARADC_THRES1_HIGH_INT_ENA: u1,
    -                ///  saradc thres0 high interrupt enable
    -                APB_SARADC_THRES0_HIGH_INT_ENA: u1,
    -                ///  saradc2 done interrupt enable
    -                APB_SARADC2_DONE_INT_ENA: u1,
    -                ///  saradc1 done interrupt enable
    -                APB_SARADC1_DONE_INT_ENA: u1,
    -            }),
    -            ///  digital saradc int register
    -            INT_RAW: mmio.Mmio(packed struct(u32) {
    -                reserved26: u26,
    -                ///  saradc thres1 low interrupt raw
    -                APB_SARADC_THRES1_LOW_INT_RAW: u1,
    -                ///  saradc thres0 low interrupt raw
    -                APB_SARADC_THRES0_LOW_INT_RAW: u1,
    -                ///  saradc thres1 high interrupt raw
    -                APB_SARADC_THRES1_HIGH_INT_RAW: u1,
    -                ///  saradc thres0 high interrupt raw
    -                APB_SARADC_THRES0_HIGH_INT_RAW: u1,
    -                ///  saradc2 done interrupt raw
    -                APB_SARADC2_DONE_INT_RAW: u1,
    -                ///  saradc1 done interrupt raw
    -                APB_SARADC1_DONE_INT_RAW: u1,
    -            }),
    -            ///  digital saradc int register
    -            INT_ST: mmio.Mmio(packed struct(u32) {
    -                reserved26: u26,
    -                ///  saradc thres1 low interrupt state
    -                APB_SARADC_THRES1_LOW_INT_ST: u1,
    -                ///  saradc thres0 low interrupt state
    -                APB_SARADC_THRES0_LOW_INT_ST: u1,
    -                ///  saradc thres1 high interrupt state
    -                APB_SARADC_THRES1_HIGH_INT_ST: u1,
    -                ///  saradc thres0 high interrupt state
    -                APB_SARADC_THRES0_HIGH_INT_ST: u1,
    -                ///  saradc2 done interrupt state
    -                APB_SARADC2_DONE_INT_ST: u1,
    -                ///  saradc1 done interrupt state
    -                APB_SARADC1_DONE_INT_ST: u1,
    -            }),
    -            ///  digital saradc int register
    -            INT_CLR: mmio.Mmio(packed struct(u32) {
    -                reserved26: u26,
    -                ///  saradc thres1 low interrupt clear
    -                APB_SARADC_THRES1_LOW_INT_CLR: u1,
    -                ///  saradc thres0 low interrupt clear
    -                APB_SARADC_THRES0_LOW_INT_CLR: u1,
    -                ///  saradc thres1 high interrupt clear
    -                APB_SARADC_THRES1_HIGH_INT_CLR: u1,
    -                ///  saradc thres0 high interrupt clear
    -                APB_SARADC_THRES0_HIGH_INT_CLR: u1,
    -                ///  saradc2 done interrupt clear
    -                APB_SARADC2_DONE_INT_CLR: u1,
    -                ///  saradc1 done interrupt clear
    -                APB_SARADC1_DONE_INT_CLR: u1,
    -            }),
    -            ///  digital saradc configure register
    -            DMA_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  the dma_in_suc_eof gen when sample cnt = spi_eof_num
    -                APB_ADC_EOF_NUM: u16,
    -                reserved30: u14,
    -                ///  reset_apb_adc_state
    -                APB_ADC_RESET_FSM: u1,
    -                ///  enable apb_adc use spi_dma
    -                APB_ADC_TRANS: u1,
    -            }),
    -            ///  digital saradc configure register
    -            CLKM_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  Integral I2S clock divider value
    -                CLKM_DIV_NUM: u8,
    -                ///  Fractional clock divider numerator value
    -                CLKM_DIV_B: u6,
    -                ///  Fractional clock divider denominator value
    -                CLKM_DIV_A: u6,
    -                ///  reg clk en
    -                CLK_EN: u1,
    -                ///  Set this bit to enable clk_apll
    -                CLK_SEL: u2,
    -                padding: u9,
    -            }),
    -            ///  digital tsens configure register
    -            APB_TSENS_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  temperature sensor data out
    -                TSENS_OUT: u8,
    -                reserved13: u5,
    -                ///  invert temperature sensor data
    -                TSENS_IN_INV: u1,
    -                ///  temperature sensor clock divider
    -                TSENS_CLK_DIV: u8,
    -                ///  temperature sensor power up
    -                TSENS_PU: u1,
    -                padding: u9,
    -            }),
    -            ///  digital tsens configure register
    -            TSENS_CTRL2: mmio.Mmio(packed struct(u32) {
    -                ///  the time that power up tsens need wait
    -                TSENS_XPD_WAIT: u12,
    -                ///  force power up tsens
    -                TSENS_XPD_FORCE: u2,
    -                ///  inv tsens clk
    -                TSENS_CLK_INV: u1,
    -                ///  tsens clk select
    -                TSENS_CLK_SEL: u1,
    -                padding: u16,
    -            }),
    -            ///  digital saradc configure register
    -            CALI: mmio.Mmio(packed struct(u32) {
    -                ///  saradc cali factor
    -                APB_SARADC_CALI_CFG: u17,
    -                padding: u15,
    -            }),
    -            reserved1020: [920]u8,
    -            ///  version
    -            CTRL_DATE: mmio.Mmio(packed struct(u32) {
    -                ///  version
    -                DATE: u32,
    -            }),
    -        };
    -
    -        ///  Debug Assist
    -        pub const ASSIST_DEBUG = extern struct {
    -            ///  ASSIST_DEBUG_C0RE_0_MONTR_ENA_REG
    -            C0RE_0_MONTR_ENA: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_area_dram0_0_rd_ena
    -                CORE_0_AREA_DRAM0_0_RD_ENA: u1,
    -                ///  reg_core_0_area_dram0_0_wr_ena
    -                CORE_0_AREA_DRAM0_0_WR_ENA: u1,
    -                ///  reg_core_0_area_dram0_1_rd_ena
    -                CORE_0_AREA_DRAM0_1_RD_ENA: u1,
    -                ///  reg_core_0_area_dram0_1_wr_ena
    -                CORE_0_AREA_DRAM0_1_WR_ENA: u1,
    -                ///  reg_core_0_area_pif_0_rd_ena
    -                CORE_0_AREA_PIF_0_RD_ENA: u1,
    -                ///  reg_core_0_area_pif_0_wr_ena
    -                CORE_0_AREA_PIF_0_WR_ENA: u1,
    -                ///  reg_core_0_area_pif_1_rd_ena
    -                CORE_0_AREA_PIF_1_RD_ENA: u1,
    -                ///  reg_core_0_area_pif_1_wr_ena
    -                CORE_0_AREA_PIF_1_WR_ENA: u1,
    -                ///  reg_core_0_sp_spill_min_ena
    -                CORE_0_SP_SPILL_MIN_ENA: u1,
    -                ///  reg_core_0_sp_spill_max_ena
    -                CORE_0_SP_SPILL_MAX_ENA: u1,
    -                ///  reg_core_0_iram0_exception_monitor_ena
    -                CORE_0_IRAM0_EXCEPTION_MONITOR_ENA: u1,
    -                ///  reg_core_0_dram0_exception_monitor_ena
    -                CORE_0_DRAM0_EXCEPTION_MONITOR_ENA: u1,
    -                padding: u20,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_INTR_RAW_REG
    -            CORE_0_INTR_RAW: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_area_dram0_0_rd_raw
    -                CORE_0_AREA_DRAM0_0_RD_RAW: u1,
    -                ///  reg_core_0_area_dram0_0_wr_raw
    -                CORE_0_AREA_DRAM0_0_WR_RAW: u1,
    -                ///  reg_core_0_area_dram0_1_rd_raw
    -                CORE_0_AREA_DRAM0_1_RD_RAW: u1,
    -                ///  reg_core_0_area_dram0_1_wr_raw
    -                CORE_0_AREA_DRAM0_1_WR_RAW: u1,
    -                ///  reg_core_0_area_pif_0_rd_raw
    -                CORE_0_AREA_PIF_0_RD_RAW: u1,
    -                ///  reg_core_0_area_pif_0_wr_raw
    -                CORE_0_AREA_PIF_0_WR_RAW: u1,
    -                ///  reg_core_0_area_pif_1_rd_raw
    -                CORE_0_AREA_PIF_1_RD_RAW: u1,
    -                ///  reg_core_0_area_pif_1_wr_raw
    -                CORE_0_AREA_PIF_1_WR_RAW: u1,
    -                ///  reg_core_0_sp_spill_min_raw
    -                CORE_0_SP_SPILL_MIN_RAW: u1,
    -                ///  reg_core_0_sp_spill_max_raw
    -                CORE_0_SP_SPILL_MAX_RAW: u1,
    -                ///  reg_core_0_iram0_exception_monitor_raw
    -                CORE_0_IRAM0_EXCEPTION_MONITOR_RAW: u1,
    -                ///  reg_core_0_dram0_exception_monitor_raw
    -                CORE_0_DRAM0_EXCEPTION_MONITOR_RAW: u1,
    -                padding: u20,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_INTR_ENA_REG
    -            CORE_0_INTR_ENA: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_area_dram0_0_rd_intr_ena
    -                CORE_0_AREA_DRAM0_0_RD_INTR_ENA: u1,
    -                ///  reg_core_0_area_dram0_0_wr_intr_ena
    -                CORE_0_AREA_DRAM0_0_WR_INTR_ENA: u1,
    -                ///  reg_core_0_area_dram0_1_rd_intr_ena
    -                CORE_0_AREA_DRAM0_1_RD_INTR_ENA: u1,
    -                ///  reg_core_0_area_dram0_1_wr_intr_ena
    -                CORE_0_AREA_DRAM0_1_WR_INTR_ENA: u1,
    -                ///  reg_core_0_area_pif_0_rd_intr_ena
    -                CORE_0_AREA_PIF_0_RD_INTR_ENA: u1,
    -                ///  reg_core_0_area_pif_0_wr_intr_ena
    -                CORE_0_AREA_PIF_0_WR_INTR_ENA: u1,
    -                ///  reg_core_0_area_pif_1_rd_intr_ena
    -                CORE_0_AREA_PIF_1_RD_INTR_ENA: u1,
    -                ///  reg_core_0_area_pif_1_wr_intr_ena
    -                CORE_0_AREA_PIF_1_WR_INTR_ENA: u1,
    -                ///  reg_core_0_sp_spill_min_intr_ena
    -                CORE_0_SP_SPILL_MIN_INTR_ENA: u1,
    -                ///  reg_core_0_sp_spill_max_intr_ena
    -                CORE_0_SP_SPILL_MAX_INTR_ENA: u1,
    -                ///  reg_core_0_iram0_exception_monitor_ena
    -                CORE_0_IRAM0_EXCEPTION_MONITOR_RLS: u1,
    -                ///  reg_core_0_dram0_exception_monitor_ena
    -                CORE_0_DRAM0_EXCEPTION_MONITOR_RLS: u1,
    -                padding: u20,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_INTR_CLR_REG
    -            CORE_0_INTR_CLR: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_area_dram0_0_rd_clr
    -                CORE_0_AREA_DRAM0_0_RD_CLR: u1,
    -                ///  reg_core_0_area_dram0_0_wr_clr
    -                CORE_0_AREA_DRAM0_0_WR_CLR: u1,
    -                ///  reg_core_0_area_dram0_1_rd_clr
    -                CORE_0_AREA_DRAM0_1_RD_CLR: u1,
    -                ///  reg_core_0_area_dram0_1_wr_clr
    -                CORE_0_AREA_DRAM0_1_WR_CLR: u1,
    -                ///  reg_core_0_area_pif_0_rd_clr
    -                CORE_0_AREA_PIF_0_RD_CLR: u1,
    -                ///  reg_core_0_area_pif_0_wr_clr
    -                CORE_0_AREA_PIF_0_WR_CLR: u1,
    -                ///  reg_core_0_area_pif_1_rd_clr
    -                CORE_0_AREA_PIF_1_RD_CLR: u1,
    -                ///  reg_core_0_area_pif_1_wr_clr
    -                CORE_0_AREA_PIF_1_WR_CLR: u1,
    -                ///  reg_core_0_sp_spill_min_clr
    -                CORE_0_SP_SPILL_MIN_CLR: u1,
    -                ///  reg_core_0_sp_spill_max_clr
    -                CORE_0_SP_SPILL_MAX_CLR: u1,
    -                ///  reg_core_0_iram0_exception_monitor_clr
    -                CORE_0_IRAM0_EXCEPTION_MONITOR_CLR: u1,
    -                ///  reg_core_0_dram0_exception_monitor_clr
    -                CORE_0_DRAM0_EXCEPTION_MONITOR_CLR: u1,
    -                padding: u20,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_AREA_DRAM0_0_MIN_REG
    -            CORE_0_AREA_DRAM0_0_MIN: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_area_dram0_0_min
    -                CORE_0_AREA_DRAM0_0_MIN: u32,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_AREA_DRAM0_0_MAX_REG
    -            CORE_0_AREA_DRAM0_0_MAX: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_area_dram0_0_max
    -                CORE_0_AREA_DRAM0_0_MAX: u32,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_AREA_DRAM0_1_MIN_REG
    -            CORE_0_AREA_DRAM0_1_MIN: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_area_dram0_1_min
    -                CORE_0_AREA_DRAM0_1_MIN: u32,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_AREA_DRAM0_1_MAX_REG
    -            CORE_0_AREA_DRAM0_1_MAX: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_area_dram0_1_max
    -                CORE_0_AREA_DRAM0_1_MAX: u32,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_AREA_PIF_0_MIN_REG
    -            CORE_0_AREA_PIF_0_MIN: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_area_pif_0_min
    -                CORE_0_AREA_PIF_0_MIN: u32,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_AREA_PIF_0_MAX_REG
    -            CORE_0_AREA_PIF_0_MAX: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_area_pif_0_max
    -                CORE_0_AREA_PIF_0_MAX: u32,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_AREA_PIF_1_MIN_REG
    -            CORE_0_AREA_PIF_1_MIN: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_area_pif_1_min
    -                CORE_0_AREA_PIF_1_MIN: u32,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_AREA_PIF_1_MAX_REG
    -            CORE_0_AREA_PIF_1_MAX: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_area_pif_1_max
    -                CORE_0_AREA_PIF_1_MAX: u32,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_AREA_PC_REG
    -            CORE_0_AREA_PC: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_area_pc
    -                CORE_0_AREA_PC: u32,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_AREA_SP_REG
    -            CORE_0_AREA_SP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_area_sp
    -                CORE_0_AREA_SP: u32,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_SP_MIN_REG
    -            CORE_0_SP_MIN: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_sp_min
    -                CORE_0_SP_MIN: u32,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_SP_MAX_REG
    -            CORE_0_SP_MAX: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_sp_max
    -                CORE_0_SP_MAX: u32,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_SP_PC_REG
    -            CORE_0_SP_PC: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_sp_pc
    -                CORE_0_SP_PC: u32,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_RCD_EN_REG
    -            CORE_0_RCD_EN: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_rcd_recorden
    -                CORE_0_RCD_RECORDEN: u1,
    -                ///  reg_core_0_rcd_pdebugen
    -                CORE_0_RCD_PDEBUGEN: u1,
    -                padding: u30,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_RCD_PDEBUGPC_REG
    -            CORE_0_RCD_PDEBUGPC: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_rcd_pdebugpc
    -                CORE_0_RCD_PDEBUGPC: u32,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_RCD_PDEBUGSP_REG
    -            CORE_0_RCD_PDEBUGSP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_rcd_pdebugsp
    -                CORE_0_RCD_PDEBUGSP: u32,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_RCD_PDEBUGSP_REG
    -            CORE_0_IRAM0_EXCEPTION_MONITOR_0: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_iram0_recording_addr_0
    -                CORE_0_IRAM0_RECORDING_ADDR_0: u24,
    -                ///  reg_core_0_iram0_recording_wr_0
    -                CORE_0_IRAM0_RECORDING_WR_0: u1,
    -                ///  reg_core_0_iram0_recording_loadstore_0
    -                CORE_0_IRAM0_RECORDING_LOADSTORE_0: u1,
    -                padding: u6,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_IRAM0_EXCEPTION_MONITOR_1_REG
    -            CORE_0_IRAM0_EXCEPTION_MONITOR_1: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_iram0_recording_addr_1
    -                CORE_0_IRAM0_RECORDING_ADDR_1: u24,
    -                ///  reg_core_0_iram0_recording_wr_1
    -                CORE_0_IRAM0_RECORDING_WR_1: u1,
    -                ///  reg_core_0_iram0_recording_loadstore_1
    -                CORE_0_IRAM0_RECORDING_LOADSTORE_1: u1,
    -                padding: u6,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_0_REG
    -            CORE_0_DRAM0_EXCEPTION_MONITOR_0: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_dram0_recording_addr_0
    -                CORE_0_DRAM0_RECORDING_ADDR_0: u24,
    -                ///  reg_core_0_dram0_recording_wr_0
    -                CORE_0_DRAM0_RECORDING_WR_0: u1,
    -                ///  reg_core_0_dram0_recording_byteen_0
    -                CORE_0_DRAM0_RECORDING_BYTEEN_0: u4,
    -                padding: u3,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_1_REG
    -            CORE_0_DRAM0_EXCEPTION_MONITOR_1: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_dram0_recording_pc_0
    -                CORE_0_DRAM0_RECORDING_PC_0: u32,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_1_REG
    -            CORE_0_DRAM0_EXCEPTION_MONITOR_2: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_dram0_recording_addr_1
    -                CORE_0_DRAM0_RECORDING_ADDR_1: u24,
    -                ///  reg_core_0_dram0_recording_wr_1
    -                CORE_0_DRAM0_RECORDING_WR_1: u1,
    -                ///  reg_core_0_dram0_recording_byteen_1
    -                CORE_0_DRAM0_RECORDING_BYTEEN_1: u4,
    -                padding: u3,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_0_DRAM0_EXCEPTION_MONITOR_3_REG
    -            CORE_0_DRAM0_EXCEPTION_MONITOR_3: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_dram0_recording_pc_1
    -                CORE_0_DRAM0_RECORDING_PC_1: u32,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_0_REG
    -            CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_0: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_x_iram0_dram0_limit_cycle_0
    -                CORE_X_IRAM0_DRAM0_LIMIT_CYCLE_0: u20,
    -                padding: u12,
    -            }),
    -            ///  ASSIST_DEBUG_CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_1_REG
    -            CORE_X_IRAM0_DRAM0_EXCEPTION_MONITOR_1: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_x_iram0_dram0_limit_cycle_1
    -                CORE_X_IRAM0_DRAM0_LIMIT_CYCLE_1: u20,
    -                padding: u12,
    -            }),
    -            ///  ASSIST_DEBUG_LOG_SETTING
    -            LOG_SETTING: mmio.Mmio(packed struct(u32) {
    -                ///  reg_log_ena
    -                LOG_ENA: u3,
    -                ///  reg_log_mode
    -                LOG_MODE: u4,
    -                ///  reg_log_mem_loop_enable
    -                LOG_MEM_LOOP_ENABLE: u1,
    -                padding: u24,
    -            }),
    -            ///  ASSIST_DEBUG_LOG_DATA_0_REG
    -            LOG_DATA_0: mmio.Mmio(packed struct(u32) {
    -                ///  reg_log_data_0
    -                LOG_DATA_0: u32,
    -            }),
    -            ///  ASSIST_DEBUG_LOG_DATA_MASK_REG
    -            LOG_DATA_MASK: mmio.Mmio(packed struct(u32) {
    -                ///  reg_log_data_size
    -                LOG_DATA_SIZE: u16,
    -                padding: u16,
    -            }),
    -            ///  ASSIST_DEBUG_LOG_MIN_REG
    -            LOG_MIN: mmio.Mmio(packed struct(u32) {
    -                ///  reg_log_min
    -                LOG_MIN: u32,
    -            }),
    -            ///  ASSIST_DEBUG_LOG_MAX_REG
    -            LOG_MAX: mmio.Mmio(packed struct(u32) {
    -                ///  reg_log_max
    -                LOG_MAX: u32,
    -            }),
    -            ///  ASSIST_DEBUG_LOG_MEM_START_REG
    -            LOG_MEM_START: mmio.Mmio(packed struct(u32) {
    -                ///  reg_log_mem_start
    -                LOG_MEM_START: u32,
    -            }),
    -            ///  ASSIST_DEBUG_LOG_MEM_END_REG
    -            LOG_MEM_END: mmio.Mmio(packed struct(u32) {
    -                ///  reg_log_mem_end
    -                LOG_MEM_END: u32,
    -            }),
    -            ///  ASSIST_DEBUG_LOG_MEM_WRITING_ADDR_REG
    -            LOG_MEM_WRITING_ADDR: mmio.Mmio(packed struct(u32) {
    -                ///  reg_log_mem_writing_addr
    -                LOG_MEM_WRITING_ADDR: u32,
    -            }),
    -            ///  ASSIST_DEBUG_LOG_MEM_FULL_FLAG_REG
    -            LOG_MEM_FULL_FLAG: mmio.Mmio(packed struct(u32) {
    -                ///  reg_log_mem_full_flag
    -                LOG_MEM_FULL_FLAG: u1,
    -                ///  reg_clr_log_mem_full_flag
    -                CLR_LOG_MEM_FULL_FLAG: u1,
    -                padding: u30,
    -            }),
    -            ///  ASSIST_DEBUG_C0RE_0_LASTPC_BEFORE_EXCEPTION
    -            C0RE_0_LASTPC_BEFORE_EXCEPTION: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_lastpc_before_exc
    -                CORE_0_LASTPC_BEFORE_EXC: u32,
    -            }),
    -            ///  ASSIST_DEBUG_C0RE_0_DEBUG_MODE
    -            C0RE_0_DEBUG_MODE: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core_0_debug_mode
    -                CORE_0_DEBUG_MODE: u1,
    -                ///  reg_core_0_debug_module_active
    -                CORE_0_DEBUG_MODULE_ACTIVE: u1,
    -                padding: u30,
    -            }),
    -            reserved508: [352]u8,
    -            ///  ASSIST_DEBUG_DATE_REG
    -            DATE: mmio.Mmio(packed struct(u32) {
    -                ///  reg_assist_debug_date
    -                ASSIST_DEBUG_DATE: u28,
    -                padding: u4,
    -            }),
    -        };
    -
    -        ///  DMA (Direct Memory Access) Controller
    -        pub const DMA = extern struct {
    -            ///  DMA_INT_RAW_CH0_REG.
    -            INT_RAW_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 0.
    -                IN_DONE_CH0_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 0. For UHCI0, the raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received and no data error is detected for Rx channel 0.
    -                IN_SUC_EOF_CH0_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when data error is detected only in the case that the peripheral is UHCI0 for Rx channel 0. For other peripherals, this raw interrupt is reserved.
    -                IN_ERR_EOF_CH0_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been transmitted to peripherals for Tx channel 0.
    -                OUT_DONE_CH0_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been read from memory for Tx channel 0.
    -                OUT_EOF_CH0_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when detecting inlink descriptor error, including owner error, the second and third word error of inlink descriptor for Rx channel 0.
    -                IN_DSCR_ERR_CH0_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when detecting outlink descriptor error, including owner error, the second and third word error of outlink descriptor for Tx channel 0.
    -                OUT_DSCR_ERR_CH0_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when Rx buffer pointed by inlink is full and receiving data is not completed, but there is no more inlink for Rx channel 0.
    -                IN_DSCR_EMPTY_CH0_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when data corresponding a outlink (includes one link descriptor or few link descriptors) is transmitted out for Tx channel 0.
    -                OUT_TOTAL_EOF_CH0_INT_RAW: u1,
    -                ///  This raw interrupt bit turns to high level when level 1 fifo of Rx channel 0 is overflow.
    -                INFIFO_OVF_CH0_INT_RAW: u1,
    -                ///  This raw interrupt bit turns to high level when level 1 fifo of Rx channel 0 is underflow.
    -                INFIFO_UDF_CH0_INT_RAW: u1,
    -                ///  This raw interrupt bit turns to high level when level 1 fifo of Tx channel 0 is overflow.
    -                OUTFIFO_OVF_CH0_INT_RAW: u1,
    -                ///  This raw interrupt bit turns to high level when level 1 fifo of Tx channel 0 is underflow.
    -                OUTFIFO_UDF_CH0_INT_RAW: u1,
    -                padding: u19,
    -            }),
    -            ///  DMA_INT_ST_CH0_REG.
    -            INT_ST_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  The raw interrupt status bit for the IN_DONE_CH_INT interrupt.
    -                IN_DONE_CH0_INT_ST: u1,
    -                ///  The raw interrupt status bit for the IN_SUC_EOF_CH_INT interrupt.
    -                IN_SUC_EOF_CH0_INT_ST: u1,
    -                ///  The raw interrupt status bit for the IN_ERR_EOF_CH_INT interrupt.
    -                IN_ERR_EOF_CH0_INT_ST: u1,
    -                ///  The raw interrupt status bit for the OUT_DONE_CH_INT interrupt.
    -                OUT_DONE_CH0_INT_ST: u1,
    -                ///  The raw interrupt status bit for the OUT_EOF_CH_INT interrupt.
    -                OUT_EOF_CH0_INT_ST: u1,
    -                ///  The raw interrupt status bit for the IN_DSCR_ERR_CH_INT interrupt.
    -                IN_DSCR_ERR_CH0_INT_ST: u1,
    -                ///  The raw interrupt status bit for the OUT_DSCR_ERR_CH_INT interrupt.
    -                OUT_DSCR_ERR_CH0_INT_ST: u1,
    -                ///  The raw interrupt status bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    -                IN_DSCR_EMPTY_CH0_INT_ST: u1,
    -                ///  The raw interrupt status bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    -                OUT_TOTAL_EOF_CH0_INT_ST: u1,
    -                ///  The raw interrupt status bit for the INFIFO_OVF_L1_CH_INT interrupt.
    -                INFIFO_OVF_CH0_INT_ST: u1,
    -                ///  The raw interrupt status bit for the INFIFO_UDF_L1_CH_INT interrupt.
    -                INFIFO_UDF_CH0_INT_ST: u1,
    -                ///  The raw interrupt status bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    -                OUTFIFO_OVF_CH0_INT_ST: u1,
    -                ///  The raw interrupt status bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    -                OUTFIFO_UDF_CH0_INT_ST: u1,
    -                padding: u19,
    -            }),
    -            ///  DMA_INT_ENA_CH0_REG.
    -            INT_ENA_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  The interrupt enable bit for the IN_DONE_CH_INT interrupt.
    -                IN_DONE_CH0_INT_ENA: u1,
    -                ///  The interrupt enable bit for the IN_SUC_EOF_CH_INT interrupt.
    -                IN_SUC_EOF_CH0_INT_ENA: u1,
    -                ///  The interrupt enable bit for the IN_ERR_EOF_CH_INT interrupt.
    -                IN_ERR_EOF_CH0_INT_ENA: u1,
    -                ///  The interrupt enable bit for the OUT_DONE_CH_INT interrupt.
    -                OUT_DONE_CH0_INT_ENA: u1,
    -                ///  The interrupt enable bit for the OUT_EOF_CH_INT interrupt.
    -                OUT_EOF_CH0_INT_ENA: u1,
    -                ///  The interrupt enable bit for the IN_DSCR_ERR_CH_INT interrupt.
    -                IN_DSCR_ERR_CH0_INT_ENA: u1,
    -                ///  The interrupt enable bit for the OUT_DSCR_ERR_CH_INT interrupt.
    -                OUT_DSCR_ERR_CH0_INT_ENA: u1,
    -                ///  The interrupt enable bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    -                IN_DSCR_EMPTY_CH0_INT_ENA: u1,
    -                ///  The interrupt enable bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    -                OUT_TOTAL_EOF_CH0_INT_ENA: u1,
    -                ///  The interrupt enable bit for the INFIFO_OVF_L1_CH_INT interrupt.
    -                INFIFO_OVF_CH0_INT_ENA: u1,
    -                ///  The interrupt enable bit for the INFIFO_UDF_L1_CH_INT interrupt.
    -                INFIFO_UDF_CH0_INT_ENA: u1,
    -                ///  The interrupt enable bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    -                OUTFIFO_OVF_CH0_INT_ENA: u1,
    -                ///  The interrupt enable bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    -                OUTFIFO_UDF_CH0_INT_ENA: u1,
    -                padding: u19,
    -            }),
    -            ///  DMA_INT_CLR_CH0_REG.
    -            INT_CLR_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to clear the IN_DONE_CH_INT interrupt.
    -                IN_DONE_CH0_INT_CLR: u1,
    -                ///  Set this bit to clear the IN_SUC_EOF_CH_INT interrupt.
    -                IN_SUC_EOF_CH0_INT_CLR: u1,
    -                ///  Set this bit to clear the IN_ERR_EOF_CH_INT interrupt.
    -                IN_ERR_EOF_CH0_INT_CLR: u1,
    -                ///  Set this bit to clear the OUT_DONE_CH_INT interrupt.
    -                OUT_DONE_CH0_INT_CLR: u1,
    -                ///  Set this bit to clear the OUT_EOF_CH_INT interrupt.
    -                OUT_EOF_CH0_INT_CLR: u1,
    -                ///  Set this bit to clear the IN_DSCR_ERR_CH_INT interrupt.
    -                IN_DSCR_ERR_CH0_INT_CLR: u1,
    -                ///  Set this bit to clear the OUT_DSCR_ERR_CH_INT interrupt.
    -                OUT_DSCR_ERR_CH0_INT_CLR: u1,
    -                ///  Set this bit to clear the IN_DSCR_EMPTY_CH_INT interrupt.
    -                IN_DSCR_EMPTY_CH0_INT_CLR: u1,
    -                ///  Set this bit to clear the OUT_TOTAL_EOF_CH_INT interrupt.
    -                OUT_TOTAL_EOF_CH0_INT_CLR: u1,
    -                ///  Set this bit to clear the INFIFO_OVF_L1_CH_INT interrupt.
    -                INFIFO_OVF_CH0_INT_CLR: u1,
    -                ///  Set this bit to clear the INFIFO_UDF_L1_CH_INT interrupt.
    -                INFIFO_UDF_CH0_INT_CLR: u1,
    -                ///  Set this bit to clear the OUTFIFO_OVF_L1_CH_INT interrupt.
    -                OUTFIFO_OVF_CH0_INT_CLR: u1,
    -                ///  Set this bit to clear the OUTFIFO_UDF_L1_CH_INT interrupt.
    -                OUTFIFO_UDF_CH0_INT_CLR: u1,
    -                padding: u19,
    -            }),
    -            ///  DMA_INT_RAW_CH1_REG.
    -            INT_RAW_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 1.
    -                IN_DONE_CH1_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 1. For UHCI0, the raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received and no data error is detected for Rx channel 1.
    -                IN_SUC_EOF_CH1_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when data error is detected only in the case that the peripheral is UHCI0 for Rx channel 1. For other peripherals, this raw interrupt is reserved.
    -                IN_ERR_EOF_CH1_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been transmitted to peripherals for Tx channel 1.
    -                OUT_DONE_CH1_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been read from memory for Tx channel 1.
    -                OUT_EOF_CH1_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when detecting inlink descriptor error, including owner error, the second and third word error of inlink descriptor for Rx channel 1.
    -                IN_DSCR_ERR_CH1_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when detecting outlink descriptor error, including owner error, the second and third word error of outlink descriptor for Tx channel 1.
    -                OUT_DSCR_ERR_CH1_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when Rx buffer pointed by inlink is full and receiving data is not completed, but there is no more inlink for Rx channel 1.
    -                IN_DSCR_EMPTY_CH1_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when data corresponding a outlink (includes one link descriptor or few link descriptors) is transmitted out for Tx channel 1.
    -                OUT_TOTAL_EOF_CH1_INT_RAW: u1,
    -                ///  This raw interrupt bit turns to high level when level 1 fifo of Rx channel 1 is overflow.
    -                INFIFO_OVF_CH1_INT_RAW: u1,
    -                ///  This raw interrupt bit turns to high level when level 1 fifo of Rx channel 1 is underflow.
    -                INFIFO_UDF_CH1_INT_RAW: u1,
    -                ///  This raw interrupt bit turns to high level when level 1 fifo of Tx channel 1 is overflow.
    -                OUTFIFO_OVF_CH1_INT_RAW: u1,
    -                ///  This raw interrupt bit turns to high level when level 1 fifo of Tx channel 1 is underflow.
    -                OUTFIFO_UDF_CH1_INT_RAW: u1,
    -                padding: u19,
    -            }),
    -            ///  DMA_INT_ST_CH1_REG.
    -            INT_ST_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  The raw interrupt status bit for the IN_DONE_CH_INT interrupt.
    -                IN_DONE_CH1_INT_ST: u1,
    -                ///  The raw interrupt status bit for the IN_SUC_EOF_CH_INT interrupt.
    -                IN_SUC_EOF_CH1_INT_ST: u1,
    -                ///  The raw interrupt status bit for the IN_ERR_EOF_CH_INT interrupt.
    -                IN_ERR_EOF_CH1_INT_ST: u1,
    -                ///  The raw interrupt status bit for the OUT_DONE_CH_INT interrupt.
    -                OUT_DONE_CH1_INT_ST: u1,
    -                ///  The raw interrupt status bit for the OUT_EOF_CH_INT interrupt.
    -                OUT_EOF_CH1_INT_ST: u1,
    -                ///  The raw interrupt status bit for the IN_DSCR_ERR_CH_INT interrupt.
    -                IN_DSCR_ERR_CH1_INT_ST: u1,
    -                ///  The raw interrupt status bit for the OUT_DSCR_ERR_CH_INT interrupt.
    -                OUT_DSCR_ERR_CH1_INT_ST: u1,
    -                ///  The raw interrupt status bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    -                IN_DSCR_EMPTY_CH1_INT_ST: u1,
    -                ///  The raw interrupt status bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    -                OUT_TOTAL_EOF_CH1_INT_ST: u1,
    -                ///  The raw interrupt status bit for the INFIFO_OVF_L1_CH_INT interrupt.
    -                INFIFO_OVF_CH1_INT_ST: u1,
    -                ///  The raw interrupt status bit for the INFIFO_UDF_L1_CH_INT interrupt.
    -                INFIFO_UDF_CH1_INT_ST: u1,
    -                ///  The raw interrupt status bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    -                OUTFIFO_OVF_CH1_INT_ST: u1,
    -                ///  The raw interrupt status bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    -                OUTFIFO_UDF_CH1_INT_ST: u1,
    -                padding: u19,
    -            }),
    -            ///  DMA_INT_ENA_CH1_REG.
    -            INT_ENA_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  The interrupt enable bit for the IN_DONE_CH_INT interrupt.
    -                IN_DONE_CH1_INT_ENA: u1,
    -                ///  The interrupt enable bit for the IN_SUC_EOF_CH_INT interrupt.
    -                IN_SUC_EOF_CH1_INT_ENA: u1,
    -                ///  The interrupt enable bit for the IN_ERR_EOF_CH_INT interrupt.
    -                IN_ERR_EOF_CH1_INT_ENA: u1,
    -                ///  The interrupt enable bit for the OUT_DONE_CH_INT interrupt.
    -                OUT_DONE_CH1_INT_ENA: u1,
    -                ///  The interrupt enable bit for the OUT_EOF_CH_INT interrupt.
    -                OUT_EOF_CH1_INT_ENA: u1,
    -                ///  The interrupt enable bit for the IN_DSCR_ERR_CH_INT interrupt.
    -                IN_DSCR_ERR_CH1_INT_ENA: u1,
    -                ///  The interrupt enable bit for the OUT_DSCR_ERR_CH_INT interrupt.
    -                OUT_DSCR_ERR_CH1_INT_ENA: u1,
    -                ///  The interrupt enable bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    -                IN_DSCR_EMPTY_CH1_INT_ENA: u1,
    -                ///  The interrupt enable bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    -                OUT_TOTAL_EOF_CH1_INT_ENA: u1,
    -                ///  The interrupt enable bit for the INFIFO_OVF_L1_CH_INT interrupt.
    -                INFIFO_OVF_CH1_INT_ENA: u1,
    -                ///  The interrupt enable bit for the INFIFO_UDF_L1_CH_INT interrupt.
    -                INFIFO_UDF_CH1_INT_ENA: u1,
    -                ///  The interrupt enable bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    -                OUTFIFO_OVF_CH1_INT_ENA: u1,
    -                ///  The interrupt enable bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    -                OUTFIFO_UDF_CH1_INT_ENA: u1,
    -                padding: u19,
    -            }),
    -            ///  DMA_INT_CLR_CH1_REG.
    -            INT_CLR_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to clear the IN_DONE_CH_INT interrupt.
    -                IN_DONE_CH1_INT_CLR: u1,
    -                ///  Set this bit to clear the IN_SUC_EOF_CH_INT interrupt.
    -                IN_SUC_EOF_CH1_INT_CLR: u1,
    -                ///  Set this bit to clear the IN_ERR_EOF_CH_INT interrupt.
    -                IN_ERR_EOF_CH1_INT_CLR: u1,
    -                ///  Set this bit to clear the OUT_DONE_CH_INT interrupt.
    -                OUT_DONE_CH1_INT_CLR: u1,
    -                ///  Set this bit to clear the OUT_EOF_CH_INT interrupt.
    -                OUT_EOF_CH1_INT_CLR: u1,
    -                ///  Set this bit to clear the IN_DSCR_ERR_CH_INT interrupt.
    -                IN_DSCR_ERR_CH1_INT_CLR: u1,
    -                ///  Set this bit to clear the OUT_DSCR_ERR_CH_INT interrupt.
    -                OUT_DSCR_ERR_CH1_INT_CLR: u1,
    -                ///  Set this bit to clear the IN_DSCR_EMPTY_CH_INT interrupt.
    -                IN_DSCR_EMPTY_CH1_INT_CLR: u1,
    -                ///  Set this bit to clear the OUT_TOTAL_EOF_CH_INT interrupt.
    -                OUT_TOTAL_EOF_CH1_INT_CLR: u1,
    -                ///  Set this bit to clear the INFIFO_OVF_L1_CH_INT interrupt.
    -                INFIFO_OVF_CH1_INT_CLR: u1,
    -                ///  Set this bit to clear the INFIFO_UDF_L1_CH_INT interrupt.
    -                INFIFO_UDF_CH1_INT_CLR: u1,
    -                ///  Set this bit to clear the OUTFIFO_OVF_L1_CH_INT interrupt.
    -                OUTFIFO_OVF_CH1_INT_CLR: u1,
    -                ///  Set this bit to clear the OUTFIFO_UDF_L1_CH_INT interrupt.
    -                OUTFIFO_UDF_CH1_INT_CLR: u1,
    -                padding: u19,
    -            }),
    -            ///  DMA_INT_RAW_CH2_REG.
    -            INT_RAW_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 2.
    -                IN_DONE_CH2_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received for Rx channel 2. For UHCI0, the raw interrupt bit turns to high level when the last data pointed by one inlink descriptor has been received and no data error is detected for Rx channel 2.
    -                IN_SUC_EOF_CH2_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when data error is detected only in the case that the peripheral is UHCI0 for Rx channel 2. For other peripherals, this raw interrupt is reserved.
    -                IN_ERR_EOF_CH2_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been transmitted to peripherals for Tx channel 2.
    -                OUT_DONE_CH2_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when the last data pointed by one outlink descriptor has been read from memory for Tx channel 2.
    -                OUT_EOF_CH2_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when detecting inlink descriptor error, including owner error, the second and third word error of inlink descriptor for Rx channel 2.
    -                IN_DSCR_ERR_CH2_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when detecting outlink descriptor error, including owner error, the second and third word error of outlink descriptor for Tx channel 2.
    -                OUT_DSCR_ERR_CH2_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when Rx buffer pointed by inlink is full and receiving data is not completed, but there is no more inlink for Rx channel 2.
    -                IN_DSCR_EMPTY_CH2_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when data corresponding a outlink (includes one link descriptor or few link descriptors) is transmitted out for Tx channel 2.
    -                OUT_TOTAL_EOF_CH2_INT_RAW: u1,
    -                ///  This raw interrupt bit turns to high level when level 1 fifo of Rx channel 2 is overflow.
    -                INFIFO_OVF_CH2_INT_RAW: u1,
    -                ///  This raw interrupt bit turns to high level when level 1 fifo of Rx channel 2 is underflow.
    -                INFIFO_UDF_CH2_INT_RAW: u1,
    -                ///  This raw interrupt bit turns to high level when level 1 fifo of Tx channel 2 is overflow.
    -                OUTFIFO_OVF_CH2_INT_RAW: u1,
    -                ///  This raw interrupt bit turns to high level when level 1 fifo of Tx channel 2 is underflow.
    -                OUTFIFO_UDF_CH2_INT_RAW: u1,
    -                padding: u19,
    -            }),
    -            ///  DMA_INT_ST_CH2_REG.
    -            INT_ST_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  The raw interrupt status bit for the IN_DONE_CH_INT interrupt.
    -                IN_DONE_CH2_INT_ST: u1,
    -                ///  The raw interrupt status bit for the IN_SUC_EOF_CH_INT interrupt.
    -                IN_SUC_EOF_CH2_INT_ST: u1,
    -                ///  The raw interrupt status bit for the IN_ERR_EOF_CH_INT interrupt.
    -                IN_ERR_EOF_CH2_INT_ST: u1,
    -                ///  The raw interrupt status bit for the OUT_DONE_CH_INT interrupt.
    -                OUT_DONE_CH2_INT_ST: u1,
    -                ///  The raw interrupt status bit for the OUT_EOF_CH_INT interrupt.
    -                OUT_EOF_CH2_INT_ST: u1,
    -                ///  The raw interrupt status bit for the IN_DSCR_ERR_CH_INT interrupt.
    -                IN_DSCR_ERR_CH2_INT_ST: u1,
    -                ///  The raw interrupt status bit for the OUT_DSCR_ERR_CH_INT interrupt.
    -                OUT_DSCR_ERR_CH2_INT_ST: u1,
    -                ///  The raw interrupt status bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    -                IN_DSCR_EMPTY_CH2_INT_ST: u1,
    -                ///  The raw interrupt status bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    -                OUT_TOTAL_EOF_CH2_INT_ST: u1,
    -                ///  The raw interrupt status bit for the INFIFO_OVF_L1_CH_INT interrupt.
    -                INFIFO_OVF_CH2_INT_ST: u1,
    -                ///  The raw interrupt status bit for the INFIFO_UDF_L1_CH_INT interrupt.
    -                INFIFO_UDF_CH2_INT_ST: u1,
    -                ///  The raw interrupt status bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    -                OUTFIFO_OVF_CH2_INT_ST: u1,
    -                ///  The raw interrupt status bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    -                OUTFIFO_UDF_CH2_INT_ST: u1,
    -                padding: u19,
    -            }),
    -            ///  DMA_INT_ENA_CH2_REG.
    -            INT_ENA_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  The interrupt enable bit for the IN_DONE_CH_INT interrupt.
    -                IN_DONE_CH2_INT_ENA: u1,
    -                ///  The interrupt enable bit for the IN_SUC_EOF_CH_INT interrupt.
    -                IN_SUC_EOF_CH2_INT_ENA: u1,
    -                ///  The interrupt enable bit for the IN_ERR_EOF_CH_INT interrupt.
    -                IN_ERR_EOF_CH2_INT_ENA: u1,
    -                ///  The interrupt enable bit for the OUT_DONE_CH_INT interrupt.
    -                OUT_DONE_CH2_INT_ENA: u1,
    -                ///  The interrupt enable bit for the OUT_EOF_CH_INT interrupt.
    -                OUT_EOF_CH2_INT_ENA: u1,
    -                ///  The interrupt enable bit for the IN_DSCR_ERR_CH_INT interrupt.
    -                IN_DSCR_ERR_CH2_INT_ENA: u1,
    -                ///  The interrupt enable bit for the OUT_DSCR_ERR_CH_INT interrupt.
    -                OUT_DSCR_ERR_CH2_INT_ENA: u1,
    -                ///  The interrupt enable bit for the IN_DSCR_EMPTY_CH_INT interrupt.
    -                IN_DSCR_EMPTY_CH2_INT_ENA: u1,
    -                ///  The interrupt enable bit for the OUT_TOTAL_EOF_CH_INT interrupt.
    -                OUT_TOTAL_EOF_CH2_INT_ENA: u1,
    -                ///  The interrupt enable bit for the INFIFO_OVF_L1_CH_INT interrupt.
    -                INFIFO_OVF_CH2_INT_ENA: u1,
    -                ///  The interrupt enable bit for the INFIFO_UDF_L1_CH_INT interrupt.
    -                INFIFO_UDF_CH2_INT_ENA: u1,
    -                ///  The interrupt enable bit for the OUTFIFO_OVF_L1_CH_INT interrupt.
    -                OUTFIFO_OVF_CH2_INT_ENA: u1,
    -                ///  The interrupt enable bit for the OUTFIFO_UDF_L1_CH_INT interrupt.
    -                OUTFIFO_UDF_CH2_INT_ENA: u1,
    -                padding: u19,
    -            }),
    -            ///  DMA_INT_CLR_CH2_REG.
    -            INT_CLR_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to clear the IN_DONE_CH_INT interrupt.
    -                IN_DONE_CH2_INT_CLR: u1,
    -                ///  Set this bit to clear the IN_SUC_EOF_CH_INT interrupt.
    -                IN_SUC_EOF_CH2_INT_CLR: u1,
    -                ///  Set this bit to clear the IN_ERR_EOF_CH_INT interrupt.
    -                IN_ERR_EOF_CH2_INT_CLR: u1,
    -                ///  Set this bit to clear the OUT_DONE_CH_INT interrupt.
    -                OUT_DONE_CH2_INT_CLR: u1,
    -                ///  Set this bit to clear the OUT_EOF_CH_INT interrupt.
    -                OUT_EOF_CH2_INT_CLR: u1,
    -                ///  Set this bit to clear the IN_DSCR_ERR_CH_INT interrupt.
    -                IN_DSCR_ERR_CH2_INT_CLR: u1,
    -                ///  Set this bit to clear the OUT_DSCR_ERR_CH_INT interrupt.
    -                OUT_DSCR_ERR_CH2_INT_CLR: u1,
    -                ///  Set this bit to clear the IN_DSCR_EMPTY_CH_INT interrupt.
    -                IN_DSCR_EMPTY_CH2_INT_CLR: u1,
    -                ///  Set this bit to clear the OUT_TOTAL_EOF_CH_INT interrupt.
    -                OUT_TOTAL_EOF_CH2_INT_CLR: u1,
    -                ///  Set this bit to clear the INFIFO_OVF_L1_CH_INT interrupt.
    -                INFIFO_OVF_CH2_INT_CLR: u1,
    -                ///  Set this bit to clear the INFIFO_UDF_L1_CH_INT interrupt.
    -                INFIFO_UDF_CH2_INT_CLR: u1,
    -                ///  Set this bit to clear the OUTFIFO_OVF_L1_CH_INT interrupt.
    -                OUTFIFO_OVF_CH2_INT_CLR: u1,
    -                ///  Set this bit to clear the OUTFIFO_UDF_L1_CH_INT interrupt.
    -                OUTFIFO_UDF_CH2_INT_CLR: u1,
    -                padding: u19,
    -            }),
    -            reserved64: [16]u8,
    -            ///  DMA_AHB_TEST_REG.
    -            AHB_TEST: mmio.Mmio(packed struct(u32) {
    -                ///  reserved
    -                AHB_TESTMODE: u3,
    -                reserved4: u1,
    -                ///  reserved
    -                AHB_TESTADDR: u2,
    -                padding: u26,
    -            }),
    -            ///  DMA_MISC_CONF_REG.
    -            MISC_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit, then clear this bit to reset the internal ahb FSM.
    -                AHBM_RST_INTER: u1,
    -                reserved2: u1,
    -                ///  Set this bit to disable priority arbitration function.
    -                ARB_PRI_DIS: u1,
    -                ///  reg_clk_en
    -                CLK_EN: u1,
    -                padding: u28,
    -            }),
    -            ///  DMA_DATE_REG.
    -            DATE: mmio.Mmio(packed struct(u32) {
    -                ///  register version.
    -                DATE: u32,
    -            }),
    -            reserved112: [36]u8,
    -            ///  DMA_IN_CONF0_CH0_REG.
    -            IN_CONF0_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  This bit is used to reset DMA channel 0 Rx FSM and Rx FIFO pointer.
    -                IN_RST_CH0: u1,
    -                ///  reserved
    -                IN_LOOP_TEST_CH0: u1,
    -                ///  Set this bit to 1 to enable INCR burst transfer for Rx channel 0 reading link descriptor when accessing internal SRAM.
    -                INDSCR_BURST_EN_CH0: u1,
    -                ///  Set this bit to 1 to enable INCR burst transfer for Rx channel 0 receiving data when accessing internal SRAM.
    -                IN_DATA_BURST_EN_CH0: u1,
    -                ///  Set this bit 1 to enable automatic transmitting data from memory to memory via DMA.
    -                MEM_TRANS_EN_CH0: u1,
    -                padding: u27,
    -            }),
    -            ///  DMA_IN_CONF1_CH0_REG.
    -            IN_CONF1_CH0: mmio.Mmio(packed struct(u32) {
    -                reserved12: u12,
    -                ///  Set this bit to enable checking the owner attribute of the link descriptor.
    -                IN_CHECK_OWNER_CH0: u1,
    -                padding: u19,
    -            }),
    -            ///  DMA_INFIFO_STATUS_CH0_REG.
    -            INFIFO_STATUS_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  L1 Rx FIFO full signal for Rx channel 0.
    -                INFIFO_FULL_CH0: u1,
    -                ///  L1 Rx FIFO empty signal for Rx channel 0.
    -                INFIFO_EMPTY_CH0: u1,
    -                ///  The register stores the byte number of the data in L1 Rx FIFO for Rx channel 0.
    -                INFIFO_CNT_CH0: u6,
    -                reserved23: u15,
    -                ///  reserved
    -                IN_REMAIN_UNDER_1B_CH0: u1,
    -                ///  reserved
    -                IN_REMAIN_UNDER_2B_CH0: u1,
    -                ///  reserved
    -                IN_REMAIN_UNDER_3B_CH0: u1,
    -                ///  reserved
    -                IN_REMAIN_UNDER_4B_CH0: u1,
    -                ///  reserved
    -                IN_BUF_HUNGRY_CH0: u1,
    -                padding: u4,
    -            }),
    -            ///  DMA_IN_POP_CH0_REG.
    -            IN_POP_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the data popping from DMA FIFO.
    -                INFIFO_RDATA_CH0: u12,
    -                ///  Set this bit to pop data from DMA FIFO.
    -                INFIFO_POP_CH0: u1,
    -                padding: u19,
    -            }),
    -            ///  DMA_IN_LINK_CH0_REG.
    -            IN_LINK_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the 20 least significant bits of the first inlink descriptor's address.
    -                INLINK_ADDR_CH0: u20,
    -                ///  Set this bit to return to current inlink descriptor's address, when there are some errors in current receiving data.
    -                INLINK_AUTO_RET_CH0: u1,
    -                ///  Set this bit to stop dealing with the inlink descriptors.
    -                INLINK_STOP_CH0: u1,
    -                ///  Set this bit to start dealing with the inlink descriptors.
    -                INLINK_START_CH0: u1,
    -                ///  Set this bit to mount a new inlink descriptor.
    -                INLINK_RESTART_CH0: u1,
    -                ///  1: the inlink descriptor's FSM is in idle state. 0: the inlink descriptor's FSM is working.
    -                INLINK_PARK_CH0: u1,
    -                padding: u7,
    -            }),
    -            ///  DMA_IN_STATE_CH0_REG.
    -            IN_STATE_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the current inlink descriptor's address.
    -                INLINK_DSCR_ADDR_CH0: u18,
    -                ///  reserved
    -                IN_DSCR_STATE_CH0: u2,
    -                ///  reserved
    -                IN_STATE_CH0: u3,
    -                padding: u9,
    -            }),
    -            ///  DMA_IN_SUC_EOF_DES_ADDR_CH0_REG.
    -            IN_SUC_EOF_DES_ADDR_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the address of the inlink descriptor when the EOF bit in this descriptor is 1.
    -                IN_SUC_EOF_DES_ADDR_CH0: u32,
    -            }),
    -            ///  DMA_IN_ERR_EOF_DES_ADDR_CH0_REG.
    -            IN_ERR_EOF_DES_ADDR_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the address of the inlink descriptor when there are some errors in current receiving data. Only used when peripheral is UHCI0.
    -                IN_ERR_EOF_DES_ADDR_CH0: u32,
    -            }),
    -            ///  DMA_IN_DSCR_CH0_REG.
    -            IN_DSCR_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  The address of the current inlink descriptor x.
    -                INLINK_DSCR_CH0: u32,
    -            }),
    -            ///  DMA_IN_DSCR_BF0_CH0_REG.
    -            IN_DSCR_BF0_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  The address of the last inlink descriptor x-1.
    -                INLINK_DSCR_BF0_CH0: u32,
    -            }),
    -            ///  DMA_IN_DSCR_BF1_CH0_REG.
    -            IN_DSCR_BF1_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  The address of the second-to-last inlink descriptor x-2.
    -                INLINK_DSCR_BF1_CH0: u32,
    -            }),
    -            ///  DMA_IN_PRI_CH0_REG.
    -            IN_PRI_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  The priority of Rx channel 0. The larger of the value, the higher of the priority.
    -                RX_PRI_CH0: u4,
    -                padding: u28,
    -            }),
    -            ///  DMA_IN_PERI_SEL_CH0_REG.
    -            IN_PERI_SEL_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  This register is used to select peripheral for Rx channel 0. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.
    -                PERI_IN_SEL_CH0: u6,
    -                padding: u26,
    -            }),
    -            reserved208: [44]u8,
    -            ///  DMA_OUT_CONF0_CH0_REG.
    -            OUT_CONF0_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  This bit is used to reset DMA channel 0 Tx FSM and Tx FIFO pointer.
    -                OUT_RST_CH0: u1,
    -                ///  reserved
    -                OUT_LOOP_TEST_CH0: u1,
    -                ///  Set this bit to enable automatic outlink-writeback when all the data in tx buffer has been transmitted.
    -                OUT_AUTO_WRBACK_CH0: u1,
    -                ///  EOF flag generation mode when transmitting data. 1: EOF flag for Tx channel 0 is generated when data need to transmit has been popped from FIFO in DMA
    -                OUT_EOF_MODE_CH0: u1,
    -                ///  Set this bit to 1 to enable INCR burst transfer for Tx channel 0 reading link descriptor when accessing internal SRAM.
    -                OUTDSCR_BURST_EN_CH0: u1,
    -                ///  Set this bit to 1 to enable INCR burst transfer for Tx channel 0 transmitting data when accessing internal SRAM.
    -                OUT_DATA_BURST_EN_CH0: u1,
    -                padding: u26,
    -            }),
    -            ///  DMA_OUT_CONF1_CH0_REG.
    -            OUT_CONF1_CH0: mmio.Mmio(packed struct(u32) {
    -                reserved12: u12,
    -                ///  Set this bit to enable checking the owner attribute of the link descriptor.
    -                OUT_CHECK_OWNER_CH0: u1,
    -                padding: u19,
    -            }),
    -            ///  DMA_OUTFIFO_STATUS_CH0_REG.
    -            OUTFIFO_STATUS_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  L1 Tx FIFO full signal for Tx channel 0.
    -                OUTFIFO_FULL_CH0: u1,
    -                ///  L1 Tx FIFO empty signal for Tx channel 0.
    -                OUTFIFO_EMPTY_CH0: u1,
    -                ///  The register stores the byte number of the data in L1 Tx FIFO for Tx channel 0.
    -                OUTFIFO_CNT_CH0: u6,
    -                reserved23: u15,
    -                ///  reserved
    -                OUT_REMAIN_UNDER_1B_CH0: u1,
    -                ///  reserved
    -                OUT_REMAIN_UNDER_2B_CH0: u1,
    -                ///  reserved
    -                OUT_REMAIN_UNDER_3B_CH0: u1,
    -                ///  reserved
    -                OUT_REMAIN_UNDER_4B_CH0: u1,
    -                padding: u5,
    -            }),
    -            ///  DMA_OUT_PUSH_CH0_REG.
    -            OUT_PUSH_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the data that need to be pushed into DMA FIFO.
    -                OUTFIFO_WDATA_CH0: u9,
    -                ///  Set this bit to push data into DMA FIFO.
    -                OUTFIFO_PUSH_CH0: u1,
    -                padding: u22,
    -            }),
    -            ///  DMA_OUT_LINK_CH0_REG.
    -            OUT_LINK_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the 20 least significant bits of the first outlink descriptor's address.
    -                OUTLINK_ADDR_CH0: u20,
    -                ///  Set this bit to stop dealing with the outlink descriptors.
    -                OUTLINK_STOP_CH0: u1,
    -                ///  Set this bit to start dealing with the outlink descriptors.
    -                OUTLINK_START_CH0: u1,
    -                ///  Set this bit to restart a new outlink from the last address.
    -                OUTLINK_RESTART_CH0: u1,
    -                ///  1: the outlink descriptor's FSM is in idle state. 0: the outlink descriptor's FSM is working.
    -                OUTLINK_PARK_CH0: u1,
    -                padding: u8,
    -            }),
    -            ///  DMA_OUT_STATE_CH0_REG.
    -            OUT_STATE_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the current outlink descriptor's address.
    -                OUTLINK_DSCR_ADDR_CH0: u18,
    -                ///  reserved
    -                OUT_DSCR_STATE_CH0: u2,
    -                ///  reserved
    -                OUT_STATE_CH0: u3,
    -                padding: u9,
    -            }),
    -            ///  DMA_OUT_EOF_DES_ADDR_CH0_REG.
    -            OUT_EOF_DES_ADDR_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the address of the outlink descriptor when the EOF bit in this descriptor is 1.
    -                OUT_EOF_DES_ADDR_CH0: u32,
    -            }),
    -            ///  DMA_OUT_EOF_BFR_DES_ADDR_CH0_REG.
    -            OUT_EOF_BFR_DES_ADDR_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the address of the outlink descriptor before the last outlink descriptor.
    -                OUT_EOF_BFR_DES_ADDR_CH0: u32,
    -            }),
    -            ///  DMA_OUT_DSCR_CH0_REG.
    -            OUT_DSCR_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  The address of the current outlink descriptor y.
    -                OUTLINK_DSCR_CH0: u32,
    -            }),
    -            ///  DMA_OUT_DSCR_BF0_CH0_REG.
    -            OUT_DSCR_BF0_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  The address of the last outlink descriptor y-1.
    -                OUTLINK_DSCR_BF0_CH0: u32,
    -            }),
    -            ///  DMA_OUT_DSCR_BF1_CH0_REG.
    -            OUT_DSCR_BF1_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  The address of the second-to-last inlink descriptor x-2.
    -                OUTLINK_DSCR_BF1_CH0: u32,
    -            }),
    -            ///  DMA_OUT_PRI_CH0_REG.
    -            OUT_PRI_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  The priority of Tx channel 0. The larger of the value, the higher of the priority.
    -                TX_PRI_CH0: u4,
    -                padding: u28,
    -            }),
    -            ///  DMA_OUT_PERI_SEL_CH0_REG.
    -            OUT_PERI_SEL_CH0: mmio.Mmio(packed struct(u32) {
    -                ///  This register is used to select peripheral for Tx channel 0. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.
    -                PERI_OUT_SEL_CH0: u6,
    -                padding: u26,
    -            }),
    -            reserved304: [44]u8,
    -            ///  DMA_IN_CONF0_CH1_REG.
    -            IN_CONF0_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  This bit is used to reset DMA channel 1 Rx FSM and Rx FIFO pointer.
    -                IN_RST_CH1: u1,
    -                ///  reserved
    -                IN_LOOP_TEST_CH1: u1,
    -                ///  Set this bit to 1 to enable INCR burst transfer for Rx channel 1 reading link descriptor when accessing internal SRAM.
    -                INDSCR_BURST_EN_CH1: u1,
    -                ///  Set this bit to 1 to enable INCR burst transfer for Rx channel 1 receiving data when accessing internal SRAM.
    -                IN_DATA_BURST_EN_CH1: u1,
    -                ///  Set this bit 1 to enable automatic transmitting data from memory to memory via DMA.
    -                MEM_TRANS_EN_CH1: u1,
    -                padding: u27,
    -            }),
    -            ///  DMA_IN_CONF1_CH1_REG.
    -            IN_CONF1_CH1: mmio.Mmio(packed struct(u32) {
    -                reserved12: u12,
    -                ///  Set this bit to enable checking the owner attribute of the link descriptor.
    -                IN_CHECK_OWNER_CH1: u1,
    -                padding: u19,
    -            }),
    -            ///  DMA_INFIFO_STATUS_CH1_REG.
    -            INFIFO_STATUS_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  L1 Rx FIFO full signal for Rx channel 1.
    -                INFIFO_FULL_CH1: u1,
    -                ///  L1 Rx FIFO empty signal for Rx channel 1.
    -                INFIFO_EMPTY_CH1: u1,
    -                ///  The register stores the byte number of the data in L1 Rx FIFO for Rx channel 1.
    -                INFIFO_CNT_CH1: u6,
    -                reserved23: u15,
    -                ///  reserved
    -                IN_REMAIN_UNDER_1B_CH1: u1,
    -                ///  reserved
    -                IN_REMAIN_UNDER_2B_CH1: u1,
    -                ///  reserved
    -                IN_REMAIN_UNDER_3B_CH1: u1,
    -                ///  reserved
    -                IN_REMAIN_UNDER_4B_CH1: u1,
    -                ///  reserved
    -                IN_BUF_HUNGRY_CH1: u1,
    -                padding: u4,
    -            }),
    -            ///  DMA_IN_POP_CH1_REG.
    -            IN_POP_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the data popping from DMA FIFO.
    -                INFIFO_RDATA_CH1: u12,
    -                ///  Set this bit to pop data from DMA FIFO.
    -                INFIFO_POP_CH1: u1,
    -                padding: u19,
    -            }),
    -            ///  DMA_IN_LINK_CH1_REG.
    -            IN_LINK_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the 20 least significant bits of the first inlink descriptor's address.
    -                INLINK_ADDR_CH1: u20,
    -                ///  Set this bit to return to current inlink descriptor's address, when there are some errors in current receiving data.
    -                INLINK_AUTO_RET_CH1: u1,
    -                ///  Set this bit to stop dealing with the inlink descriptors.
    -                INLINK_STOP_CH1: u1,
    -                ///  Set this bit to start dealing with the inlink descriptors.
    -                INLINK_START_CH1: u1,
    -                ///  Set this bit to mount a new inlink descriptor.
    -                INLINK_RESTART_CH1: u1,
    -                ///  1: the inlink descriptor's FSM is in idle state. 0: the inlink descriptor's FSM is working.
    -                INLINK_PARK_CH1: u1,
    -                padding: u7,
    -            }),
    -            ///  DMA_IN_STATE_CH1_REG.
    -            IN_STATE_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the current inlink descriptor's address.
    -                INLINK_DSCR_ADDR_CH1: u18,
    -                ///  reserved
    -                IN_DSCR_STATE_CH1: u2,
    -                ///  reserved
    -                IN_STATE_CH1: u3,
    -                padding: u9,
    -            }),
    -            ///  DMA_IN_SUC_EOF_DES_ADDR_CH1_REG.
    -            IN_SUC_EOF_DES_ADDR_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the address of the inlink descriptor when the EOF bit in this descriptor is 1.
    -                IN_SUC_EOF_DES_ADDR_CH1: u32,
    -            }),
    -            ///  DMA_IN_ERR_EOF_DES_ADDR_CH1_REG.
    -            IN_ERR_EOF_DES_ADDR_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the address of the inlink descriptor when there are some errors in current receiving data. Only used when peripheral is UHCI0.
    -                IN_ERR_EOF_DES_ADDR_CH1: u32,
    -            }),
    -            ///  DMA_IN_DSCR_CH1_REG.
    -            IN_DSCR_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  The address of the current inlink descriptor x.
    -                INLINK_DSCR_CH1: u32,
    -            }),
    -            ///  DMA_IN_DSCR_BF0_CH1_REG.
    -            IN_DSCR_BF0_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  The address of the last inlink descriptor x-1.
    -                INLINK_DSCR_BF0_CH1: u32,
    -            }),
    -            ///  DMA_IN_DSCR_BF1_CH1_REG.
    -            IN_DSCR_BF1_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  The address of the second-to-last inlink descriptor x-2.
    -                INLINK_DSCR_BF1_CH1: u32,
    -            }),
    -            ///  DMA_IN_PRI_CH1_REG.
    -            IN_PRI_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  The priority of Rx channel 1. The larger of the value, the higher of the priority.
    -                RX_PRI_CH1: u4,
    -                padding: u28,
    -            }),
    -            ///  DMA_IN_PERI_SEL_CH1_REG.
    -            IN_PERI_SEL_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  This register is used to select peripheral for Rx channel 1. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.
    -                PERI_IN_SEL_CH1: u6,
    -                padding: u26,
    -            }),
    -            reserved400: [44]u8,
    -            ///  DMA_OUT_CONF0_CH1_REG.
    -            OUT_CONF0_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  This bit is used to reset DMA channel 1 Tx FSM and Tx FIFO pointer.
    -                OUT_RST_CH1: u1,
    -                ///  reserved
    -                OUT_LOOP_TEST_CH1: u1,
    -                ///  Set this bit to enable automatic outlink-writeback when all the data in tx buffer has been transmitted.
    -                OUT_AUTO_WRBACK_CH1: u1,
    -                ///  EOF flag generation mode when transmitting data. 1: EOF flag for Tx channel 1 is generated when data need to transmit has been popped from FIFO in DMA
    -                OUT_EOF_MODE_CH1: u1,
    -                ///  Set this bit to 1 to enable INCR burst transfer for Tx channel 1 reading link descriptor when accessing internal SRAM.
    -                OUTDSCR_BURST_EN_CH1: u1,
    -                ///  Set this bit to 1 to enable INCR burst transfer for Tx channel 1 transmitting data when accessing internal SRAM.
    -                OUT_DATA_BURST_EN_CH1: u1,
    -                padding: u26,
    -            }),
    -            ///  DMA_OUT_CONF1_CH1_REG.
    -            OUT_CONF1_CH1: mmio.Mmio(packed struct(u32) {
    -                reserved12: u12,
    -                ///  Set this bit to enable checking the owner attribute of the link descriptor.
    -                OUT_CHECK_OWNER_CH1: u1,
    -                padding: u19,
    -            }),
    -            ///  DMA_OUTFIFO_STATUS_CH1_REG.
    -            OUTFIFO_STATUS_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  L1 Tx FIFO full signal for Tx channel 1.
    -                OUTFIFO_FULL_CH1: u1,
    -                ///  L1 Tx FIFO empty signal for Tx channel 1.
    -                OUTFIFO_EMPTY_CH1: u1,
    -                ///  The register stores the byte number of the data in L1 Tx FIFO for Tx channel 1.
    -                OUTFIFO_CNT_CH1: u6,
    -                reserved23: u15,
    -                ///  reserved
    -                OUT_REMAIN_UNDER_1B_CH1: u1,
    -                ///  reserved
    -                OUT_REMAIN_UNDER_2B_CH1: u1,
    -                ///  reserved
    -                OUT_REMAIN_UNDER_3B_CH1: u1,
    -                ///  reserved
    -                OUT_REMAIN_UNDER_4B_CH1: u1,
    -                padding: u5,
    -            }),
    -            ///  DMA_OUT_PUSH_CH1_REG.
    -            OUT_PUSH_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the data that need to be pushed into DMA FIFO.
    -                OUTFIFO_WDATA_CH1: u9,
    -                ///  Set this bit to push data into DMA FIFO.
    -                OUTFIFO_PUSH_CH1: u1,
    -                padding: u22,
    -            }),
    -            ///  DMA_OUT_LINK_CH1_REG.
    -            OUT_LINK_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the 20 least significant bits of the first outlink descriptor's address.
    -                OUTLINK_ADDR_CH1: u20,
    -                ///  Set this bit to stop dealing with the outlink descriptors.
    -                OUTLINK_STOP_CH1: u1,
    -                ///  Set this bit to start dealing with the outlink descriptors.
    -                OUTLINK_START_CH1: u1,
    -                ///  Set this bit to restart a new outlink from the last address.
    -                OUTLINK_RESTART_CH1: u1,
    -                ///  1: the outlink descriptor's FSM is in idle state. 0: the outlink descriptor's FSM is working.
    -                OUTLINK_PARK_CH1: u1,
    -                padding: u8,
    -            }),
    -            ///  DMA_OUT_STATE_CH1_REG.
    -            OUT_STATE_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the current outlink descriptor's address.
    -                OUTLINK_DSCR_ADDR_CH1: u18,
    -                ///  reserved
    -                OUT_DSCR_STATE_CH1: u2,
    -                ///  reserved
    -                OUT_STATE_CH1: u3,
    -                padding: u9,
    -            }),
    -            ///  DMA_OUT_EOF_DES_ADDR_CH1_REG.
    -            OUT_EOF_DES_ADDR_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the address of the outlink descriptor when the EOF bit in this descriptor is 1.
    -                OUT_EOF_DES_ADDR_CH1: u32,
    -            }),
    -            ///  DMA_OUT_EOF_BFR_DES_ADDR_CH1_REG.
    -            OUT_EOF_BFR_DES_ADDR_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the address of the outlink descriptor before the last outlink descriptor.
    -                OUT_EOF_BFR_DES_ADDR_CH1: u32,
    -            }),
    -            ///  DMA_OUT_DSCR_CH1_REG.
    -            OUT_DSCR_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  The address of the current outlink descriptor y.
    -                OUTLINK_DSCR_CH1: u32,
    -            }),
    -            ///  DMA_OUT_DSCR_BF0_CH1_REG.
    -            OUT_DSCR_BF0_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  The address of the last outlink descriptor y-1.
    -                OUTLINK_DSCR_BF0_CH1: u32,
    -            }),
    -            ///  DMA_OUT_DSCR_BF1_CH1_REG.
    -            OUT_DSCR_BF1_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  The address of the second-to-last inlink descriptor x-2.
    -                OUTLINK_DSCR_BF1_CH1: u32,
    -            }),
    -            ///  DMA_OUT_PRI_CH1_REG.
    -            OUT_PRI_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  The priority of Tx channel 1. The larger of the value, the higher of the priority.
    -                TX_PRI_CH1: u4,
    -                padding: u28,
    -            }),
    -            ///  DMA_OUT_PERI_SEL_CH1_REG.
    -            OUT_PERI_SEL_CH1: mmio.Mmio(packed struct(u32) {
    -                ///  This register is used to select peripheral for Tx channel 1. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.
    -                PERI_OUT_SEL_CH1: u6,
    -                padding: u26,
    -            }),
    -            reserved496: [44]u8,
    -            ///  DMA_IN_CONF0_CH2_REG.
    -            IN_CONF0_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  This bit is used to reset DMA channel 2 Rx FSM and Rx FIFO pointer.
    -                IN_RST_CH2: u1,
    -                ///  reserved
    -                IN_LOOP_TEST_CH2: u1,
    -                ///  Set this bit to 1 to enable INCR burst transfer for Rx channel 2 reading link descriptor when accessing internal SRAM.
    -                INDSCR_BURST_EN_CH2: u1,
    -                ///  Set this bit to 1 to enable INCR burst transfer for Rx channel 2 receiving data when accessing internal SRAM.
    -                IN_DATA_BURST_EN_CH2: u1,
    -                ///  Set this bit 1 to enable automatic transmitting data from memory to memory via DMA.
    -                MEM_TRANS_EN_CH2: u1,
    -                padding: u27,
    -            }),
    -            ///  DMA_IN_CONF1_CH2_REG.
    -            IN_CONF1_CH2: mmio.Mmio(packed struct(u32) {
    -                reserved12: u12,
    -                ///  Set this bit to enable checking the owner attribute of the link descriptor.
    -                IN_CHECK_OWNER_CH2: u1,
    -                padding: u19,
    -            }),
    -            ///  DMA_INFIFO_STATUS_CH2_REG.
    -            INFIFO_STATUS_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  L1 Rx FIFO full signal for Rx channel 2.
    -                INFIFO_FULL_CH2: u1,
    -                ///  L1 Rx FIFO empty signal for Rx channel 2.
    -                INFIFO_EMPTY_CH2: u1,
    -                ///  The register stores the byte number of the data in L1 Rx FIFO for Rx channel 2.
    -                INFIFO_CNT_CH2: u6,
    -                reserved23: u15,
    -                ///  reserved
    -                IN_REMAIN_UNDER_1B_CH2: u1,
    -                ///  reserved
    -                IN_REMAIN_UNDER_2B_CH2: u1,
    -                ///  reserved
    -                IN_REMAIN_UNDER_3B_CH2: u1,
    -                ///  reserved
    -                IN_REMAIN_UNDER_4B_CH2: u1,
    -                ///  reserved
    -                IN_BUF_HUNGRY_CH2: u1,
    -                padding: u4,
    -            }),
    -            ///  DMA_IN_POP_CH2_REG.
    -            IN_POP_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the data popping from DMA FIFO.
    -                INFIFO_RDATA_CH2: u12,
    -                ///  Set this bit to pop data from DMA FIFO.
    -                INFIFO_POP_CH2: u1,
    -                padding: u19,
    -            }),
    -            ///  DMA_IN_LINK_CH2_REG.
    -            IN_LINK_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the 20 least significant bits of the first inlink descriptor's address.
    -                INLINK_ADDR_CH2: u20,
    -                ///  Set this bit to return to current inlink descriptor's address, when there are some errors in current receiving data.
    -                INLINK_AUTO_RET_CH2: u1,
    -                ///  Set this bit to stop dealing with the inlink descriptors.
    -                INLINK_STOP_CH2: u1,
    -                ///  Set this bit to start dealing with the inlink descriptors.
    -                INLINK_START_CH2: u1,
    -                ///  Set this bit to mount a new inlink descriptor.
    -                INLINK_RESTART_CH2: u1,
    -                ///  1: the inlink descriptor's FSM is in idle state. 0: the inlink descriptor's FSM is working.
    -                INLINK_PARK_CH2: u1,
    -                padding: u7,
    -            }),
    -            ///  DMA_IN_STATE_CH2_REG.
    -            IN_STATE_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the current inlink descriptor's address.
    -                INLINK_DSCR_ADDR_CH2: u18,
    -                ///  reserved
    -                IN_DSCR_STATE_CH2: u2,
    -                ///  reserved
    -                IN_STATE_CH2: u3,
    -                padding: u9,
    -            }),
    -            ///  DMA_IN_SUC_EOF_DES_ADDR_CH2_REG.
    -            IN_SUC_EOF_DES_ADDR_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the address of the inlink descriptor when the EOF bit in this descriptor is 1.
    -                IN_SUC_EOF_DES_ADDR_CH2: u32,
    -            }),
    -            ///  DMA_IN_ERR_EOF_DES_ADDR_CH2_REG.
    -            IN_ERR_EOF_DES_ADDR_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the address of the inlink descriptor when there are some errors in current receiving data. Only used when peripheral is UHCI0.
    -                IN_ERR_EOF_DES_ADDR_CH2: u32,
    -            }),
    -            ///  DMA_IN_DSCR_CH2_REG.
    -            IN_DSCR_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  The address of the current inlink descriptor x.
    -                INLINK_DSCR_CH2: u32,
    -            }),
    -            ///  DMA_IN_DSCR_BF0_CH2_REG.
    -            IN_DSCR_BF0_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  The address of the last inlink descriptor x-1.
    -                INLINK_DSCR_BF0_CH2: u32,
    -            }),
    -            ///  DMA_IN_DSCR_BF1_CH2_REG.
    -            IN_DSCR_BF1_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  The address of the second-to-last inlink descriptor x-2.
    -                INLINK_DSCR_BF1_CH2: u32,
    -            }),
    -            ///  DMA_IN_PRI_CH2_REG.
    -            IN_PRI_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  The priority of Rx channel 2. The larger of the value, the higher of the priority.
    -                RX_PRI_CH2: u4,
    -                padding: u28,
    -            }),
    -            ///  DMA_IN_PERI_SEL_CH2_REG.
    -            IN_PERI_SEL_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  This register is used to select peripheral for Rx channel 2. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.
    -                PERI_IN_SEL_CH2: u6,
    -                padding: u26,
    -            }),
    -            reserved592: [44]u8,
    -            ///  DMA_OUT_CONF0_CH2_REG.
    -            OUT_CONF0_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  This bit is used to reset DMA channel 2 Tx FSM and Tx FIFO pointer.
    -                OUT_RST_CH2: u1,
    -                ///  reserved
    -                OUT_LOOP_TEST_CH2: u1,
    -                ///  Set this bit to enable automatic outlink-writeback when all the data in tx buffer has been transmitted.
    -                OUT_AUTO_WRBACK_CH2: u1,
    -                ///  EOF flag generation mode when transmitting data. 1: EOF flag for Tx channel 2 is generated when data need to transmit has been popped from FIFO in DMA
    -                OUT_EOF_MODE_CH2: u1,
    -                ///  Set this bit to 1 to enable INCR burst transfer for Tx channel 2 reading link descriptor when accessing internal SRAM.
    -                OUTDSCR_BURST_EN_CH2: u1,
    -                ///  Set this bit to 1 to enable INCR burst transfer for Tx channel 2 transmitting data when accessing internal SRAM.
    -                OUT_DATA_BURST_EN_CH2: u1,
    -                padding: u26,
    -            }),
    -            ///  DMA_OUT_CONF1_CH2_REG.
    -            OUT_CONF1_CH2: mmio.Mmio(packed struct(u32) {
    -                reserved12: u12,
    -                ///  Set this bit to enable checking the owner attribute of the link descriptor.
    -                OUT_CHECK_OWNER_CH2: u1,
    -                padding: u19,
    -            }),
    -            ///  DMA_OUTFIFO_STATUS_CH2_REG.
    -            OUTFIFO_STATUS_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  L1 Tx FIFO full signal for Tx channel 2.
    -                OUTFIFO_FULL_CH2: u1,
    -                ///  L1 Tx FIFO empty signal for Tx channel 2.
    -                OUTFIFO_EMPTY_CH2: u1,
    -                ///  The register stores the byte number of the data in L1 Tx FIFO for Tx channel 2.
    -                OUTFIFO_CNT_CH2: u6,
    -                reserved23: u15,
    -                ///  reserved
    -                OUT_REMAIN_UNDER_1B_CH2: u1,
    -                ///  reserved
    -                OUT_REMAIN_UNDER_2B_CH2: u1,
    -                ///  reserved
    -                OUT_REMAIN_UNDER_3B_CH2: u1,
    -                ///  reserved
    -                OUT_REMAIN_UNDER_4B_CH2: u1,
    -                padding: u5,
    -            }),
    -            ///  DMA_OUT_PUSH_CH2_REG.
    -            OUT_PUSH_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the data that need to be pushed into DMA FIFO.
    -                OUTFIFO_WDATA_CH2: u9,
    -                ///  Set this bit to push data into DMA FIFO.
    -                OUTFIFO_PUSH_CH2: u1,
    -                padding: u22,
    -            }),
    -            ///  DMA_OUT_LINK_CH2_REG.
    -            OUT_LINK_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the 20 least significant bits of the first outlink descriptor's address.
    -                OUTLINK_ADDR_CH2: u20,
    -                ///  Set this bit to stop dealing with the outlink descriptors.
    -                OUTLINK_STOP_CH2: u1,
    -                ///  Set this bit to start dealing with the outlink descriptors.
    -                OUTLINK_START_CH2: u1,
    -                ///  Set this bit to restart a new outlink from the last address.
    -                OUTLINK_RESTART_CH2: u1,
    -                ///  1: the outlink descriptor's FSM is in idle state. 0: the outlink descriptor's FSM is working.
    -                OUTLINK_PARK_CH2: u1,
    -                padding: u8,
    -            }),
    -            ///  DMA_OUT_STATE_CH2_REG.
    -            OUT_STATE_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the current outlink descriptor's address.
    -                OUTLINK_DSCR_ADDR_CH2: u18,
    -                ///  reserved
    -                OUT_DSCR_STATE_CH2: u2,
    -                ///  reserved
    -                OUT_STATE_CH2: u3,
    -                padding: u9,
    -            }),
    -            ///  DMA_OUT_EOF_DES_ADDR_CH2_REG.
    -            OUT_EOF_DES_ADDR_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the address of the outlink descriptor when the EOF bit in this descriptor is 1.
    -                OUT_EOF_DES_ADDR_CH2: u32,
    -            }),
    -            ///  DMA_OUT_EOF_BFR_DES_ADDR_CH2_REG.
    -            OUT_EOF_BFR_DES_ADDR_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the address of the outlink descriptor before the last outlink descriptor.
    -                OUT_EOF_BFR_DES_ADDR_CH2: u32,
    -            }),
    -            ///  DMA_OUT_DSCR_CH2_REG.
    -            OUT_DSCR_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  The address of the current outlink descriptor y.
    -                OUTLINK_DSCR_CH2: u32,
    -            }),
    -            ///  DMA_OUT_DSCR_BF0_CH2_REG.
    -            OUT_DSCR_BF0_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  The address of the last outlink descriptor y-1.
    -                OUTLINK_DSCR_BF0_CH2: u32,
    -            }),
    -            ///  DMA_OUT_DSCR_BF1_CH2_REG.
    -            OUT_DSCR_BF1_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  The address of the second-to-last inlink descriptor x-2.
    -                OUTLINK_DSCR_BF1_CH2: u32,
    -            }),
    -            ///  DMA_OUT_PRI_CH2_REG.
    -            OUT_PRI_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  The priority of Tx channel 2. The larger of the value, the higher of the priority.
    -                TX_PRI_CH2: u4,
    -                padding: u28,
    -            }),
    -            ///  DMA_OUT_PERI_SEL_CH2_REG.
    -            OUT_PERI_SEL_CH2: mmio.Mmio(packed struct(u32) {
    -                ///  This register is used to select peripheral for Tx channel 2. 0:SPI2. 1: reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: ADC_DAC.
    -                PERI_OUT_SEL_CH2: u6,
    -                padding: u26,
    -            }),
    -        };
    -
    -        ///  Digital Signature
    -        pub const DS = extern struct {
    -            ///  memory that stores Y
    -            Y_MEM: [512]u8,
    -            ///  memory that stores M
    -            M_MEM: [512]u8,
    -            ///  memory that stores Rb
    -            RB_MEM: [512]u8,
    -            ///  memory that stores BOX
    -            BOX_MEM: [48]u8,
    -            reserved2048: [464]u8,
    -            ///  memory that stores X
    -            X_MEM: [512]u8,
    -            ///  memory that stores Z
    -            Z_MEM: [512]u8,
    -            reserved3584: [512]u8,
    -            ///  DS start control register
    -            SET_START: mmio.Mmio(packed struct(u32) {
    -                ///  set this bit to start DS operation.
    -                SET_START: u1,
    -                padding: u31,
    -            }),
    -            ///  DS continue control register
    -            SET_CONTINUE: mmio.Mmio(packed struct(u32) {
    -                ///  set this bit to continue DS operation.
    -                SET_CONTINUE: u1,
    -                padding: u31,
    -            }),
    -            ///  DS finish control register
    -            SET_FINISH: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to finish DS process.
    -                SET_FINISH: u1,
    -                padding: u31,
    -            }),
    -            ///  DS query busy register
    -            QUERY_BUSY: mmio.Mmio(packed struct(u32) {
    -                ///  digital signature state. 1'b0: idle, 1'b1: busy
    -                QUERY_BUSY: u1,
    -                padding: u31,
    -            }),
    -            ///  DS query key-wrong counter register
    -            QUERY_KEY_WRONG: mmio.Mmio(packed struct(u32) {
    -                ///  digital signature key wrong counter
    -                QUERY_KEY_WRONG: u4,
    -                padding: u28,
    -            }),
    -            ///  DS query check result register
    -            QUERY_CHECK: mmio.Mmio(packed struct(u32) {
    -                ///  MD checkout result. 1'b0: MD check pass, 1'b1: MD check fail
    -                MD_ERROR: u1,
    -                ///  padding checkout result. 1'b0: a good padding, 1'b1: a bad padding
    -                PADDING_BAD: u1,
    -                padding: u30,
    -            }),
    -            reserved3616: [8]u8,
    -            ///  DS version control register
    -            DATE: mmio.Mmio(packed struct(u32) {
    -                ///  ds version information
    -                DATE: u30,
    -                padding: u2,
    -            }),
    -        };
    -
    -        ///  eFuse Controller
    -        pub const EFUSE = extern struct {
    -            ///  Register 0 that stores data to be programmed.
    -            PGM_DATA0: mmio.Mmio(packed struct(u32) {
    -                ///  The content of the 0th 32-bit data to be programmed.
    -                PGM_DATA_0: u32,
    -            }),
    -            ///  Register 1 that stores data to be programmed.
    -            PGM_DATA1: mmio.Mmio(packed struct(u32) {
    -                ///  The content of the 1st 32-bit data to be programmed.
    -                PGM_DATA_1: u32,
    -            }),
    -            ///  Register 2 that stores data to be programmed.
    -            PGM_DATA2: mmio.Mmio(packed struct(u32) {
    -                ///  The content of the 2nd 32-bit data to be programmed.
    -                PGM_DATA_2: u32,
    -            }),
    -            ///  Register 3 that stores data to be programmed.
    -            PGM_DATA3: mmio.Mmio(packed struct(u32) {
    -                ///  The content of the 3rd 32-bit data to be programmed.
    -                PGM_DATA_3: u32,
    -            }),
    -            ///  Register 4 that stores data to be programmed.
    -            PGM_DATA4: mmio.Mmio(packed struct(u32) {
    -                ///  The content of the 4th 32-bit data to be programmed.
    -                PGM_DATA_4: u32,
    -            }),
    -            ///  Register 5 that stores data to be programmed.
    -            PGM_DATA5: mmio.Mmio(packed struct(u32) {
    -                ///  The content of the 5th 32-bit data to be programmed.
    -                PGM_DATA_5: u32,
    -            }),
    -            ///  Register 6 that stores data to be programmed.
    -            PGM_DATA6: mmio.Mmio(packed struct(u32) {
    -                ///  The content of the 6th 32-bit data to be programmed.
    -                PGM_DATA_6: u32,
    -            }),
    -            ///  Register 7 that stores data to be programmed.
    -            PGM_DATA7: mmio.Mmio(packed struct(u32) {
    -                ///  The content of the 7th 32-bit data to be programmed.
    -                PGM_DATA_7: u32,
    -            }),
    -            ///  Register 0 that stores the RS code to be programmed.
    -            PGM_CHECK_VALUE0: mmio.Mmio(packed struct(u32) {
    -                ///  The content of the 0th 32-bit RS code to be programmed.
    -                PGM_RS_DATA_0: u32,
    -            }),
    -            ///  Register 1 that stores the RS code to be programmed.
    -            PGM_CHECK_VALUE1: mmio.Mmio(packed struct(u32) {
    -                ///  The content of the 1st 32-bit RS code to be programmed.
    -                PGM_RS_DATA_1: u32,
    -            }),
    -            ///  Register 2 that stores the RS code to be programmed.
    -            PGM_CHECK_VALUE2: mmio.Mmio(packed struct(u32) {
    -                ///  The content of the 2nd 32-bit RS code to be programmed.
    -                PGM_RS_DATA_2: u32,
    -            }),
    -            ///  BLOCK0 data register 0.
    -            RD_WR_DIS: mmio.Mmio(packed struct(u32) {
    -                ///  Disable programming of individual eFuses.
    -                WR_DIS: u32,
    -            }),
    -            ///  BLOCK0 data register 1.
    -            RD_REPEAT_DATA0: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to disable reading from BlOCK4-10.
    -                RD_DIS: u7,
    -                ///  Set this bit to disable boot from RTC RAM.
    -                DIS_RTC_RAM_BOOT: u1,
    -                ///  Set this bit to disable Icache.
    -                DIS_ICACHE: u1,
    -                ///  Set this bit to disable function of usb switch to jtag in module of usb device.
    -                DIS_USB_JTAG: u1,
    -                ///  Set this bit to disable Icache in download mode (boot_mode[3:0] is 0, 1, 2, 3, 6, 7).
    -                DIS_DOWNLOAD_ICACHE: u1,
    -                ///  Set this bit to disable usb device.
    -                DIS_USB_DEVICE: u1,
    -                ///  Set this bit to disable the function that forces chip into download mode.
    -                DIS_FORCE_DOWNLOAD: u1,
    -                ///  Reserved (used for four backups method).
    -                RPT4_RESERVED6: u1,
    -                ///  Set this bit to disable CAN function.
    -                DIS_CAN: u1,
    -                ///  Set this bit to enable selection between usb_to_jtag and pad_to_jtag through strapping gpio10 when both reg_dis_usb_jtag and reg_dis_pad_jtag are equal to 0.
    -                JTAG_SEL_ENABLE: u1,
    -                ///  Set these bits to disable JTAG in the soft way (odd number 1 means disable ). JTAG can be enabled in HMAC module.
    -                SOFT_DIS_JTAG: u3,
    -                ///  Set this bit to disable JTAG in the hard way. JTAG is disabled permanently.
    -                DIS_PAD_JTAG: u1,
    -                ///  Set this bit to disable flash encryption when in download boot modes.
    -                DIS_DOWNLOAD_MANUAL_ENCRYPT: u1,
    -                ///  Controls single-end input threshold vrefh, 1.76 V to 2 V with step of 80 mV, stored in eFuse.
    -                USB_DREFH: u2,
    -                ///  Controls single-end input threshold vrefl, 0.8 V to 1.04 V with step of 80 mV, stored in eFuse.
    -                USB_DREFL: u2,
    -                ///  Set this bit to exchange USB D+ and D- pins.
    -                USB_EXCHG_PINS: u1,
    -                ///  Set this bit to vdd spi pin function as gpio.
    -                VDD_SPI_AS_GPIO: u1,
    -                ///  Enable btlc gpio.
    -                BTLC_GPIO_ENABLE: u2,
    -                ///  Set this bit to enable power glitch function.
    -                POWERGLITCH_EN: u1,
    -                ///  Sample delay configuration of power glitch.
    -                POWER_GLITCH_DSENSE: u2,
    -            }),
    -            ///  BLOCK0 data register 2.
    -            RD_REPEAT_DATA1: mmio.Mmio(packed struct(u32) {
    -                ///  Reserved (used for four backups method).
    -                RPT4_RESERVED2: u16,
    -                ///  Selects RTC watchdog timeout threshold, in unit of slow clock cycle. 0: 40000. 1: 80000. 2: 160000. 3:320000.
    -                WDT_DELAY_SEL: u2,
    -                ///  Set this bit to enable SPI boot encrypt/decrypt. Odd number of 1: enable. even number of 1: disable.
    -                SPI_BOOT_CRYPT_CNT: u3,
    -                ///  Set this bit to enable revoking first secure boot key.
    -                SECURE_BOOT_KEY_REVOKE0: u1,
    -                ///  Set this bit to enable revoking second secure boot key.
    -                SECURE_BOOT_KEY_REVOKE1: u1,
    -                ///  Set this bit to enable revoking third secure boot key.
    -                SECURE_BOOT_KEY_REVOKE2: u1,
    -                ///  Purpose of Key0.
    -                KEY_PURPOSE_0: u4,
    -                ///  Purpose of Key1.
    -                KEY_PURPOSE_1: u4,
    -            }),
    -            ///  BLOCK0 data register 3.
    -            RD_REPEAT_DATA2: mmio.Mmio(packed struct(u32) {
    -                ///  Purpose of Key2.
    -                KEY_PURPOSE_2: u4,
    -                ///  Purpose of Key3.
    -                KEY_PURPOSE_3: u4,
    -                ///  Purpose of Key4.
    -                KEY_PURPOSE_4: u4,
    -                ///  Purpose of Key5.
    -                KEY_PURPOSE_5: u4,
    -                ///  Reserved (used for four backups method).
    -                RPT4_RESERVED3: u4,
    -                ///  Set this bit to enable secure boot.
    -                SECURE_BOOT_EN: u1,
    -                ///  Set this bit to enable revoking aggressive secure boot.
    -                SECURE_BOOT_AGGRESSIVE_REVOKE: u1,
    -                ///  Reserved (used for four backups method).
    -                RPT4_RESERVED0: u6,
    -                ///  Configures flash waiting time after power-up, in unit of ms. If the value is less than 15, the waiting time is the configurable value; Otherwise, the waiting time is twice the configurable value.
    -                FLASH_TPUW: u4,
    -            }),
    -            ///  BLOCK0 data register 4.
    -            RD_REPEAT_DATA3: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to disable download mode (boot_mode[3:0] = 0, 1, 2, 3, 6, 7).
    -                DIS_DOWNLOAD_MODE: u1,
    -                ///  Set this bit to disable Legacy SPI boot mode (boot_mode[3:0] = 4).
    -                DIS_LEGACY_SPI_BOOT: u1,
    -                ///  Selectes the default UART print channel. 0: UART0. 1: UART1.
    -                UART_PRINT_CHANNEL: u1,
    -                ///  Set ECC mode in ROM, 0: ROM would Enable Flash ECC 16to18 byte mode. 1:ROM would use 16to17 byte mode.
    -                FLASH_ECC_MODE: u1,
    -                ///  Set this bit to disable UART download mode through USB.
    -                DIS_USB_DOWNLOAD_MODE: u1,
    -                ///  Set this bit to enable secure UART download mode.
    -                ENABLE_SECURITY_DOWNLOAD: u1,
    -                ///  Set the default UARTboot message output mode. 00: Enabled. 01: Enabled when GPIO8 is low at reset. 10: Enabled when GPIO8 is high at reset. 11:disabled.
    -                UART_PRINT_CONTROL: u2,
    -                ///  GPIO33-GPIO37 power supply selection in ROM code. 0: VDD3P3_CPU. 1: VDD_SPI.
    -                PIN_POWER_SELECTION: u1,
    -                ///  Set the maximum lines of SPI flash. 0: four lines. 1: eight lines.
    -                FLASH_TYPE: u1,
    -                ///  Set Flash page size.
    -                FLASH_PAGE_SIZE: u2,
    -                ///  Set 1 to enable ECC for flash boot.
    -                FLASH_ECC_EN: u1,
    -                ///  Set this bit to force ROM code to send a resume command during SPI boot.
    -                FORCE_SEND_RESUME: u1,
    -                ///  Secure version (used by ESP-IDF anti-rollback feature).
    -                SECURE_VERSION: u16,
    -                ///  Reserved (used for four backups method).
    -                RPT4_RESERVED1: u2,
    -            }),
    -            ///  BLOCK0 data register 5.
    -            RD_REPEAT_DATA4: mmio.Mmio(packed struct(u32) {
    -                ///  Reserved (used for four backups method).
    -                RPT4_RESERVED4: u24,
    -                padding: u8,
    -            }),
    -            ///  BLOCK1 data register 0.
    -            RD_MAC_SPI_SYS_0: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the low 32 bits of MAC address.
    -                MAC_0: u32,
    -            }),
    -            ///  BLOCK1 data register 1.
    -            RD_MAC_SPI_SYS_1: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the high 16 bits of MAC address.
    -                MAC_1: u16,
    -                ///  Stores the zeroth part of SPI_PAD_CONF.
    -                SPI_PAD_CONF_0: u16,
    -            }),
    -            ///  BLOCK1 data register 2.
    -            RD_MAC_SPI_SYS_2: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the first part of SPI_PAD_CONF.
    -                SPI_PAD_CONF_1: u32,
    -            }),
    -            ///  BLOCK1 data register 3.
    -            RD_MAC_SPI_SYS_3: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the second part of SPI_PAD_CONF.
    -                SPI_PAD_CONF_2: u18,
    -                ///  Stores the fist 14 bits of the zeroth part of system data.
    -                SYS_DATA_PART0_0: u14,
    -            }),
    -            ///  BLOCK1 data register 4.
    -            RD_MAC_SPI_SYS_4: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the fist 32 bits of the zeroth part of system data.
    -                SYS_DATA_PART0_1: u32,
    -            }),
    -            ///  BLOCK1 data register 5.
    -            RD_MAC_SPI_SYS_5: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the second 32 bits of the zeroth part of system data.
    -                SYS_DATA_PART0_2: u32,
    -            }),
    -            ///  Register 0 of BLOCK2 (system).
    -            RD_SYS_PART1_DATA0: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the zeroth 32 bits of the first part of system data.
    -                SYS_DATA_PART1_0: u32,
    -            }),
    -            ///  Register 1 of BLOCK2 (system).
    -            RD_SYS_PART1_DATA1: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the first 32 bits of the first part of system data.
    -                SYS_DATA_PART1_1: u32,
    -            }),
    -            ///  Register 2 of BLOCK2 (system).
    -            RD_SYS_PART1_DATA2: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the second 32 bits of the first part of system data.
    -                SYS_DATA_PART1_2: u32,
    -            }),
    -            ///  Register 3 of BLOCK2 (system).
    -            RD_SYS_PART1_DATA3: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the third 32 bits of the first part of system data.
    -                SYS_DATA_PART1_3: u32,
    -            }),
    -            ///  Register 4 of BLOCK2 (system).
    -            RD_SYS_PART1_DATA4: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the fourth 32 bits of the first part of system data.
    -                SYS_DATA_PART1_4: u32,
    -            }),
    -            ///  Register 5 of BLOCK2 (system).
    -            RD_SYS_PART1_DATA5: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the fifth 32 bits of the first part of system data.
    -                SYS_DATA_PART1_5: u32,
    -            }),
    -            ///  Register 6 of BLOCK2 (system).
    -            RD_SYS_PART1_DATA6: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the sixth 32 bits of the first part of system data.
    -                SYS_DATA_PART1_6: u32,
    -            }),
    -            ///  Register 7 of BLOCK2 (system).
    -            RD_SYS_PART1_DATA7: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the seventh 32 bits of the first part of system data.
    -                SYS_DATA_PART1_7: u32,
    -            }),
    -            ///  Register 0 of BLOCK3 (user).
    -            RD_USR_DATA0: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the zeroth 32 bits of BLOCK3 (user).
    -                USR_DATA0: u32,
    -            }),
    -            ///  Register 1 of BLOCK3 (user).
    -            RD_USR_DATA1: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the first 32 bits of BLOCK3 (user).
    -                USR_DATA1: u32,
    -            }),
    -            ///  Register 2 of BLOCK3 (user).
    -            RD_USR_DATA2: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the second 32 bits of BLOCK3 (user).
    -                USR_DATA2: u32,
    -            }),
    -            ///  Register 3 of BLOCK3 (user).
    -            RD_USR_DATA3: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the third 32 bits of BLOCK3 (user).
    -                USR_DATA3: u32,
    -            }),
    -            ///  Register 4 of BLOCK3 (user).
    -            RD_USR_DATA4: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the fourth 32 bits of BLOCK3 (user).
    -                USR_DATA4: u32,
    -            }),
    -            ///  Register 5 of BLOCK3 (user).
    -            RD_USR_DATA5: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the fifth 32 bits of BLOCK3 (user).
    -                USR_DATA5: u32,
    -            }),
    -            ///  Register 6 of BLOCK3 (user).
    -            RD_USR_DATA6: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the sixth 32 bits of BLOCK3 (user).
    -                USR_DATA6: u32,
    -            }),
    -            ///  Register 7 of BLOCK3 (user).
    -            RD_USR_DATA7: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the seventh 32 bits of BLOCK3 (user).
    -                USR_DATA7: u32,
    -            }),
    -            ///  Register 0 of BLOCK4 (KEY0).
    -            RD_KEY0_DATA0: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the zeroth 32 bits of KEY0.
    -                KEY0_DATA0: u32,
    -            }),
    -            ///  Register 1 of BLOCK4 (KEY0).
    -            RD_KEY0_DATA1: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the first 32 bits of KEY0.
    -                KEY0_DATA1: u32,
    -            }),
    -            ///  Register 2 of BLOCK4 (KEY0).
    -            RD_KEY0_DATA2: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the second 32 bits of KEY0.
    -                KEY0_DATA2: u32,
    -            }),
    -            ///  Register 3 of BLOCK4 (KEY0).
    -            RD_KEY0_DATA3: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the third 32 bits of KEY0.
    -                KEY0_DATA3: u32,
    -            }),
    -            ///  Register 4 of BLOCK4 (KEY0).
    -            RD_KEY0_DATA4: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the fourth 32 bits of KEY0.
    -                KEY0_DATA4: u32,
    -            }),
    -            ///  Register 5 of BLOCK4 (KEY0).
    -            RD_KEY0_DATA5: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the fifth 32 bits of KEY0.
    -                KEY0_DATA5: u32,
    -            }),
    -            ///  Register 6 of BLOCK4 (KEY0).
    -            RD_KEY0_DATA6: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the sixth 32 bits of KEY0.
    -                KEY0_DATA6: u32,
    -            }),
    -            ///  Register 7 of BLOCK4 (KEY0).
    -            RD_KEY0_DATA7: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the seventh 32 bits of KEY0.
    -                KEY0_DATA7: u32,
    -            }),
    -            ///  Register 0 of BLOCK5 (KEY1).
    -            RD_KEY1_DATA0: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the zeroth 32 bits of KEY1.
    -                KEY1_DATA0: u32,
    -            }),
    -            ///  Register 1 of BLOCK5 (KEY1).
    -            RD_KEY1_DATA1: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the first 32 bits of KEY1.
    -                KEY1_DATA1: u32,
    -            }),
    -            ///  Register 2 of BLOCK5 (KEY1).
    -            RD_KEY1_DATA2: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the second 32 bits of KEY1.
    -                KEY1_DATA2: u32,
    -            }),
    -            ///  Register 3 of BLOCK5 (KEY1).
    -            RD_KEY1_DATA3: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the third 32 bits of KEY1.
    -                KEY1_DATA3: u32,
    -            }),
    -            ///  Register 4 of BLOCK5 (KEY1).
    -            RD_KEY1_DATA4: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the fourth 32 bits of KEY1.
    -                KEY1_DATA4: u32,
    -            }),
    -            ///  Register 5 of BLOCK5 (KEY1).
    -            RD_KEY1_DATA5: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the fifth 32 bits of KEY1.
    -                KEY1_DATA5: u32,
    -            }),
    -            ///  Register 6 of BLOCK5 (KEY1).
    -            RD_KEY1_DATA6: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the sixth 32 bits of KEY1.
    -                KEY1_DATA6: u32,
    -            }),
    -            ///  Register 7 of BLOCK5 (KEY1).
    -            RD_KEY1_DATA7: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the seventh 32 bits of KEY1.
    -                KEY1_DATA7: u32,
    -            }),
    -            ///  Register 0 of BLOCK6 (KEY2).
    -            RD_KEY2_DATA0: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the zeroth 32 bits of KEY2.
    -                KEY2_DATA0: u32,
    -            }),
    -            ///  Register 1 of BLOCK6 (KEY2).
    -            RD_KEY2_DATA1: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the first 32 bits of KEY2.
    -                KEY2_DATA1: u32,
    -            }),
    -            ///  Register 2 of BLOCK6 (KEY2).
    -            RD_KEY2_DATA2: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the second 32 bits of KEY2.
    -                KEY2_DATA2: u32,
    -            }),
    -            ///  Register 3 of BLOCK6 (KEY2).
    -            RD_KEY2_DATA3: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the third 32 bits of KEY2.
    -                KEY2_DATA3: u32,
    -            }),
    -            ///  Register 4 of BLOCK6 (KEY2).
    -            RD_KEY2_DATA4: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the fourth 32 bits of KEY2.
    -                KEY2_DATA4: u32,
    -            }),
    -            ///  Register 5 of BLOCK6 (KEY2).
    -            RD_KEY2_DATA5: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the fifth 32 bits of KEY2.
    -                KEY2_DATA5: u32,
    -            }),
    -            ///  Register 6 of BLOCK6 (KEY2).
    -            RD_KEY2_DATA6: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the sixth 32 bits of KEY2.
    -                KEY2_DATA6: u32,
    -            }),
    -            ///  Register 7 of BLOCK6 (KEY2).
    -            RD_KEY2_DATA7: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the seventh 32 bits of KEY2.
    -                KEY2_DATA7: u32,
    -            }),
    -            ///  Register 0 of BLOCK7 (KEY3).
    -            RD_KEY3_DATA0: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the zeroth 32 bits of KEY3.
    -                KEY3_DATA0: u32,
    -            }),
    -            ///  Register 1 of BLOCK7 (KEY3).
    -            RD_KEY3_DATA1: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the first 32 bits of KEY3.
    -                KEY3_DATA1: u32,
    -            }),
    -            ///  Register 2 of BLOCK7 (KEY3).
    -            RD_KEY3_DATA2: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the second 32 bits of KEY3.
    -                KEY3_DATA2: u32,
    -            }),
    -            ///  Register 3 of BLOCK7 (KEY3).
    -            RD_KEY3_DATA3: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the third 32 bits of KEY3.
    -                KEY3_DATA3: u32,
    -            }),
    -            ///  Register 4 of BLOCK7 (KEY3).
    -            RD_KEY3_DATA4: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the fourth 32 bits of KEY3.
    -                KEY3_DATA4: u32,
    -            }),
    -            ///  Register 5 of BLOCK7 (KEY3).
    -            RD_KEY3_DATA5: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the fifth 32 bits of KEY3.
    -                KEY3_DATA5: u32,
    -            }),
    -            ///  Register 6 of BLOCK7 (KEY3).
    -            RD_KEY3_DATA6: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the sixth 32 bits of KEY3.
    -                KEY3_DATA6: u32,
    -            }),
    -            ///  Register 7 of BLOCK7 (KEY3).
    -            RD_KEY3_DATA7: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the seventh 32 bits of KEY3.
    -                KEY3_DATA7: u32,
    -            }),
    -            ///  Register 0 of BLOCK8 (KEY4).
    -            RD_KEY4_DATA0: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the zeroth 32 bits of KEY4.
    -                KEY4_DATA0: u32,
    -            }),
    -            ///  Register 1 of BLOCK8 (KEY4).
    -            RD_KEY4_DATA1: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the first 32 bits of KEY4.
    -                KEY4_DATA1: u32,
    -            }),
    -            ///  Register 2 of BLOCK8 (KEY4).
    -            RD_KEY4_DATA2: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the second 32 bits of KEY4.
    -                KEY4_DATA2: u32,
    -            }),
    -            ///  Register 3 of BLOCK8 (KEY4).
    -            RD_KEY4_DATA3: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the third 32 bits of KEY4.
    -                KEY4_DATA3: u32,
    -            }),
    -            ///  Register 4 of BLOCK8 (KEY4).
    -            RD_KEY4_DATA4: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the fourth 32 bits of KEY4.
    -                KEY4_DATA4: u32,
    -            }),
    -            ///  Register 5 of BLOCK8 (KEY4).
    -            RD_KEY4_DATA5: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the fifth 32 bits of KEY4.
    -                KEY4_DATA5: u32,
    -            }),
    -            ///  Register 6 of BLOCK8 (KEY4).
    -            RD_KEY4_DATA6: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the sixth 32 bits of KEY4.
    -                KEY4_DATA6: u32,
    -            }),
    -            ///  Register 7 of BLOCK8 (KEY4).
    -            RD_KEY4_DATA7: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the seventh 32 bits of KEY4.
    -                KEY4_DATA7: u32,
    -            }),
    -            ///  Register 0 of BLOCK9 (KEY5).
    -            RD_KEY5_DATA0: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the zeroth 32 bits of KEY5.
    -                KEY5_DATA0: u32,
    -            }),
    -            ///  Register 1 of BLOCK9 (KEY5).
    -            RD_KEY5_DATA1: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the first 32 bits of KEY5.
    -                KEY5_DATA1: u32,
    -            }),
    -            ///  Register 2 of BLOCK9 (KEY5).
    -            RD_KEY5_DATA2: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the second 32 bits of KEY5.
    -                KEY5_DATA2: u32,
    -            }),
    -            ///  Register 3 of BLOCK9 (KEY5).
    -            RD_KEY5_DATA3: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the third 32 bits of KEY5.
    -                KEY5_DATA3: u32,
    -            }),
    -            ///  Register 4 of BLOCK9 (KEY5).
    -            RD_KEY5_DATA4: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the fourth 32 bits of KEY5.
    -                KEY5_DATA4: u32,
    -            }),
    -            ///  Register 5 of BLOCK9 (KEY5).
    -            RD_KEY5_DATA5: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the fifth 32 bits of KEY5.
    -                KEY5_DATA5: u32,
    -            }),
    -            ///  Register 6 of BLOCK9 (KEY5).
    -            RD_KEY5_DATA6: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the sixth 32 bits of KEY5.
    -                KEY5_DATA6: u32,
    -            }),
    -            ///  Register 7 of BLOCK9 (KEY5).
    -            RD_KEY5_DATA7: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the seventh 32 bits of KEY5.
    -                KEY5_DATA7: u32,
    -            }),
    -            ///  Register 0 of BLOCK10 (system).
    -            RD_SYS_PART2_DATA0: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the 0th 32 bits of the 2nd part of system data.
    -                SYS_DATA_PART2_0: u32,
    -            }),
    -            ///  Register 1 of BLOCK9 (KEY5).
    -            RD_SYS_PART2_DATA1: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the 1st 32 bits of the 2nd part of system data.
    -                SYS_DATA_PART2_1: u32,
    -            }),
    -            ///  Register 2 of BLOCK10 (system).
    -            RD_SYS_PART2_DATA2: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the 2nd 32 bits of the 2nd part of system data.
    -                SYS_DATA_PART2_2: u32,
    -            }),
    -            ///  Register 3 of BLOCK10 (system).
    -            RD_SYS_PART2_DATA3: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the 3rd 32 bits of the 2nd part of system data.
    -                SYS_DATA_PART2_3: u32,
    -            }),
    -            ///  Register 4 of BLOCK10 (system).
    -            RD_SYS_PART2_DATA4: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the 4th 32 bits of the 2nd part of system data.
    -                SYS_DATA_PART2_4: u32,
    -            }),
    -            ///  Register 5 of BLOCK10 (system).
    -            RD_SYS_PART2_DATA5: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the 5th 32 bits of the 2nd part of system data.
    -                SYS_DATA_PART2_5: u32,
    -            }),
    -            ///  Register 6 of BLOCK10 (system).
    -            RD_SYS_PART2_DATA6: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the 6th 32 bits of the 2nd part of system data.
    -                SYS_DATA_PART2_6: u32,
    -            }),
    -            ///  Register 7 of BLOCK10 (system).
    -            RD_SYS_PART2_DATA7: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the 7th 32 bits of the 2nd part of system data.
    -                SYS_DATA_PART2_7: u32,
    -            }),
    -            ///  Programming error record register 0 of BLOCK0.
    -            RD_REPEAT_ERR0: mmio.Mmio(packed struct(u32) {
    -                ///  If any bit in RD_DIS is 1, then it indicates a programming error.
    -                RD_DIS_ERR: u7,
    -                ///  If DIS_RTC_RAM_BOOT is 1, then it indicates a programming error.
    -                DIS_RTC_RAM_BOOT_ERR: u1,
    -                ///  If DIS_ICACHE is 1, then it indicates a programming error.
    -                DIS_ICACHE_ERR: u1,
    -                ///  If DIS_USB_JTAG is 1, then it indicates a programming error.
    -                DIS_USB_JTAG_ERR: u1,
    -                ///  If DIS_DOWNLOAD_ICACHE is 1, then it indicates a programming error.
    -                DIS_DOWNLOAD_ICACHE_ERR: u1,
    -                ///  If DIS_USB_DEVICE is 1, then it indicates a programming error.
    -                DIS_USB_DEVICE_ERR: u1,
    -                ///  If DIS_FORCE_DOWNLOAD is 1, then it indicates a programming error.
    -                DIS_FORCE_DOWNLOAD_ERR: u1,
    -                ///  Reserved.
    -                RPT4_RESERVED6_ERR: u1,
    -                ///  If DIS_CAN is 1, then it indicates a programming error.
    -                DIS_CAN_ERR: u1,
    -                ///  If JTAG_SEL_ENABLE is 1, then it indicates a programming error.
    -                JTAG_SEL_ENABLE_ERR: u1,
    -                ///  If SOFT_DIS_JTAG is 1, then it indicates a programming error.
    -                SOFT_DIS_JTAG_ERR: u3,
    -                ///  If DIS_PAD_JTAG is 1, then it indicates a programming error.
    -                DIS_PAD_JTAG_ERR: u1,
    -                ///  If DIS_DOWNLOAD_MANUAL_ENCRYPT is 1, then it indicates a programming error.
    -                DIS_DOWNLOAD_MANUAL_ENCRYPT_ERR: u1,
    -                ///  If any bit in USB_DREFH is 1, then it indicates a programming error.
    -                USB_DREFH_ERR: u2,
    -                ///  If any bit in USB_DREFL is 1, then it indicates a programming error.
    -                USB_DREFL_ERR: u2,
    -                ///  If USB_EXCHG_PINS is 1, then it indicates a programming error.
    -                USB_EXCHG_PINS_ERR: u1,
    -                ///  If VDD_SPI_AS_GPIO is 1, then it indicates a programming error.
    -                VDD_SPI_AS_GPIO_ERR: u1,
    -                ///  If any bit in BTLC_GPIO_ENABLE is 1, then it indicates a programming error.
    -                BTLC_GPIO_ENABLE_ERR: u2,
    -                ///  If POWERGLITCH_EN is 1, then it indicates a programming error.
    -                POWERGLITCH_EN_ERR: u1,
    -                ///  If any bit in POWER_GLITCH_DSENSE is 1, then it indicates a programming error.
    -                POWER_GLITCH_DSENSE_ERR: u2,
    -            }),
    -            ///  Programming error record register 1 of BLOCK0.
    -            RD_REPEAT_ERR1: mmio.Mmio(packed struct(u32) {
    -                ///  Reserved.
    -                RPT4_RESERVED2_ERR: u16,
    -                ///  If any bit in WDT_DELAY_SEL is 1, then it indicates a programming error.
    -                WDT_DELAY_SEL_ERR: u2,
    -                ///  If any bit in SPI_BOOT_CRYPT_CNT is 1, then it indicates a programming error.
    -                SPI_BOOT_CRYPT_CNT_ERR: u3,
    -                ///  If SECURE_BOOT_KEY_REVOKE0 is 1, then it indicates a programming error.
    -                SECURE_BOOT_KEY_REVOKE0_ERR: u1,
    -                ///  If SECURE_BOOT_KEY_REVOKE1 is 1, then it indicates a programming error.
    -                SECURE_BOOT_KEY_REVOKE1_ERR: u1,
    -                ///  If SECURE_BOOT_KEY_REVOKE2 is 1, then it indicates a programming error.
    -                SECURE_BOOT_KEY_REVOKE2_ERR: u1,
    -                ///  If any bit in KEY_PURPOSE_0 is 1, then it indicates a programming error.
    -                KEY_PURPOSE_0_ERR: u4,
    -                ///  If any bit in KEY_PURPOSE_1 is 1, then it indicates a programming error.
    -                KEY_PURPOSE_1_ERR: u4,
    -            }),
    -            ///  Programming error record register 2 of BLOCK0.
    -            RD_REPEAT_ERR2: mmio.Mmio(packed struct(u32) {
    -                ///  If any bit in KEY_PURPOSE_2 is 1, then it indicates a programming error.
    -                KEY_PURPOSE_2_ERR: u4,
    -                ///  If any bit in KEY_PURPOSE_3 is 1, then it indicates a programming error.
    -                KEY_PURPOSE_3_ERR: u4,
    -                ///  If any bit in KEY_PURPOSE_4 is 1, then it indicates a programming error.
    -                KEY_PURPOSE_4_ERR: u4,
    -                ///  If any bit in KEY_PURPOSE_5 is 1, then it indicates a programming error.
    -                KEY_PURPOSE_5_ERR: u4,
    -                ///  Reserved.
    -                RPT4_RESERVED3_ERR: u4,
    -                ///  If SECURE_BOOT_EN is 1, then it indicates a programming error.
    -                SECURE_BOOT_EN_ERR: u1,
    -                ///  If SECURE_BOOT_AGGRESSIVE_REVOKE is 1, then it indicates a programming error.
    -                SECURE_BOOT_AGGRESSIVE_REVOKE_ERR: u1,
    -                ///  Reserved.
    -                RPT4_RESERVED0_ERR: u6,
    -                ///  If any bit in FLASH_TPUM is 1, then it indicates a programming error.
    -                FLASH_TPUW_ERR: u4,
    -            }),
    -            ///  Programming error record register 3 of BLOCK0.
    -            RD_REPEAT_ERR3: mmio.Mmio(packed struct(u32) {
    -                ///  If DIS_DOWNLOAD_MODE is 1, then it indicates a programming error.
    -                DIS_DOWNLOAD_MODE_ERR: u1,
    -                ///  If DIS_LEGACY_SPI_BOOT is 1, then it indicates a programming error.
    -                DIS_LEGACY_SPI_BOOT_ERR: u1,
    -                ///  If UART_PRINT_CHANNEL is 1, then it indicates a programming error.
    -                UART_PRINT_CHANNEL_ERR: u1,
    -                ///  If FLASH_ECC_MODE is 1, then it indicates a programming error.
    -                FLASH_ECC_MODE_ERR: u1,
    -                ///  If DIS_USB_DOWNLOAD_MODE is 1, then it indicates a programming error.
    -                DIS_USB_DOWNLOAD_MODE_ERR: u1,
    -                ///  If ENABLE_SECURITY_DOWNLOAD is 1, then it indicates a programming error.
    -                ENABLE_SECURITY_DOWNLOAD_ERR: u1,
    -                ///  If any bit in UART_PRINT_CONTROL is 1, then it indicates a programming error.
    -                UART_PRINT_CONTROL_ERR: u2,
    -                ///  If PIN_POWER_SELECTION is 1, then it indicates a programming error.
    -                PIN_POWER_SELECTION_ERR: u1,
    -                ///  If FLASH_TYPE is 1, then it indicates a programming error.
    -                FLASH_TYPE_ERR: u1,
    -                ///  If any bits in FLASH_PAGE_SIZE is 1, then it indicates a programming error.
    -                FLASH_PAGE_SIZE_ERR: u2,
    -                ///  If FLASH_ECC_EN_ERR is 1, then it indicates a programming error.
    -                FLASH_ECC_EN_ERR: u1,
    -                ///  If FORCE_SEND_RESUME is 1, then it indicates a programming error.
    -                FORCE_SEND_RESUME_ERR: u1,
    -                ///  If any bit in SECURE_VERSION is 1, then it indicates a programming error.
    -                SECURE_VERSION_ERR: u16,
    -                ///  Reserved.
    -                RPT4_RESERVED1_ERR: u2,
    -            }),
    -            reserved400: [4]u8,
    -            ///  Programming error record register 4 of BLOCK0.
    -            RD_REPEAT_ERR4: mmio.Mmio(packed struct(u32) {
    -                ///  Reserved.
    -                RPT4_RESERVED4_ERR: u24,
    -                padding: u8,
    -            }),
    -            reserved448: [44]u8,
    -            ///  Programming error record register 0 of BLOCK1-10.
    -            RD_RS_ERR0: mmio.Mmio(packed struct(u32) {
    -                ///  The value of this signal means the number of error bytes.
    -                MAC_SPI_8M_ERR_NUM: u3,
    -                ///  0: Means no failure and that the data of MAC_SPI_8M is reliable 1: Means that programming user data failed and the number of error bytes is over 6.
    -                MAC_SPI_8M_FAIL: u1,
    -                ///  The value of this signal means the number of error bytes.
    -                SYS_PART1_NUM: u3,
    -                ///  0: Means no failure and that the data of system part1 is reliable 1: Means that programming user data failed and the number of error bytes is over 6.
    -                SYS_PART1_FAIL: u1,
    -                ///  The value of this signal means the number of error bytes.
    -                USR_DATA_ERR_NUM: u3,
    -                ///  0: Means no failure and that the user data is reliable 1: Means that programming user data failed and the number of error bytes is over 6.
    -                USR_DATA_FAIL: u1,
    -                ///  The value of this signal means the number of error bytes.
    -                KEY0_ERR_NUM: u3,
    -                ///  0: Means no failure and that the data of key0 is reliable 1: Means that programming key0 failed and the number of error bytes is over 6.
    -                KEY0_FAIL: u1,
    -                ///  The value of this signal means the number of error bytes.
    -                KEY1_ERR_NUM: u3,
    -                ///  0: Means no failure and that the data of key1 is reliable 1: Means that programming key1 failed and the number of error bytes is over 6.
    -                KEY1_FAIL: u1,
    -                ///  The value of this signal means the number of error bytes.
    -                KEY2_ERR_NUM: u3,
    -                ///  0: Means no failure and that the data of key2 is reliable 1: Means that programming key2 failed and the number of error bytes is over 6.
    -                KEY2_FAIL: u1,
    -                ///  The value of this signal means the number of error bytes.
    -                KEY3_ERR_NUM: u3,
    -                ///  0: Means no failure and that the data of key3 is reliable 1: Means that programming key3 failed and the number of error bytes is over 6.
    -                KEY3_FAIL: u1,
    -                ///  The value of this signal means the number of error bytes.
    -                KEY4_ERR_NUM: u3,
    -                ///  0: Means no failure and that the data of key4 is reliable 1: Means that programming key4 failed and the number of error bytes is over 6.
    -                KEY4_FAIL: u1,
    -            }),
    -            ///  Programming error record register 1 of BLOCK1-10.
    -            RD_RS_ERR1: mmio.Mmio(packed struct(u32) {
    -                ///  The value of this signal means the number of error bytes.
    -                KEY5_ERR_NUM: u3,
    -                ///  0: Means no failure and that the data of KEY5 is reliable 1: Means that programming user data failed and the number of error bytes is over 6.
    -                KEY5_FAIL: u1,
    -                ///  The value of this signal means the number of error bytes.
    -                SYS_PART2_ERR_NUM: u3,
    -                ///  0: Means no failure and that the data of system part2 is reliable 1: Means that programming user data failed and the number of error bytes is over 6.
    -                SYS_PART2_FAIL: u1,
    -                padding: u24,
    -            }),
    -            ///  eFuse clcok configuration register.
    -            CLK: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to force eFuse SRAM into power-saving mode.
    -                EFUSE_MEM_FORCE_PD: u1,
    -                ///  Set this bit and force to activate clock signal of eFuse SRAM.
    -                MEM_CLK_FORCE_ON: u1,
    -                ///  Set this bit to force eFuse SRAM into working mode.
    -                EFUSE_MEM_FORCE_PU: u1,
    -                reserved16: u13,
    -                ///  Set this bit and force to enable clock signal of eFuse memory.
    -                EN: u1,
    -                padding: u15,
    -            }),
    -            ///  eFuse operation mode configuraiton register;
    -            CONF: mmio.Mmio(packed struct(u32) {
    -                ///  0x5A5A: Operate programming command 0x5AA5: Operate read command.
    -                OP_CODE: u16,
    -                padding: u16,
    -            }),
    -            ///  eFuse status register.
    -            STATUS: mmio.Mmio(packed struct(u32) {
    -                ///  Indicates the state of the eFuse state machine.
    -                STATE: u4,
    -                ///  The value of OTP_LOAD_SW.
    -                OTP_LOAD_SW: u1,
    -                ///  The value of OTP_VDDQ_C_SYNC2.
    -                OTP_VDDQ_C_SYNC2: u1,
    -                ///  The value of OTP_STROBE_SW.
    -                OTP_STROBE_SW: u1,
    -                ///  The value of OTP_CSB_SW.
    -                OTP_CSB_SW: u1,
    -                ///  The value of OTP_PGENB_SW.
    -                OTP_PGENB_SW: u1,
    -                ///  The value of OTP_VDDQ_IS_SW.
    -                OTP_VDDQ_IS_SW: u1,
    -                ///  Indicates the number of error bits during programming BLOCK0.
    -                REPEAT_ERR_CNT: u8,
    -                padding: u14,
    -            }),
    -            ///  eFuse command register.
    -            CMD: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to send read command.
    -                READ_CMD: u1,
    -                ///  Set this bit to send programming command.
    -                PGM_CMD: u1,
    -                ///  The serial number of the block to be programmed. Value 0-10 corresponds to block number 0-10, respectively.
    -                BLK_NUM: u4,
    -                padding: u26,
    -            }),
    -            ///  eFuse raw interrupt register.
    -            INT_RAW: mmio.Mmio(packed struct(u32) {
    -                ///  The raw bit signal for read_done interrupt.
    -                READ_DONE_INT_RAW: u1,
    -                ///  The raw bit signal for pgm_done interrupt.
    -                PGM_DONE_INT_RAW: u1,
    -                padding: u30,
    -            }),
    -            ///  eFuse interrupt status register.
    -            INT_ST: mmio.Mmio(packed struct(u32) {
    -                ///  The status signal for read_done interrupt.
    -                READ_DONE_INT_ST: u1,
    -                ///  The status signal for pgm_done interrupt.
    -                PGM_DONE_INT_ST: u1,
    -                padding: u30,
    -            }),
    -            ///  eFuse interrupt enable register.
    -            INT_ENA: mmio.Mmio(packed struct(u32) {
    -                ///  The enable signal for read_done interrupt.
    -                READ_DONE_INT_ENA: u1,
    -                ///  The enable signal for pgm_done interrupt.
    -                PGM_DONE_INT_ENA: u1,
    -                padding: u30,
    -            }),
    -            ///  eFuse interrupt clear register.
    -            INT_CLR: mmio.Mmio(packed struct(u32) {
    -                ///  The clear signal for read_done interrupt.
    -                READ_DONE_INT_CLR: u1,
    -                ///  The clear signal for pgm_done interrupt.
    -                PGM_DONE_INT_CLR: u1,
    -                padding: u30,
    -            }),
    -            ///  Controls the eFuse programming voltage.
    -            DAC_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  Controls the division factor of the rising clock of the programming voltage.
    -                DAC_CLK_DIV: u8,
    -                ///  Don't care.
    -                DAC_CLK_PAD_SEL: u1,
    -                ///  Controls the rising period of the programming voltage.
    -                DAC_NUM: u8,
    -                ///  Reduces the power supply of the programming voltage.
    -                OE_CLR: u1,
    -                padding: u14,
    -            }),
    -            ///  Configures read timing parameters.
    -            RD_TIM_CONF: mmio.Mmio(packed struct(u32) {
    -                reserved24: u24,
    -                ///  Configures the initial read time of eFuse.
    -                READ_INIT_NUM: u8,
    -            }),
    -            ///  Configurarion register 1 of eFuse programming timing parameters.
    -            WR_TIM_CONF1: mmio.Mmio(packed struct(u32) {
    -                reserved8: u8,
    -                ///  Configures the power up time for VDDQ.
    -                PWR_ON_NUM: u16,
    -                padding: u8,
    -            }),
    -            ///  Configurarion register 2 of eFuse programming timing parameters.
    -            WR_TIM_CONF2: mmio.Mmio(packed struct(u32) {
    -                ///  Configures the power outage time for VDDQ.
    -                PWR_OFF_NUM: u16,
    -                padding: u16,
    -            }),
    -            reserved508: [4]u8,
    -            ///  eFuse version register.
    -            DATE: mmio.Mmio(packed struct(u32) {
    -                ///  Stores eFuse version.
    -                DATE: u28,
    -                padding: u4,
    -            }),
    -        };
    -
    -        ///  External Memory
    -        pub const EXTMEM = extern struct {
    -            ///  This description will be updated in the near future.
    -            ICACHE_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to activate the data cache. 0: disable, 1: enable
    -                ICACHE_ENABLE: u1,
    -                padding: u31,
    -            }),
    -            ///  This description will be updated in the near future.
    -            ICACHE_CTRL1: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to disable core0 ibus, 0: enable, 1: disable
    -                ICACHE_SHUT_IBUS: u1,
    -                ///  The bit is used to disable core1 ibus, 0: enable, 1: disable
    -                ICACHE_SHUT_DBUS: u1,
    -                padding: u30,
    -            }),
    -            ///  This description will be updated in the near future.
    -            ICACHE_TAG_POWER_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to close clock gating of icache tag memory. 1: close gating, 0: open clock gating.
    -                ICACHE_TAG_MEM_FORCE_ON: u1,
    -                ///  The bit is used to power icache tag memory down, 0: follow rtc_lslp, 1: power down
    -                ICACHE_TAG_MEM_FORCE_PD: u1,
    -                ///  The bit is used to power icache tag memory up, 0: follow rtc_lslp, 1: power up
    -                ICACHE_TAG_MEM_FORCE_PU: u1,
    -                padding: u29,
    -            }),
    -            ///  This description will be updated in the near future.
    -            ICACHE_PRELOCK_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to enable the first section of prelock function.
    -                ICACHE_PRELOCK_SCT0_EN: u1,
    -                ///  The bit is used to enable the second section of prelock function.
    -                ICACHE_PRELOCK_SCT1_EN: u1,
    -                padding: u30,
    -            }),
    -            ///  This description will be updated in the near future.
    -            ICACHE_PRELOCK_SCT0_ADDR: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to configure the first start virtual address of data prelock, which is combined with ICACHE_PRELOCK_SCT0_SIZE_REG
    -                ICACHE_PRELOCK_SCT0_ADDR: u32,
    -            }),
    -            ///  This description will be updated in the near future.
    -            ICACHE_PRELOCK_SCT1_ADDR: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to configure the second start virtual address of data prelock, which is combined with ICACHE_PRELOCK_SCT1_SIZE_REG
    -                ICACHE_PRELOCK_SCT1_ADDR: u32,
    -            }),
    -            ///  This description will be updated in the near future.
    -            ICACHE_PRELOCK_SCT_SIZE: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to configure the second length of data locking, which is combined with ICACHE_PRELOCK_SCT1_ADDR_REG
    -                ICACHE_PRELOCK_SCT1_SIZE: u16,
    -                ///  The bits are used to configure the first length of data locking, which is combined with ICACHE_PRELOCK_SCT0_ADDR_REG
    -                ICACHE_PRELOCK_SCT0_SIZE: u16,
    -            }),
    -            ///  This description will be updated in the near future.
    -            ICACHE_LOCK_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to enable lock operation. It will be cleared by hardware after lock operation done.
    -                ICACHE_LOCK_ENA: u1,
    -                ///  The bit is used to enable unlock operation. It will be cleared by hardware after unlock operation done.
    -                ICACHE_UNLOCK_ENA: u1,
    -                ///  The bit is used to indicate unlock/lock operation is finished.
    -                ICACHE_LOCK_DONE: u1,
    -                padding: u29,
    -            }),
    -            ///  This description will be updated in the near future.
    -            ICACHE_LOCK_ADDR: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to configure the start virtual address for lock operations. It should be combined with ICACHE_LOCK_SIZE_REG.
    -                ICACHE_LOCK_ADDR: u32,
    -            }),
    -            ///  This description will be updated in the near future.
    -            ICACHE_LOCK_SIZE: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to configure the length for lock operations. The bits are the counts of cache block. It should be combined with ICACHE_LOCK_ADDR_REG.
    -                ICACHE_LOCK_SIZE: u16,
    -                padding: u16,
    -            }),
    -            ///  This description will be updated in the near future.
    -            ICACHE_SYNC_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to enable invalidate operation. It will be cleared by hardware after invalidate operation done.
    -                ICACHE_INVALIDATE_ENA: u1,
    -                ///  The bit is used to indicate invalidate operation is finished.
    -                ICACHE_SYNC_DONE: u1,
    -                padding: u30,
    -            }),
    -            ///  This description will be updated in the near future.
    -            ICACHE_SYNC_ADDR: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to configure the start virtual address for clean operations. It should be combined with ICACHE_SYNC_SIZE_REG.
    -                ICACHE_SYNC_ADDR: u32,
    -            }),
    -            ///  This description will be updated in the near future.
    -            ICACHE_SYNC_SIZE: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to configure the length for sync operations. The bits are the counts of cache block. It should be combined with ICACHE_SYNC_ADDR_REG.
    -                ICACHE_SYNC_SIZE: u23,
    -                padding: u9,
    -            }),
    -            ///  This description will be updated in the near future.
    -            ICACHE_PRELOAD_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to enable preload operation. It will be cleared by hardware after preload operation done.
    -                ICACHE_PRELOAD_ENA: u1,
    -                ///  The bit is used to indicate preload operation is finished.
    -                ICACHE_PRELOAD_DONE: u1,
    -                ///  The bit is used to configure the direction of preload operation. 1: descending, 0: ascending.
    -                ICACHE_PRELOAD_ORDER: u1,
    -                padding: u29,
    -            }),
    -            ///  This description will be updated in the near future.
    -            ICACHE_PRELOAD_ADDR: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to configure the start virtual address for preload operation. It should be combined with ICACHE_PRELOAD_SIZE_REG.
    -                ICACHE_PRELOAD_ADDR: u32,
    -            }),
    -            ///  This description will be updated in the near future.
    -            ICACHE_PRELOAD_SIZE: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to configure the length for preload operation. The bits are the counts of cache block. It should be combined with ICACHE_PRELOAD_ADDR_REG..
    -                ICACHE_PRELOAD_SIZE: u16,
    -                padding: u16,
    -            }),
    -            ///  This description will be updated in the near future.
    -            ICACHE_AUTOLOAD_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to enable the first section for autoload operation.
    -                ICACHE_AUTOLOAD_SCT0_ENA: u1,
    -                ///  The bits are used to enable the second section for autoload operation.
    -                ICACHE_AUTOLOAD_SCT1_ENA: u1,
    -                ///  The bit is used to enable and disable autoload operation. It is combined with icache_autoload_done. 1: enable, 0: disable.
    -                ICACHE_AUTOLOAD_ENA: u1,
    -                ///  The bit is used to indicate autoload operation is finished.
    -                ICACHE_AUTOLOAD_DONE: u1,
    -                ///  The bits are used to configure the direction of autoload. 1: descending, 0: ascending.
    -                ICACHE_AUTOLOAD_ORDER: u1,
    -                ///  The bits are used to configure trigger conditions for autoload. 0/3: cache miss, 1: cache hit, 2: both cache miss and hit.
    -                ICACHE_AUTOLOAD_RQST: u2,
    -                padding: u25,
    -            }),
    -            ///  This description will be updated in the near future.
    -            ICACHE_AUTOLOAD_SCT0_ADDR: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to configure the start virtual address of the first section for autoload operation. It should be combined with icache_autoload_sct0_ena.
    -                ICACHE_AUTOLOAD_SCT0_ADDR: u32,
    -            }),
    -            ///  This description will be updated in the near future.
    -            ICACHE_AUTOLOAD_SCT0_SIZE: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to configure the length of the first section for autoload operation. It should be combined with icache_autoload_sct0_ena.
    -                ICACHE_AUTOLOAD_SCT0_SIZE: u27,
    -                padding: u5,
    -            }),
    -            ///  This description will be updated in the near future.
    -            ICACHE_AUTOLOAD_SCT1_ADDR: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to configure the start virtual address of the second section for autoload operation. It should be combined with icache_autoload_sct1_ena.
    -                ICACHE_AUTOLOAD_SCT1_ADDR: u32,
    -            }),
    -            ///  This description will be updated in the near future.
    -            ICACHE_AUTOLOAD_SCT1_SIZE: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to configure the length of the second section for autoload operation. It should be combined with icache_autoload_sct1_ena.
    -                ICACHE_AUTOLOAD_SCT1_SIZE: u27,
    -                padding: u5,
    -            }),
    -            ///  This description will be updated in the near future.
    -            IBUS_TO_FLASH_START_VADDR: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to configure the start virtual address of ibus to access flash. The register is used to give constraints to ibus access counter.
    -                IBUS_TO_FLASH_START_VADDR: u32,
    -            }),
    -            ///  This description will be updated in the near future.
    -            IBUS_TO_FLASH_END_VADDR: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to configure the end virtual address of ibus to access flash. The register is used to give constraints to ibus access counter.
    -                IBUS_TO_FLASH_END_VADDR: u32,
    -            }),
    -            ///  This description will be updated in the near future.
    -            DBUS_TO_FLASH_START_VADDR: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to configure the start virtual address of dbus to access flash. The register is used to give constraints to dbus access counter.
    -                DBUS_TO_FLASH_START_VADDR: u32,
    -            }),
    -            ///  This description will be updated in the near future.
    -            DBUS_TO_FLASH_END_VADDR: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to configure the end virtual address of dbus to access flash. The register is used to give constraints to dbus access counter.
    -                DBUS_TO_FLASH_END_VADDR: u32,
    -            }),
    -            ///  This description will be updated in the near future.
    -            CACHE_ACS_CNT_CLR: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to clear ibus counter.
    -                IBUS_ACS_CNT_CLR: u1,
    -                ///  The bit is used to clear dbus counter.
    -                DBUS_ACS_CNT_CLR: u1,
    -                padding: u30,
    -            }),
    -            ///  This description will be updated in the near future.
    -            IBUS_ACS_MISS_CNT: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to count the number of the cache miss caused by ibus access flash.
    -                IBUS_ACS_MISS_CNT: u32,
    -            }),
    -            ///  This description will be updated in the near future.
    -            IBUS_ACS_CNT: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to count the number of ibus access flash through icache.
    -                IBUS_ACS_CNT: u32,
    -            }),
    -            ///  This description will be updated in the near future.
    -            DBUS_ACS_FLASH_MISS_CNT: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to count the number of the cache miss caused by dbus access flash.
    -                DBUS_ACS_FLASH_MISS_CNT: u32,
    -            }),
    -            ///  This description will be updated in the near future.
    -            DBUS_ACS_CNT: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to count the number of dbus access flash through icache.
    -                DBUS_ACS_CNT: u32,
    -            }),
    -            ///  This description will be updated in the near future.
    -            CACHE_ILG_INT_ENA: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to enable interrupt by sync configurations fault.
    -                ICACHE_SYNC_OP_FAULT_INT_ENA: u1,
    -                ///  The bit is used to enable interrupt by preload configurations fault.
    -                ICACHE_PRELOAD_OP_FAULT_INT_ENA: u1,
    -                reserved5: u3,
    -                ///  The bit is used to enable interrupt by mmu entry fault.
    -                MMU_ENTRY_FAULT_INT_ENA: u1,
    -                reserved7: u1,
    -                ///  The bit is used to enable interrupt by ibus counter overflow.
    -                IBUS_CNT_OVF_INT_ENA: u1,
    -                ///  The bit is used to enable interrupt by dbus counter overflow.
    -                DBUS_CNT_OVF_INT_ENA: u1,
    -                padding: u23,
    -            }),
    -            ///  This description will be updated in the near future.
    -            CACHE_ILG_INT_CLR: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to clear interrupt by sync configurations fault.
    -                ICACHE_SYNC_OP_FAULT_INT_CLR: u1,
    -                ///  The bit is used to clear interrupt by preload configurations fault.
    -                ICACHE_PRELOAD_OP_FAULT_INT_CLR: u1,
    -                reserved5: u3,
    -                ///  The bit is used to clear interrupt by mmu entry fault.
    -                MMU_ENTRY_FAULT_INT_CLR: u1,
    -                reserved7: u1,
    -                ///  The bit is used to clear interrupt by ibus counter overflow.
    -                IBUS_CNT_OVF_INT_CLR: u1,
    -                ///  The bit is used to clear interrupt by dbus counter overflow.
    -                DBUS_CNT_OVF_INT_CLR: u1,
    -                padding: u23,
    -            }),
    -            ///  This description will be updated in the near future.
    -            CACHE_ILG_INT_ST: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to indicate interrupt by sync configurations fault.
    -                ICACHE_SYNC_OP_FAULT_ST: u1,
    -                ///  The bit is used to indicate interrupt by preload configurations fault.
    -                ICACHE_PRELOAD_OP_FAULT_ST: u1,
    -                reserved5: u3,
    -                ///  The bit is used to indicate interrupt by mmu entry fault.
    -                MMU_ENTRY_FAULT_ST: u1,
    -                reserved7: u1,
    -                ///  The bit is used to indicate interrupt by ibus access flash/spiram counter overflow.
    -                IBUS_ACS_CNT_OVF_ST: u1,
    -                ///  The bit is used to indicate interrupt by ibus access flash/spiram miss counter overflow.
    -                IBUS_ACS_MISS_CNT_OVF_ST: u1,
    -                ///  The bit is used to indicate interrupt by dbus access flash/spiram counter overflow.
    -                DBUS_ACS_CNT_OVF_ST: u1,
    -                ///  The bit is used to indicate interrupt by dbus access flash miss counter overflow.
    -                DBUS_ACS_FLASH_MISS_CNT_OVF_ST: u1,
    -                padding: u21,
    -            }),
    -            ///  This description will be updated in the near future.
    -            CORE0_ACS_CACHE_INT_ENA: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to enable interrupt by cpu access icache while the corresponding ibus is disabled which include speculative access.
    -                CORE0_IBUS_ACS_MSK_IC_INT_ENA: u1,
    -                ///  The bit is used to enable interrupt by ibus trying to write icache
    -                CORE0_IBUS_WR_IC_INT_ENA: u1,
    -                ///  The bit is used to enable interrupt by authentication fail.
    -                CORE0_IBUS_REJECT_INT_ENA: u1,
    -                ///  The bit is used to enable interrupt by cpu access icache while the corresponding dbus is disabled which include speculative access.
    -                CORE0_DBUS_ACS_MSK_IC_INT_ENA: u1,
    -                ///  The bit is used to enable interrupt by authentication fail.
    -                CORE0_DBUS_REJECT_INT_ENA: u1,
    -                ///  The bit is used to enable interrupt by dbus trying to write icache
    -                CORE0_DBUS_WR_IC_INT_ENA: u1,
    -                padding: u26,
    -            }),
    -            ///  This description will be updated in the near future.
    -            CORE0_ACS_CACHE_INT_CLR: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to clear interrupt by cpu access icache while the corresponding ibus is disabled or icache is disabled which include speculative access.
    -                CORE0_IBUS_ACS_MSK_IC_INT_CLR: u1,
    -                ///  The bit is used to clear interrupt by ibus trying to write icache
    -                CORE0_IBUS_WR_IC_INT_CLR: u1,
    -                ///  The bit is used to clear interrupt by authentication fail.
    -                CORE0_IBUS_REJECT_INT_CLR: u1,
    -                ///  The bit is used to clear interrupt by cpu access icache while the corresponding dbus is disabled or icache is disabled which include speculative access.
    -                CORE0_DBUS_ACS_MSK_IC_INT_CLR: u1,
    -                ///  The bit is used to clear interrupt by authentication fail.
    -                CORE0_DBUS_REJECT_INT_CLR: u1,
    -                ///  The bit is used to clear interrupt by dbus trying to write icache
    -                CORE0_DBUS_WR_IC_INT_CLR: u1,
    -                padding: u26,
    -            }),
    -            ///  This description will be updated in the near future.
    -            CORE0_ACS_CACHE_INT_ST: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to indicate interrupt by cpu access icache while the core0_ibus is disabled or icache is disabled which include speculative access.
    -                CORE0_IBUS_ACS_MSK_ICACHE_ST: u1,
    -                ///  The bit is used to indicate interrupt by ibus trying to write icache
    -                CORE0_IBUS_WR_ICACHE_ST: u1,
    -                ///  The bit is used to indicate interrupt by authentication fail.
    -                CORE0_IBUS_REJECT_ST: u1,
    -                ///  The bit is used to indicate interrupt by cpu access icache while the core0_dbus is disabled or icache is disabled which include speculative access.
    -                CORE0_DBUS_ACS_MSK_ICACHE_ST: u1,
    -                ///  The bit is used to indicate interrupt by authentication fail.
    -                CORE0_DBUS_REJECT_ST: u1,
    -                ///  The bit is used to indicate interrupt by dbus trying to write icache
    -                CORE0_DBUS_WR_ICACHE_ST: u1,
    -                padding: u26,
    -            }),
    -            ///  This description will be updated in the near future.
    -            CORE0_DBUS_REJECT_ST: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to indicate the attribute of CPU access dbus when authentication fail. 0: invalidate, 1: execute-able, 2: read-able, 4: write-able.
    -                CORE0_DBUS_ATTR: u3,
    -                ///  The bit is used to indicate the world of CPU access dbus when authentication fail. 0: WORLD0, 1: WORLD1
    -                CORE0_DBUS_WORLD: u1,
    -                padding: u28,
    -            }),
    -            ///  This description will be updated in the near future.
    -            CORE0_DBUS_REJECT_VADDR: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to indicate the virtual address of CPU access dbus when authentication fail.
    -                CORE0_DBUS_VADDR: u32,
    -            }),
    -            ///  This description will be updated in the near future.
    -            CORE0_IBUS_REJECT_ST: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to indicate the attribute of CPU access ibus when authentication fail. 0: invalidate, 1: execute-able, 2: read-able
    -                CORE0_IBUS_ATTR: u3,
    -                ///  The bit is used to indicate the world of CPU access ibus when authentication fail. 0: WORLD0, 1: WORLD1
    -                CORE0_IBUS_WORLD: u1,
    -                padding: u28,
    -            }),
    -            ///  This description will be updated in the near future.
    -            CORE0_IBUS_REJECT_VADDR: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to indicate the virtual address of CPU access ibus when authentication fail.
    -                CORE0_IBUS_VADDR: u32,
    -            }),
    -            ///  This description will be updated in the near future.
    -            CACHE_MMU_FAULT_CONTENT: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to indicate the content of mmu entry which cause mmu fault..
    -                CACHE_MMU_FAULT_CONTENT: u10,
    -                ///  The right-most 3 bits are used to indicate the operations which cause mmu fault occurrence. 0: default, 1: cpu miss, 2: preload miss, 3: writeback, 4: cpu miss evict recovery address, 5: load miss evict recovery address, 6: external dma tx, 7: external dma rx. The most significant bit is used to indicate this operation occurs in which one icache.
    -                CACHE_MMU_FAULT_CODE: u4,
    -                padding: u18,
    -            }),
    -            ///  This description will be updated in the near future.
    -            CACHE_MMU_FAULT_VADDR: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to indicate the virtual address which cause mmu fault..
    -                CACHE_MMU_FAULT_VADDR: u32,
    -            }),
    -            ///  This description will be updated in the near future.
    -            CACHE_WRAP_AROUND_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to enable wrap around mode when read data from flash.
    -                CACHE_FLASH_WRAP_AROUND: u1,
    -                padding: u31,
    -            }),
    -            ///  This description will be updated in the near future.
    -            CACHE_MMU_POWER_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to enable clock gating to save power when access mmu memory, 0: enable, 1: disable
    -                CACHE_MMU_MEM_FORCE_ON: u1,
    -                ///  The bit is used to power mmu memory down, 0: follow_rtc_lslp_pd, 1: power down
    -                CACHE_MMU_MEM_FORCE_PD: u1,
    -                ///  The bit is used to power mmu memory down, 0: follow_rtc_lslp_pd, 1: power up
    -                CACHE_MMU_MEM_FORCE_PU: u1,
    -                padding: u29,
    -            }),
    -            ///  This description will be updated in the near future.
    -            CACHE_STATE: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to indicate whether icache main fsm is in idle state or not. 1: in idle state, 0: not in idle state
    -                ICACHE_STATE: u12,
    -                padding: u20,
    -            }),
    -            ///  This description will be updated in the near future.
    -            CACHE_ENCRYPT_DECRYPT_RECORD_DISABLE: mmio.Mmio(packed struct(u32) {
    -                ///  Reserved.
    -                RECORD_DISABLE_DB_ENCRYPT: u1,
    -                ///  Reserved.
    -                RECORD_DISABLE_G0CB_DECRYPT: u1,
    -                padding: u30,
    -            }),
    -            ///  This description will be updated in the near future.
    -            CACHE_ENCRYPT_DECRYPT_CLK_FORCE_ON: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to close clock gating of manual crypt clock. 1: close gating, 0: open clock gating.
    -                CLK_FORCE_ON_MANUAL_CRYPT: u1,
    -                ///  The bit is used to close clock gating of automatic crypt clock. 1: close gating, 0: open clock gating.
    -                CLK_FORCE_ON_AUTO_CRYPT: u1,
    -                ///  The bit is used to close clock gating of external memory encrypt and decrypt clock. 1: close gating, 0: open clock gating.
    -                CLK_FORCE_ON_CRYPT: u1,
    -                padding: u29,
    -            }),
    -            ///  This description will be updated in the near future.
    -            CACHE_PRELOAD_INT_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to indicate the interrupt by icache pre-load done.
    -                ICACHE_PRELOAD_INT_ST: u1,
    -                ///  The bit is used to enable the interrupt by icache pre-load done.
    -                ICACHE_PRELOAD_INT_ENA: u1,
    -                ///  The bit is used to clear the interrupt by icache pre-load done.
    -                ICACHE_PRELOAD_INT_CLR: u1,
    -                padding: u29,
    -            }),
    -            ///  This description will be updated in the near future.
    -            CACHE_SYNC_INT_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to indicate the interrupt by icache sync done.
    -                ICACHE_SYNC_INT_ST: u1,
    -                ///  The bit is used to enable the interrupt by icache sync done.
    -                ICACHE_SYNC_INT_ENA: u1,
    -                ///  The bit is used to clear the interrupt by icache sync done.
    -                ICACHE_SYNC_INT_CLR: u1,
    -                padding: u29,
    -            }),
    -            ///  This description will be updated in the near future.
    -            CACHE_MMU_OWNER: mmio.Mmio(packed struct(u32) {
    -                ///  The bits are used to specify the owner of MMU.bit0/bit2: ibus, bit1/bit3: dbus
    -                CACHE_MMU_OWNER: u4,
    -                padding: u28,
    -            }),
    -            ///  This description will be updated in the near future.
    -            CACHE_CONF_MISC: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to disable checking mmu entry fault by preload operation.
    -                CACHE_IGNORE_PRELOAD_MMU_ENTRY_FAULT: u1,
    -                ///  The bit is used to disable checking mmu entry fault by sync operation.
    -                CACHE_IGNORE_SYNC_MMU_ENTRY_FAULT: u1,
    -                ///  The bit is used to enable cache trace function.
    -                CACHE_TRACE_ENA: u1,
    -                padding: u29,
    -            }),
    -            ///  This description will be updated in the near future.
    -            ICACHE_FREEZE: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to enable icache freeze mode
    -                ENA: u1,
    -                ///  The bit is used to configure freeze mode, 0: assert busy if CPU miss 1: assert hit if CPU miss
    -                MODE: u1,
    -                ///  The bit is used to indicate icache freeze success
    -                DONE: u1,
    -                padding: u29,
    -            }),
    -            ///  This description will be updated in the near future.
    -            ICACHE_ATOMIC_OPERATE_ENA: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to activate icache atomic operation protection. In this case, sync/lock operation can not interrupt miss-work. This feature does not work during invalidateAll operation.
    -                ICACHE_ATOMIC_OPERATE_ENA: u1,
    -                padding: u31,
    -            }),
    -            ///  This description will be updated in the near future.
    -            CACHE_REQUEST: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to disable request recording which could cause performance issue
    -                BYPASS: u1,
    -                padding: u31,
    -            }),
    -            ///  This description will be updated in the near future.
    -            IBUS_PMS_TBL_LOCK: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to configure the ibus permission control section boundary0
    -                IBUS_PMS_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  This description will be updated in the near future.
    -            IBUS_PMS_TBL_BOUNDARY0: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to configure the ibus permission control section boundary0
    -                IBUS_PMS_BOUNDARY0: u12,
    -                padding: u20,
    -            }),
    -            ///  This description will be updated in the near future.
    -            IBUS_PMS_TBL_BOUNDARY1: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to configure the ibus permission control section boundary1
    -                IBUS_PMS_BOUNDARY1: u12,
    -                padding: u20,
    -            }),
    -            ///  This description will be updated in the near future.
    -            IBUS_PMS_TBL_BOUNDARY2: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to configure the ibus permission control section boundary2
    -                IBUS_PMS_BOUNDARY2: u12,
    -                padding: u20,
    -            }),
    -            ///  This description will be updated in the near future.
    -            IBUS_PMS_TBL_ATTR: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to configure attribute of the ibus permission control section1, bit0: fetch in world0, bit1: load in world0, bit2: fetch in world1, bit3: load in world1
    -                IBUS_PMS_SCT1_ATTR: u4,
    -                ///  The bit is used to configure attribute of the ibus permission control section2, bit0: fetch in world0, bit1: load in world0, bit2: fetch in world1, bit3: load in world1
    -                IBUS_PMS_SCT2_ATTR: u4,
    -                padding: u24,
    -            }),
    -            ///  This description will be updated in the near future.
    -            DBUS_PMS_TBL_LOCK: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to configure the ibus permission control section boundary0
    -                DBUS_PMS_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  This description will be updated in the near future.
    -            DBUS_PMS_TBL_BOUNDARY0: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to configure the dbus permission control section boundary0
    -                DBUS_PMS_BOUNDARY0: u12,
    -                padding: u20,
    -            }),
    -            ///  This description will be updated in the near future.
    -            DBUS_PMS_TBL_BOUNDARY1: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to configure the dbus permission control section boundary1
    -                DBUS_PMS_BOUNDARY1: u12,
    -                padding: u20,
    -            }),
    -            ///  This description will be updated in the near future.
    -            DBUS_PMS_TBL_BOUNDARY2: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to configure the dbus permission control section boundary2
    -                DBUS_PMS_BOUNDARY2: u12,
    -                padding: u20,
    -            }),
    -            ///  This description will be updated in the near future.
    -            DBUS_PMS_TBL_ATTR: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to configure attribute of the dbus permission control section1, bit0: load in world0, bit2: load in world1
    -                DBUS_PMS_SCT1_ATTR: u2,
    -                ///  The bit is used to configure attribute of the dbus permission control section2, bit0: load in world0, bit2: load in world1
    -                DBUS_PMS_SCT2_ATTR: u2,
    -                padding: u28,
    -            }),
    -            ///  This description will be updated in the near future.
    -            CLOCK_GATE: mmio.Mmio(packed struct(u32) {
    -                ///  clock gate enable.
    -                CLK_EN: u1,
    -                padding: u31,
    -            }),
    -            reserved1020: [760]u8,
    -            ///  This description will be updated in the near future.
    -            REG_DATE: mmio.Mmio(packed struct(u32) {
    -                ///  version information
    -                DATE: u28,
    -                padding: u4,
    -            }),
    -        };
    -
    -        ///  General Purpose Input/Output
    -        pub const GPIO = extern struct {
    -            ///  GPIO bit select register
    -            BT_SELECT: mmio.Mmio(packed struct(u32) {
    -                ///  GPIO bit select register
    -                BT_SEL: u32,
    -            }),
    -            ///  GPIO output register
    -            OUT: mmio.Mmio(packed struct(u32) {
    -                ///  GPIO output register for GPIO0-25
    -                DATA_ORIG: u26,
    -                padding: u6,
    -            }),
    -            ///  GPIO output set register
    -            OUT_W1TS: mmio.Mmio(packed struct(u32) {
    -                ///  GPIO output set register for GPIO0-25
    -                OUT_W1TS: u26,
    -                padding: u6,
    -            }),
    -            ///  GPIO output clear register
    -            OUT_W1TC: mmio.Mmio(packed struct(u32) {
    -                ///  GPIO output clear register for GPIO0-25
    -                OUT_W1TC: u26,
    -                padding: u6,
    -            }),
    -            reserved28: [12]u8,
    -            ///  GPIO sdio select register
    -            SDIO_SELECT: mmio.Mmio(packed struct(u32) {
    -                ///  GPIO sdio select register
    -                SDIO_SEL: u8,
    -                padding: u24,
    -            }),
    -            ///  GPIO output enable register
    -            ENABLE: mmio.Mmio(packed struct(u32) {
    -                ///  GPIO output enable register for GPIO0-25
    -                DATA: u26,
    -                padding: u6,
    -            }),
    -            ///  GPIO output enable set register
    -            ENABLE_W1TS: mmio.Mmio(packed struct(u32) {
    -                ///  GPIO output enable set register for GPIO0-25
    -                ENABLE_W1TS: u26,
    -                padding: u6,
    -            }),
    -            ///  GPIO output enable clear register
    -            ENABLE_W1TC: mmio.Mmio(packed struct(u32) {
    -                ///  GPIO output enable clear register for GPIO0-25
    -                ENABLE_W1TC: u26,
    -                padding: u6,
    -            }),
    -            reserved56: [12]u8,
    -            ///  pad strapping register
    -            STRAP: mmio.Mmio(packed struct(u32) {
    -                ///  pad strapping register
    -                STRAPPING: u16,
    -                padding: u16,
    -            }),
    -            ///  GPIO input register
    -            IN: mmio.Mmio(packed struct(u32) {
    -                ///  GPIO input register for GPIO0-25
    -                DATA_NEXT: u26,
    -                padding: u6,
    -            }),
    -            reserved68: [4]u8,
    -            ///  GPIO interrupt status register
    -            STATUS: mmio.Mmio(packed struct(u32) {
    -                ///  GPIO interrupt status register for GPIO0-25
    -                INTERRUPT: u26,
    -                padding: u6,
    -            }),
    -            ///  GPIO interrupt status set register
    -            STATUS_W1TS: mmio.Mmio(packed struct(u32) {
    -                ///  GPIO interrupt status set register for GPIO0-25
    -                STATUS_W1TS: u26,
    -                padding: u6,
    -            }),
    -            ///  GPIO interrupt status clear register
    -            STATUS_W1TC: mmio.Mmio(packed struct(u32) {
    -                ///  GPIO interrupt status clear register for GPIO0-25
    -                STATUS_W1TC: u26,
    -                padding: u6,
    -            }),
    -            reserved92: [12]u8,
    -            ///  GPIO PRO_CPU interrupt status register
    -            PCPU_INT: mmio.Mmio(packed struct(u32) {
    -                ///  GPIO PRO_CPU interrupt status register for GPIO0-25
    -                PROCPU_INT: u26,
    -                padding: u6,
    -            }),
    -            ///  GPIO PRO_CPU(not shielded) interrupt status register
    -            PCPU_NMI_INT: mmio.Mmio(packed struct(u32) {
    -                ///  GPIO PRO_CPU(not shielded) interrupt status register for GPIO0-25
    -                PROCPU_NMI_INT: u26,
    -                padding: u6,
    -            }),
    -            ///  GPIO CPUSDIO interrupt status register
    -            CPUSDIO_INT: mmio.Mmio(packed struct(u32) {
    -                ///  GPIO CPUSDIO interrupt status register for GPIO0-25
    -                SDIO_INT: u26,
    -                padding: u6,
    -            }),
    -            reserved116: [12]u8,
    -            ///  GPIO pin configuration register
    -            PIN: [26]mmio.Mmio(packed struct(u32) {
    -                ///  set GPIO input_sync2 signal mode. :disable. 1:trigger at negedge. 2or3:trigger at posedge.
    -                PIN_SYNC2_BYPASS: u2,
    -                ///  set this bit to select pad driver. 1:open-drain. :normal.
    -                PIN_PAD_DRIVER: u1,
    -                ///  set GPIO input_sync1 signal mode. :disable. 1:trigger at negedge. 2or3:trigger at posedge.
    -                PIN_SYNC1_BYPASS: u2,
    -                reserved7: u2,
    -                ///  set this value to choose interrupt mode. :disable GPIO interrupt. 1:trigger at posedge. 2:trigger at negedge. 3:trigger at any edge. 4:valid at low level. 5:valid at high level
    -                PIN_INT_TYPE: u3,
    -                ///  set this bit to enable GPIO wakeup.(can only wakeup CPU from Light-sleep Mode)
    -                PIN_WAKEUP_ENABLE: u1,
    -                ///  reserved
    -                PIN_CONFIG: u2,
    -                ///  set bit 13 to enable CPU interrupt. set bit 14 to enable CPU(not shielded) interrupt.
    -                PIN_INT_ENA: u5,
    -                padding: u14,
    -            }),
    -            reserved332: [112]u8,
    -            ///  GPIO interrupt source register
    -            STATUS_NEXT: mmio.Mmio(packed struct(u32) {
    -                ///  GPIO interrupt source register for GPIO0-25
    -                STATUS_INTERRUPT_NEXT: u26,
    -                padding: u6,
    -            }),
    -            reserved340: [4]u8,
    -            ///  GPIO input function configuration register
    -            FUNC_IN_SEL_CFG: [128]mmio.Mmio(packed struct(u32) {
    -                ///  set this value: s=-53: connect GPIO[s] to this port. s=x38: set this port always high level. s=x3C: set this port always low level.
    -                IN_SEL: u5,
    -                ///  set this bit to invert input signal. 1:invert. :not invert.
    -                IN_INV_SEL: u1,
    -                ///  set this bit to bypass GPIO. 1:do not bypass GPIO. :bypass GPIO.
    -                SEL: u1,
    -                padding: u25,
    -            }),
    -            reserved1364: [512]u8,
    -            ///  GPIO output function select register
    -            FUNC_OUT_SEL_CFG: [26]mmio.Mmio(packed struct(u32) {
    -                ///  The value of the bits: <=s<=256. Set the value to select output signal. s=-255: output of GPIO[n] equals input of peripheral[s]. s=256: output of GPIO[n] equals GPIO_OUT_REG[n].
    -                OUT_SEL: u8,
    -                ///  set this bit to invert output signal.1:invert.:not invert.
    -                INV_SEL: u1,
    -                ///  set this bit to select output enable signal.1:use GPIO_ENABLE_REG[n] as output enable signal.:use peripheral output enable signal.
    -                OEN_SEL: u1,
    -                ///  set this bit to invert output enable signal.1:invert.:not invert.
    -                OEN_INV_SEL: u1,
    -                padding: u21,
    -            }),
    -            reserved1580: [112]u8,
    -            ///  GPIO clock gate register
    -            CLOCK_GATE: mmio.Mmio(packed struct(u32) {
    -                ///  set this bit to enable GPIO clock gate
    -                CLK_EN: u1,
    -                padding: u31,
    -            }),
    -            reserved1788: [204]u8,
    -            ///  GPIO version register
    -            REG_DATE: mmio.Mmio(packed struct(u32) {
    -                ///  version register
    -                REG_DATE: u28,
    -                padding: u4,
    -            }),
    -        };
    -
    -        ///  Sigma-Delta Modulation
    -        pub const GPIOSD = extern struct {
    -            ///  Duty Cycle Configure Register of SDM%s
    -            SIGMADELTA: [4]mmio.Mmio(packed struct(u32) {
    -                ///  This field is used to configure the duty cycle of sigma delta modulation output.
    -                SD0_IN: u8,
    -                ///  This field is used to set a divider value to divide APB clock.
    -                SD0_PRESCALE: u8,
    -                padding: u16,
    -            }),
    -            reserved32: [16]u8,
    -            ///  Clock Gating Configure Register
    -            SIGMADELTA_CG: mmio.Mmio(packed struct(u32) {
    -                reserved31: u31,
    -                ///  Clock enable bit of configuration registers for sigma delta modulation.
    -                CLK_EN: u1,
    -            }),
    -            ///  MISC Register
    -            SIGMADELTA_MISC: mmio.Mmio(packed struct(u32) {
    -                reserved30: u30,
    -                ///  Clock enable bit of sigma delta modulation.
    -                FUNCTION_CLK_EN: u1,
    -                ///  Reserved.
    -                SPI_SWAP: u1,
    -            }),
    -            ///  Version Control Register
    -            SIGMADELTA_VERSION: mmio.Mmio(packed struct(u32) {
    -                ///  Version control register.
    -                GPIO_SD_DATE: u28,
    -                padding: u4,
    -            }),
    -        };
    -
    -        ///  HMAC (Hash-based Message Authentication Code) Accelerator
    -        pub const HMAC = extern struct {
    -            reserved64: [64]u8,
    -            ///  Process control register 0.
    -            SET_START: mmio.Mmio(packed struct(u32) {
    -                ///  Start hmac operation.
    -                SET_START: u1,
    -                padding: u31,
    -            }),
    -            ///  Configure purpose.
    -            SET_PARA_PURPOSE: mmio.Mmio(packed struct(u32) {
    -                ///  Set hmac parameter purpose.
    -                PURPOSE_SET: u4,
    -                padding: u28,
    -            }),
    -            ///  Configure key.
    -            SET_PARA_KEY: mmio.Mmio(packed struct(u32) {
    -                ///  Set hmac parameter key.
    -                KEY_SET: u3,
    -                padding: u29,
    -            }),
    -            ///  Finish initial configuration.
    -            SET_PARA_FINISH: mmio.Mmio(packed struct(u32) {
    -                ///  Finish hmac configuration.
    -                SET_PARA_END: u1,
    -                padding: u31,
    -            }),
    -            ///  Process control register 1.
    -            SET_MESSAGE_ONE: mmio.Mmio(packed struct(u32) {
    -                ///  Call SHA to calculate one message block.
    -                SET_TEXT_ONE: u1,
    -                padding: u31,
    -            }),
    -            ///  Process control register 2.
    -            SET_MESSAGE_ING: mmio.Mmio(packed struct(u32) {
    -                ///  Continue typical hmac.
    -                SET_TEXT_ING: u1,
    -                padding: u31,
    -            }),
    -            ///  Process control register 3.
    -            SET_MESSAGE_END: mmio.Mmio(packed struct(u32) {
    -                ///  Start hardware padding.
    -                SET_TEXT_END: u1,
    -                padding: u31,
    -            }),
    -            ///  Process control register 4.
    -            SET_RESULT_FINISH: mmio.Mmio(packed struct(u32) {
    -                ///  After read result from upstream, then let hmac back to idle.
    -                SET_RESULT_END: u1,
    -                padding: u31,
    -            }),
    -            ///  Invalidate register 0.
    -            SET_INVALIDATE_JTAG: mmio.Mmio(packed struct(u32) {
    -                ///  Clear result from hmac downstream JTAG.
    -                SET_INVALIDATE_JTAG: u1,
    -                padding: u31,
    -            }),
    -            ///  Invalidate register 1.
    -            SET_INVALIDATE_DS: mmio.Mmio(packed struct(u32) {
    -                ///  Clear result from hmac downstream DS.
    -                SET_INVALIDATE_DS: u1,
    -                padding: u31,
    -            }),
    -            ///  Error register.
    -            QUERY_ERROR: mmio.Mmio(packed struct(u32) {
    -                ///  Hmac configuration state. 0: key are agree with purpose. 1: error
    -                QUREY_CHECK: u1,
    -                padding: u31,
    -            }),
    -            ///  Busy register.
    -            QUERY_BUSY: mmio.Mmio(packed struct(u32) {
    -                ///  Hmac state. 1'b0: idle. 1'b1: busy
    -                BUSY_STATE: u1,
    -                padding: u31,
    -            }),
    -            reserved128: [16]u8,
    -            ///  Message block memory.
    -            WR_MESSAGE_MEM: [64]u8,
    -            ///  Result from upstream.
    -            RD_RESULT_MEM: [32]u8,
    -            reserved240: [16]u8,
    -            ///  Process control register 5.
    -            SET_MESSAGE_PAD: mmio.Mmio(packed struct(u32) {
    -                ///  Start software padding.
    -                SET_TEXT_PAD: u1,
    -                padding: u31,
    -            }),
    -            ///  Process control register 6.
    -            ONE_BLOCK: mmio.Mmio(packed struct(u32) {
    -                ///  Don't have to do padding.
    -                SET_ONE_BLOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  Jtag register 0.
    -            SOFT_JTAG_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  Turn on JTAG verification.
    -                SOFT_JTAG_CTRL: u1,
    -                padding: u31,
    -            }),
    -            ///  Jtag register 1.
    -            WR_JTAG: mmio.Mmio(packed struct(u32) {
    -                ///  32-bit of key to be compared.
    -                WR_JTAG: u32,
    -            }),
    -        };
    -
    -        ///  I2C (Inter-Integrated Circuit) Controller
    -        pub const I2C0 = extern struct {
    -            ///  I2C_SCL_LOW_PERIOD_REG
    -            SCL_LOW_PERIOD: mmio.Mmio(packed struct(u32) {
    -                ///  reg_scl_low_period
    -                SCL_LOW_PERIOD: u9,
    -                padding: u23,
    -            }),
    -            ///  I2C_CTR_REG
    -            CTR: mmio.Mmio(packed struct(u32) {
    -                ///  reg_sda_force_out
    -                SDA_FORCE_OUT: u1,
    -                ///  reg_scl_force_out
    -                SCL_FORCE_OUT: u1,
    -                ///  reg_sample_scl_level
    -                SAMPLE_SCL_LEVEL: u1,
    -                ///  reg_rx_full_ack_level
    -                RX_FULL_ACK_LEVEL: u1,
    -                ///  reg_ms_mode
    -                MS_MODE: u1,
    -                ///  reg_trans_start
    -                TRANS_START: u1,
    -                ///  reg_tx_lsb_first
    -                TX_LSB_FIRST: u1,
    -                ///  reg_rx_lsb_first
    -                RX_LSB_FIRST: u1,
    -                ///  reg_clk_en
    -                CLK_EN: u1,
    -                ///  reg_arbitration_en
    -                ARBITRATION_EN: u1,
    -                ///  reg_fsm_rst
    -                FSM_RST: u1,
    -                ///  reg_conf_upgate
    -                CONF_UPGATE: u1,
    -                ///  reg_slv_tx_auto_start_en
    -                SLV_TX_AUTO_START_EN: u1,
    -                ///  reg_addr_10bit_rw_check_en
    -                ADDR_10BIT_RW_CHECK_EN: u1,
    -                ///  reg_addr_broadcasting_en
    -                ADDR_BROADCASTING_EN: u1,
    -                padding: u17,
    -            }),
    -            ///  I2C_SR_REG
    -            SR: mmio.Mmio(packed struct(u32) {
    -                ///  reg_resp_rec
    -                RESP_REC: u1,
    -                ///  reg_slave_rw
    -                SLAVE_RW: u1,
    -                reserved3: u1,
    -                ///  reg_arb_lost
    -                ARB_LOST: u1,
    -                ///  reg_bus_busy
    -                BUS_BUSY: u1,
    -                ///  reg_slave_addressed
    -                SLAVE_ADDRESSED: u1,
    -                reserved8: u2,
    -                ///  reg_rxfifo_cnt
    -                RXFIFO_CNT: u6,
    -                ///  reg_stretch_cause
    -                STRETCH_CAUSE: u2,
    -                reserved18: u2,
    -                ///  reg_txfifo_cnt
    -                TXFIFO_CNT: u6,
    -                ///  reg_scl_main_state_last
    -                SCL_MAIN_STATE_LAST: u3,
    -                reserved28: u1,
    -                ///  reg_scl_state_last
    -                SCL_STATE_LAST: u3,
    -                padding: u1,
    -            }),
    -            ///  I2C_TO_REG
    -            TO: mmio.Mmio(packed struct(u32) {
    -                ///  reg_time_out_value
    -                TIME_OUT_VALUE: u5,
    -                ///  reg_time_out_en
    -                TIME_OUT_EN: u1,
    -                padding: u26,
    -            }),
    -            ///  I2C_SLAVE_ADDR_REG
    -            SLAVE_ADDR: mmio.Mmio(packed struct(u32) {
    -                ///  reg_slave_addr
    -                SLAVE_ADDR: u15,
    -                reserved31: u16,
    -                ///  reg_addr_10bit_en
    -                ADDR_10BIT_EN: u1,
    -            }),
    -            ///  I2C_FIFO_ST_REG
    -            FIFO_ST: mmio.Mmio(packed struct(u32) {
    -                ///  reg_rxfifo_raddr
    -                RXFIFO_RADDR: u5,
    -                ///  reg_rxfifo_waddr
    -                RXFIFO_WADDR: u5,
    -                ///  reg_txfifo_raddr
    -                TXFIFO_RADDR: u5,
    -                ///  reg_txfifo_waddr
    -                TXFIFO_WADDR: u5,
    -                reserved22: u2,
    -                ///  reg_slave_rw_point
    -                SLAVE_RW_POINT: u8,
    -                padding: u2,
    -            }),
    -            ///  I2C_FIFO_CONF_REG
    -            FIFO_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  reg_rxfifo_wm_thrhd
    -                RXFIFO_WM_THRHD: u5,
    -                ///  reg_txfifo_wm_thrhd
    -                TXFIFO_WM_THRHD: u5,
    -                ///  reg_nonfifo_en
    -                NONFIFO_EN: u1,
    -                ///  reg_fifo_addr_cfg_en
    -                FIFO_ADDR_CFG_EN: u1,
    -                ///  reg_rx_fifo_rst
    -                RX_FIFO_RST: u1,
    -                ///  reg_tx_fifo_rst
    -                TX_FIFO_RST: u1,
    -                ///  reg_fifo_prt_en
    -                FIFO_PRT_EN: u1,
    -                padding: u17,
    -            }),
    -            ///  I2C_FIFO_DATA_REG
    -            DATA: mmio.Mmio(packed struct(u32) {
    -                ///  reg_fifo_rdata
    -                FIFO_RDATA: u8,
    -                padding: u24,
    -            }),
    -            ///  I2C_INT_RAW_REG
    -            INT_RAW: mmio.Mmio(packed struct(u32) {
    -                ///  reg_rxfifo_wm_int_raw
    -                RXFIFO_WM_INT_RAW: u1,
    -                ///  reg_txfifo_wm_int_raw
    -                TXFIFO_WM_INT_RAW: u1,
    -                ///  reg_rxfifo_ovf_int_raw
    -                RXFIFO_OVF_INT_RAW: u1,
    -                ///  reg_end_detect_int_raw
    -                END_DETECT_INT_RAW: u1,
    -                ///  reg_byte_trans_done_int_raw
    -                BYTE_TRANS_DONE_INT_RAW: u1,
    -                ///  reg_arbitration_lost_int_raw
    -                ARBITRATION_LOST_INT_RAW: u1,
    -                ///  reg_mst_txfifo_udf_int_raw
    -                MST_TXFIFO_UDF_INT_RAW: u1,
    -                ///  reg_trans_complete_int_raw
    -                TRANS_COMPLETE_INT_RAW: u1,
    -                ///  reg_time_out_int_raw
    -                TIME_OUT_INT_RAW: u1,
    -                ///  reg_trans_start_int_raw
    -                TRANS_START_INT_RAW: u1,
    -                ///  reg_nack_int_raw
    -                NACK_INT_RAW: u1,
    -                ///  reg_txfifo_ovf_int_raw
    -                TXFIFO_OVF_INT_RAW: u1,
    -                ///  reg_rxfifo_udf_int_raw
    -                RXFIFO_UDF_INT_RAW: u1,
    -                ///  reg_scl_st_to_int_raw
    -                SCL_ST_TO_INT_RAW: u1,
    -                ///  reg_scl_main_st_to_int_raw
    -                SCL_MAIN_ST_TO_INT_RAW: u1,
    -                ///  reg_det_start_int_raw
    -                DET_START_INT_RAW: u1,
    -                ///  reg_slave_stretch_int_raw
    -                SLAVE_STRETCH_INT_RAW: u1,
    -                ///  reg_general_call_int_raw
    -                GENERAL_CALL_INT_RAW: u1,
    -                padding: u14,
    -            }),
    -            ///  I2C_INT_CLR_REG
    -            INT_CLR: mmio.Mmio(packed struct(u32) {
    -                ///  reg_rxfifo_wm_int_clr
    -                RXFIFO_WM_INT_CLR: u1,
    -                ///  reg_txfifo_wm_int_clr
    -                TXFIFO_WM_INT_CLR: u1,
    -                ///  reg_rxfifo_ovf_int_clr
    -                RXFIFO_OVF_INT_CLR: u1,
    -                ///  reg_end_detect_int_clr
    -                END_DETECT_INT_CLR: u1,
    -                ///  reg_byte_trans_done_int_clr
    -                BYTE_TRANS_DONE_INT_CLR: u1,
    -                ///  reg_arbitration_lost_int_clr
    -                ARBITRATION_LOST_INT_CLR: u1,
    -                ///  reg_mst_txfifo_udf_int_clr
    -                MST_TXFIFO_UDF_INT_CLR: u1,
    -                ///  reg_trans_complete_int_clr
    -                TRANS_COMPLETE_INT_CLR: u1,
    -                ///  reg_time_out_int_clr
    -                TIME_OUT_INT_CLR: u1,
    -                ///  reg_trans_start_int_clr
    -                TRANS_START_INT_CLR: u1,
    -                ///  reg_nack_int_clr
    -                NACK_INT_CLR: u1,
    -                ///  reg_txfifo_ovf_int_clr
    -                TXFIFO_OVF_INT_CLR: u1,
    -                ///  reg_rxfifo_udf_int_clr
    -                RXFIFO_UDF_INT_CLR: u1,
    -                ///  reg_scl_st_to_int_clr
    -                SCL_ST_TO_INT_CLR: u1,
    -                ///  reg_scl_main_st_to_int_clr
    -                SCL_MAIN_ST_TO_INT_CLR: u1,
    -                ///  reg_det_start_int_clr
    -                DET_START_INT_CLR: u1,
    -                ///  reg_slave_stretch_int_clr
    -                SLAVE_STRETCH_INT_CLR: u1,
    -                ///  reg_general_call_int_clr
    -                GENERAL_CALL_INT_CLR: u1,
    -                padding: u14,
    -            }),
    -            ///  I2C_INT_ENA_REG
    -            INT_ENA: mmio.Mmio(packed struct(u32) {
    -                ///  reg_rxfifo_wm_int_ena
    -                RXFIFO_WM_INT_ENA: u1,
    -                ///  reg_txfifo_wm_int_ena
    -                TXFIFO_WM_INT_ENA: u1,
    -                ///  reg_rxfifo_ovf_int_ena
    -                RXFIFO_OVF_INT_ENA: u1,
    -                ///  reg_end_detect_int_ena
    -                END_DETECT_INT_ENA: u1,
    -                ///  reg_byte_trans_done_int_ena
    -                BYTE_TRANS_DONE_INT_ENA: u1,
    -                ///  reg_arbitration_lost_int_ena
    -                ARBITRATION_LOST_INT_ENA: u1,
    -                ///  reg_mst_txfifo_udf_int_ena
    -                MST_TXFIFO_UDF_INT_ENA: u1,
    -                ///  reg_trans_complete_int_ena
    -                TRANS_COMPLETE_INT_ENA: u1,
    -                ///  reg_time_out_int_ena
    -                TIME_OUT_INT_ENA: u1,
    -                ///  reg_trans_start_int_ena
    -                TRANS_START_INT_ENA: u1,
    -                ///  reg_nack_int_ena
    -                NACK_INT_ENA: u1,
    -                ///  reg_txfifo_ovf_int_ena
    -                TXFIFO_OVF_INT_ENA: u1,
    -                ///  reg_rxfifo_udf_int_ena
    -                RXFIFO_UDF_INT_ENA: u1,
    -                ///  reg_scl_st_to_int_ena
    -                SCL_ST_TO_INT_ENA: u1,
    -                ///  reg_scl_main_st_to_int_ena
    -                SCL_MAIN_ST_TO_INT_ENA: u1,
    -                ///  reg_det_start_int_ena
    -                DET_START_INT_ENA: u1,
    -                ///  reg_slave_stretch_int_ena
    -                SLAVE_STRETCH_INT_ENA: u1,
    -                ///  reg_general_call_int_ena
    -                GENERAL_CALL_INT_ENA: u1,
    -                padding: u14,
    -            }),
    -            ///  I2C_INT_STATUS_REG
    -            INT_STATUS: mmio.Mmio(packed struct(u32) {
    -                ///  reg_rxfifo_wm_int_st
    -                RXFIFO_WM_INT_ST: u1,
    -                ///  reg_txfifo_wm_int_st
    -                TXFIFO_WM_INT_ST: u1,
    -                ///  reg_rxfifo_ovf_int_st
    -                RXFIFO_OVF_INT_ST: u1,
    -                ///  reg_end_detect_int_st
    -                END_DETECT_INT_ST: u1,
    -                ///  reg_byte_trans_done_int_st
    -                BYTE_TRANS_DONE_INT_ST: u1,
    -                ///  reg_arbitration_lost_int_st
    -                ARBITRATION_LOST_INT_ST: u1,
    -                ///  reg_mst_txfifo_udf_int_st
    -                MST_TXFIFO_UDF_INT_ST: u1,
    -                ///  reg_trans_complete_int_st
    -                TRANS_COMPLETE_INT_ST: u1,
    -                ///  reg_time_out_int_st
    -                TIME_OUT_INT_ST: u1,
    -                ///  reg_trans_start_int_st
    -                TRANS_START_INT_ST: u1,
    -                ///  reg_nack_int_st
    -                NACK_INT_ST: u1,
    -                ///  reg_txfifo_ovf_int_st
    -                TXFIFO_OVF_INT_ST: u1,
    -                ///  reg_rxfifo_udf_int_st
    -                RXFIFO_UDF_INT_ST: u1,
    -                ///  reg_scl_st_to_int_st
    -                SCL_ST_TO_INT_ST: u1,
    -                ///  reg_scl_main_st_to_int_st
    -                SCL_MAIN_ST_TO_INT_ST: u1,
    -                ///  reg_det_start_int_st
    -                DET_START_INT_ST: u1,
    -                ///  reg_slave_stretch_int_st
    -                SLAVE_STRETCH_INT_ST: u1,
    -                ///  reg_general_call_int_st
    -                GENERAL_CALL_INT_ST: u1,
    -                padding: u14,
    -            }),
    -            ///  I2C_SDA_HOLD_REG
    -            SDA_HOLD: mmio.Mmio(packed struct(u32) {
    -                ///  reg_sda_hold_time
    -                TIME: u9,
    -                padding: u23,
    -            }),
    -            ///  I2C_SDA_SAMPLE_REG
    -            SDA_SAMPLE: mmio.Mmio(packed struct(u32) {
    -                ///  reg_sda_sample_time
    -                TIME: u9,
    -                padding: u23,
    -            }),
    -            ///  I2C_SCL_HIGH_PERIOD_REG
    -            SCL_HIGH_PERIOD: mmio.Mmio(packed struct(u32) {
    -                ///  reg_scl_high_period
    -                SCL_HIGH_PERIOD: u9,
    -                ///  reg_scl_wait_high_period
    -                SCL_WAIT_HIGH_PERIOD: u7,
    -                padding: u16,
    -            }),
    -            reserved64: [4]u8,
    -            ///  I2C_SCL_START_HOLD_REG
    -            SCL_START_HOLD: mmio.Mmio(packed struct(u32) {
    -                ///  reg_scl_start_hold_time
    -                TIME: u9,
    -                padding: u23,
    -            }),
    -            ///  I2C_SCL_RSTART_SETUP_REG
    -            SCL_RSTART_SETUP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_scl_rstart_setup_time
    -                TIME: u9,
    -                padding: u23,
    -            }),
    -            ///  I2C_SCL_STOP_HOLD_REG
    -            SCL_STOP_HOLD: mmio.Mmio(packed struct(u32) {
    -                ///  reg_scl_stop_hold_time
    -                TIME: u9,
    -                padding: u23,
    -            }),
    -            ///  I2C_SCL_STOP_SETUP_REG
    -            SCL_STOP_SETUP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_scl_stop_setup_time
    -                TIME: u9,
    -                padding: u23,
    -            }),
    -            ///  I2C_FILTER_CFG_REG
    -            FILTER_CFG: mmio.Mmio(packed struct(u32) {
    -                ///  reg_scl_filter_thres
    -                SCL_FILTER_THRES: u4,
    -                ///  reg_sda_filter_thres
    -                SDA_FILTER_THRES: u4,
    -                ///  reg_scl_filter_en
    -                SCL_FILTER_EN: u1,
    -                ///  reg_sda_filter_en
    -                SDA_FILTER_EN: u1,
    -                padding: u22,
    -            }),
    -            ///  I2C_CLK_CONF_REG
    -            CLK_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  reg_sclk_div_num
    -                SCLK_DIV_NUM: u8,
    -                ///  reg_sclk_div_a
    -                SCLK_DIV_A: u6,
    -                ///  reg_sclk_div_b
    -                SCLK_DIV_B: u6,
    -                ///  reg_sclk_sel
    -                SCLK_SEL: u1,
    -                ///  reg_sclk_active
    -                SCLK_ACTIVE: u1,
    -                padding: u10,
    -            }),
    -            ///  I2C_COMD%s_REG
    -            COMD: [8]mmio.Mmio(packed struct(u32) {
    -                ///  reg_command
    -                COMMAND: u14,
    -                reserved31: u17,
    -                ///  reg_command_done
    -                COMMAND_DONE: u1,
    -            }),
    -            ///  I2C_SCL_ST_TIME_OUT_REG
    -            SCL_ST_TIME_OUT: mmio.Mmio(packed struct(u32) {
    -                ///  reg_scl_st_to_regno more than 23
    -                SCL_ST_TO_I2C: u5,
    -                padding: u27,
    -            }),
    -            ///  I2C_SCL_MAIN_ST_TIME_OUT_REG
    -            SCL_MAIN_ST_TIME_OUT: mmio.Mmio(packed struct(u32) {
    -                ///  reg_scl_main_st_to_regno more than 23
    -                SCL_MAIN_ST_TO_I2C: u5,
    -                padding: u27,
    -            }),
    -            ///  I2C_SCL_SP_CONF_REG
    -            SCL_SP_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  reg_scl_rst_slv_en
    -                SCL_RST_SLV_EN: u1,
    -                ///  reg_scl_rst_slv_num
    -                SCL_RST_SLV_NUM: u5,
    -                ///  reg_scl_pd_en
    -                SCL_PD_EN: u1,
    -                ///  reg_sda_pd_en
    -                SDA_PD_EN: u1,
    -                padding: u24,
    -            }),
    -            ///  I2C_SCL_STRETCH_CONF_REG
    -            SCL_STRETCH_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  reg_stretch_protect_num
    -                STRETCH_PROTECT_NUM: u10,
    -                ///  reg_slave_scl_stretch_en
    -                SLAVE_SCL_STRETCH_EN: u1,
    -                ///  reg_slave_scl_stretch_clr
    -                SLAVE_SCL_STRETCH_CLR: u1,
    -                ///  reg_slave_byte_ack_ctl_en
    -                SLAVE_BYTE_ACK_CTL_EN: u1,
    -                ///  reg_slave_byte_ack_lvl
    -                SLAVE_BYTE_ACK_LVL: u1,
    -                padding: u18,
    -            }),
    -            reserved248: [112]u8,
    -            ///  I2C_DATE_REG
    -            DATE: mmio.Mmio(packed struct(u32) {
    -                ///  reg_date
    -                DATE: u32,
    -            }),
    -            reserved256: [4]u8,
    -            ///  I2C_TXFIFO_START_ADDR_REG
    -            TXFIFO_START_ADDR: mmio.Mmio(packed struct(u32) {
    -                ///  reg_txfifo_start_addr.
    -                TXFIFO_START_ADDR: u32,
    -            }),
    -            reserved384: [124]u8,
    -            ///  I2C_RXFIFO_START_ADDR_REG
    -            RXFIFO_START_ADDR: mmio.Mmio(packed struct(u32) {
    -                ///  reg_rxfifo_start_addr.
    -                RXFIFO_START_ADDR: u32,
    -            }),
    -        };
    -
    -        ///  I2S (Inter-IC Sound) Controller
    -        pub const I2S = extern struct {
    -            reserved12: [12]u8,
    -            ///  I2S interrupt raw register, valid in level.
    -            INT_RAW: mmio.Mmio(packed struct(u32) {
    -                ///  The raw interrupt status bit for the i2s_rx_done_int interrupt
    -                RX_DONE_INT_RAW: u1,
    -                ///  The raw interrupt status bit for the i2s_tx_done_int interrupt
    -                TX_DONE_INT_RAW: u1,
    -                ///  The raw interrupt status bit for the i2s_rx_hung_int interrupt
    -                RX_HUNG_INT_RAW: u1,
    -                ///  The raw interrupt status bit for the i2s_tx_hung_int interrupt
    -                TX_HUNG_INT_RAW: u1,
    -                padding: u28,
    -            }),
    -            ///  I2S interrupt status register.
    -            INT_ST: mmio.Mmio(packed struct(u32) {
    -                ///  The masked interrupt status bit for the i2s_rx_done_int interrupt
    -                RX_DONE_INT_ST: u1,
    -                ///  The masked interrupt status bit for the i2s_tx_done_int interrupt
    -                TX_DONE_INT_ST: u1,
    -                ///  The masked interrupt status bit for the i2s_rx_hung_int interrupt
    -                RX_HUNG_INT_ST: u1,
    -                ///  The masked interrupt status bit for the i2s_tx_hung_int interrupt
    -                TX_HUNG_INT_ST: u1,
    -                padding: u28,
    -            }),
    -            ///  I2S interrupt enable register.
    -            INT_ENA: mmio.Mmio(packed struct(u32) {
    -                ///  The interrupt enable bit for the i2s_rx_done_int interrupt
    -                RX_DONE_INT_ENA: u1,
    -                ///  The interrupt enable bit for the i2s_tx_done_int interrupt
    -                TX_DONE_INT_ENA: u1,
    -                ///  The interrupt enable bit for the i2s_rx_hung_int interrupt
    -                RX_HUNG_INT_ENA: u1,
    -                ///  The interrupt enable bit for the i2s_tx_hung_int interrupt
    -                TX_HUNG_INT_ENA: u1,
    -                padding: u28,
    -            }),
    -            ///  I2S interrupt clear register.
    -            INT_CLR: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to clear the i2s_rx_done_int interrupt
    -                RX_DONE_INT_CLR: u1,
    -                ///  Set this bit to clear the i2s_tx_done_int interrupt
    -                TX_DONE_INT_CLR: u1,
    -                ///  Set this bit to clear the i2s_rx_hung_int interrupt
    -                RX_HUNG_INT_CLR: u1,
    -                ///  Set this bit to clear the i2s_tx_hung_int interrupt
    -                TX_HUNG_INT_CLR: u1,
    -                padding: u28,
    -            }),
    -            reserved32: [4]u8,
    -            ///  I2S RX configure register
    -            RX_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to reset receiver
    -                RX_RESET: u1,
    -                ///  Set this bit to reset Rx AFIFO
    -                RX_FIFO_RESET: u1,
    -                ///  Set this bit to start receiving data
    -                RX_START: u1,
    -                ///  Set this bit to enable slave receiver mode
    -                RX_SLAVE_MOD: u1,
    -                reserved5: u1,
    -                ///  Set this bit to enable receiver in mono mode
    -                RX_MONO: u1,
    -                reserved7: u1,
    -                ///  I2S Rx byte endian, 1: low addr value to high addr. 0: low addr with low addr value.
    -                RX_BIG_ENDIAN: u1,
    -                ///  Set 1 to update I2S RX registers from APB clock domain to I2S RX clock domain. This bit will be cleared by hardware after update register done.
    -                RX_UPDATE: u1,
    -                ///  1: The first channel data value is valid in I2S RX mono mode. 0: The second channel data value is valid in I2S RX mono mode.
    -                RX_MONO_FST_VLD: u1,
    -                ///  I2S RX compress/decompress configuration bit. & 0 (atol): A-Law decompress, 1 (ltoa) : A-Law compress, 2 (utol) : u-Law decompress, 3 (ltou) : u-Law compress. &
    -                RX_PCM_CONF: u2,
    -                ///  Set this bit to bypass Compress/Decompress module for received data.
    -                RX_PCM_BYPASS: u1,
    -                ///  0 : I2S Rx only stop when reg_rx_start is cleared. 1: Stop when reg_rx_start is 0 or in_suc_eof is 1. 2: Stop I2S RX when reg_rx_start is 0 or RX FIFO is full.
    -                RX_STOP_MODE: u2,
    -                ///  1: I2S RX left alignment mode. 0: I2S RX right alignment mode.
    -                RX_LEFT_ALIGN: u1,
    -                ///  1: store 24 channel bits to 32 bits. 0:store 24 channel bits to 24 bits.
    -                RX_24_FILL_EN: u1,
    -                ///  0: WS should be 0 when receiving left channel data, and WS is 1in right channel. 1: WS should be 1 when receiving left channel data, and WS is 0in right channel.
    -                RX_WS_IDLE_POL: u1,
    -                ///  I2S Rx bit endian. 1:small endian, the LSB is received first. 0:big endian, the MSB is received first.
    -                RX_BIT_ORDER: u1,
    -                ///  1: Enable I2S TDM Rx mode . 0: Disable.
    -                RX_TDM_EN: u1,
    -                ///  1: Enable I2S PDM Rx mode . 0: Disable.
    -                RX_PDM_EN: u1,
    -                padding: u11,
    -            }),
    -            ///  I2S TX configure register
    -            TX_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to reset transmitter
    -                TX_RESET: u1,
    -                ///  Set this bit to reset Tx AFIFO
    -                TX_FIFO_RESET: u1,
    -                ///  Set this bit to start transmitting data
    -                TX_START: u1,
    -                ///  Set this bit to enable slave transmitter mode
    -                TX_SLAVE_MOD: u1,
    -                reserved5: u1,
    -                ///  Set this bit to enable transmitter in mono mode
    -                TX_MONO: u1,
    -                ///  1: The value of Left channel data is equal to the value of right channel data in I2S TX mono mode or TDM channel select mode. 0: The invalid channel data is reg_i2s_single_data in I2S TX mono mode or TDM channel select mode.
    -                TX_CHAN_EQUAL: u1,
    -                ///  I2S Tx byte endian, 1: low addr value to high addr. 0: low addr with low addr value.
    -                TX_BIG_ENDIAN: u1,
    -                ///  Set 1 to update I2S TX registers from APB clock domain to I2S TX clock domain. This bit will be cleared by hardware after update register done.
    -                TX_UPDATE: u1,
    -                ///  1: The first channel data value is valid in I2S TX mono mode. 0: The second channel data value is valid in I2S TX mono mode.
    -                TX_MONO_FST_VLD: u1,
    -                ///  I2S TX compress/decompress configuration bit. & 0 (atol): A-Law decompress, 1 (ltoa) : A-Law compress, 2 (utol) : u-Law decompress, 3 (ltou) : u-Law compress. &
    -                TX_PCM_CONF: u2,
    -                ///  Set this bit to bypass Compress/Decompress module for transmitted data.
    -                TX_PCM_BYPASS: u1,
    -                ///  Set this bit to stop disable output BCK signal and WS signal when tx FIFO is emtpy
    -                TX_STOP_EN: u1,
    -                reserved15: u1,
    -                ///  1: I2S TX left alignment mode. 0: I2S TX right alignment mode.
    -                TX_LEFT_ALIGN: u1,
    -                ///  1: Sent 32 bits in 24 channel bits mode. 0: Sent 24 bits in 24 channel bits mode
    -                TX_24_FILL_EN: u1,
    -                ///  0: WS should be 0 when sending left channel data, and WS is 1in right channel. 1: WS should be 1 when sending left channel data, and WS is 0in right channel.
    -                TX_WS_IDLE_POL: u1,
    -                ///  I2S Tx bit endian. 1:small endian, the LSB is sent first. 0:big endian, the MSB is sent first.
    -                TX_BIT_ORDER: u1,
    -                ///  1: Enable I2S TDM Tx mode . 0: Disable.
    -                TX_TDM_EN: u1,
    -                ///  1: Enable I2S PDM Tx mode . 0: Disable.
    -                TX_PDM_EN: u1,
    -                reserved24: u3,
    -                ///  I2S transmitter channel mode configuration bits.
    -                TX_CHAN_MOD: u3,
    -                ///  Enable signal loop back mode with transmitter module and receiver module sharing the same WS and BCK signals.
    -                SIG_LOOPBACK: u1,
    -                padding: u4,
    -            }),
    -            ///  I2S RX configure register 1
    -            RX_CONF1: mmio.Mmio(packed struct(u32) {
    -                ///  The width of rx_ws_out in TDM mode is (I2S_RX_TDM_WS_WIDTH[6:0] +1) * T_bck
    -                RX_TDM_WS_WIDTH: u7,
    -                ///  Bit clock configuration bits in receiver mode.
    -                RX_BCK_DIV_NUM: u6,
    -                ///  Set the bits to configure the valid data bit length of I2S receiver channel. 7: all the valid channel data is in 8-bit-mode. 15: all the valid channel data is in 16-bit-mode. 23: all the valid channel data is in 24-bit-mode. 31:all the valid channel data is in 32-bit-mode.
    -                RX_BITS_MOD: u5,
    -                ///  I2S Rx half sample bits -1.
    -                RX_HALF_SAMPLE_BITS: u6,
    -                ///  The Rx bit number for each channel minus 1in TDM mode.
    -                RX_TDM_CHAN_BITS: u5,
    -                ///  Set this bit to enable receiver in Phillips standard mode
    -                RX_MSB_SHIFT: u1,
    -                padding: u2,
    -            }),
    -            ///  I2S TX configure register 1
    -            TX_CONF1: mmio.Mmio(packed struct(u32) {
    -                ///  The width of tx_ws_out in TDM mode is (I2S_TX_TDM_WS_WIDTH[6:0] +1) * T_bck
    -                TX_TDM_WS_WIDTH: u7,
    -                ///  Bit clock configuration bits in transmitter mode.
    -                TX_BCK_DIV_NUM: u6,
    -                ///  Set the bits to configure the valid data bit length of I2S transmitter channel. 7: all the valid channel data is in 8-bit-mode. 15: all the valid channel data is in 16-bit-mode. 23: all the valid channel data is in 24-bit-mode. 31:all the valid channel data is in 32-bit-mode.
    -                TX_BITS_MOD: u5,
    -                ///  I2S Tx half sample bits -1.
    -                TX_HALF_SAMPLE_BITS: u6,
    -                ///  The Tx bit number for each channel minus 1in TDM mode.
    -                TX_TDM_CHAN_BITS: u5,
    -                ///  Set this bit to enable transmitter in Phillips standard mode
    -                TX_MSB_SHIFT: u1,
    -                ///  1: BCK is not delayed to generate pos/neg edge in master mode. 0: BCK is delayed to generate pos/neg edge in master mode.
    -                TX_BCK_NO_DLY: u1,
    -                padding: u1,
    -            }),
    -            ///  I2S RX clock configure register
    -            RX_CLKM_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  Integral I2S clock divider value
    -                RX_CLKM_DIV_NUM: u8,
    -                reserved26: u18,
    -                ///  I2S Rx module clock enable signal.
    -                RX_CLK_ACTIVE: u1,
    -                ///  Select I2S Rx module source clock. 0: no clock. 1: APLL. 2: CLK160. 3: I2S_MCLK_in.
    -                RX_CLK_SEL: u2,
    -                ///  0: UseI2S Tx module clock as I2S_MCLK_OUT. 1: UseI2S Rx module clock as I2S_MCLK_OUT.
    -                MCLK_SEL: u1,
    -                padding: u2,
    -            }),
    -            ///  I2S TX clock configure register
    -            TX_CLKM_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  Integral I2S TX clock divider value. f_I2S_CLK = f_I2S_CLK_S/(N+b/a). There will be (a-b) * n-div and b * (n+1)-div. So the average combination will be: for b <= a/2, z * [x * n-div + (n+1)-div] + y * n-div. For b > a/2, z * [n-div + x * (n+1)-div] + y * (n+1)-div.
    -                TX_CLKM_DIV_NUM: u8,
    -                reserved26: u18,
    -                ///  I2S Tx module clock enable signal.
    -                TX_CLK_ACTIVE: u1,
    -                ///  Select I2S Tx module source clock. 0: XTAL clock. 1: APLL. 2: CLK160. 3: I2S_MCLK_in.
    -                TX_CLK_SEL: u2,
    -                ///  Set this bit to enable clk gate
    -                CLK_EN: u1,
    -                padding: u2,
    -            }),
    -            ///  I2S RX module clock divider configure register
    -            RX_CLKM_DIV_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  For b <= a/2, the value of I2S_RX_CLKM_DIV_Z is b. For b > a/2, the value of I2S_RX_CLKM_DIV_Z is (a-b).
    -                RX_CLKM_DIV_Z: u9,
    -                ///  For b <= a/2, the value of I2S_RX_CLKM_DIV_Y is (a%b) . For b > a/2, the value of I2S_RX_CLKM_DIV_Y is (a%(a-b)).
    -                RX_CLKM_DIV_Y: u9,
    -                ///  For b <= a/2, the value of I2S_RX_CLKM_DIV_X is (a/b) - 1. For b > a/2, the value of I2S_RX_CLKM_DIV_X is (a/(a-b)) - 1.
    -                RX_CLKM_DIV_X: u9,
    -                ///  For b <= a/2, the value of I2S_RX_CLKM_DIV_YN1 is 0 . For b > a/2, the value of I2S_RX_CLKM_DIV_YN1 is 1.
    -                RX_CLKM_DIV_YN1: u1,
    -                padding: u4,
    -            }),
    -            ///  I2S TX module clock divider configure register
    -            TX_CLKM_DIV_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  For b <= a/2, the value of I2S_TX_CLKM_DIV_Z is b. For b > a/2, the value of I2S_TX_CLKM_DIV_Z is (a-b).
    -                TX_CLKM_DIV_Z: u9,
    -                ///  For b <= a/2, the value of I2S_TX_CLKM_DIV_Y is (a%b) . For b > a/2, the value of I2S_TX_CLKM_DIV_Y is (a%(a-b)).
    -                TX_CLKM_DIV_Y: u9,
    -                ///  For b <= a/2, the value of I2S_TX_CLKM_DIV_X is (a/b) - 1. For b > a/2, the value of I2S_TX_CLKM_DIV_X is (a/(a-b)) - 1.
    -                TX_CLKM_DIV_X: u9,
    -                ///  For b <= a/2, the value of I2S_TX_CLKM_DIV_YN1 is 0 . For b > a/2, the value of I2S_TX_CLKM_DIV_YN1 is 1.
    -                TX_CLKM_DIV_YN1: u1,
    -                padding: u4,
    -            }),
    -            ///  I2S TX PCM2PDM configuration register
    -            TX_PCM2PDM_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  I2S TX PDM bypass hp filter or not. The option has been removed.
    -                TX_PDM_HP_BYPASS: u1,
    -                ///  I2S TX PDM OSR2 value
    -                TX_PDM_SINC_OSR2: u4,
    -                ///  I2S TX PDM prescale for sigmadelta
    -                TX_PDM_PRESCALE: u8,
    -                ///  I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4
    -                TX_PDM_HP_IN_SHIFT: u2,
    -                ///  I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4
    -                TX_PDM_LP_IN_SHIFT: u2,
    -                ///  I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4
    -                TX_PDM_SINC_IN_SHIFT: u2,
    -                ///  I2S TX PDM sigmadelta scale shift number: 0:/2 , 1:x1 , 2:x2 , 3: x4
    -                TX_PDM_SIGMADELTA_IN_SHIFT: u2,
    -                ///  I2S TX PDM sigmadelta dither2 value
    -                TX_PDM_SIGMADELTA_DITHER2: u1,
    -                ///  I2S TX PDM sigmadelta dither value
    -                TX_PDM_SIGMADELTA_DITHER: u1,
    -                ///  I2S TX PDM dac mode enable
    -                TX_PDM_DAC_2OUT_EN: u1,
    -                ///  I2S TX PDM dac 2channel enable
    -                TX_PDM_DAC_MODE_EN: u1,
    -                ///  I2S TX PDM Converter enable
    -                PCM2PDM_CONV_EN: u1,
    -                padding: u6,
    -            }),
    -            ///  I2S TX PCM2PDM configuration register
    -            TX_PCM2PDM_CONF1: mmio.Mmio(packed struct(u32) {
    -                ///  I2S TX PDM Fp
    -                TX_PDM_FP: u10,
    -                ///  I2S TX PDM Fs
    -                TX_PDM_FS: u10,
    -                ///  The fourth parameter of PDM TX IIR_HP filter stage 2 is (504 + I2S_TX_IIR_HP_MULT12_5[2:0])
    -                TX_IIR_HP_MULT12_5: u3,
    -                ///  The fourth parameter of PDM TX IIR_HP filter stage 1 is (504 + I2S_TX_IIR_HP_MULT12_0[2:0])
    -                TX_IIR_HP_MULT12_0: u3,
    -                padding: u6,
    -            }),
    -            reserved80: [8]u8,
    -            ///  I2S TX TDM mode control register
    -            RX_TDM_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  1: Enable the valid data input of I2S RX TDM or PDM channel 0. 0: Disable, just input 0 in this channel.
    -                RX_TDM_PDM_CHAN0_EN: u1,
    -                ///  1: Enable the valid data input of I2S RX TDM or PDM channel 1. 0: Disable, just input 0 in this channel.
    -                RX_TDM_PDM_CHAN1_EN: u1,
    -                ///  1: Enable the valid data input of I2S RX TDM or PDM channel 2. 0: Disable, just input 0 in this channel.
    -                RX_TDM_PDM_CHAN2_EN: u1,
    -                ///  1: Enable the valid data input of I2S RX TDM or PDM channel 3. 0: Disable, just input 0 in this channel.
    -                RX_TDM_PDM_CHAN3_EN: u1,
    -                ///  1: Enable the valid data input of I2S RX TDM or PDM channel 4. 0: Disable, just input 0 in this channel.
    -                RX_TDM_PDM_CHAN4_EN: u1,
    -                ///  1: Enable the valid data input of I2S RX TDM or PDM channel 5. 0: Disable, just input 0 in this channel.
    -                RX_TDM_PDM_CHAN5_EN: u1,
    -                ///  1: Enable the valid data input of I2S RX TDM or PDM channel 6. 0: Disable, just input 0 in this channel.
    -                RX_TDM_PDM_CHAN6_EN: u1,
    -                ///  1: Enable the valid data input of I2S RX TDM or PDM channel 7. 0: Disable, just input 0 in this channel.
    -                RX_TDM_PDM_CHAN7_EN: u1,
    -                ///  1: Enable the valid data input of I2S RX TDM channel 8. 0: Disable, just input 0 in this channel.
    -                RX_TDM_CHAN8_EN: u1,
    -                ///  1: Enable the valid data input of I2S RX TDM channel 9. 0: Disable, just input 0 in this channel.
    -                RX_TDM_CHAN9_EN: u1,
    -                ///  1: Enable the valid data input of I2S RX TDM channel 10. 0: Disable, just input 0 in this channel.
    -                RX_TDM_CHAN10_EN: u1,
    -                ///  1: Enable the valid data input of I2S RX TDM channel 11. 0: Disable, just input 0 in this channel.
    -                RX_TDM_CHAN11_EN: u1,
    -                ///  1: Enable the valid data input of I2S RX TDM channel 12. 0: Disable, just input 0 in this channel.
    -                RX_TDM_CHAN12_EN: u1,
    -                ///  1: Enable the valid data input of I2S RX TDM channel 13. 0: Disable, just input 0 in this channel.
    -                RX_TDM_CHAN13_EN: u1,
    -                ///  1: Enable the valid data input of I2S RX TDM channel 14. 0: Disable, just input 0 in this channel.
    -                RX_TDM_CHAN14_EN: u1,
    -                ///  1: Enable the valid data input of I2S RX TDM channel 15. 0: Disable, just input 0 in this channel.
    -                RX_TDM_CHAN15_EN: u1,
    -                ///  The total channel number of I2S TX TDM mode.
    -                RX_TDM_TOT_CHAN_NUM: u4,
    -                padding: u12,
    -            }),
    -            ///  I2S TX TDM mode control register
    -            TX_TDM_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  1: Enable the valid data output of I2S TX TDM channel 0. 0: Disable, just output 0 in this channel.
    -                TX_TDM_CHAN0_EN: u1,
    -                ///  1: Enable the valid data output of I2S TX TDM channel 1. 0: Disable, just output 0 in this channel.
    -                TX_TDM_CHAN1_EN: u1,
    -                ///  1: Enable the valid data output of I2S TX TDM channel 2. 0: Disable, just output 0 in this channel.
    -                TX_TDM_CHAN2_EN: u1,
    -                ///  1: Enable the valid data output of I2S TX TDM channel 3. 0: Disable, just output 0 in this channel.
    -                TX_TDM_CHAN3_EN: u1,
    -                ///  1: Enable the valid data output of I2S TX TDM channel 4. 0: Disable, just output 0 in this channel.
    -                TX_TDM_CHAN4_EN: u1,
    -                ///  1: Enable the valid data output of I2S TX TDM channel 5. 0: Disable, just output 0 in this channel.
    -                TX_TDM_CHAN5_EN: u1,
    -                ///  1: Enable the valid data output of I2S TX TDM channel 6. 0: Disable, just output 0 in this channel.
    -                TX_TDM_CHAN6_EN: u1,
    -                ///  1: Enable the valid data output of I2S TX TDM channel 7. 0: Disable, just output 0 in this channel.
    -                TX_TDM_CHAN7_EN: u1,
    -                ///  1: Enable the valid data output of I2S TX TDM channel 8. 0: Disable, just output 0 in this channel.
    -                TX_TDM_CHAN8_EN: u1,
    -                ///  1: Enable the valid data output of I2S TX TDM channel 9. 0: Disable, just output 0 in this channel.
    -                TX_TDM_CHAN9_EN: u1,
    -                ///  1: Enable the valid data output of I2S TX TDM channel 10. 0: Disable, just output 0 in this channel.
    -                TX_TDM_CHAN10_EN: u1,
    -                ///  1: Enable the valid data output of I2S TX TDM channel 11. 0: Disable, just output 0 in this channel.
    -                TX_TDM_CHAN11_EN: u1,
    -                ///  1: Enable the valid data output of I2S TX TDM channel 12. 0: Disable, just output 0 in this channel.
    -                TX_TDM_CHAN12_EN: u1,
    -                ///  1: Enable the valid data output of I2S TX TDM channel 13. 0: Disable, just output 0 in this channel.
    -                TX_TDM_CHAN13_EN: u1,
    -                ///  1: Enable the valid data output of I2S TX TDM channel 14. 0: Disable, just output 0 in this channel.
    -                TX_TDM_CHAN14_EN: u1,
    -                ///  1: Enable the valid data output of I2S TX TDM channel 15. 0: Disable, just output 0 in this channel.
    -                TX_TDM_CHAN15_EN: u1,
    -                ///  The total channel number of I2S TX TDM mode.
    -                TX_TDM_TOT_CHAN_NUM: u4,
    -                ///  When DMA TX buffer stores the data of (REG_TX_TDM_TOT_CHAN_NUM + 1) channels, and only the data of the enabled channels is sent, then this bit should be set. Clear it when all the data stored in DMA TX buffer is for enabled channels.
    -                TX_TDM_SKIP_MSK_EN: u1,
    -                padding: u11,
    -            }),
    -            ///  I2S RX timing control register
    -            RX_TIMING: mmio.Mmio(packed struct(u32) {
    -                ///  The delay mode of I2S Rx SD input signal. 0: bypass. 1: delay by pos edge. 2: delay by neg edge. 3: not used.
    -                RX_SD_IN_DM: u2,
    -                reserved16: u14,
    -                ///  The delay mode of I2S Rx WS output signal. 0: bypass. 1: delay by pos edge. 2: delay by neg edge. 3: not used.
    -                RX_WS_OUT_DM: u2,
    -                reserved20: u2,
    -                ///  The delay mode of I2S Rx BCK output signal. 0: bypass. 1: delay by pos edge. 2: delay by neg edge. 3: not used.
    -                RX_BCK_OUT_DM: u2,
    -                reserved24: u2,
    -                ///  The delay mode of I2S Rx WS input signal. 0: bypass. 1: delay by pos edge. 2: delay by neg edge. 3: not used.
    -                RX_WS_IN_DM: u2,
    -                reserved28: u2,
    -                ///  The delay mode of I2S Rx BCK input signal. 0: bypass. 1: delay by pos edge. 2: delay by neg edge. 3: not used.
    -                RX_BCK_IN_DM: u2,
    -                padding: u2,
    -            }),
    -            ///  I2S TX timing control register
    -            TX_TIMING: mmio.Mmio(packed struct(u32) {
    -                ///  The delay mode of I2S TX SD output signal. 0: bypass. 1: delay by pos edge. 2: delay by neg edge. 3: not used.
    -                TX_SD_OUT_DM: u2,
    -                reserved4: u2,
    -                ///  The delay mode of I2S TX SD1 output signal. 0: bypass. 1: delay by pos edge. 2: delay by neg edge. 3: not used.
    -                TX_SD1_OUT_DM: u2,
    -                reserved16: u10,
    -                ///  The delay mode of I2S TX WS output signal. 0: bypass. 1: delay by pos edge. 2: delay by neg edge. 3: not used.
    -                TX_WS_OUT_DM: u2,
    -                reserved20: u2,
    -                ///  The delay mode of I2S TX BCK output signal. 0: bypass. 1: delay by pos edge. 2: delay by neg edge. 3: not used.
    -                TX_BCK_OUT_DM: u2,
    -                reserved24: u2,
    -                ///  The delay mode of I2S TX WS input signal. 0: bypass. 1: delay by pos edge. 2: delay by neg edge. 3: not used.
    -                TX_WS_IN_DM: u2,
    -                reserved28: u2,
    -                ///  The delay mode of I2S TX BCK input signal. 0: bypass. 1: delay by pos edge. 2: delay by neg edge. 3: not used.
    -                TX_BCK_IN_DM: u2,
    -                padding: u2,
    -            }),
    -            ///  I2S HUNG configure register.
    -            LC_HUNG_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  the i2s_tx_hung_int interrupt or the i2s_rx_hung_int interrupt will be triggered when fifo hung counter is equal to this value
    -                LC_FIFO_TIMEOUT: u8,
    -                ///  The bits are used to scale tick counter threshold. The tick counter is reset when counter value >= 88000/2^i2s_lc_fifo_timeout_shift
    -                LC_FIFO_TIMEOUT_SHIFT: u3,
    -                ///  The enable bit for FIFO timeout
    -                LC_FIFO_TIMEOUT_ENA: u1,
    -                padding: u20,
    -            }),
    -            ///  I2S RX data number control register.
    -            RXEOF_NUM: mmio.Mmio(packed struct(u32) {
    -                ///  The receive data bit length is (I2S_RX_BITS_MOD[4:0] + 1) * (REG_RX_EOF_NUM[11:0] + 1) . It will trigger in_suc_eof interrupt in the configured DMA RX channel.
    -                RX_EOF_NUM: u12,
    -                padding: u20,
    -            }),
    -            ///  I2S signal data register
    -            CONF_SIGLE_DATA: mmio.Mmio(packed struct(u32) {
    -                ///  The configured constant channel data to be sent out.
    -                SINGLE_DATA: u32,
    -            }),
    -            ///  I2S TX status register
    -            STATE: mmio.Mmio(packed struct(u32) {
    -                ///  1: i2s_tx is idle state. 0: i2s_tx is working.
    -                TX_IDLE: u1,
    -                padding: u31,
    -            }),
    -            reserved128: [16]u8,
    -            ///  Version control register
    -            DATE: mmio.Mmio(packed struct(u32) {
    -                ///  I2S version control register
    -                DATE: u28,
    -                padding: u4,
    -            }),
    -        };
    -
    -        ///  Interrupt Core
    -        pub const INTERRUPT_CORE0 = extern struct {
    -            ///  mac intr map register
    -            MAC_INTR_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  core0_mac_intr_map
    -                MAC_INTR_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  mac nmi_intr map register
    -            MAC_NMI_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_mac_nmi_map
    -                MAC_NMI_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  pwr intr map register
    -            PWR_INTR_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_pwr_intr_map
    -                PWR_INTR_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  bb intr map register
    -            BB_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_bb_int_map
    -                BB_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  bt intr map register
    -            BT_MAC_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_bt_mac_int_map
    -                BT_MAC_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  bb_bt intr map register
    -            BT_BB_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_bt_bb_int_map
    -                BT_BB_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  bb_bt_nmi intr map register
    -            BT_BB_NMI_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_bt_bb_nmi_map
    -                BT_BB_NMI_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  rwbt intr map register
    -            RWBT_IRQ_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_rwbt_irq_map
    -                RWBT_IRQ_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  rwble intr map register
    -            RWBLE_IRQ_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_rwble_irq_map
    -                RWBLE_IRQ_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  rwbt_nmi intr map register
    -            RWBT_NMI_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_rwbt_nmi_map
    -                RWBT_NMI_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  rwble_nmi intr map register
    -            RWBLE_NMI_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_rwble_nmi_map
    -                RWBLE_NMI_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  i2c intr map register
    -            I2C_MST_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_i2c_mst_int_map
    -                I2C_MST_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  slc0 intr map register
    -            SLC0_INTR_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_slc0_intr_map
    -                SLC0_INTR_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  slc1 intr map register
    -            SLC1_INTR_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_slc1_intr_map
    -                SLC1_INTR_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  apb_ctrl intr map register
    -            APB_CTRL_INTR_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_apb_ctrl_intr_map
    -                APB_CTRL_INTR_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  uchi0 intr map register
    -            UHCI0_INTR_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_uhci0_intr_map
    -                UHCI0_INTR_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  gpio intr map register
    -            GPIO_INTERRUPT_PRO_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_gpio_interrupt_pro_map
    -                GPIO_INTERRUPT_PRO_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  gpio_pro intr map register
    -            GPIO_INTERRUPT_PRO_NMI_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_gpio_interrupt_pro_nmi_map
    -                GPIO_INTERRUPT_PRO_NMI_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  gpio_pro_nmi intr map register
    -            SPI_INTR_1_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_spi_intr_1_map
    -                SPI_INTR_1_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  spi1 intr map register
    -            SPI_INTR_2_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_spi_intr_2_map
    -                SPI_INTR_2_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  spi2 intr map register
    -            I2S1_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_i2s1_int_map
    -                I2S1_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  i2s1 intr map register
    -            UART_INTR_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_uart_intr_map
    -                UART_INTR_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  uart1 intr map register
    -            UART1_INTR_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_uart1_intr_map
    -                UART1_INTR_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  ledc intr map register
    -            LEDC_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_ledc_int_map
    -                LEDC_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  efuse intr map register
    -            EFUSE_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_efuse_int_map
    -                EFUSE_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  can intr map register
    -            CAN_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_can_int_map
    -                CAN_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  usb intr map register
    -            USB_INTR_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_usb_intr_map
    -                USB_INTR_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  rtc intr map register
    -            RTC_CORE_INTR_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_rtc_core_intr_map
    -                RTC_CORE_INTR_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  rmt intr map register
    -            RMT_INTR_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_rmt_intr_map
    -                RMT_INTR_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  i2c intr map register
    -            I2C_EXT0_INTR_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_i2c_ext0_intr_map
    -                I2C_EXT0_INTR_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  timer1 intr map register
    -            TIMER_INT1_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_timer_int1_map
    -                TIMER_INT1_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  timer2 intr map register
    -            TIMER_INT2_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_timer_int2_map
    -                TIMER_INT2_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  tg to intr map register
    -            TG_T0_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_tg_t0_int_map
    -                TG_T0_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  tg wdt intr map register
    -            TG_WDT_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_tg_wdt_int_map
    -                TG_WDT_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  tg1 to intr map register
    -            TG1_T0_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_tg1_t0_int_map
    -                TG1_T0_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  tg1 wdt intr map register
    -            TG1_WDT_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_tg1_wdt_int_map
    -                TG1_WDT_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  cache ia intr map register
    -            CACHE_IA_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cache_ia_int_map
    -                CACHE_IA_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  systimer intr map register
    -            SYSTIMER_TARGET0_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_systimer_target0_int_map
    -                SYSTIMER_TARGET0_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  systimer target1 intr map register
    -            SYSTIMER_TARGET1_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_systimer_target1_int_map
    -                SYSTIMER_TARGET1_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  systimer target2 intr map register
    -            SYSTIMER_TARGET2_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_systimer_target2_int_map
    -                SYSTIMER_TARGET2_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  spi mem reject intr map register
    -            SPI_MEM_REJECT_INTR_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_spi_mem_reject_intr_map
    -                SPI_MEM_REJECT_INTR_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  icache perload intr map register
    -            ICACHE_PRELOAD_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_icache_preload_int_map
    -                ICACHE_PRELOAD_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  icache sync intr map register
    -            ICACHE_SYNC_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_icache_sync_int_map
    -                ICACHE_SYNC_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  adc intr map register
    -            APB_ADC_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_apb_adc_int_map
    -                APB_ADC_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  dma ch0 intr map register
    -            DMA_CH0_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_dma_ch0_int_map
    -                DMA_CH0_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  dma ch1 intr map register
    -            DMA_CH1_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_dma_ch1_int_map
    -                DMA_CH1_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  dma ch2 intr map register
    -            DMA_CH2_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_dma_ch2_int_map
    -                DMA_CH2_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  rsa intr map register
    -            RSA_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_rsa_int_map
    -                RSA_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  aes intr map register
    -            AES_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_aes_int_map
    -                AES_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  sha intr map register
    -            SHA_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_sha_int_map
    -                SHA_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  cpu from cpu 0 intr map register
    -            CPU_INTR_FROM_CPU_0_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_intr_from_cpu_0_map
    -                CPU_INTR_FROM_CPU_0_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  cpu from cpu 0 intr map register
    -            CPU_INTR_FROM_CPU_1_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_intr_from_cpu_1_map
    -                CPU_INTR_FROM_CPU_1_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  cpu from cpu 1 intr map register
    -            CPU_INTR_FROM_CPU_2_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_intr_from_cpu_2_map
    -                CPU_INTR_FROM_CPU_2_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  cpu from cpu 3 intr map register
    -            CPU_INTR_FROM_CPU_3_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_intr_from_cpu_3_map
    -                CPU_INTR_FROM_CPU_3_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  assist debug intr map register
    -            ASSIST_DEBUG_INTR_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_assist_debug_intr_map
    -                ASSIST_DEBUG_INTR_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  dma pms violatile intr map register
    -            DMA_APBPERI_PMS_MONITOR_VIOLATE_INTR_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_dma_apbperi_pms_monitor_violate_intr_map
    -                DMA_APBPERI_PMS_MONITOR_VIOLATE_INTR_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  iram0 pms violatile intr map register
    -            CORE_0_IRAM0_PMS_MONITOR_VIOLATE_INTR_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_core_0_iram0_pms_monitor_violate_intr_map
    -                CORE_0_IRAM0_PMS_MONITOR_VIOLATE_INTR_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  mac intr map register
    -            CORE_0_DRAM0_PMS_MONITOR_VIOLATE_INTR_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_core_0_dram0_pms_monitor_violate_intr_map
    -                CORE_0_DRAM0_PMS_MONITOR_VIOLATE_INTR_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  mac intr map register
    -            CORE_0_PIF_PMS_MONITOR_VIOLATE_INTR_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_core_0_pif_pms_monitor_violate_intr_map
    -                CORE_0_PIF_PMS_MONITOR_VIOLATE_INTR_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  mac intr map register
    -            CORE_0_PIF_PMS_MONITOR_VIOLATE_SIZE_INTR_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_core_0_pif_pms_monitor_violate_size_intr_map
    -                CORE_0_PIF_PMS_MONITOR_VIOLATE_SIZE_INTR_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  mac intr map register
    -            BACKUP_PMS_VIOLATE_INTR_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_backup_pms_violate_intr_map
    -                BACKUP_PMS_VIOLATE_INTR_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  mac intr map register
    -            CACHE_CORE0_ACS_INT_MAP: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cache_core0_acs_int_map
    -                CACHE_CORE0_ACS_INT_MAP: u5,
    -                padding: u27,
    -            }),
    -            ///  mac intr map register
    -            INTR_STATUS_REG_0: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_intr_status_0
    -                INTR_STATUS_0: u32,
    -            }),
    -            ///  mac intr map register
    -            INTR_STATUS_REG_1: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_intr_status_1
    -                INTR_STATUS_1: u32,
    -            }),
    -            ///  mac intr map register
    -            CLOCK_GATE: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_reg_clk_en
    -                REG_CLK_EN: u1,
    -                padding: u31,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_ENABLE: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_int_enable
    -                CPU_INT_ENABLE: u32,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_TYPE: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_int_type
    -                CPU_INT_TYPE: u32,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_CLEAR: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_int_clear
    -                CPU_INT_CLEAR: u32,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_EIP_STATUS: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_int_eip_status
    -                CPU_INT_EIP_STATUS: u32,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_0: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_0_map
    -                CPU_PRI_0_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_1: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_1_map
    -                CPU_PRI_1_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_2: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_2_map
    -                CPU_PRI_2_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_3: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_3_map
    -                CPU_PRI_3_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_4: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_4_map
    -                CPU_PRI_4_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_5: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_5_map
    -                CPU_PRI_5_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_6: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_6_map
    -                CPU_PRI_6_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_7: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_7_map
    -                CPU_PRI_7_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_8: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_8_map
    -                CPU_PRI_8_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_9: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_9_map
    -                CPU_PRI_9_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_10: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_10_map
    -                CPU_PRI_10_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_11: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_11_map
    -                CPU_PRI_11_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_12: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_12_map
    -                CPU_PRI_12_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_13: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_13_map
    -                CPU_PRI_13_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_14: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_14_map
    -                CPU_PRI_14_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_15: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_15_map
    -                CPU_PRI_15_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_16: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_16_map
    -                CPU_PRI_16_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_17: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_17_map
    -                CPU_PRI_17_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_18: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_18_map
    -                CPU_PRI_18_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_19: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_19_map
    -                CPU_PRI_19_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_20: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_20_map
    -                CPU_PRI_20_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_21: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_21_map
    -                CPU_PRI_21_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_22: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_22_map
    -                CPU_PRI_22_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_23: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_23_map
    -                CPU_PRI_23_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_24: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_24_map
    -                CPU_PRI_24_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_25: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_25_map
    -                CPU_PRI_25_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_26: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_26_map
    -                CPU_PRI_26_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_27: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_27_map
    -                CPU_PRI_27_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_28: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_28_map
    -                CPU_PRI_28_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_29: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_29_map
    -                CPU_PRI_29_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_30: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_30_map
    -                CPU_PRI_30_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_PRI_31: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_pri_31_map
    -                CPU_PRI_31_MAP: u4,
    -                padding: u28,
    -            }),
    -            ///  mac intr map register
    -            CPU_INT_THRESH: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_cpu_int_thresh
    -                CPU_INT_THRESH: u4,
    -                padding: u28,
    -            }),
    -            reserved2044: [1636]u8,
    -            ///  mac intr map register
    -            INTERRUPT_REG_DATE: mmio.Mmio(packed struct(u32) {
    -                ///  reg_core0_interrupt_reg_date
    -                INTERRUPT_REG_DATE: u28,
    -                padding: u4,
    -            }),
    -        };
    -
    -        ///  Input/Output Multiplexer
    -        pub const IO_MUX = extern struct {
    -            ///  Clock Output Configuration Register
    -            PIN_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  If you want to output clock for I2S to CLK_OUT_out1, set this register to 0x0. CLK_OUT_out1 can be found in peripheral output signals.
    -                CLK_OUT1: u4,
    -                ///  If you want to output clock for I2S to CLK_OUT_out2, set this register to 0x0. CLK_OUT_out2 can be found in peripheral output signals.
    -                CLK_OUT2: u4,
    -                ///  If you want to output clock for I2S to CLK_OUT_out3, set this register to 0x0. CLK_OUT_out3 can be found in peripheral output signals.
    -                CLK_OUT3: u4,
    -                padding: u20,
    -            }),
    -            ///  IO MUX Configure Register for pad XTAL_32K_P
    -            GPIO: [22]mmio.Mmio(packed struct(u32) {
    -                ///  Output enable of the pad in sleep mode. 1: output enabled; 0: output disabled.
    -                MCU_OE: u1,
    -                ///  Sleep mode selection of this pad. Set to 1 to put the pad in pad mode.
    -                SLP_SEL: u1,
    -                ///  Pull-down enable of the pad in sleep mode. 1: internal pull-down enabled; 0: internal pull-down disabled.
    -                MCU_WPD: u1,
    -                ///  Pull-up enable of the pad during sleep mode. 1: internal pull-up enabled; 0: internal pull-up disabled.
    -                MCU_WPU: u1,
    -                ///  Input enable of the pad during sleep mode. 1: input enabled; 0: input disabled.
    -                MCU_IE: u1,
    -                reserved7: u2,
    -                ///  Pull-down enable of the pad. 1: internal pull-down enabled; 0: internal pull-down disabled.
    -                FUN_WPD: u1,
    -                ///  Pull-up enable of the pad. 1: internal pull-up enabled; 0: internal pull-up disabled.
    -                FUN_WPU: u1,
    -                ///  Input enable of the pad. 1: input enabled; 0: input disabled.
    -                FUN_IE: u1,
    -                ///  Select the drive strength of the pad. 0: ~5 mA; 1: ~10mA; 2: ~20mA; 3: ~40mA.
    -                FUN_DRV: u2,
    -                ///  Select IO MUX function for this signal. 0: Select Function 1; 1: Select Function 2; etc.
    -                MCU_SEL: u3,
    -                ///  Enable filter for pin input signals. 1: Filter enabled; 2: Filter disabled.
    -                FILTER_EN: u1,
    -                padding: u16,
    -            }),
    -            reserved252: [160]u8,
    -            ///  IO MUX Version Control Register
    -            DATE: mmio.Mmio(packed struct(u32) {
    -                ///  Version control register
    -                REG_DATE: u28,
    -                padding: u4,
    -            }),
    -        };
    -
    -        ///  LED Control PWM (Pulse Width Modulation)
    -        pub const LEDC = extern struct {
    -            ///  LEDC_LSCH0_CONF0.
    -            LSCH0_CONF0: mmio.Mmio(packed struct(u32) {
    -                ///  reg_timer_sel_lsch0.
    -                TIMER_SEL_LSCH0: u2,
    -                ///  reg_sig_out_en_lsch0.
    -                SIG_OUT_EN_LSCH0: u1,
    -                ///  reg_idle_lv_lsch0.
    -                IDLE_LV_LSCH0: u1,
    -                ///  reg_para_up_lsch0.
    -                PARA_UP_LSCH0: u1,
    -                ///  reg_ovf_num_lsch0.
    -                OVF_NUM_LSCH0: u10,
    -                ///  reg_ovf_cnt_en_lsch0.
    -                OVF_CNT_EN_LSCH0: u1,
    -                ///  reg_ovf_cnt_reset_lsch0.
    -                OVF_CNT_RESET_LSCH0: u1,
    -                padding: u15,
    -            }),
    -            ///  LEDC_LSCH0_HPOINT.
    -            LSCH0_HPOINT: mmio.Mmio(packed struct(u32) {
    -                ///  reg_hpoint_lsch0.
    -                HPOINT_LSCH0: u14,
    -                padding: u18,
    -            }),
    -            ///  LEDC_LSCH0_DUTY.
    -            LSCH0_DUTY: mmio.Mmio(packed struct(u32) {
    -                ///  reg_duty_lsch0.
    -                DUTY_LSCH0: u19,
    -                padding: u13,
    -            }),
    -            ///  LEDC_LSCH0_CONF1.
    -            LSCH0_CONF1: mmio.Mmio(packed struct(u32) {
    -                ///  reg_duty_scale_lsch0.
    -                DUTY_SCALE_LSCH0: u10,
    -                ///  reg_duty_cycle_lsch0.
    -                DUTY_CYCLE_LSCH0: u10,
    -                ///  reg_duty_num_lsch0.
    -                DUTY_NUM_LSCH0: u10,
    -                ///  reg_duty_inc_lsch0.
    -                DUTY_INC_LSCH0: u1,
    -                ///  reg_duty_start_lsch0.
    -                DUTY_START_LSCH0: u1,
    -            }),
    -            ///  LEDC_LSCH0_DUTY_R.
    -            LSCH0_DUTY_R: mmio.Mmio(packed struct(u32) {
    -                ///  reg_duty_lsch0_r.
    -                DUTY_LSCH0_R: u19,
    -                padding: u13,
    -            }),
    -            ///  LEDC_LSCH1_CONF0.
    -            LSCH1_CONF0: mmio.Mmio(packed struct(u32) {
    -                ///  reg_timer_sel_lsch1.
    -                TIMER_SEL_LSCH1: u2,
    -                ///  reg_sig_out_en_lsch1.
    -                SIG_OUT_EN_LSCH1: u1,
    -                ///  reg_idle_lv_lsch1.
    -                IDLE_LV_LSCH1: u1,
    -                ///  reg_para_up_lsch1.
    -                PARA_UP_LSCH1: u1,
    -                ///  reg_ovf_num_lsch1.
    -                OVF_NUM_LSCH1: u10,
    -                ///  reg_ovf_cnt_en_lsch1.
    -                OVF_CNT_EN_LSCH1: u1,
    -                ///  reg_ovf_cnt_reset_lsch1.
    -                OVF_CNT_RESET_LSCH1: u1,
    -                padding: u15,
    -            }),
    -            ///  LEDC_LSCH1_HPOINT.
    -            LSCH1_HPOINT: mmio.Mmio(packed struct(u32) {
    -                ///  reg_hpoint_lsch1.
    -                HPOINT_LSCH1: u14,
    -                padding: u18,
    -            }),
    -            ///  LEDC_LSCH1_DUTY.
    -            LSCH1_DUTY: mmio.Mmio(packed struct(u32) {
    -                ///  reg_duty_lsch1.
    -                DUTY_LSCH1: u19,
    -                padding: u13,
    -            }),
    -            ///  LEDC_LSCH1_CONF1.
    -            LSCH1_CONF1: mmio.Mmio(packed struct(u32) {
    -                ///  reg_duty_scale_lsch1.
    -                DUTY_SCALE_LSCH1: u10,
    -                ///  reg_duty_cycle_lsch1.
    -                DUTY_CYCLE_LSCH1: u10,
    -                ///  reg_duty_num_lsch1.
    -                DUTY_NUM_LSCH1: u10,
    -                ///  reg_duty_inc_lsch1.
    -                DUTY_INC_LSCH1: u1,
    -                ///  reg_duty_start_lsch1.
    -                DUTY_START_LSCH1: u1,
    -            }),
    -            ///  LEDC_LSCH1_DUTY_R.
    -            LSCH1_DUTY_R: mmio.Mmio(packed struct(u32) {
    -                ///  reg_duty_lsch1_r.
    -                DUTY_LSCH1_R: u19,
    -                padding: u13,
    -            }),
    -            ///  LEDC_LSCH2_CONF0.
    -            LSCH2_CONF0: mmio.Mmio(packed struct(u32) {
    -                ///  reg_timer_sel_lsch2.
    -                TIMER_SEL_LSCH2: u2,
    -                ///  reg_sig_out_en_lsch2.
    -                SIG_OUT_EN_LSCH2: u1,
    -                ///  reg_idle_lv_lsch2.
    -                IDLE_LV_LSCH2: u1,
    -                ///  reg_para_up_lsch2.
    -                PARA_UP_LSCH2: u1,
    -                ///  reg_ovf_num_lsch2.
    -                OVF_NUM_LSCH2: u10,
    -                ///  reg_ovf_cnt_en_lsch2.
    -                OVF_CNT_EN_LSCH2: u1,
    -                ///  reg_ovf_cnt_reset_lsch2.
    -                OVF_CNT_RESET_LSCH2: u1,
    -                padding: u15,
    -            }),
    -            ///  LEDC_LSCH2_HPOINT.
    -            LSCH2_HPOINT: mmio.Mmio(packed struct(u32) {
    -                ///  reg_hpoint_lsch2.
    -                HPOINT_LSCH2: u14,
    -                padding: u18,
    -            }),
    -            ///  LEDC_LSCH2_DUTY.
    -            LSCH2_DUTY: mmio.Mmio(packed struct(u32) {
    -                ///  reg_duty_lsch2.
    -                DUTY_LSCH2: u19,
    -                padding: u13,
    -            }),
    -            ///  LEDC_LSCH2_CONF1.
    -            LSCH2_CONF1: mmio.Mmio(packed struct(u32) {
    -                ///  reg_duty_scale_lsch2.
    -                DUTY_SCALE_LSCH2: u10,
    -                ///  reg_duty_cycle_lsch2.
    -                DUTY_CYCLE_LSCH2: u10,
    -                ///  reg_duty_num_lsch2.
    -                DUTY_NUM_LSCH2: u10,
    -                ///  reg_duty_inc_lsch2.
    -                DUTY_INC_LSCH2: u1,
    -                ///  reg_duty_start_lsch2.
    -                DUTY_START_LSCH2: u1,
    -            }),
    -            ///  LEDC_LSCH2_DUTY_R.
    -            LSCH2_DUTY_R: mmio.Mmio(packed struct(u32) {
    -                ///  reg_duty_lsch2_r.
    -                DUTY_LSCH2_R: u19,
    -                padding: u13,
    -            }),
    -            ///  LEDC_LSCH3_CONF0.
    -            LSCH3_CONF0: mmio.Mmio(packed struct(u32) {
    -                ///  reg_timer_sel_lsch3.
    -                TIMER_SEL_LSCH3: u2,
    -                ///  reg_sig_out_en_lsch3.
    -                SIG_OUT_EN_LSCH3: u1,
    -                ///  reg_idle_lv_lsch3.
    -                IDLE_LV_LSCH3: u1,
    -                ///  reg_para_up_lsch3.
    -                PARA_UP_LSCH3: u1,
    -                ///  reg_ovf_num_lsch3.
    -                OVF_NUM_LSCH3: u10,
    -                ///  reg_ovf_cnt_en_lsch3.
    -                OVF_CNT_EN_LSCH3: u1,
    -                ///  reg_ovf_cnt_reset_lsch3.
    -                OVF_CNT_RESET_LSCH3: u1,
    -                padding: u15,
    -            }),
    -            ///  LEDC_LSCH3_HPOINT.
    -            LSCH3_HPOINT: mmio.Mmio(packed struct(u32) {
    -                ///  reg_hpoint_lsch3.
    -                HPOINT_LSCH3: u14,
    -                padding: u18,
    -            }),
    -            ///  LEDC_LSCH3_DUTY.
    -            LSCH3_DUTY: mmio.Mmio(packed struct(u32) {
    -                ///  reg_duty_lsch3.
    -                DUTY_LSCH3: u19,
    -                padding: u13,
    -            }),
    -            ///  LEDC_LSCH3_CONF1.
    -            LSCH3_CONF1: mmio.Mmio(packed struct(u32) {
    -                ///  reg_duty_scale_lsch3.
    -                DUTY_SCALE_LSCH3: u10,
    -                ///  reg_duty_cycle_lsch3.
    -                DUTY_CYCLE_LSCH3: u10,
    -                ///  reg_duty_num_lsch3.
    -                DUTY_NUM_LSCH3: u10,
    -                ///  reg_duty_inc_lsch3.
    -                DUTY_INC_LSCH3: u1,
    -                ///  reg_duty_start_lsch3.
    -                DUTY_START_LSCH3: u1,
    -            }),
    -            ///  LEDC_LSCH3_DUTY_R.
    -            LSCH3_DUTY_R: mmio.Mmio(packed struct(u32) {
    -                ///  reg_duty_lsch3_r.
    -                DUTY_LSCH3_R: u19,
    -                padding: u13,
    -            }),
    -            ///  LEDC_LSCH4_CONF0.
    -            LSCH4_CONF0: mmio.Mmio(packed struct(u32) {
    -                ///  reg_timer_sel_lsch4.
    -                TIMER_SEL_LSCH4: u2,
    -                ///  reg_sig_out_en_lsch4.
    -                SIG_OUT_EN_LSCH4: u1,
    -                ///  reg_idle_lv_lsch4.
    -                IDLE_LV_LSCH4: u1,
    -                ///  reg_para_up_lsch4.
    -                PARA_UP_LSCH4: u1,
    -                ///  reg_ovf_num_lsch4.
    -                OVF_NUM_LSCH4: u10,
    -                ///  reg_ovf_cnt_en_lsch4.
    -                OVF_CNT_EN_LSCH4: u1,
    -                ///  reg_ovf_cnt_reset_lsch4.
    -                OVF_CNT_RESET_LSCH4: u1,
    -                padding: u15,
    -            }),
    -            ///  LEDC_LSCH4_HPOINT.
    -            LSCH4_HPOINT: mmio.Mmio(packed struct(u32) {
    -                ///  reg_hpoint_lsch4.
    -                HPOINT_LSCH4: u14,
    -                padding: u18,
    -            }),
    -            ///  LEDC_LSCH4_DUTY.
    -            LSCH4_DUTY: mmio.Mmio(packed struct(u32) {
    -                ///  reg_duty_lsch4.
    -                DUTY_LSCH4: u19,
    -                padding: u13,
    -            }),
    -            ///  LEDC_LSCH4_CONF1.
    -            LSCH4_CONF1: mmio.Mmio(packed struct(u32) {
    -                ///  reg_duty_scale_lsch4.
    -                DUTY_SCALE_LSCH4: u10,
    -                ///  reg_duty_cycle_lsch4.
    -                DUTY_CYCLE_LSCH4: u10,
    -                ///  reg_duty_num_lsch4.
    -                DUTY_NUM_LSCH4: u10,
    -                ///  reg_duty_inc_lsch4.
    -                DUTY_INC_LSCH4: u1,
    -                ///  reg_duty_start_lsch4.
    -                DUTY_START_LSCH4: u1,
    -            }),
    -            ///  LEDC_LSCH4_DUTY_R.
    -            LSCH4_DUTY_R: mmio.Mmio(packed struct(u32) {
    -                ///  reg_duty_lsch4_r.
    -                DUTY_LSCH4_R: u19,
    -                padding: u13,
    -            }),
    -            ///  LEDC_LSCH5_CONF0.
    -            LSCH5_CONF0: mmio.Mmio(packed struct(u32) {
    -                ///  reg_timer_sel_lsch5.
    -                TIMER_SEL_LSCH5: u2,
    -                ///  reg_sig_out_en_lsch5.
    -                SIG_OUT_EN_LSCH5: u1,
    -                ///  reg_idle_lv_lsch5.
    -                IDLE_LV_LSCH5: u1,
    -                ///  reg_para_up_lsch5.
    -                PARA_UP_LSCH5: u1,
    -                ///  reg_ovf_num_lsch5.
    -                OVF_NUM_LSCH5: u10,
    -                ///  reg_ovf_cnt_en_lsch5.
    -                OVF_CNT_EN_LSCH5: u1,
    -                ///  reg_ovf_cnt_reset_lsch5.
    -                OVF_CNT_RESET_LSCH5: u1,
    -                padding: u15,
    -            }),
    -            ///  LEDC_LSCH5_HPOINT.
    -            LSCH5_HPOINT: mmio.Mmio(packed struct(u32) {
    -                ///  reg_hpoint_lsch5.
    -                HPOINT_LSCH5: u14,
    -                padding: u18,
    -            }),
    -            ///  LEDC_LSCH5_DUTY.
    -            LSCH5_DUTY: mmio.Mmio(packed struct(u32) {
    -                ///  reg_duty_lsch5.
    -                DUTY_LSCH5: u19,
    -                padding: u13,
    -            }),
    -            ///  LEDC_LSCH5_CONF1.
    -            LSCH5_CONF1: mmio.Mmio(packed struct(u32) {
    -                ///  reg_duty_scale_lsch5.
    -                DUTY_SCALE_LSCH5: u10,
    -                ///  reg_duty_cycle_lsch5.
    -                DUTY_CYCLE_LSCH5: u10,
    -                ///  reg_duty_num_lsch5.
    -                DUTY_NUM_LSCH5: u10,
    -                ///  reg_duty_inc_lsch5.
    -                DUTY_INC_LSCH5: u1,
    -                ///  reg_duty_start_lsch5.
    -                DUTY_START_LSCH5: u1,
    -            }),
    -            ///  LEDC_LSCH5_DUTY_R.
    -            LSCH5_DUTY_R: mmio.Mmio(packed struct(u32) {
    -                ///  reg_duty_lsch5_r.
    -                DUTY_LSCH5_R: u19,
    -                padding: u13,
    -            }),
    -            reserved160: [40]u8,
    -            ///  LEDC_LSTIMER0_CONF.
    -            LSTIMER0_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  reg_lstimer0_duty_res.
    -                LSTIMER0_DUTY_RES: u4,
    -                ///  reg_clk_div_lstimer0.
    -                CLK_DIV_LSTIMER0: u18,
    -                ///  reg_lstimer0_pause.
    -                LSTIMER0_PAUSE: u1,
    -                ///  reg_lstimer0_rst.
    -                LSTIMER0_RST: u1,
    -                ///  reg_tick_sel_lstimer0.
    -                TICK_SEL_LSTIMER0: u1,
    -                ///  reg_lstimer0_para_up.
    -                LSTIMER0_PARA_UP: u1,
    -                padding: u6,
    -            }),
    -            ///  LEDC_LSTIMER0_VALUE.
    -            LSTIMER0_VALUE: mmio.Mmio(packed struct(u32) {
    -                ///  reg_lstimer0_cnt.
    -                LSTIMER0_CNT: u14,
    -                padding: u18,
    -            }),
    -            ///  LEDC_LSTIMER1_CONF.
    -            LSTIMER1_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  reg_lstimer1_duty_res.
    -                LSTIMER1_DUTY_RES: u4,
    -                ///  reg_clk_div_lstimer1.
    -                CLK_DIV_LSTIMER1: u18,
    -                ///  reg_lstimer1_pause.
    -                LSTIMER1_PAUSE: u1,
    -                ///  reg_lstimer1_rst.
    -                LSTIMER1_RST: u1,
    -                ///  reg_tick_sel_lstimer1.
    -                TICK_SEL_LSTIMER1: u1,
    -                ///  reg_lstimer1_para_up.
    -                LSTIMER1_PARA_UP: u1,
    -                padding: u6,
    -            }),
    -            ///  LEDC_LSTIMER1_VALUE.
    -            LSTIMER1_VALUE: mmio.Mmio(packed struct(u32) {
    -                ///  reg_lstimer1_cnt.
    -                LSTIMER1_CNT: u14,
    -                padding: u18,
    -            }),
    -            ///  LEDC_LSTIMER2_CONF.
    -            LSTIMER2_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  reg_lstimer2_duty_res.
    -                LSTIMER2_DUTY_RES: u4,
    -                ///  reg_clk_div_lstimer2.
    -                CLK_DIV_LSTIMER2: u18,
    -                ///  reg_lstimer2_pause.
    -                LSTIMER2_PAUSE: u1,
    -                ///  reg_lstimer2_rst.
    -                LSTIMER2_RST: u1,
    -                ///  reg_tick_sel_lstimer2.
    -                TICK_SEL_LSTIMER2: u1,
    -                ///  reg_lstimer2_para_up.
    -                LSTIMER2_PARA_UP: u1,
    -                padding: u6,
    -            }),
    -            ///  LEDC_LSTIMER2_VALUE.
    -            LSTIMER2_VALUE: mmio.Mmio(packed struct(u32) {
    -                ///  reg_lstimer2_cnt.
    -                LSTIMER2_CNT: u14,
    -                padding: u18,
    -            }),
    -            ///  LEDC_LSTIMER3_CONF.
    -            LSTIMER3_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  reg_lstimer3_duty_res.
    -                LSTIMER3_DUTY_RES: u4,
    -                ///  reg_clk_div_lstimer3.
    -                CLK_DIV_LSTIMER3: u18,
    -                ///  reg_lstimer3_pause.
    -                LSTIMER3_PAUSE: u1,
    -                ///  reg_lstimer3_rst.
    -                LSTIMER3_RST: u1,
    -                ///  reg_tick_sel_lstimer3.
    -                TICK_SEL_LSTIMER3: u1,
    -                ///  reg_lstimer3_para_up.
    -                LSTIMER3_PARA_UP: u1,
    -                padding: u6,
    -            }),
    -            ///  LEDC_LSTIMER3_VALUE.
    -            LSTIMER3_VALUE: mmio.Mmio(packed struct(u32) {
    -                ///  reg_lstimer3_cnt.
    -                LSTIMER3_CNT: u14,
    -                padding: u18,
    -            }),
    -            ///  LEDC_INT_RAW.
    -            INT_RAW: mmio.Mmio(packed struct(u32) {
    -                ///  reg_lstimer0_ovf_int_raw.
    -                LSTIMER0_OVF_INT_RAW: u1,
    -                ///  reg_lstimer1_ovf_int_raw.
    -                LSTIMER1_OVF_INT_RAW: u1,
    -                ///  reg_lstimer2_ovf_int_raw.
    -                LSTIMER2_OVF_INT_RAW: u1,
    -                ///  reg_lstimer3_ovf_int_raw.
    -                LSTIMER3_OVF_INT_RAW: u1,
    -                ///  reg_duty_chng_end_lsch0_int_raw.
    -                DUTY_CHNG_END_LSCH0_INT_RAW: u1,
    -                ///  reg_duty_chng_end_lsch1_int_raw.
    -                DUTY_CHNG_END_LSCH1_INT_RAW: u1,
    -                ///  reg_duty_chng_end_lsch2_int_raw.
    -                DUTY_CHNG_END_LSCH2_INT_RAW: u1,
    -                ///  reg_duty_chng_end_lsch3_int_raw.
    -                DUTY_CHNG_END_LSCH3_INT_RAW: u1,
    -                ///  reg_duty_chng_end_lsch4_int_raw.
    -                DUTY_CHNG_END_LSCH4_INT_RAW: u1,
    -                ///  reg_duty_chng_end_lsch5_int_raw.
    -                DUTY_CHNG_END_LSCH5_INT_RAW: u1,
    -                ///  reg_ovf_cnt_lsch0_int_raw.
    -                OVF_CNT_LSCH0_INT_RAW: u1,
    -                ///  reg_ovf_cnt_lsch1_int_raw.
    -                OVF_CNT_LSCH1_INT_RAW: u1,
    -                ///  reg_ovf_cnt_lsch2_int_raw.
    -                OVF_CNT_LSCH2_INT_RAW: u1,
    -                ///  reg_ovf_cnt_lsch3_int_raw.
    -                OVF_CNT_LSCH3_INT_RAW: u1,
    -                ///  reg_ovf_cnt_lsch4_int_raw.
    -                OVF_CNT_LSCH4_INT_RAW: u1,
    -                ///  reg_ovf_cnt_lsch5_int_raw.
    -                OVF_CNT_LSCH5_INT_RAW: u1,
    -                padding: u16,
    -            }),
    -            ///  LEDC_INT_ST.
    -            INT_ST: mmio.Mmio(packed struct(u32) {
    -                ///  reg_lstimer0_ovf_int_st.
    -                LSTIMER0_OVF_INT_ST: u1,
    -                ///  reg_lstimer1_ovf_int_st.
    -                LSTIMER1_OVF_INT_ST: u1,
    -                ///  reg_lstimer2_ovf_int_st.
    -                LSTIMER2_OVF_INT_ST: u1,
    -                ///  reg_lstimer3_ovf_int_st.
    -                LSTIMER3_OVF_INT_ST: u1,
    -                ///  reg_duty_chng_end_lsch0_int_st.
    -                DUTY_CHNG_END_LSCH0_INT_ST: u1,
    -                ///  reg_duty_chng_end_lsch1_int_st.
    -                DUTY_CHNG_END_LSCH1_INT_ST: u1,
    -                ///  reg_duty_chng_end_lsch2_int_st.
    -                DUTY_CHNG_END_LSCH2_INT_ST: u1,
    -                ///  reg_duty_chng_end_lsch3_int_st.
    -                DUTY_CHNG_END_LSCH3_INT_ST: u1,
    -                ///  reg_duty_chng_end_lsch4_int_st.
    -                DUTY_CHNG_END_LSCH4_INT_ST: u1,
    -                ///  reg_duty_chng_end_lsch5_int_st.
    -                DUTY_CHNG_END_LSCH5_INT_ST: u1,
    -                ///  reg_ovf_cnt_lsch0_int_st.
    -                OVF_CNT_LSCH0_INT_ST: u1,
    -                ///  reg_ovf_cnt_lsch1_int_st.
    -                OVF_CNT_LSCH1_INT_ST: u1,
    -                ///  reg_ovf_cnt_lsch2_int_st.
    -                OVF_CNT_LSCH2_INT_ST: u1,
    -                ///  reg_ovf_cnt_lsch3_int_st.
    -                OVF_CNT_LSCH3_INT_ST: u1,
    -                ///  reg_ovf_cnt_lsch4_int_st.
    -                OVF_CNT_LSCH4_INT_ST: u1,
    -                ///  reg_ovf_cnt_lsch5_int_st.
    -                OVF_CNT_LSCH5_INT_ST: u1,
    -                padding: u16,
    -            }),
    -            ///  LEDC_INT_ENA.
    -            INT_ENA: mmio.Mmio(packed struct(u32) {
    -                ///  reg_lstimer0_ovf_int_ena.
    -                LSTIMER0_OVF_INT_ENA: u1,
    -                ///  reg_lstimer1_ovf_int_ena.
    -                LSTIMER1_OVF_INT_ENA: u1,
    -                ///  reg_lstimer2_ovf_int_ena.
    -                LSTIMER2_OVF_INT_ENA: u1,
    -                ///  reg_lstimer3_ovf_int_ena.
    -                LSTIMER3_OVF_INT_ENA: u1,
    -                ///  reg_duty_chng_end_lsch0_int_ena.
    -                DUTY_CHNG_END_LSCH0_INT_ENA: u1,
    -                ///  reg_duty_chng_end_lsch1_int_ena.
    -                DUTY_CHNG_END_LSCH1_INT_ENA: u1,
    -                ///  reg_duty_chng_end_lsch2_int_ena.
    -                DUTY_CHNG_END_LSCH2_INT_ENA: u1,
    -                ///  reg_duty_chng_end_lsch3_int_ena.
    -                DUTY_CHNG_END_LSCH3_INT_ENA: u1,
    -                ///  reg_duty_chng_end_lsch4_int_ena.
    -                DUTY_CHNG_END_LSCH4_INT_ENA: u1,
    -                ///  reg_duty_chng_end_lsch5_int_ena.
    -                DUTY_CHNG_END_LSCH5_INT_ENA: u1,
    -                ///  reg_ovf_cnt_lsch0_int_ena.
    -                OVF_CNT_LSCH0_INT_ENA: u1,
    -                ///  reg_ovf_cnt_lsch1_int_ena.
    -                OVF_CNT_LSCH1_INT_ENA: u1,
    -                ///  reg_ovf_cnt_lsch2_int_ena.
    -                OVF_CNT_LSCH2_INT_ENA: u1,
    -                ///  reg_ovf_cnt_lsch3_int_ena.
    -                OVF_CNT_LSCH3_INT_ENA: u1,
    -                ///  reg_ovf_cnt_lsch4_int_ena.
    -                OVF_CNT_LSCH4_INT_ENA: u1,
    -                ///  reg_ovf_cnt_lsch5_int_ena.
    -                OVF_CNT_LSCH5_INT_ENA: u1,
    -                padding: u16,
    -            }),
    -            ///  LEDC_INT_CLR.
    -            INT_CLR: mmio.Mmio(packed struct(u32) {
    -                ///  reg_lstimer0_ovf_int_clr.
    -                LSTIMER0_OVF_INT_CLR: u1,
    -                ///  reg_lstimer1_ovf_int_clr.
    -                LSTIMER1_OVF_INT_CLR: u1,
    -                ///  reg_lstimer2_ovf_int_clr.
    -                LSTIMER2_OVF_INT_CLR: u1,
    -                ///  reg_lstimer3_ovf_int_clr.
    -                LSTIMER3_OVF_INT_CLR: u1,
    -                ///  reg_duty_chng_end_lsch0_int_clr.
    -                DUTY_CHNG_END_LSCH0_INT_CLR: u1,
    -                ///  reg_duty_chng_end_lsch1_int_clr.
    -                DUTY_CHNG_END_LSCH1_INT_CLR: u1,
    -                ///  reg_duty_chng_end_lsch2_int_clr.
    -                DUTY_CHNG_END_LSCH2_INT_CLR: u1,
    -                ///  reg_duty_chng_end_lsch3_int_clr.
    -                DUTY_CHNG_END_LSCH3_INT_CLR: u1,
    -                ///  reg_duty_chng_end_lsch4_int_clr.
    -                DUTY_CHNG_END_LSCH4_INT_CLR: u1,
    -                ///  reg_duty_chng_end_lsch5_int_clr.
    -                DUTY_CHNG_END_LSCH5_INT_CLR: u1,
    -                ///  reg_ovf_cnt_lsch0_int_clr.
    -                OVF_CNT_LSCH0_INT_CLR: u1,
    -                ///  reg_ovf_cnt_lsch1_int_clr.
    -                OVF_CNT_LSCH1_INT_CLR: u1,
    -                ///  reg_ovf_cnt_lsch2_int_clr.
    -                OVF_CNT_LSCH2_INT_CLR: u1,
    -                ///  reg_ovf_cnt_lsch3_int_clr.
    -                OVF_CNT_LSCH3_INT_CLR: u1,
    -                ///  reg_ovf_cnt_lsch4_int_clr.
    -                OVF_CNT_LSCH4_INT_CLR: u1,
    -                ///  reg_ovf_cnt_lsch5_int_clr.
    -                OVF_CNT_LSCH5_INT_CLR: u1,
    -                padding: u16,
    -            }),
    -            ///  LEDC_CONF.
    -            CONF: mmio.Mmio(packed struct(u32) {
    -                ///  reg_apb_clk_sel.
    -                APB_CLK_SEL: u2,
    -                reserved31: u29,
    -                ///  reg_clk_en.
    -                CLK_EN: u1,
    -            }),
    -            reserved252: [40]u8,
    -            ///  LEDC_DATE.
    -            DATE: mmio.Mmio(packed struct(u32) {
    -                ///  reg_ledc_date.
    -                LEDC_DATE: u32,
    -            }),
    -        };
    -
    -        ///  Remote Control Peripheral
    -        pub const RMT = extern struct {
    -            ///  RMT_CH0DATA_REG.
    -            CH0DATA: mmio.Mmio(packed struct(u32) {
    -                ///  Reserved.
    -                DATA: u32,
    -            }),
    -            ///  RMT_CH1DATA_REG.
    -            CH1DATA: mmio.Mmio(packed struct(u32) {
    -                ///  Reserved.
    -                DATA: u32,
    -            }),
    -            ///  RMT_CH2DATA_REG.
    -            CH2DATA: mmio.Mmio(packed struct(u32) {
    -                ///  Reserved.
    -                DATA: u32,
    -            }),
    -            ///  RMT_CH3DATA_REG.
    -            CH3DATA: mmio.Mmio(packed struct(u32) {
    -                ///  Reserved.
    -                DATA: u32,
    -            }),
    -            reserved28: [12]u8,
    -            ///  RMT_CH2CONF1_REG.
    -            CH2CONF1: mmio.Mmio(packed struct(u32) {
    -                ///  reg_rx_en_ch2.
    -                RX_EN: u1,
    -                ///  reg_mem_wr_rst_ch2.
    -                MEM_WR_RST: u1,
    -                ///  reg_apb_mem_rst_ch2.
    -                APB_MEM_RST: u1,
    -                ///  reg_mem_owner_ch2.
    -                MEM_OWNER: u1,
    -                ///  reg_rx_filter_en_ch2.
    -                RX_FILTER_EN: u1,
    -                ///  reg_rx_filter_thres_ch2.
    -                RX_FILTER_THRES: u8,
    -                ///  reg_mem_rx_wrap_en_ch2.
    -                MEM_RX_WRAP_EN: u1,
    -                ///  reg_afifo_rst_ch2.
    -                AFIFO_RST: u1,
    -                ///  reg_conf_update_ch2.
    -                CONF_UPDATE: u1,
    -                padding: u16,
    -            }),
    -            reserved36: [4]u8,
    -            ///  RMT_CH3CONF1_REG.
    -            CH3CONF1: mmio.Mmio(packed struct(u32) {
    -                ///  reg_rx_en_ch3.
    -                RX_EN: u1,
    -                ///  reg_mem_wr_rst_ch3.
    -                MEM_WR_RST: u1,
    -                ///  reg_apb_mem_rst_ch3.
    -                APB_MEM_RST: u1,
    -                ///  reg_mem_owner_ch3.
    -                MEM_OWNER: u1,
    -                ///  reg_rx_filter_en_ch3.
    -                RX_FILTER_EN: u1,
    -                ///  reg_rx_filter_thres_ch3.
    -                RX_FILTER_THRES: u8,
    -                ///  reg_mem_rx_wrap_en_ch3.
    -                MEM_RX_WRAP_EN: u1,
    -                ///  reg_afifo_rst_ch3.
    -                AFIFO_RST: u1,
    -                ///  reg_conf_update_ch3.
    -                CONF_UPDATE: u1,
    -                padding: u16,
    -            }),
    -            ///  RMT_CH0STATUS_REG.
    -            CH0STATUS: mmio.Mmio(packed struct(u32) {
    -                ///  reg_mem_raddr_ex_ch0.
    -                MEM_RADDR_EX: u9,
    -                ///  reg_state_ch0.
    -                STATE: u3,
    -                ///  reg_apb_mem_waddr_ch0.
    -                APB_MEM_WADDR: u9,
    -                ///  reg_apb_mem_rd_err_ch0.
    -                APB_MEM_RD_ERR: u1,
    -                ///  reg_mem_empty_ch0.
    -                MEM_EMPTY: u1,
    -                ///  reg_apb_mem_wr_err_ch0.
    -                APB_MEM_WR_ERR: u1,
    -                ///  reg_apb_mem_raddr_ch0.
    -                APB_MEM_RADDR: u8,
    -            }),
    -            ///  RMT_CH1STATUS_REG.
    -            CH1STATUS: mmio.Mmio(packed struct(u32) {
    -                ///  reg_mem_raddr_ex_ch1.
    -                MEM_RADDR_EX: u9,
    -                ///  reg_state_ch1.
    -                STATE: u3,
    -                ///  reg_apb_mem_waddr_ch1.
    -                APB_MEM_WADDR: u9,
    -                ///  reg_apb_mem_rd_err_ch1.
    -                APB_MEM_RD_ERR: u1,
    -                ///  reg_mem_empty_ch1.
    -                MEM_EMPTY: u1,
    -                ///  reg_apb_mem_wr_err_ch1.
    -                APB_MEM_WR_ERR: u1,
    -                ///  reg_apb_mem_raddr_ch1.
    -                APB_MEM_RADDR: u8,
    -            }),
    -            ///  RMT_CH2STATUS_REG.
    -            CH2STATUS: mmio.Mmio(packed struct(u32) {
    -                ///  reg_mem_waddr_ex_ch2.
    -                MEM_WADDR_EX: u9,
    -                reserved12: u3,
    -                ///  reg_apb_mem_raddr_ch2.
    -                APB_MEM_RADDR: u9,
    -                reserved22: u1,
    -                ///  reg_state_ch2.
    -                STATE: u3,
    -                ///  reg_mem_owner_err_ch2.
    -                MEM_OWNER_ERR: u1,
    -                ///  reg_mem_full_ch2.
    -                MEM_FULL: u1,
    -                ///  reg_apb_mem_rd_err_ch2.
    -                APB_MEM_RD_ERR: u1,
    -                padding: u4,
    -            }),
    -            ///  RMT_CH3STATUS_REG.
    -            CH3STATUS: mmio.Mmio(packed struct(u32) {
    -                ///  reg_mem_waddr_ex_ch3.
    -                MEM_WADDR_EX: u9,
    -                reserved12: u3,
    -                ///  reg_apb_mem_raddr_ch3.
    -                APB_MEM_RADDR: u9,
    -                reserved22: u1,
    -                ///  reg_state_ch3.
    -                STATE: u3,
    -                ///  reg_mem_owner_err_ch3.
    -                MEM_OWNER_ERR: u1,
    -                ///  reg_mem_full_ch3.
    -                MEM_FULL: u1,
    -                ///  reg_apb_mem_rd_err_ch3.
    -                APB_MEM_RD_ERR: u1,
    -                padding: u4,
    -            }),
    -            ///  RMT_INT_RAW_REG.
    -            INT_RAW: mmio.Mmio(packed struct(u32) {
    -                reserved10: u10,
    -                ///  reg_ch2_rx_thr_event_int_raw.
    -                CH2_RX_THR_EVENT_INT_RAW: u1,
    -                ///  reg_ch3_rx_thr_event_int_raw.
    -                CH3_RX_THR_EVENT_INT_RAW: u1,
    -                padding: u20,
    -            }),
    -            ///  RMT_INT_ST_REG.
    -            INT_ST: mmio.Mmio(packed struct(u32) {
    -                reserved10: u10,
    -                ///  reg_ch2_rx_thr_event_int_st.
    -                CH2_RX_THR_EVENT_INT_ST: u1,
    -                ///  reg_ch3_rx_thr_event_int_st.
    -                CH3_RX_THR_EVENT_INT_ST: u1,
    -                padding: u20,
    -            }),
    -            ///  RMT_INT_ENA_REG.
    -            INT_ENA: mmio.Mmio(packed struct(u32) {
    -                reserved10: u10,
    -                ///  reg_ch2_rx_thr_event_int_ena.
    -                CH2_RX_THR_EVENT_INT_ENA: u1,
    -                ///  reg_ch3_rx_thr_event_int_ena.
    -                CH3_RX_THR_EVENT_INT_ENA: u1,
    -                padding: u20,
    -            }),
    -            ///  RMT_INT_CLR_REG.
    -            INT_CLR: mmio.Mmio(packed struct(u32) {
    -                reserved10: u10,
    -                ///  reg_ch2_rx_thr_event_int_clr.
    -                CH2_RX_THR_EVENT_INT_CLR: u1,
    -                ///  reg_ch3_rx_thr_event_int_clr.
    -                CH3_RX_THR_EVENT_INT_CLR: u1,
    -                padding: u20,
    -            }),
    -            ///  RMT_CH0CARRIER_DUTY_REG.
    -            CH0CARRIER_DUTY: mmio.Mmio(packed struct(u32) {
    -                ///  reg_carrier_low_ch0.
    -                CARRIER_LOW: u16,
    -                ///  reg_carrier_high_ch0.
    -                CARRIER_HIGH: u16,
    -            }),
    -            ///  RMT_CH1CARRIER_DUTY_REG.
    -            CH1CARRIER_DUTY: mmio.Mmio(packed struct(u32) {
    -                ///  reg_carrier_low_ch1.
    -                CARRIER_LOW: u16,
    -                ///  reg_carrier_high_ch1.
    -                CARRIER_HIGH: u16,
    -            }),
    -            ///  RMT_CH2_RX_CARRIER_RM_REG.
    -            CH2_RX_CARRIER_RM: mmio.Mmio(packed struct(u32) {
    -                ///  reg_carrier_low_thres_ch2.
    -                CARRIER_LOW_THRES: u16,
    -                ///  reg_carrier_high_thres_ch2.
    -                CARRIER_HIGH_THRES: u16,
    -            }),
    -            ///  RMT_CH3_RX_CARRIER_RM_REG.
    -            CH3_RX_CARRIER_RM: mmio.Mmio(packed struct(u32) {
    -                ///  reg_carrier_low_thres_ch3.
    -                CARRIER_LOW_THRES: u16,
    -                ///  reg_carrier_high_thres_ch3.
    -                CARRIER_HIGH_THRES: u16,
    -            }),
    -            reserved104: [16]u8,
    -            ///  RMT_SYS_CONF_REG.
    -            SYS_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  reg_apb_fifo_mask.
    -                APB_FIFO_MASK: u1,
    -                ///  reg_mem_clk_force_on.
    -                MEM_CLK_FORCE_ON: u1,
    -                ///  reg_rmt_mem_force_pd.
    -                MEM_FORCE_PD: u1,
    -                ///  reg_rmt_mem_force_pu.
    -                MEM_FORCE_PU: u1,
    -                ///  reg_rmt_sclk_div_num.
    -                SCLK_DIV_NUM: u8,
    -                ///  reg_rmt_sclk_div_a.
    -                SCLK_DIV_A: u6,
    -                ///  reg_rmt_sclk_div_b.
    -                SCLK_DIV_B: u6,
    -                ///  reg_rmt_sclk_sel.
    -                SCLK_SEL: u2,
    -                ///  reg_rmt_sclk_active.
    -                SCLK_ACTIVE: u1,
    -                reserved31: u4,
    -                ///  reg_clk_en.
    -                CLK_EN: u1,
    -            }),
    -            ///  RMT_TX_SIM_REG.
    -            TX_SIM: mmio.Mmio(packed struct(u32) {
    -                ///  reg_rmt_tx_sim_ch0.
    -                TX_SIM_CH0: u1,
    -                ///  reg_rmt_tx_sim_ch1.
    -                TX_SIM_CH1: u1,
    -                ///  reg_rmt_tx_sim_en.
    -                TX_SIM_EN: u1,
    -                padding: u29,
    -            }),
    -            ///  RMT_REF_CNT_RST_REG.
    -            REF_CNT_RST: mmio.Mmio(packed struct(u32) {
    -                ///  reg_ref_cnt_rst_ch0.
    -                CH0: u1,
    -                ///  reg_ref_cnt_rst_ch1.
    -                CH1: u1,
    -                ///  reg_ref_cnt_rst_ch2.
    -                CH2: u1,
    -                ///  reg_ref_cnt_rst_ch3.
    -                CH3: u1,
    -                padding: u28,
    -            }),
    -            reserved204: [88]u8,
    -            ///  RMT_DATE_REG.
    -            DATE: mmio.Mmio(packed struct(u32) {
    -                ///  reg_rmt_date.
    -                DATE: u28,
    -                padding: u4,
    -            }),
    -        };
    -
    -        ///  Hardware random number generator
    -        pub const RNG = extern struct {
    -            reserved176: [176]u8,
    -            ///  Random number data
    -            DATA: u32,
    -        };
    -
    -        ///  RSA (Rivest Shamir Adleman) Accelerator
    -        pub const RSA = extern struct {
    -            ///  The memory that stores M
    -            M_MEM: [16]u8,
    -            reserved512: [496]u8,
    -            ///  The memory that stores Z
    -            Z_MEM: [16]u8,
    -            reserved1024: [496]u8,
    -            ///  The memory that stores Y
    -            Y_MEM: [16]u8,
    -            reserved1536: [496]u8,
    -            ///  The memory that stores X
    -            X_MEM: [16]u8,
    -            reserved2048: [496]u8,
    -            ///  RSA M_prime register
    -            M_PRIME: mmio.Mmio(packed struct(u32) {
    -                ///  Those bits stores m'
    -                M_PRIME: u32,
    -            }),
    -            ///  RSA mode register
    -            MODE: mmio.Mmio(packed struct(u32) {
    -                ///  rsa mode (rsa length).
    -                MODE: u7,
    -                padding: u25,
    -            }),
    -            ///  RSA query clean register
    -            QUERY_CLEAN: mmio.Mmio(packed struct(u32) {
    -                ///  query clean
    -                QUERY_CLEAN: u1,
    -                padding: u31,
    -            }),
    -            ///  RSA modular exponentiation trigger register.
    -            SET_START_MODEXP: mmio.Mmio(packed struct(u32) {
    -                ///  start modular exponentiation
    -                SET_START_MODEXP: u1,
    -                padding: u31,
    -            }),
    -            ///  RSA modular multiplication trigger register.
    -            SET_START_MODMULT: mmio.Mmio(packed struct(u32) {
    -                ///  start modular multiplication
    -                SET_START_MODMULT: u1,
    -                padding: u31,
    -            }),
    -            ///  RSA normal multiplication trigger register.
    -            SET_START_MULT: mmio.Mmio(packed struct(u32) {
    -                ///  start multiplicaiton
    -                SET_START_MULT: u1,
    -                padding: u31,
    -            }),
    -            ///  RSA query idle register
    -            QUERY_IDLE: mmio.Mmio(packed struct(u32) {
    -                ///  query rsa idle. 1'b0: busy, 1'b1: idle
    -                QUERY_IDLE: u1,
    -                padding: u31,
    -            }),
    -            ///  RSA interrupt clear register
    -            INT_CLR: mmio.Mmio(packed struct(u32) {
    -                ///  set this bit to clear RSA interrupt.
    -                CLEAR_INTERRUPT: u1,
    -                padding: u31,
    -            }),
    -            ///  RSA constant time option register
    -            CONSTANT_TIME: mmio.Mmio(packed struct(u32) {
    -                ///  Configure this bit to 0 for acceleration. 0: with acceleration, 1: without acceleration(defalut).
    -                CONSTANT_TIME: u1,
    -                padding: u31,
    -            }),
    -            ///  RSA search option
    -            SEARCH_ENABLE: mmio.Mmio(packed struct(u32) {
    -                ///  Configure this bit to 1 for acceleration. 1: with acceleration, 0: without acceleration(default). This option should be used together with RSA_SEARCH_POS.
    -                SEARCH_ENABLE: u1,
    -                padding: u31,
    -            }),
    -            ///  RSA search position configure register
    -            SEARCH_POS: mmio.Mmio(packed struct(u32) {
    -                ///  Configure this field to set search position. This field should be used together with RSA_SEARCH_ENABLE. The field is only meaningful when RSA_SEARCH_ENABLE is high.
    -                SEARCH_POS: u12,
    -                padding: u20,
    -            }),
    -            ///  RSA interrupt enable register
    -            INT_ENA: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to enable interrupt that occurs when rsa calculation is done. 1'b0: disable, 1'b1: enable(default).
    -                INT_ENA: u1,
    -                padding: u31,
    -            }),
    -            ///  RSA version control register
    -            DATE: mmio.Mmio(packed struct(u32) {
    -                ///  rsa version information
    -                DATE: u30,
    -                padding: u2,
    -            }),
    -        };
    -
    -        ///  Real-Time Clock Control
    -        pub const RTC_CNTL = extern struct {
    -            ///  rtc configure register
    -            OPTIONS0: mmio.Mmio(packed struct(u32) {
    -                ///  {reg_sw_stall_appcpu_c1[5:0], reg_sw_stall_appcpu_c0[1:0]} == 0x86 will stall APP CPU
    -                SW_STALL_APPCPU_C0: u2,
    -                ///  {reg_sw_stall_procpu_c1[5:0], reg_sw_stall_procpu_c0[1:0]} == 0x86 will stall PRO CPU
    -                SW_STALL_PROCPU_C0: u2,
    -                ///  APP CPU SW reset
    -                SW_APPCPU_RST: u1,
    -                ///  PRO CPU SW reset
    -                SW_PROCPU_RST: u1,
    -                ///  BB_I2C force power down
    -                BB_I2C_FORCE_PD: u1,
    -                ///  BB_I2C force power up
    -                BB_I2C_FORCE_PU: u1,
    -                ///  BB_PLL _I2C force power down
    -                BBPLL_I2C_FORCE_PD: u1,
    -                ///  BB_PLL_I2C force power up
    -                BBPLL_I2C_FORCE_PU: u1,
    -                ///  BB_PLL force power down
    -                BBPLL_FORCE_PD: u1,
    -                ///  BB_PLL force power up
    -                BBPLL_FORCE_PU: u1,
    -                ///  crystall force power down
    -                XTL_FORCE_PD: u1,
    -                ///  crystall force power up
    -                XTL_FORCE_PU: u1,
    -                ///  wait bias_sleep and current source wakeup
    -                XTL_EN_WAIT: u4,
    -                reserved20: u2,
    -                ///  analog configure
    -                XTL_EXT_CTR_SEL: u3,
    -                ///  analog configure
    -                XTL_FORCE_ISO: u1,
    -                ///  analog configure
    -                PLL_FORCE_ISO: u1,
    -                ///  analog configure
    -                ANALOG_FORCE_ISO: u1,
    -                ///  analog configure
    -                XTL_FORCE_NOISO: u1,
    -                ///  analog configure
    -                PLL_FORCE_NOISO: u1,
    -                ///  analog configure
    -                ANALOG_FORCE_NOISO: u1,
    -                ///  digital wrap force reset in deep sleep
    -                DG_WRAP_FORCE_RST: u1,
    -                ///  digital core force no reset in deep sleep
    -                DG_WRAP_FORCE_NORST: u1,
    -                ///  SW system reset
    -                SW_SYS_RST: u1,
    -            }),
    -            ///  rtc configure register
    -            SLP_TIMER0: mmio.Mmio(packed struct(u32) {
    -                ///  configure the sleep time
    -                SLP_VAL_LO: u32,
    -            }),
    -            ///  rtc configure register
    -            SLP_TIMER1: mmio.Mmio(packed struct(u32) {
    -                ///  RTC sleep timer high 16 bits
    -                SLP_VAL_HI: u16,
    -                ///  timer alarm enable bit
    -                RTC_MAIN_TIMER_ALARM_EN: u1,
    -                padding: u15,
    -            }),
    -            ///  rtc configure register
    -            TIME_UPDATE: mmio.Mmio(packed struct(u32) {
    -                reserved27: u27,
    -                ///  Enable to record system stall time
    -                TIMER_SYS_STALL: u1,
    -                ///  Enable to record 40M XTAL OFF time
    -                TIMER_XTL_OFF: u1,
    -                ///  enable to record system reset time
    -                TIMER_SYS_RST: u1,
    -                reserved31: u1,
    -                ///  Set 1: to update register with RTC timer
    -                RTC_TIME_UPDATE: u1,
    -            }),
    -            ///  rtc configure register
    -            TIME_LOW0: mmio.Mmio(packed struct(u32) {
    -                ///  RTC timer low 32 bits
    -                RTC_TIMER_VALUE0_LOW: u32,
    -            }),
    -            ///  rtc configure register
    -            TIME_HIGH0: mmio.Mmio(packed struct(u32) {
    -                ///  RTC timer high 16 bits
    -                RTC_TIMER_VALUE0_HIGH: u16,
    -                padding: u16,
    -            }),
    -            ///  rtc configure register
    -            STATE0: mmio.Mmio(packed struct(u32) {
    -                ///  rtc software interrupt to main cpu
    -                RTC_SW_CPU_INT: u1,
    -                ///  clear rtc sleep reject cause
    -                RTC_SLP_REJECT_CAUSE_CLR: u1,
    -                reserved22: u20,
    -                ///  1: APB to RTC using bridge
    -                APB2RTC_BRIDGE_SEL: u1,
    -                reserved28: u5,
    -                ///  SDIO active indication
    -                SDIO_ACTIVE_IND: u1,
    -                ///  leep wakeup bit
    -                SLP_WAKEUP: u1,
    -                ///  leep reject bit
    -                SLP_REJECT: u1,
    -                ///  sleep enable bit
    -                SLEEP_EN: u1,
    -            }),
    -            ///  rtc configure register
    -            TIMER1: mmio.Mmio(packed struct(u32) {
    -                ///  CPU stall enable bit
    -                CPU_STALL_EN: u1,
    -                ///  CPU stall wait cycles in fast_clk_rtc
    -                CPU_STALL_WAIT: u5,
    -                ///  CK8M wait cycles in slow_clk_rtc
    -                CK8M_WAIT: u8,
    -                ///  XTAL wait cycles in slow_clk_rtc
    -                XTL_BUF_WAIT: u10,
    -                ///  PLL wait cycles in slow_clk_rtc
    -                PLL_BUF_WAIT: u8,
    -            }),
    -            ///  rtc configure register
    -            TIMER2: mmio.Mmio(packed struct(u32) {
    -                reserved24: u24,
    -                ///  minimal cycles in slow_clk_rtc for CK8M in power down state
    -                MIN_TIME_CK8M_OFF: u8,
    -            }),
    -            ///  rtc configure register
    -            TIMER3: mmio.Mmio(packed struct(u32) {
    -                ///  wifi power domain wakeup time
    -                WIFI_WAIT_TIMER: u9,
    -                ///  wifi power domain power on time
    -                WIFI_POWERUP_TIMER: u7,
    -                ///  bt power domain wakeup time
    -                BT_WAIT_TIMER: u9,
    -                ///  bt power domain power on time
    -                BT_POWERUP_TIMER: u7,
    -            }),
    -            ///  rtc configure register
    -            TIMER4: mmio.Mmio(packed struct(u32) {
    -                ///  cpu top power domain wakeup time
    -                CPU_TOP_WAIT_TIMER: u9,
    -                ///  cpu top power domain power on time
    -                CPU_TOP_POWERUP_TIMER: u7,
    -                ///  digital wrap power domain wakeup time
    -                DG_WRAP_WAIT_TIMER: u9,
    -                ///  digital wrap power domain power on time
    -                DG_WRAP_POWERUP_TIMER: u7,
    -            }),
    -            ///  rtc configure register
    -            TIMER5: mmio.Mmio(packed struct(u32) {
    -                reserved8: u8,
    -                ///  minimal sleep cycles in slow_clk_rtc
    -                MIN_SLP_VAL: u8,
    -                padding: u16,
    -            }),
    -            ///  rtc configure register
    -            TIMER6: mmio.Mmio(packed struct(u32) {
    -                reserved16: u16,
    -                ///  digital peri power domain wakeup time
    -                DG_PERI_WAIT_TIMER: u9,
    -                ///  digital peri power domain power on time
    -                DG_PERI_POWERUP_TIMER: u7,
    -            }),
    -            ///  rtc configure register
    -            ANA_CONF: mmio.Mmio(packed struct(u32) {
    -                reserved18: u18,
    -                ///  force no bypass i2c power on reset
    -                RESET_POR_FORCE_PD: u1,
    -                ///  force bypass i2c power on reset
    -                RESET_POR_FORCE_PU: u1,
    -                ///  enable glitch reset
    -                GLITCH_RST_EN: u1,
    -                reserved22: u1,
    -                ///  PLLA force power up
    -                SAR_I2C_PU: u1,
    -                ///  PLLA force power down
    -                PLLA_FORCE_PD: u1,
    -                ///  PLLA force power up
    -                PLLA_FORCE_PU: u1,
    -                ///  start BBPLL calibration during sleep
    -                BBPLL_CAL_SLP_START: u1,
    -                ///  1: PVTMON power up
    -                PVTMON_PU: u1,
    -                ///  1: TXRF_I2C power up
    -                TXRF_I2C_PU: u1,
    -                ///  1: RFRX_PBUS power up
    -                RFRX_PBUS_PU: u1,
    -                reserved30: u1,
    -                ///  1: CKGEN_I2C power up
    -                CKGEN_I2C_PU: u1,
    -                ///  power up pll i2c
    -                PLL_I2C_PU: u1,
    -            }),
    -            ///  rtc configure register
    -            RESET_STATE: mmio.Mmio(packed struct(u32) {
    -                ///  reset cause of PRO CPU
    -                RESET_CAUSE_PROCPU: u6,
    -                ///  reset cause of APP CPU
    -                RESET_CAUSE_APPCPU: u6,
    -                ///  APP CPU state vector sel
    -                STAT_VECTOR_SEL_APPCPU: u1,
    -                ///  PRO CPU state vector sel
    -                STAT_VECTOR_SEL_PROCPU: u1,
    -                ///  PRO CPU reset_flag
    -                ALL_RESET_FLAG_PROCPU: u1,
    -                ///  APP CPU reset flag
    -                ALL_RESET_FLAG_APPCPU: u1,
    -                ///  clear PRO CPU reset_flag
    -                ALL_RESET_FLAG_CLR_PROCPU: u1,
    -                ///  clear APP CPU reset flag
    -                ALL_RESET_FLAG_CLR_APPCPU: u1,
    -                ///  APPCPU OcdHaltOnReset
    -                OCD_HALT_ON_RESET_APPCPU: u1,
    -                ///  PROCPU OcdHaltOnReset
    -                OCD_HALT_ON_RESET_PROCPU: u1,
    -                ///  configure jtag reset configure
    -                JTAG_RESET_FLAG_PROCPU: u1,
    -                ///  configure jtag reset configure
    -                JTAG_RESET_FLAG_APPCPU: u1,
    -                ///  configure jtag reset configure
    -                JTAG_RESET_FLAG_CLR_PROCPU: u1,
    -                ///  configure jtag reset configure
    -                JTAG_RESET_FLAG_CLR_APPCPU: u1,
    -                ///  configure dreset configure
    -                RTC_DRESET_MASK_APPCPU: u1,
    -                ///  configure dreset configure
    -                RTC_DRESET_MASK_PROCPU: u1,
    -                padding: u6,
    -            }),
    -            ///  rtc configure register
    -            WAKEUP_STATE: mmio.Mmio(packed struct(u32) {
    -                reserved15: u15,
    -                ///  wakeup enable bitmap
    -                RTC_WAKEUP_ENA: u17,
    -            }),
    -            ///  rtc configure register
    -            INT_ENA_RTC: mmio.Mmio(packed struct(u32) {
    -                ///  enable sleep wakeup interrupt
    -                SLP_WAKEUP_INT_ENA: u1,
    -                ///  enable sleep reject interrupt
    -                SLP_REJECT_INT_ENA: u1,
    -                reserved3: u1,
    -                ///  enable RTC WDT interrupt
    -                RTC_WDT_INT_ENA: u1,
    -                reserved9: u5,
    -                ///  enable brown out interrupt
    -                RTC_BROWN_OUT_INT_ENA: u1,
    -                ///  enable RTC main timer interrupt
    -                RTC_MAIN_TIMER_INT_ENA: u1,
    -                reserved15: u4,
    -                ///  enable super watch dog interrupt
    -                RTC_SWD_INT_ENA: u1,
    -                ///  enable xtal32k_dead interrupt
    -                RTC_XTAL32K_DEAD_INT_ENA: u1,
    -                reserved19: u2,
    -                ///  enbale gitch det interrupt
    -                RTC_GLITCH_DET_INT_ENA: u1,
    -                ///  enbale bbpll cal end interrupt
    -                RTC_BBPLL_CAL_INT_ENA: u1,
    -                padding: u11,
    -            }),
    -            ///  rtc configure register
    -            INT_RAW_RTC: mmio.Mmio(packed struct(u32) {
    -                ///  sleep wakeup interrupt raw
    -                SLP_WAKEUP_INT_RAW: u1,
    -                ///  sleep reject interrupt raw
    -                SLP_REJECT_INT_RAW: u1,
    -                reserved3: u1,
    -                ///  RTC WDT interrupt raw
    -                RTC_WDT_INT_RAW: u1,
    -                reserved9: u5,
    -                ///  brown out interrupt raw
    -                RTC_BROWN_OUT_INT_RAW: u1,
    -                ///  RTC main timer interrupt raw
    -                RTC_MAIN_TIMER_INT_RAW: u1,
    -                reserved15: u4,
    -                ///  super watch dog interrupt raw
    -                RTC_SWD_INT_RAW: u1,
    -                ///  xtal32k dead detection interrupt raw
    -                RTC_XTAL32K_DEAD_INT_RAW: u1,
    -                reserved19: u2,
    -                ///  glitch_det_interrupt_raw
    -                RTC_GLITCH_DET_INT_RAW: u1,
    -                ///  bbpll cal end interrupt state
    -                RTC_BBPLL_CAL_INT_RAW: u1,
    -                padding: u11,
    -            }),
    -            ///  rtc configure register
    -            INT_ST_RTC: mmio.Mmio(packed struct(u32) {
    -                ///  sleep wakeup interrupt state
    -                SLP_WAKEUP_INT_ST: u1,
    -                ///  sleep reject interrupt state
    -                SLP_REJECT_INT_ST: u1,
    -                reserved3: u1,
    -                ///  RTC WDT interrupt state
    -                RTC_WDT_INT_ST: u1,
    -                reserved9: u5,
    -                ///  brown out interrupt state
    -                RTC_BROWN_OUT_INT_ST: u1,
    -                ///  RTC main timer interrupt state
    -                RTC_MAIN_TIMER_INT_ST: u1,
    -                reserved15: u4,
    -                ///  super watch dog interrupt state
    -                RTC_SWD_INT_ST: u1,
    -                ///  xtal32k dead detection interrupt state
    -                RTC_XTAL32K_DEAD_INT_ST: u1,
    -                reserved19: u2,
    -                ///  glitch_det_interrupt state
    -                RTC_GLITCH_DET_INT_ST: u1,
    -                ///  bbpll cal end interrupt state
    -                RTC_BBPLL_CAL_INT_ST: u1,
    -                padding: u11,
    -            }),
    -            ///  rtc configure register
    -            INT_CLR_RTC: mmio.Mmio(packed struct(u32) {
    -                ///  Clear sleep wakeup interrupt state
    -                SLP_WAKEUP_INT_CLR: u1,
    -                ///  Clear sleep reject interrupt state
    -                SLP_REJECT_INT_CLR: u1,
    -                reserved3: u1,
    -                ///  Clear RTC WDT interrupt state
    -                RTC_WDT_INT_CLR: u1,
    -                reserved9: u5,
    -                ///  Clear brown out interrupt state
    -                RTC_BROWN_OUT_INT_CLR: u1,
    -                ///  Clear RTC main timer interrupt state
    -                RTC_MAIN_TIMER_INT_CLR: u1,
    -                reserved15: u4,
    -                ///  Clear super watch dog interrupt state
    -                RTC_SWD_INT_CLR: u1,
    -                ///  Clear RTC WDT interrupt state
    -                RTC_XTAL32K_DEAD_INT_CLR: u1,
    -                reserved19: u2,
    -                ///  Clear glitch det interrupt state
    -                RTC_GLITCH_DET_INT_CLR: u1,
    -                ///  clear bbpll cal end interrupt state
    -                RTC_BBPLL_CAL_INT_CLR: u1,
    -                padding: u11,
    -            }),
    -            ///  rtc configure register
    -            STORE0: mmio.Mmio(packed struct(u32) {
    -                ///  reserved register
    -                RTC_SCRATCH0: u32,
    -            }),
    -            ///  rtc configure register
    -            STORE1: mmio.Mmio(packed struct(u32) {
    -                ///  reserved register
    -                RTC_SCRATCH1: u32,
    -            }),
    -            ///  rtc configure register
    -            STORE2: mmio.Mmio(packed struct(u32) {
    -                ///  reserved register
    -                RTC_SCRATCH2: u32,
    -            }),
    -            ///  rtc configure register
    -            STORE3: mmio.Mmio(packed struct(u32) {
    -                ///  reserved register
    -                RTC_SCRATCH3: u32,
    -            }),
    -            ///  rtc configure register
    -            EXT_XTL_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  xtal 32k watch dog enable
    -                XTAL32K_WDT_EN: u1,
    -                ///  xtal 32k watch dog clock force on
    -                XTAL32K_WDT_CLK_FO: u1,
    -                ///  xtal 32k watch dog sw reset
    -                XTAL32K_WDT_RESET: u1,
    -                ///  xtal 32k external xtal clock force on
    -                XTAL32K_EXT_CLK_FO: u1,
    -                ///  xtal 32k switch to back up clock when xtal is dead
    -                XTAL32K_AUTO_BACKUP: u1,
    -                ///  xtal 32k restart xtal when xtal is dead
    -                XTAL32K_AUTO_RESTART: u1,
    -                ///  xtal 32k switch back xtal when xtal is restarted
    -                XTAL32K_AUTO_RETURN: u1,
    -                ///  Xtal 32k xpd control by sw or fsm
    -                XTAL32K_XPD_FORCE: u1,
    -                ///  apply an internal clock to help xtal 32k to start
    -                ENCKINIT_XTAL_32K: u1,
    -                ///  0: single-end buffer 1: differential buffer
    -                DBUF_XTAL_32K: u1,
    -                ///  xtal_32k gm control
    -                DGM_XTAL_32K: u3,
    -                ///  DRES_XTAL_32K
    -                DRES_XTAL_32K: u3,
    -                ///  XPD_XTAL_32K
    -                XPD_XTAL_32K: u1,
    -                ///  DAC_XTAL_32K
    -                DAC_XTAL_32K: u3,
    -                ///  state of 32k_wdt
    -                RTC_WDT_STATE: u3,
    -                ///  XTAL_32K sel. 0: external XTAL_32K
    -                RTC_XTAL32K_GPIO_SEL: u1,
    -                reserved30: u6,
    -                ///  0: power down XTAL at high level
    -                XTL_EXT_CTR_LV: u1,
    -                ///  enable gpio configure xtal power on
    -                XTL_EXT_CTR_EN: u1,
    -            }),
    -            ///  rtc configure register
    -            EXT_WAKEUP_CONF: mmio.Mmio(packed struct(u32) {
    -                reserved31: u31,
    -                ///  enable filter for gpio wakeup event
    -                GPIO_WAKEUP_FILTER: u1,
    -            }),
    -            ///  rtc configure register
    -            SLP_REJECT_CONF: mmio.Mmio(packed struct(u32) {
    -                reserved12: u12,
    -                ///  sleep reject enable
    -                RTC_SLEEP_REJECT_ENA: u18,
    -                ///  enable reject for light sleep
    -                LIGHT_SLP_REJECT_EN: u1,
    -                ///  enable reject for deep sleep
    -                DEEP_SLP_REJECT_EN: u1,
    -            }),
    -            ///  rtc configure register
    -            CPU_PERIOD_CONF: mmio.Mmio(packed struct(u32) {
    -                reserved29: u29,
    -                ///  CPU sel option
    -                RTC_CPUSEL_CONF: u1,
    -                ///  CPU clk sel option
    -                RTC_CPUPERIOD_SEL: u2,
    -            }),
    -            ///  rtc configure register
    -            CLK_CONF: mmio.Mmio(packed struct(u32) {
    -                reserved1: u1,
    -                ///  efuse_clk_force_gating
    -                EFUSE_CLK_FORCE_GATING: u1,
    -                ///  efuse_clk_force_nogating
    -                EFUSE_CLK_FORCE_NOGATING: u1,
    -                ///  used to sync reg_ck8m_div_sel bus. Clear vld before set reg_ck8m_div_sel
    -                CK8M_DIV_SEL_VLD: u1,
    -                ///  CK8M_D256_OUT divider. 00: div128
    -                CK8M_DIV: u2,
    -                ///  disable CK8M and CK8M_D256_OUT
    -                ENB_CK8M: u1,
    -                ///  1: CK8M_D256_OUT is actually CK8M
    -                ENB_CK8M_DIV: u1,
    -                ///  enable CK_XTAL_32K for digital core (no relationship with RTC core)
    -                DIG_XTAL32K_EN: u1,
    -                ///  enable CK8M_D256_OUT for digital core (no relationship with RTC core)
    -                DIG_CLK8M_D256_EN: u1,
    -                ///  enable CK8M for digital core (no relationship with RTC core)
    -                DIG_CLK8M_EN: u1,
    -                reserved12: u1,
    -                ///  divider = reg_ck8m_div_sel + 1
    -                CK8M_DIV_SEL: u3,
    -                ///  XTAL force no gating during sleep
    -                XTAL_FORCE_NOGATING: u1,
    -                ///  CK8M force no gating during sleep
    -                CK8M_FORCE_NOGATING: u1,
    -                ///  CK8M_DFREQ
    -                CK8M_DFREQ: u8,
    -                ///  CK8M force power down
    -                CK8M_FORCE_PD: u1,
    -                ///  CK8M force power up
    -                CK8M_FORCE_PU: u1,
    -                ///  force enable xtal clk gating
    -                XTAL_GLOBAL_FORCE_GATING: u1,
    -                ///  force bypass xtal clk gating
    -                XTAL_GLOBAL_FORCE_NOGATING: u1,
    -                ///  fast_clk_rtc sel. 0: XTAL div 4
    -                FAST_CLK_RTC_SEL: u1,
    -                ///  slelect rtc slow clk
    -                ANA_CLK_RTC_SEL: u2,
    -            }),
    -            ///  rtc configure register
    -            SLOW_CLK_CONF: mmio.Mmio(packed struct(u32) {
    -                reserved22: u22,
    -                ///  used to sync div bus. clear vld before set reg_rtc_ana_clk_div
    -                RTC_ANA_CLK_DIV_VLD: u1,
    -                ///  the clk divider num of RTC_CLK
    -                RTC_ANA_CLK_DIV: u8,
    -                ///  flag rtc_slow_clk_next_edge
    -                RTC_SLOW_CLK_NEXT_EDGE: u1,
    -            }),
    -            ///  rtc configure register
    -            SDIO_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  timer count to apply reg_sdio_dcap after sdio power on
    -                SDIO_TIMER_TARGET: u8,
    -                reserved9: u1,
    -                ///  Tieh = 1 mode drive ability. Initially set to 0 to limit charge current
    -                SDIO_DTHDRV: u2,
    -                ///  ability to prevent LDO from overshoot
    -                SDIO_DCAP: u2,
    -                ///  add resistor from ldo output to ground. 0: no res
    -                SDIO_INITI: u2,
    -                ///  0 to set init[1:0]=0
    -                SDIO_EN_INITI: u1,
    -                ///  tune current limit threshold when tieh = 0. About 800mA/(8+d)
    -                SDIO_DCURLIM: u3,
    -                ///  select current limit mode
    -                SDIO_MODECURLIM: u1,
    -                ///  enable current limit
    -                SDIO_ENCURLIM: u1,
    -                ///  power down SDIO_REG in sleep. Only active when reg_sdio_force = 0
    -                SDIO_REG_PD_EN: u1,
    -                ///  1: use SW option to control SDIO_REG
    -                SDIO_FORCE: u1,
    -                ///  SW option for SDIO_TIEH. Only active when reg_sdio_force = 1
    -                SDIO_TIEH: u1,
    -                ///  read only register for REG1P8_READY
    -                _1P8_READY: u1,
    -                ///  SW option for DREFL_SDIO. Only active when reg_sdio_force = 1
    -                DREFL_SDIO: u2,
    -                ///  SW option for DREFM_SDIO. Only active when reg_sdio_force = 1
    -                DREFM_SDIO: u2,
    -                ///  SW option for DREFH_SDIO. Only active when reg_sdio_force = 1
    -                DREFH_SDIO: u2,
    -                XPD_SDIO: u1,
    -            }),
    -            ///  rtc configure register
    -            BIAS_CONF: mmio.Mmio(packed struct(u32) {
    -                DG_VDD_DRV_B_SLP: u8,
    -                DG_VDD_DRV_B_SLP_EN: u1,
    -                reserved10: u1,
    -                ///  bias buf when rtc in normal work state
    -                BIAS_BUF_IDLE: u1,
    -                ///  bias buf when rtc in wakeup state
    -                BIAS_BUF_WAKE: u1,
    -                ///  bias buf when rtc in sleep state
    -                BIAS_BUF_DEEP_SLP: u1,
    -                ///  bias buf when rtc in monitor state
    -                BIAS_BUF_MONITOR: u1,
    -                ///  xpd cur when rtc in sleep_state
    -                PD_CUR_DEEP_SLP: u1,
    -                ///  xpd cur when rtc in monitor state
    -                PD_CUR_MONITOR: u1,
    -                ///  bias_sleep when rtc in sleep_state
    -                BIAS_SLEEP_DEEP_SLP: u1,
    -                ///  bias_sleep when rtc in monitor state
    -                BIAS_SLEEP_MONITOR: u1,
    -                ///  DBG_ATTEN when rtc in sleep state
    -                DBG_ATTEN_DEEP_SLP: u4,
    -                ///  DBG_ATTEN when rtc in monitor state
    -                DBG_ATTEN_MONITOR: u4,
    -                padding: u6,
    -            }),
    -            ///  rtc configure register
    -            RTC_CNTL: mmio.Mmio(packed struct(u32) {
    -                reserved7: u7,
    -                ///  software enable digital regulator cali
    -                DIG_REG_CAL_EN: u1,
    -                reserved14: u6,
    -                ///  SCK_DCAP
    -                SCK_DCAP: u8,
    -                reserved28: u6,
    -                ///  RTC_DBOOST force power down
    -                DBOOST_FORCE_PD: u1,
    -                ///  RTC_DBOOST force power up
    -                DBOOST_FORCE_PU: u1,
    -                ///  RTC_REG force power down (for RTC_REG power down means decrease the voltage to 0.8v or lower )
    -                REGULATOR_FORCE_PD: u1,
    -                ///  RTC_REG force power up
    -                REGULATOR_FORCE_PU: u1,
    -            }),
    -            ///  rtc configure register
    -            PWC: mmio.Mmio(packed struct(u32) {
    -                reserved21: u21,
    -                ///  rtc pad force hold
    -                RTC_PAD_FORCE_HOLD: u1,
    -                padding: u10,
    -            }),
    -            ///  rtc configure register
    -            DIG_PWC: mmio.Mmio(packed struct(u32) {
    -                ///  vdd_spi drv's software value
    -                VDD_SPI_PWR_DRV: u2,
    -                ///  vdd_spi drv use software value
    -                VDD_SPI_PWR_FORCE: u1,
    -                ///  memories in digital core force PD in sleep
    -                LSLP_MEM_FORCE_PD: u1,
    -                ///  memories in digital core force PU in sleep
    -                LSLP_MEM_FORCE_PU: u1,
    -                reserved11: u6,
    -                ///  bt force power down
    -                BT_FORCE_PD: u1,
    -                ///  bt force power up
    -                BT_FORCE_PU: u1,
    -                ///  digital peri force power down
    -                DG_PERI_FORCE_PD: u1,
    -                ///  digital peri force power up
    -                DG_PERI_FORCE_PU: u1,
    -                ///  fastmemory retention mode in sleep
    -                RTC_FASTMEM_FORCE_LPD: u1,
    -                ///  fastmemory donlt entry retention mode in sleep
    -                RTC_FASTMEM_FORCE_LPU: u1,
    -                ///  wifi force power down
    -                WIFI_FORCE_PD: u1,
    -                ///  wifi force power up
    -                WIFI_FORCE_PU: u1,
    -                ///  digital core force power down
    -                DG_WRAP_FORCE_PD: u1,
    -                ///  digital core force power up
    -                DG_WRAP_FORCE_PU: u1,
    -                ///  cpu core force power down
    -                CPU_TOP_FORCE_PD: u1,
    -                ///  cpu force power up
    -                CPU_TOP_FORCE_PU: u1,
    -                reserved27: u4,
    -                ///  enable power down bt in sleep
    -                BT_PD_EN: u1,
    -                ///  enable power down digital peri in sleep
    -                DG_PERI_PD_EN: u1,
    -                ///  enable power down cpu in sleep
    -                CPU_TOP_PD_EN: u1,
    -                ///  enable power down wifi in sleep
    -                WIFI_PD_EN: u1,
    -                ///  enable power down digital wrap in sleep
    -                DG_WRAP_PD_EN: u1,
    -            }),
    -            ///  rtc configure register
    -            DIG_ISO: mmio.Mmio(packed struct(u32) {
    -                reserved7: u7,
    -                ///  DIG_ISO force off
    -                FORCE_OFF: u1,
    -                ///  DIG_ISO force on
    -                FORCE_ON: u1,
    -                ///  read only register to indicate digital pad auto-hold status
    -                DG_PAD_AUTOHOLD: u1,
    -                ///  wtite only register to clear digital pad auto-hold
    -                CLR_DG_PAD_AUTOHOLD: u1,
    -                ///  digital pad enable auto-hold
    -                DG_PAD_AUTOHOLD_EN: u1,
    -                ///  digital pad force no ISO
    -                DG_PAD_FORCE_NOISO: u1,
    -                ///  digital pad force ISO
    -                DG_PAD_FORCE_ISO: u1,
    -                ///  digital pad force un-hold
    -                DG_PAD_FORCE_UNHOLD: u1,
    -                ///  digital pad force hold
    -                DG_PAD_FORCE_HOLD: u1,
    -                reserved22: u6,
    -                ///  bt force ISO
    -                BT_FORCE_ISO: u1,
    -                ///  bt force no ISO
    -                BT_FORCE_NOISO: u1,
    -                ///  Digital peri force ISO
    -                DG_PERI_FORCE_ISO: u1,
    -                ///  digital peri force no ISO
    -                DG_PERI_FORCE_NOISO: u1,
    -                ///  cpu force ISO
    -                CPU_TOP_FORCE_ISO: u1,
    -                ///  cpu force no ISO
    -                CPU_TOP_FORCE_NOISO: u1,
    -                ///  wifi force ISO
    -                WIFI_FORCE_ISO: u1,
    -                ///  wifi force no ISO
    -                WIFI_FORCE_NOISO: u1,
    -                ///  digital core force ISO
    -                DG_WRAP_FORCE_ISO: u1,
    -                ///  digital core force no ISO
    -                DG_WRAP_FORCE_NOISO: u1,
    -            }),
    -            ///  rtc configure register
    -            WDTCONFIG0: mmio.Mmio(packed struct(u32) {
    -                ///  chip reset siginal pulse width
    -                WDT_CHIP_RESET_WIDTH: u8,
    -                ///  wdt reset whole chip enable
    -                WDT_CHIP_RESET_EN: u1,
    -                ///  pause WDT in sleep
    -                WDT_PAUSE_IN_SLP: u1,
    -                ///  enable WDT reset APP CPU
    -                WDT_APPCPU_RESET_EN: u1,
    -                ///  enable WDT reset PRO CPU
    -                WDT_PROCPU_RESET_EN: u1,
    -                ///  enable WDT in flash boot
    -                WDT_FLASHBOOT_MOD_EN: u1,
    -                ///  system reset counter length
    -                WDT_SYS_RESET_LENGTH: u3,
    -                ///  CPU reset counter length
    -                WDT_CPU_RESET_LENGTH: u3,
    -                ///  1: interrupt stage en
    -                WDT_STG3: u3,
    -                ///  1: interrupt stage en
    -                WDT_STG2: u3,
    -                ///  1: interrupt stage en
    -                WDT_STG1: u3,
    -                ///  1: interrupt stage en
    -                WDT_STG0: u3,
    -                ///  enable rtc wdt
    -                WDT_EN: u1,
    -            }),
    -            ///  rtc configure register
    -            WDTCONFIG1: mmio.Mmio(packed struct(u32) {
    -                ///  the hold time of stage0
    -                WDT_STG0_HOLD: u32,
    -            }),
    -            ///  rtc configure register
    -            WDTCONFIG2: mmio.Mmio(packed struct(u32) {
    -                ///  the hold time of stage1
    -                WDT_STG1_HOLD: u32,
    -            }),
    -            ///  rtc configure register
    -            WDTCONFIG3: mmio.Mmio(packed struct(u32) {
    -                ///  the hold time of stage2
    -                WDT_STG2_HOLD: u32,
    -            }),
    -            ///  rtc configure register
    -            WDTCONFIG4: mmio.Mmio(packed struct(u32) {
    -                ///  the hold time of stage3
    -                WDT_STG3_HOLD: u32,
    -            }),
    -            ///  rtc configure register
    -            WDTFEED: mmio.Mmio(packed struct(u32) {
    -                reserved31: u31,
    -                ///  sw feed rtc wdt
    -                RTC_WDT_FEED: u1,
    -            }),
    -            ///  rtc configure register
    -            WDTWPROTECT: mmio.Mmio(packed struct(u32) {
    -                ///  the key of rtc wdt
    -                WDT_WKEY: u32,
    -            }),
    -            ///  rtc configure register
    -            SWD_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  swd reset flag
    -                SWD_RESET_FLAG: u1,
    -                ///  swd interrupt for feeding
    -                SWD_FEED_INT: u1,
    -                reserved17: u15,
    -                ///  Bypass swd rst
    -                SWD_BYPASS_RST: u1,
    -                ///  adjust signal width send to swd
    -                SWD_SIGNAL_WIDTH: u10,
    -                ///  reset swd reset flag
    -                SWD_RST_FLAG_CLR: u1,
    -                ///  Sw feed swd
    -                SWD_FEED: u1,
    -                ///  disabel SWD
    -                SWD_DISABLE: u1,
    -                ///  automatically feed swd when int comes
    -                SWD_AUTO_FEED_EN: u1,
    -            }),
    -            ///  rtc configure register
    -            SWD_WPROTECT: mmio.Mmio(packed struct(u32) {
    -                ///  the key of super wdt
    -                SWD_WKEY: u32,
    -            }),
    -            ///  rtc configure register
    -            SW_CPU_STALL: mmio.Mmio(packed struct(u32) {
    -                reserved20: u20,
    -                ///  {reg_sw_stall_appcpu_c1[5:0]
    -                SW_STALL_APPCPU_C1: u6,
    -                ///  stall cpu by software
    -                SW_STALL_PROCPU_C1: u6,
    -            }),
    -            ///  rtc configure register
    -            STORE4: mmio.Mmio(packed struct(u32) {
    -                ///  reserved register
    -                RTC_SCRATCH4: u32,
    -            }),
    -            ///  rtc configure register
    -            STORE5: mmio.Mmio(packed struct(u32) {
    -                ///  reserved register
    -                RTC_SCRATCH5: u32,
    -            }),
    -            ///  rtc configure register
    -            STORE6: mmio.Mmio(packed struct(u32) {
    -                ///  reserved register
    -                RTC_SCRATCH6: u32,
    -            }),
    -            ///  rtc configure register
    -            STORE7: mmio.Mmio(packed struct(u32) {
    -                ///  reserved register
    -                RTC_SCRATCH7: u32,
    -            }),
    -            ///  rtc configure register
    -            LOW_POWER_ST: mmio.Mmio(packed struct(u32) {
    -                ///  rom0 power down
    -                XPD_ROM0: u1,
    -                reserved2: u1,
    -                ///  External DCDC power down
    -                XPD_DIG_DCDC: u1,
    -                ///  rtc peripheral iso
    -                RTC_PERI_ISO: u1,
    -                ///  rtc peripheral power down
    -                XPD_RTC_PERI: u1,
    -                ///  wifi iso
    -                WIFI_ISO: u1,
    -                ///  wifi wrap power down
    -                XPD_WIFI: u1,
    -                ///  digital wrap iso
    -                DIG_ISO: u1,
    -                ///  digital wrap power down
    -                XPD_DIG: u1,
    -                ///  touch should start to work
    -                RTC_TOUCH_STATE_START: u1,
    -                ///  touch is about to working. Switch rtc main state
    -                RTC_TOUCH_STATE_SWITCH: u1,
    -                ///  touch is in sleep state
    -                RTC_TOUCH_STATE_SLP: u1,
    -                ///  touch is done
    -                RTC_TOUCH_STATE_DONE: u1,
    -                ///  ulp/cocpu should start to work
    -                RTC_COCPU_STATE_START: u1,
    -                ///  ulp/cocpu is about to working. Switch rtc main state
    -                RTC_COCPU_STATE_SWITCH: u1,
    -                ///  ulp/cocpu is in sleep state
    -                RTC_COCPU_STATE_SLP: u1,
    -                ///  ulp/cocpu is done
    -                RTC_COCPU_STATE_DONE: u1,
    -                ///  no use any more
    -                RTC_MAIN_STATE_XTAL_ISO: u1,
    -                ///  rtc main state machine is in states that pll should be running
    -                RTC_MAIN_STATE_PLL_ON: u1,
    -                ///  rtc is ready to receive wake up trigger from wake up source
    -                RTC_RDY_FOR_WAKEUP: u1,
    -                ///  rtc main state machine has been waited for some cycles
    -                RTC_MAIN_STATE_WAIT_END: u1,
    -                ///  rtc main state machine is in the states of wakeup process
    -                RTC_IN_WAKEUP_STATE: u1,
    -                ///  rtc main state machine is in the states of low power
    -                RTC_IN_LOW_POWER_STATE: u1,
    -                ///  rtc main state machine is in wait 8m state
    -                RTC_MAIN_STATE_IN_WAIT_8M: u1,
    -                ///  rtc main state machine is in wait pll state
    -                RTC_MAIN_STATE_IN_WAIT_PLL: u1,
    -                ///  rtc main state machine is in wait xtal state
    -                RTC_MAIN_STATE_IN_WAIT_XTL: u1,
    -                ///  rtc main state machine is in sleep state
    -                RTC_MAIN_STATE_IN_SLP: u1,
    -                ///  rtc main state machine is in idle state
    -                RTC_MAIN_STATE_IN_IDLE: u1,
    -                ///  rtc main state machine status
    -                RTC_MAIN_STATE: u4,
    -            }),
    -            ///  rtc configure register
    -            DIAG0: mmio.Mmio(packed struct(u32) {
    -                RTC_LOW_POWER_DIAG1: u32,
    -            }),
    -            ///  rtc configure register
    -            PAD_HOLD: mmio.Mmio(packed struct(u32) {
    -                ///  the hold configure of rtc gpio0
    -                RTC_GPIO_PIN0_HOLD: u1,
    -                ///  the hold configure of rtc gpio1
    -                RTC_GPIO_PIN1_HOLD: u1,
    -                ///  the hold configure of rtc gpio2
    -                RTC_GPIO_PIN2_HOLD: u1,
    -                ///  the hold configure of rtc gpio3
    -                RTC_GPIO_PIN3_HOLD: u1,
    -                ///  the hold configure of rtc gpio4
    -                RTC_GPIO_PIN4_HOLD: u1,
    -                ///  the hold configure of rtc gpio5
    -                RTC_GPIO_PIN5_HOLD: u1,
    -                padding: u26,
    -            }),
    -            ///  rtc configure register
    -            DIG_PAD_HOLD: mmio.Mmio(packed struct(u32) {
    -                ///  the configure of digital pad
    -                DIG_PAD_HOLD: u32,
    -            }),
    -            ///  rtc configure register
    -            BROWN_OUT: mmio.Mmio(packed struct(u32) {
    -                reserved4: u4,
    -                ///  brown out interrupt wait cycles
    -                INT_WAIT: u10,
    -                ///  enable close flash when brown out happens
    -                CLOSE_FLASH_ENA: u1,
    -                ///  enable power down RF when brown out happens
    -                PD_RF_ENA: u1,
    -                ///  brown out reset wait cycles
    -                RST_WAIT: u10,
    -                ///  enable brown out reset
    -                RST_ENA: u1,
    -                ///  1: 4-pos reset
    -                RST_SEL: u1,
    -                ///  brown_out origin reset enable
    -                ANA_RST_EN: u1,
    -                ///  clear brown out counter
    -                CNT_CLR: u1,
    -                ///  enable brown out
    -                ENA: u1,
    -                ///  the flag of brown det from analog
    -                DET: u1,
    -            }),
    -            ///  rtc configure register
    -            TIME_LOW1: mmio.Mmio(packed struct(u32) {
    -                ///  RTC timer low 32 bits
    -                RTC_TIMER_VALUE1_LOW: u32,
    -            }),
    -            ///  rtc configure register
    -            TIME_HIGH1: mmio.Mmio(packed struct(u32) {
    -                ///  RTC timer high 16 bits
    -                RTC_TIMER_VALUE1_HIGH: u16,
    -                padding: u16,
    -            }),
    -            ///  rtc configure register
    -            XTAL32K_CLK_FACTOR: mmio.Mmio(packed struct(u32) {
    -                ///  xtal 32k watch dog backup clock factor
    -                XTAL32K_CLK_FACTOR: u32,
    -            }),
    -            ///  rtc configure register
    -            XTAL32K_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  cycles to wait to return noral xtal 32k
    -                XTAL32K_RETURN_WAIT: u4,
    -                ///  cycles to wait to repower on xtal 32k
    -                XTAL32K_RESTART_WAIT: u16,
    -                ///  If no clock detected for this amount of time
    -                XTAL32K_WDT_TIMEOUT: u8,
    -                ///  if restarted xtal32k period is smaller than this
    -                XTAL32K_STABLE_THRES: u4,
    -            }),
    -            ///  rtc configure register
    -            USB_CONF: mmio.Mmio(packed struct(u32) {
    -                reserved18: u18,
    -                ///  disable io_mux reset
    -                IO_MUX_RESET_DISABLE: u1,
    -                padding: u13,
    -            }),
    -            ///  RTC_CNTL_RTC_SLP_REJECT_CAUSE_REG
    -            SLP_REJECT_CAUSE: mmio.Mmio(packed struct(u32) {
    -                ///  sleep reject cause
    -                REJECT_CAUSE: u18,
    -                padding: u14,
    -            }),
    -            ///  rtc configure register
    -            OPTION1: mmio.Mmio(packed struct(u32) {
    -                ///  force chip entry download mode
    -                FORCE_DOWNLOAD_BOOT: u1,
    -                padding: u31,
    -            }),
    -            ///  RTC_CNTL_RTC_SLP_WAKEUP_CAUSE_REG
    -            SLP_WAKEUP_CAUSE: mmio.Mmio(packed struct(u32) {
    -                ///  sleep wakeup cause
    -                WAKEUP_CAUSE: u17,
    -                padding: u15,
    -            }),
    -            ///  rtc configure register
    -            ULP_CP_TIMER_1: mmio.Mmio(packed struct(u32) {
    -                reserved8: u8,
    -                ///  sleep cycles for ULP-coprocessor timer
    -                ULP_CP_TIMER_SLP_CYCLE: u24,
    -            }),
    -            ///  rtc configure register
    -            INT_ENA_RTC_W1TS: mmio.Mmio(packed struct(u32) {
    -                ///  enable sleep wakeup interrupt
    -                SLP_WAKEUP_INT_ENA_W1TS: u1,
    -                ///  enable sleep reject interrupt
    -                SLP_REJECT_INT_ENA_W1TS: u1,
    -                reserved3: u1,
    -                ///  enable RTC WDT interrupt
    -                RTC_WDT_INT_ENA_W1TS: u1,
    -                reserved9: u5,
    -                ///  enable brown out interrupt
    -                RTC_BROWN_OUT_INT_ENA_W1TS: u1,
    -                ///  enable RTC main timer interrupt
    -                RTC_MAIN_TIMER_INT_ENA_W1TS: u1,
    -                reserved15: u4,
    -                ///  enable super watch dog interrupt
    -                RTC_SWD_INT_ENA_W1TS: u1,
    -                ///  enable xtal32k_dead interrupt
    -                RTC_XTAL32K_DEAD_INT_ENA_W1TS: u1,
    -                reserved19: u2,
    -                ///  enbale gitch det interrupt
    -                RTC_GLITCH_DET_INT_ENA_W1TS: u1,
    -                ///  enbale bbpll cal interrupt
    -                RTC_BBPLL_CAL_INT_ENA_W1TS: u1,
    -                padding: u11,
    -            }),
    -            ///  rtc configure register
    -            INT_ENA_RTC_W1TC: mmio.Mmio(packed struct(u32) {
    -                ///  clear sleep wakeup interrupt enable
    -                SLP_WAKEUP_INT_ENA_W1TC: u1,
    -                ///  clear sleep reject interrupt enable
    -                SLP_REJECT_INT_ENA_W1TC: u1,
    -                reserved3: u1,
    -                ///  clear RTC WDT interrupt enable
    -                RTC_WDT_INT_ENA_W1TC: u1,
    -                reserved9: u5,
    -                ///  clear brown out interrupt enable
    -                RTC_BROWN_OUT_INT_ENA_W1TC: u1,
    -                ///  Clear RTC main timer interrupt enable
    -                RTC_MAIN_TIMER_INT_ENA_W1TC: u1,
    -                reserved15: u4,
    -                ///  clear super watch dog interrupt enable
    -                RTC_SWD_INT_ENA_W1TC: u1,
    -                ///  clear xtal32k_dead interrupt enable
    -                RTC_XTAL32K_DEAD_INT_ENA_W1TC: u1,
    -                reserved19: u2,
    -                ///  clear gitch det interrupt enable
    -                RTC_GLITCH_DET_INT_ENA_W1TC: u1,
    -                ///  clear bbpll cal interrupt enable
    -                RTC_BBPLL_CAL_INT_ENA_W1TC: u1,
    -                padding: u11,
    -            }),
    -            ///  rtc configure register
    -            RETENTION_CTRL: mmio.Mmio(packed struct(u32) {
    -                reserved18: u18,
    -                ///  Retention clk sel
    -                RETENTION_CLK_SEL: u1,
    -                ///  Retention done wait time
    -                RETENTION_DONE_WAIT: u3,
    -                ///  Retention clkoff wait time
    -                RETENTION_CLKOFF_WAIT: u4,
    -                ///  enable cpu retention when light sleep
    -                RETENTION_EN: u1,
    -                ///  wait cycles for rention operation
    -                RETENTION_WAIT: u5,
    -            }),
    -            ///  rtc configure register
    -            FIB_SEL: mmio.Mmio(packed struct(u32) {
    -                ///  select use analog fib signal
    -                RTC_FIB_SEL: u3,
    -                padding: u29,
    -            }),
    -            ///  rtc configure register
    -            GPIO_WAKEUP: mmio.Mmio(packed struct(u32) {
    -                ///  rtc gpio wakeup flag
    -                RTC_GPIO_WAKEUP_STATUS: u6,
    -                ///  clear rtc gpio wakeup flag
    -                RTC_GPIO_WAKEUP_STATUS_CLR: u1,
    -                ///  enable rtc io clk gate
    -                RTC_GPIO_PIN_CLK_GATE: u1,
    -                ///  configure gpio wakeup type
    -                RTC_GPIO_PIN5_INT_TYPE: u3,
    -                ///  configure gpio wakeup type
    -                RTC_GPIO_PIN4_INT_TYPE: u3,
    -                ///  configure gpio wakeup type
    -                RTC_GPIO_PIN3_INT_TYPE: u3,
    -                ///  configure gpio wakeup type
    -                RTC_GPIO_PIN2_INT_TYPE: u3,
    -                ///  configure gpio wakeup type
    -                RTC_GPIO_PIN1_INT_TYPE: u3,
    -                ///  configure gpio wakeup type
    -                RTC_GPIO_PIN0_INT_TYPE: u3,
    -                ///  enable wakeup from rtc gpio5
    -                RTC_GPIO_PIN5_WAKEUP_ENABLE: u1,
    -                ///  enable wakeup from rtc gpio4
    -                RTC_GPIO_PIN4_WAKEUP_ENABLE: u1,
    -                ///  enable wakeup from rtc gpio3
    -                RTC_GPIO_PIN3_WAKEUP_ENABLE: u1,
    -                ///  enable wakeup from rtc gpio2
    -                RTC_GPIO_PIN2_WAKEUP_ENABLE: u1,
    -                ///  enable wakeup from rtc gpio1
    -                RTC_GPIO_PIN1_WAKEUP_ENABLE: u1,
    -                ///  enable wakeup from rtc gpio0
    -                RTC_GPIO_PIN0_WAKEUP_ENABLE: u1,
    -            }),
    -            ///  rtc configure register
    -            DBG_SEL: mmio.Mmio(packed struct(u32) {
    -                reserved1: u1,
    -                ///  use for debug
    -                RTC_DEBUG_12M_NO_GATING: u1,
    -                ///  use for debug
    -                RTC_DEBUG_BIT_SEL: u5,
    -                ///  use for debug
    -                RTC_DEBUG_SEL0: u5,
    -                ///  use for debug
    -                RTC_DEBUG_SEL1: u5,
    -                ///  use for debug
    -                RTC_DEBUG_SEL2: u5,
    -                ///  use for debug
    -                RTC_DEBUG_SEL3: u5,
    -                ///  use for debug
    -                RTC_DEBUG_SEL4: u5,
    -            }),
    -            ///  rtc configure register
    -            DBG_MAP: mmio.Mmio(packed struct(u32) {
    -                reserved2: u2,
    -                ///  use for debug
    -                RTC_GPIO_PIN5_MUX_SEL: u1,
    -                ///  use for debug
    -                RTC_GPIO_PIN4_MUX_SEL: u1,
    -                ///  use for debug
    -                RTC_GPIO_PIN3_MUX_SEL: u1,
    -                ///  use for debug
    -                RTC_GPIO_PIN2_MUX_SEL: u1,
    -                ///  use for debug
    -                RTC_GPIO_PIN1_MUX_SEL: u1,
    -                ///  use for debug
    -                RTC_GPIO_PIN0_MUX_SEL: u1,
    -                ///  use for debug
    -                RTC_GPIO_PIN5_FUN_SEL: u4,
    -                ///  use for debug
    -                RTC_GPIO_PIN4_FUN_SEL: u4,
    -                ///  use for debug
    -                RTC_GPIO_PIN3_FUN_SEL: u4,
    -                ///  use for debug
    -                RTC_GPIO_PIN2_FUN_SEL: u4,
    -                ///  use for debug
    -                RTC_GPIO_PIN1_FUN_SEL: u4,
    -                ///  use for debug
    -                RTC_GPIO_PIN0_FUN_SEL: u4,
    -            }),
    -            ///  rtc configure register
    -            SENSOR_CTRL: mmio.Mmio(packed struct(u32) {
    -                reserved27: u27,
    -                ///  reg_sar2_pwdet_cct
    -                SAR2_PWDET_CCT: u3,
    -                ///  force power up SAR
    -                FORCE_XPD_SAR: u2,
    -            }),
    -            ///  rtc configure register
    -            DBG_SAR_SEL: mmio.Mmio(packed struct(u32) {
    -                reserved27: u27,
    -                ///  use for debug
    -                SAR_DEBUG_SEL: u5,
    -            }),
    -            ///  rtc configure register
    -            PG_CTRL: mmio.Mmio(packed struct(u32) {
    -                reserved26: u26,
    -                ///  power glitch desense
    -                POWER_GLITCH_DSENSE: u2,
    -                ///  force disable power glitch
    -                POWER_GLITCH_FORCE_PD: u1,
    -                ///  force enable power glitch
    -                POWER_GLITCH_FORCE_PU: u1,
    -                ///  use efuse value control power glitch enable
    -                POWER_GLITCH_EFUSE_SEL: u1,
    -                ///  enable power glitch
    -                POWER_GLITCH_EN: u1,
    -            }),
    -            reserved508: [212]u8,
    -            ///  rtc configure register
    -            DATE: mmio.Mmio(packed struct(u32) {
    -                ///  verision
    -                RTC_CNTL_DATE: u28,
    -                padding: u4,
    -            }),
    -        };
    -
    -        ///  Sensitive
    -        pub const SENSITIVE = extern struct {
    -            ///  SENSITIVE_ROM_TABLE_LOCK_REG
    -            ROM_TABLE_LOCK: mmio.Mmio(packed struct(u32) {
    -                ///  rom_table_lock
    -                ROM_TABLE_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_ROM_TABLE_REG
    -            ROM_TABLE: mmio.Mmio(packed struct(u32) {
    -                ///  rom_table
    -                ROM_TABLE: u32,
    -            }),
    -            ///  SENSITIVE_PRIVILEGE_MODE_SEL_LOCK_REG
    -            PRIVILEGE_MODE_SEL_LOCK: mmio.Mmio(packed struct(u32) {
    -                ///  privilege_mode_sel_lock
    -                PRIVILEGE_MODE_SEL_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_PRIVILEGE_MODE_SEL_REG
    -            PRIVILEGE_MODE_SEL: mmio.Mmio(packed struct(u32) {
    -                ///  privilege_mode_sel
    -                PRIVILEGE_MODE_SEL: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_APB_PERIPHERAL_ACCESS_0_REG
    -            APB_PERIPHERAL_ACCESS_0: mmio.Mmio(packed struct(u32) {
    -                ///  apb_peripheral_access_lock
    -                APB_PERIPHERAL_ACCESS_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_APB_PERIPHERAL_ACCESS_1_REG
    -            APB_PERIPHERAL_ACCESS_1: mmio.Mmio(packed struct(u32) {
    -                ///  apb_peripheral_access_split_burst
    -                APB_PERIPHERAL_ACCESS_SPLIT_BURST: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_INTERNAL_SRAM_USAGE_0_REG
    -            INTERNAL_SRAM_USAGE_0: mmio.Mmio(packed struct(u32) {
    -                ///  internal_sram_usage_lock
    -                INTERNAL_SRAM_USAGE_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_INTERNAL_SRAM_USAGE_1_REG
    -            INTERNAL_SRAM_USAGE_1: mmio.Mmio(packed struct(u32) {
    -                ///  internal_sram_usage_cpu_cache
    -                INTERNAL_SRAM_USAGE_CPU_CACHE: u1,
    -                ///  internal_sram_usage_cpu_sram
    -                INTERNAL_SRAM_USAGE_CPU_SRAM: u3,
    -                padding: u28,
    -            }),
    -            ///  SENSITIVE_INTERNAL_SRAM_USAGE_3_REG
    -            INTERNAL_SRAM_USAGE_3: mmio.Mmio(packed struct(u32) {
    -                ///  internal_sram_usage_mac_dump_sram
    -                INTERNAL_SRAM_USAGE_MAC_DUMP_SRAM: u3,
    -                ///  internal_sram_alloc_mac_dump
    -                INTERNAL_SRAM_ALLOC_MAC_DUMP: u1,
    -                padding: u28,
    -            }),
    -            ///  SENSITIVE_INTERNAL_SRAM_USAGE_4_REG
    -            INTERNAL_SRAM_USAGE_4: mmio.Mmio(packed struct(u32) {
    -                ///  internal_sram_usage_log_sram
    -                INTERNAL_SRAM_USAGE_LOG_SRAM: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_CACHE_TAG_ACCESS_0_REG
    -            CACHE_TAG_ACCESS_0: mmio.Mmio(packed struct(u32) {
    -                ///  cache_tag_access_lock
    -                CACHE_TAG_ACCESS_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_CACHE_TAG_ACCESS_1_REG
    -            CACHE_TAG_ACCESS_1: mmio.Mmio(packed struct(u32) {
    -                ///  pro_i_tag_rd_acs
    -                PRO_I_TAG_RD_ACS: u1,
    -                ///  pro_i_tag_wr_acs
    -                PRO_I_TAG_WR_ACS: u1,
    -                ///  pro_d_tag_rd_acs
    -                PRO_D_TAG_RD_ACS: u1,
    -                ///  pro_d_tag_wr_acs
    -                PRO_D_TAG_WR_ACS: u1,
    -                padding: u28,
    -            }),
    -            ///  SENSITIVE_CACHE_MMU_ACCESS_0_REG
    -            CACHE_MMU_ACCESS_0: mmio.Mmio(packed struct(u32) {
    -                ///  cache_mmu_access_lock
    -                CACHE_MMU_ACCESS_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_CACHE_MMU_ACCESS_1_REG
    -            CACHE_MMU_ACCESS_1: mmio.Mmio(packed struct(u32) {
    -                ///  pro_mmu_rd_acs
    -                PRO_MMU_RD_ACS: u1,
    -                ///  pro_mmu_wr_acs
    -                PRO_MMU_WR_ACS: u1,
    -                padding: u30,
    -            }),
    -            ///  SENSITIVE_DMA_APBPERI_SPI2_PMS_CONSTRAIN_0_REG
    -            DMA_APBPERI_SPI2_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    -                ///  dma_apbperi_spi2_pms_constrain_lock
    -                DMA_APBPERI_SPI2_PMS_CONSTRAIN_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_DMA_APBPERI_SPI2_PMS_CONSTRAIN_1_REG
    -            DMA_APBPERI_SPI2_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    -                ///  dma_apbperi_spi2_pms_constrain_sram_world_0_pms_0
    -                DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    -                ///  dma_apbperi_spi2_pms_constrain_sram_world_0_pms_1
    -                DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    -                ///  dma_apbperi_spi2_pms_constrain_sram_world_0_pms_2
    -                DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    -                ///  dma_apbperi_spi2_pms_constrain_sram_world_0_pms_3
    -                DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    -                reserved12: u4,
    -                ///  dma_apbperi_spi2_pms_constrain_sram_world_1_pms_0
    -                DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    -                ///  dma_apbperi_spi2_pms_constrain_sram_world_1_pms_1
    -                DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    -                ///  dma_apbperi_spi2_pms_constrain_sram_world_1_pms_2
    -                DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    -                ///  dma_apbperi_spi2_pms_constrain_sram_world_1_pms_3
    -                DMA_APBPERI_SPI2_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    -                padding: u12,
    -            }),
    -            ///  SENSITIVE_DMA_APBPERI_UCHI0_PMS_CONSTRAIN_0_REG
    -            DMA_APBPERI_UCHI0_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    -                ///  dma_apbperi_uchi0_pms_constrain_lock
    -                DMA_APBPERI_UCHI0_PMS_CONSTRAIN_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_DMA_APBPERI_UCHI0_PMS_CONSTRAIN_1_REG
    -            DMA_APBPERI_UCHI0_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    -                ///  dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_0
    -                DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    -                ///  dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_1
    -                DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    -                ///  dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_2
    -                DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    -                ///  dma_apbperi_uchi0_pms_constrain_sram_world_0_pms_3
    -                DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    -                reserved12: u4,
    -                ///  dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_0
    -                DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    -                ///  dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_1
    -                DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    -                ///  dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_2
    -                DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    -                ///  dma_apbperi_uchi0_pms_constrain_sram_world_1_pms_3
    -                DMA_APBPERI_UCHI0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    -                padding: u12,
    -            }),
    -            ///  SENSITIVE_DMA_APBPERI_I2S0_PMS_CONSTRAIN_0_REG
    -            DMA_APBPERI_I2S0_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    -                ///  dma_apbperi_i2s0_pms_constrain_lock
    -                DMA_APBPERI_I2S0_PMS_CONSTRAIN_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_DMA_APBPERI_I2S0_PMS_CONSTRAIN_1_REG
    -            DMA_APBPERI_I2S0_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    -                ///  dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_0
    -                DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    -                ///  dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_1
    -                DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    -                ///  dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_2
    -                DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    -                ///  dma_apbperi_i2s0_pms_constrain_sram_world_0_pms_3
    -                DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    -                reserved12: u4,
    -                ///  dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_0
    -                DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    -                ///  dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_1
    -                DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    -                ///  dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_2
    -                DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    -                ///  dma_apbperi_i2s0_pms_constrain_sram_world_1_pms_3
    -                DMA_APBPERI_I2S0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    -                padding: u12,
    -            }),
    -            ///  SENSITIVE_DMA_APBPERI_MAC_PMS_CONSTRAIN_0_REG
    -            DMA_APBPERI_MAC_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    -                ///  dma_apbperi_mac_pms_constrain_lock
    -                DMA_APBPERI_MAC_PMS_CONSTRAIN_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_DMA_APBPERI_MAC_PMS_CONSTRAIN_1_REG
    -            DMA_APBPERI_MAC_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    -                ///  dma_apbperi_mac_pms_constrain_sram_world_0_pms_0
    -                DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    -                ///  dma_apbperi_mac_pms_constrain_sram_world_0_pms_1
    -                DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    -                ///  dma_apbperi_mac_pms_constrain_sram_world_0_pms_2
    -                DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    -                ///  dma_apbperi_mac_pms_constrain_sram_world_0_pms_3
    -                DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    -                reserved12: u4,
    -                ///  dma_apbperi_mac_pms_constrain_sram_world_1_pms_0
    -                DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    -                ///  dma_apbperi_mac_pms_constrain_sram_world_1_pms_1
    -                DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    -                ///  dma_apbperi_mac_pms_constrain_sram_world_1_pms_2
    -                DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    -                ///  dma_apbperi_mac_pms_constrain_sram_world_1_pms_3
    -                DMA_APBPERI_MAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    -                padding: u12,
    -            }),
    -            ///  SENSITIVE_DMA_APBPERI_BACKUP_PMS_CONSTRAIN_0_REG
    -            DMA_APBPERI_BACKUP_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    -                ///  dma_apbperi_backup_pms_constrain_lock
    -                DMA_APBPERI_BACKUP_PMS_CONSTRAIN_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_DMA_APBPERI_BACKUP_PMS_CONSTRAIN_1_REG
    -            DMA_APBPERI_BACKUP_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    -                ///  dma_apbperi_backup_pms_constrain_sram_world_0_pms_0
    -                DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    -                ///  dma_apbperi_backup_pms_constrain_sram_world_0_pms_1
    -                DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    -                ///  dma_apbperi_backup_pms_constrain_sram_world_0_pms_2
    -                DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    -                ///  dma_apbperi_backup_pms_constrain_sram_world_0_pms_3
    -                DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    -                reserved12: u4,
    -                ///  dma_apbperi_backup_pms_constrain_sram_world_1_pms_0
    -                DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    -                ///  dma_apbperi_backup_pms_constrain_sram_world_1_pms_1
    -                DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    -                ///  dma_apbperi_backup_pms_constrain_sram_world_1_pms_2
    -                DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    -                ///  dma_apbperi_backup_pms_constrain_sram_world_1_pms_3
    -                DMA_APBPERI_BACKUP_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    -                padding: u12,
    -            }),
    -            ///  SENSITIVE_DMA_APBPERI_LC_PMS_CONSTRAIN_0_REG
    -            DMA_APBPERI_LC_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    -                ///  dma_apbperi_lc_pms_constrain_lock
    -                DMA_APBPERI_LC_PMS_CONSTRAIN_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_DMA_APBPERI_LC_PMS_CONSTRAIN_1_REG
    -            DMA_APBPERI_LC_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    -                ///  dma_apbperi_lc_pms_constrain_sram_world_0_pms_0
    -                DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    -                ///  dma_apbperi_lc_pms_constrain_sram_world_0_pms_1
    -                DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    -                ///  dma_apbperi_lc_pms_constrain_sram_world_0_pms_2
    -                DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    -                ///  dma_apbperi_lc_pms_constrain_sram_world_0_pms_3
    -                DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    -                reserved12: u4,
    -                ///  dma_apbperi_lc_pms_constrain_sram_world_1_pms_0
    -                DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    -                ///  dma_apbperi_lc_pms_constrain_sram_world_1_pms_1
    -                DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    -                ///  dma_apbperi_lc_pms_constrain_sram_world_1_pms_2
    -                DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    -                ///  dma_apbperi_lc_pms_constrain_sram_world_1_pms_3
    -                DMA_APBPERI_LC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    -                padding: u12,
    -            }),
    -            ///  SENSITIVE_DMA_APBPERI_AES_PMS_CONSTRAIN_0_REG
    -            DMA_APBPERI_AES_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    -                ///  dma_apbperi_aes_pms_constrain_lock
    -                DMA_APBPERI_AES_PMS_CONSTRAIN_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_DMA_APBPERI_AES_PMS_CONSTRAIN_1_REG
    -            DMA_APBPERI_AES_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    -                ///  dma_apbperi_aes_pms_constrain_sram_world_0_pms_0
    -                DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    -                ///  dma_apbperi_aes_pms_constrain_sram_world_0_pms_1
    -                DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    -                ///  dma_apbperi_aes_pms_constrain_sram_world_0_pms_2
    -                DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    -                ///  dma_apbperi_aes_pms_constrain_sram_world_0_pms_3
    -                DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    -                reserved12: u4,
    -                ///  dma_apbperi_aes_pms_constrain_sram_world_1_pms_0
    -                DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    -                ///  dma_apbperi_aes_pms_constrain_sram_world_1_pms_1
    -                DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    -                ///  dma_apbperi_aes_pms_constrain_sram_world_1_pms_2
    -                DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    -                ///  dma_apbperi_aes_pms_constrain_sram_world_1_pms_3
    -                DMA_APBPERI_AES_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    -                padding: u12,
    -            }),
    -            ///  SENSITIVE_DMA_APBPERI_SHA_PMS_CONSTRAIN_0_REG
    -            DMA_APBPERI_SHA_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    -                ///  dma_apbperi_sha_pms_constrain_lock
    -                DMA_APBPERI_SHA_PMS_CONSTRAIN_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_DMA_APBPERI_SHA_PMS_CONSTRAIN_1_REG
    -            DMA_APBPERI_SHA_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    -                ///  dma_apbperi_sha_pms_constrain_sram_world_0_pms_0
    -                DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    -                ///  dma_apbperi_sha_pms_constrain_sram_world_0_pms_1
    -                DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    -                ///  dma_apbperi_sha_pms_constrain_sram_world_0_pms_2
    -                DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    -                ///  dma_apbperi_sha_pms_constrain_sram_world_0_pms_3
    -                DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    -                reserved12: u4,
    -                ///  dma_apbperi_sha_pms_constrain_sram_world_1_pms_0
    -                DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    -                ///  dma_apbperi_sha_pms_constrain_sram_world_1_pms_1
    -                DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    -                ///  dma_apbperi_sha_pms_constrain_sram_world_1_pms_2
    -                DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    -                ///  dma_apbperi_sha_pms_constrain_sram_world_1_pms_3
    -                DMA_APBPERI_SHA_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    -                padding: u12,
    -            }),
    -            ///  SENSITIVE_DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_0_REG
    -            DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    -                ///  dma_apbperi_adc_dac_pms_constrain_lock
    -                DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_1_REG
    -            DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    -                ///  dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_0
    -                DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    -                ///  dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_1
    -                DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    -                ///  dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_2
    -                DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    -                ///  dma_apbperi_adc_dac_pms_constrain_sram_world_0_pms_3
    -                DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    -                reserved12: u4,
    -                ///  dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_0
    -                DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    -                ///  dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_1
    -                DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    -                ///  dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_2
    -                DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    -                ///  dma_apbperi_adc_dac_pms_constrain_sram_world_1_pms_3
    -                DMA_APBPERI_ADC_DAC_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    -                padding: u12,
    -            }),
    -            ///  SENSITIVE_DMA_APBPERI_PMS_MONITOR_0_REG
    -            DMA_APBPERI_PMS_MONITOR_0: mmio.Mmio(packed struct(u32) {
    -                ///  dma_apbperi_pms_monitor_lock
    -                DMA_APBPERI_PMS_MONITOR_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_DMA_APBPERI_PMS_MONITOR_1_REG
    -            DMA_APBPERI_PMS_MONITOR_1: mmio.Mmio(packed struct(u32) {
    -                ///  dma_apbperi_pms_monitor_violate_clr
    -                DMA_APBPERI_PMS_MONITOR_VIOLATE_CLR: u1,
    -                ///  dma_apbperi_pms_monitor_violate_en
    -                DMA_APBPERI_PMS_MONITOR_VIOLATE_EN: u1,
    -                padding: u30,
    -            }),
    -            ///  SENSITIVE_DMA_APBPERI_PMS_MONITOR_2_REG
    -            DMA_APBPERI_PMS_MONITOR_2: mmio.Mmio(packed struct(u32) {
    -                ///  dma_apbperi_pms_monitor_violate_intr
    -                DMA_APBPERI_PMS_MONITOR_VIOLATE_INTR: u1,
    -                ///  dma_apbperi_pms_monitor_violate_status_world
    -                DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_WORLD: u2,
    -                ///  dma_apbperi_pms_monitor_violate_status_addr
    -                DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_ADDR: u24,
    -                padding: u5,
    -            }),
    -            ///  SENSITIVE_DMA_APBPERI_PMS_MONITOR_3_REG
    -            DMA_APBPERI_PMS_MONITOR_3: mmio.Mmio(packed struct(u32) {
    -                ///  dma_apbperi_pms_monitor_violate_status_wr
    -                DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_WR: u1,
    -                ///  dma_apbperi_pms_monitor_violate_status_byteen
    -                DMA_APBPERI_PMS_MONITOR_VIOLATE_STATUS_BYTEEN: u4,
    -                padding: u27,
    -            }),
    -            ///  SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_0_REG
    -            CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    -                ///  core_x_iram0_dram0_dma_split_line_constrain_lock
    -                CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_1_REG
    -            CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    -                ///  core_x_iram0_dram0_dma_sram_category_0
    -                CORE_X_IRAM0_DRAM0_DMA_SRAM_CATEGORY_0: u2,
    -                ///  core_x_iram0_dram0_dma_sram_category_1
    -                CORE_X_IRAM0_DRAM0_DMA_SRAM_CATEGORY_1: u2,
    -                ///  core_x_iram0_dram0_dma_sram_category_2
    -                CORE_X_IRAM0_DRAM0_DMA_SRAM_CATEGORY_2: u2,
    -                reserved14: u8,
    -                ///  core_x_iram0_dram0_dma_sram_splitaddr
    -                CORE_X_IRAM0_DRAM0_DMA_SRAM_SPLITADDR: u8,
    -                padding: u10,
    -            }),
    -            ///  SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_2_REG
    -            CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_2: mmio.Mmio(packed struct(u32) {
    -                ///  core_x_iram0_sram_line_0_category_0
    -                CORE_X_IRAM0_SRAM_LINE_0_CATEGORY_0: u2,
    -                ///  core_x_iram0_sram_line_0_category_1
    -                CORE_X_IRAM0_SRAM_LINE_0_CATEGORY_1: u2,
    -                ///  core_x_iram0_sram_line_0_category_2
    -                CORE_X_IRAM0_SRAM_LINE_0_CATEGORY_2: u2,
    -                reserved14: u8,
    -                ///  core_x_iram0_sram_line_0_splitaddr
    -                CORE_X_IRAM0_SRAM_LINE_0_SPLITADDR: u8,
    -                padding: u10,
    -            }),
    -            ///  SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_3_REG
    -            CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_3: mmio.Mmio(packed struct(u32) {
    -                ///  core_x_iram0_sram_line_1_category_0
    -                CORE_X_IRAM0_SRAM_LINE_1_CATEGORY_0: u2,
    -                ///  core_x_iram0_sram_line_1_category_1
    -                CORE_X_IRAM0_SRAM_LINE_1_CATEGORY_1: u2,
    -                ///  core_x_iram0_sram_line_1_category_2
    -                CORE_X_IRAM0_SRAM_LINE_1_CATEGORY_2: u2,
    -                reserved14: u8,
    -                ///  core_x_iram0_sram_line_1_splitaddr
    -                CORE_X_IRAM0_SRAM_LINE_1_SPLITADDR: u8,
    -                padding: u10,
    -            }),
    -            ///  SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_4_REG
    -            CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_4: mmio.Mmio(packed struct(u32) {
    -                ///  core_x_dram0_dma_sram_line_0_category_0
    -                CORE_X_DRAM0_DMA_SRAM_LINE_0_CATEGORY_0: u2,
    -                ///  core_x_dram0_dma_sram_line_0_category_1
    -                CORE_X_DRAM0_DMA_SRAM_LINE_0_CATEGORY_1: u2,
    -                ///  core_x_dram0_dma_sram_line_0_category_2
    -                CORE_X_DRAM0_DMA_SRAM_LINE_0_CATEGORY_2: u2,
    -                reserved14: u8,
    -                ///  core_x_dram0_dma_sram_line_0_splitaddr
    -                CORE_X_DRAM0_DMA_SRAM_LINE_0_SPLITADDR: u8,
    -                padding: u10,
    -            }),
    -            ///  SENSITIVE_CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_5_REG
    -            CORE_X_IRAM0_DRAM0_DMA_SPLIT_LINE_CONSTRAIN_5: mmio.Mmio(packed struct(u32) {
    -                ///  core_x_dram0_dma_sram_line_1_category_0
    -                CORE_X_DRAM0_DMA_SRAM_LINE_1_CATEGORY_0: u2,
    -                ///  core_x_dram0_dma_sram_line_1_category_1
    -                CORE_X_DRAM0_DMA_SRAM_LINE_1_CATEGORY_1: u2,
    -                ///  core_x_dram0_dma_sram_line_1_category_2
    -                CORE_X_DRAM0_DMA_SRAM_LINE_1_CATEGORY_2: u2,
    -                reserved14: u8,
    -                ///  core_x_dram0_dma_sram_line_1_splitaddr
    -                CORE_X_DRAM0_DMA_SRAM_LINE_1_SPLITADDR: u8,
    -                padding: u10,
    -            }),
    -            ///  SENSITIVE_CORE_X_IRAM0_PMS_CONSTRAIN_0_REG
    -            CORE_X_IRAM0_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    -                ///  core_x_iram0_pms_constrain_lock
    -                CORE_X_IRAM0_PMS_CONSTRAIN_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_CORE_X_IRAM0_PMS_CONSTRAIN_1_REG
    -            CORE_X_IRAM0_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    -                ///  core_x_iram0_pms_constrain_sram_world_1_pms_0
    -                CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u3,
    -                ///  core_x_iram0_pms_constrain_sram_world_1_pms_1
    -                CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u3,
    -                ///  core_x_iram0_pms_constrain_sram_world_1_pms_2
    -                CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u3,
    -                ///  core_x_iram0_pms_constrain_sram_world_1_pms_3
    -                CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u3,
    -                ///  core_x_iram0_pms_constrain_sram_world_1_cachedataarray_pms_0
    -                CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_CACHEDATAARRAY_PMS_0: u3,
    -                reserved18: u3,
    -                ///  core_x_iram0_pms_constrain_rom_world_1_pms
    -                CORE_X_IRAM0_PMS_CONSTRAIN_ROM_WORLD_1_PMS: u3,
    -                padding: u11,
    -            }),
    -            ///  SENSITIVE_CORE_X_IRAM0_PMS_CONSTRAIN_2_REG
    -            CORE_X_IRAM0_PMS_CONSTRAIN_2: mmio.Mmio(packed struct(u32) {
    -                ///  core_x_iram0_pms_constrain_sram_world_0_pms_0
    -                CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u3,
    -                ///  core_x_iram0_pms_constrain_sram_world_0_pms_1
    -                CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u3,
    -                ///  core_x_iram0_pms_constrain_sram_world_0_pms_2
    -                CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u3,
    -                ///  core_x_iram0_pms_constrain_sram_world_0_pms_3
    -                CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u3,
    -                ///  core_x_iram0_pms_constrain_sram_world_0_cachedataarray_pms_0
    -                CORE_X_IRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_CACHEDATAARRAY_PMS_0: u3,
    -                reserved18: u3,
    -                ///  core_x_iram0_pms_constrain_rom_world_0_pms
    -                CORE_X_IRAM0_PMS_CONSTRAIN_ROM_WORLD_0_PMS: u3,
    -                padding: u11,
    -            }),
    -            ///  SENSITIVE_CORE_0_IRAM0_PMS_MONITOR_0_REG
    -            CORE_0_IRAM0_PMS_MONITOR_0: mmio.Mmio(packed struct(u32) {
    -                ///  core_0_iram0_pms_monitor_lock
    -                CORE_0_IRAM0_PMS_MONITOR_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_CORE_0_IRAM0_PMS_MONITOR_1_REG
    -            CORE_0_IRAM0_PMS_MONITOR_1: mmio.Mmio(packed struct(u32) {
    -                ///  core_0_iram0_pms_monitor_violate_clr
    -                CORE_0_IRAM0_PMS_MONITOR_VIOLATE_CLR: u1,
    -                ///  core_0_iram0_pms_monitor_violate_en
    -                CORE_0_IRAM0_PMS_MONITOR_VIOLATE_EN: u1,
    -                padding: u30,
    -            }),
    -            ///  SENSITIVE_CORE_0_IRAM0_PMS_MONITOR_2_REG
    -            CORE_0_IRAM0_PMS_MONITOR_2: mmio.Mmio(packed struct(u32) {
    -                ///  core_0_iram0_pms_monitor_violate_intr
    -                CORE_0_IRAM0_PMS_MONITOR_VIOLATE_INTR: u1,
    -                ///  core_0_iram0_pms_monitor_violate_status_wr
    -                CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_WR: u1,
    -                ///  core_0_iram0_pms_monitor_violate_status_loadstore
    -                CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_LOADSTORE: u1,
    -                ///  core_0_iram0_pms_monitor_violate_status_world
    -                CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_WORLD: u2,
    -                ///  core_0_iram0_pms_monitor_violate_status_addr
    -                CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_ADDR: u24,
    -                padding: u3,
    -            }),
    -            ///  SENSITIVE_CORE_X_DRAM0_PMS_CONSTRAIN_0_REG
    -            CORE_X_DRAM0_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    -                ///  core_x_dram0_pms_constrain_lock
    -                CORE_X_DRAM0_PMS_CONSTRAIN_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_CORE_X_DRAM0_PMS_CONSTRAIN_1_REG
    -            CORE_X_DRAM0_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    -                ///  core_x_dram0_pms_constrain_sram_world_0_pms_0
    -                CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_0: u2,
    -                ///  core_x_dram0_pms_constrain_sram_world_0_pms_1
    -                CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_1: u2,
    -                ///  core_x_dram0_pms_constrain_sram_world_0_pms_2
    -                CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_2: u2,
    -                ///  core_x_dram0_pms_constrain_sram_world_0_pms_3
    -                CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_0_PMS_3: u2,
    -                reserved12: u4,
    -                ///  core_x_dram0_pms_constrain_sram_world_1_pms_0
    -                CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_0: u2,
    -                ///  core_x_dram0_pms_constrain_sram_world_1_pms_1
    -                CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_1: u2,
    -                ///  core_x_dram0_pms_constrain_sram_world_1_pms_2
    -                CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_2: u2,
    -                ///  core_x_dram0_pms_constrain_sram_world_1_pms_3
    -                CORE_X_DRAM0_PMS_CONSTRAIN_SRAM_WORLD_1_PMS_3: u2,
    -                reserved24: u4,
    -                ///  core_x_dram0_pms_constrain_rom_world_0_pms
    -                CORE_X_DRAM0_PMS_CONSTRAIN_ROM_WORLD_0_PMS: u2,
    -                ///  core_x_dram0_pms_constrain_rom_world_1_pms
    -                CORE_X_DRAM0_PMS_CONSTRAIN_ROM_WORLD_1_PMS: u2,
    -                padding: u4,
    -            }),
    -            ///  SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_0_REG
    -            CORE_0_DRAM0_PMS_MONITOR_0: mmio.Mmio(packed struct(u32) {
    -                ///  core_0_dram0_pms_monitor_lock
    -                CORE_0_DRAM0_PMS_MONITOR_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_1_REG
    -            CORE_0_DRAM0_PMS_MONITOR_1: mmio.Mmio(packed struct(u32) {
    -                ///  core_0_dram0_pms_monitor_violate_clr
    -                CORE_0_DRAM0_PMS_MONITOR_VIOLATE_CLR: u1,
    -                ///  core_0_dram0_pms_monitor_violate_en
    -                CORE_0_DRAM0_PMS_MONITOR_VIOLATE_EN: u1,
    -                padding: u30,
    -            }),
    -            ///  SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_2_REG
    -            CORE_0_DRAM0_PMS_MONITOR_2: mmio.Mmio(packed struct(u32) {
    -                ///  core_0_dram0_pms_monitor_violate_intr
    -                CORE_0_DRAM0_PMS_MONITOR_VIOLATE_INTR: u1,
    -                ///  core_0_dram0_pms_monitor_violate_status_lock
    -                CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_LOCK: u1,
    -                ///  core_0_dram0_pms_monitor_violate_status_world
    -                CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_WORLD: u2,
    -                ///  core_0_dram0_pms_monitor_violate_status_addr
    -                CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_ADDR: u24,
    -                padding: u4,
    -            }),
    -            ///  SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_3_REG
    -            CORE_0_DRAM0_PMS_MONITOR_3: mmio.Mmio(packed struct(u32) {
    -                ///  core_0_dram0_pms_monitor_violate_status_wr
    -                CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_WR: u1,
    -                ///  core_0_dram0_pms_monitor_violate_status_byteen
    -                CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_BYTEEN: u4,
    -                padding: u27,
    -            }),
    -            ///  SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_0_REG
    -            CORE_0_PIF_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    -                ///  core_0_pif_pms_constrain_lock
    -                CORE_0_PIF_PMS_CONSTRAIN_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_1_REG
    -            CORE_0_PIF_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    -                ///  core_0_pif_pms_constrain_world_0_uart
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_UART: u2,
    -                ///  core_0_pif_pms_constrain_world_0_g0spi_1
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_G0SPI_1: u2,
    -                ///  core_0_pif_pms_constrain_world_0_g0spi_0
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_G0SPI_0: u2,
    -                ///  core_0_pif_pms_constrain_world_0_gpio
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_GPIO: u2,
    -                ///  core_0_pif_pms_constrain_world_0_fe2
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_FE2: u2,
    -                ///  core_0_pif_pms_constrain_world_0_fe
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_FE: u2,
    -                ///  core_0_pif_pms_constrain_world_0_timer
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_TIMER: u2,
    -                ///  core_0_pif_pms_constrain_world_0_rtc
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_RTC: u2,
    -                ///  core_0_pif_pms_constrain_world_0_io_mux
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_IO_MUX: u2,
    -                ///  core_0_pif_pms_constrain_world_0_wdg
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_WDG: u2,
    -                reserved24: u4,
    -                ///  core_0_pif_pms_constrain_world_0_misc
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_MISC: u2,
    -                ///  core_0_pif_pms_constrain_world_0_i2c
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_I2C: u2,
    -                reserved30: u2,
    -                ///  core_0_pif_pms_constrain_world_0_uart1
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_UART1: u2,
    -            }),
    -            ///  SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_2_REG
    -            CORE_0_PIF_PMS_CONSTRAIN_2: mmio.Mmio(packed struct(u32) {
    -                ///  core_0_pif_pms_constrain_world_0_bt
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_BT: u2,
    -                reserved4: u2,
    -                ///  core_0_pif_pms_constrain_world_0_i2c_ext0
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_I2C_EXT0: u2,
    -                ///  core_0_pif_pms_constrain_world_0_uhci0
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_UHCI0: u2,
    -                reserved10: u2,
    -                ///  core_0_pif_pms_constrain_world_0_rmt
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_RMT: u2,
    -                reserved16: u4,
    -                ///  core_0_pif_pms_constrain_world_0_ledc
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_LEDC: u2,
    -                reserved22: u4,
    -                ///  core_0_pif_pms_constrain_world_0_bb
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_BB: u2,
    -                reserved26: u2,
    -                ///  core_0_pif_pms_constrain_world_0_timergroup
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_TIMERGROUP: u2,
    -                ///  core_0_pif_pms_constrain_world_0_timergroup1
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_TIMERGROUP1: u2,
    -                ///  core_0_pif_pms_constrain_world_0_systimer
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SYSTIMER: u2,
    -            }),
    -            ///  SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_3_REG
    -            CORE_0_PIF_PMS_CONSTRAIN_3: mmio.Mmio(packed struct(u32) {
    -                ///  core_0_pif_pms_constrain_world_0_spi_2
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SPI_2: u2,
    -                reserved4: u2,
    -                ///  core_0_pif_pms_constrain_world_0_apb_ctrl
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_APB_CTRL: u2,
    -                reserved10: u4,
    -                ///  core_0_pif_pms_constrain_world_0_can
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CAN: u2,
    -                reserved14: u2,
    -                ///  core_0_pif_pms_constrain_world_0_i2s1
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_I2S1: u2,
    -                reserved22: u6,
    -                ///  core_0_pif_pms_constrain_world_0_rwbt
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_RWBT: u2,
    -                reserved26: u2,
    -                ///  core_0_pif_pms_constrain_world_0_wifimac
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_WIFIMAC: u2,
    -                ///  core_0_pif_pms_constrain_world_0_pwr
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_PWR: u2,
    -                padding: u2,
    -            }),
    -            ///  SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_4_REG
    -            CORE_0_PIF_PMS_CONSTRAIN_4: mmio.Mmio(packed struct(u32) {
    -                reserved2: u2,
    -                ///  core_0_pif_pms_constrain_world_0_usb_wrap
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_USB_WRAP: u2,
    -                ///  core_0_pif_pms_constrain_world_0_crypto_peri
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CRYPTO_PERI: u2,
    -                ///  core_0_pif_pms_constrain_world_0_crypto_dma
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CRYPTO_DMA: u2,
    -                ///  core_0_pif_pms_constrain_world_0_apb_adc
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_APB_ADC: u2,
    -                reserved12: u2,
    -                ///  core_0_pif_pms_constrain_world_0_bt_pwr
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_BT_PWR: u2,
    -                ///  core_0_pif_pms_constrain_world_0_usb_device
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_USB_DEVICE: u2,
    -                ///  core_0_pif_pms_constrain_world_0_system
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SYSTEM: u2,
    -                ///  core_0_pif_pms_constrain_world_0_sensitive
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_SENSITIVE: u2,
    -                ///  core_0_pif_pms_constrain_world_0_interrupt
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_INTERRUPT: u2,
    -                ///  core_0_pif_pms_constrain_world_0_dma_copy
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_DMA_COPY: u2,
    -                ///  core_0_pif_pms_constrain_world_0_cache_config
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_CACHE_CONFIG: u2,
    -                ///  core_0_pif_pms_constrain_world_0_ad
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_AD: u2,
    -                ///  core_0_pif_pms_constrain_world_0_dio
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_DIO: u2,
    -                ///  core_0_pif_pms_constrain_world_0_world_controller
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_0_WORLD_CONTROLLER: u2,
    -            }),
    -            ///  SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_5_REG
    -            CORE_0_PIF_PMS_CONSTRAIN_5: mmio.Mmio(packed struct(u32) {
    -                ///  core_0_pif_pms_constrain_world_1_uart
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_UART: u2,
    -                ///  core_0_pif_pms_constrain_world_1_g0spi_1
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_G0SPI_1: u2,
    -                ///  core_0_pif_pms_constrain_world_1_g0spi_0
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_G0SPI_0: u2,
    -                ///  core_0_pif_pms_constrain_world_1_gpio
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_GPIO: u2,
    -                ///  core_0_pif_pms_constrain_world_1_fe2
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_FE2: u2,
    -                ///  core_0_pif_pms_constrain_world_1_fe
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_FE: u2,
    -                ///  core_0_pif_pms_constrain_world_1_timer
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_TIMER: u2,
    -                ///  core_0_pif_pms_constrain_world_1_rtc
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_RTC: u2,
    -                ///  core_0_pif_pms_constrain_world_1_io_mux
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_IO_MUX: u2,
    -                ///  core_0_pif_pms_constrain_world_1_wdg
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_WDG: u2,
    -                reserved24: u4,
    -                ///  core_0_pif_pms_constrain_world_1_misc
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_MISC: u2,
    -                ///  core_0_pif_pms_constrain_world_1_i2c
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_I2C: u2,
    -                reserved30: u2,
    -                ///  core_0_pif_pms_constrain_world_1_uart1
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_UART1: u2,
    -            }),
    -            ///  SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_6_REG
    -            CORE_0_PIF_PMS_CONSTRAIN_6: mmio.Mmio(packed struct(u32) {
    -                ///  core_0_pif_pms_constrain_world_1_bt
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_BT: u2,
    -                reserved4: u2,
    -                ///  core_0_pif_pms_constrain_world_1_i2c_ext0
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_I2C_EXT0: u2,
    -                ///  core_0_pif_pms_constrain_world_1_uhci0
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_UHCI0: u2,
    -                reserved10: u2,
    -                ///  core_0_pif_pms_constrain_world_1_rmt
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_RMT: u2,
    -                reserved16: u4,
    -                ///  core_0_pif_pms_constrain_world_1_ledc
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_LEDC: u2,
    -                reserved22: u4,
    -                ///  core_0_pif_pms_constrain_world_1_bb
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_BB: u2,
    -                reserved26: u2,
    -                ///  core_0_pif_pms_constrain_world_1_timergroup
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_TIMERGROUP: u2,
    -                ///  core_0_pif_pms_constrain_world_1_timergroup1
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_TIMERGROUP1: u2,
    -                ///  core_0_pif_pms_constrain_world_1_systimer
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SYSTIMER: u2,
    -            }),
    -            ///  SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_7_REG
    -            CORE_0_PIF_PMS_CONSTRAIN_7: mmio.Mmio(packed struct(u32) {
    -                ///  core_0_pif_pms_constrain_world_1_spi_2
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SPI_2: u2,
    -                reserved4: u2,
    -                ///  core_0_pif_pms_constrain_world_1_apb_ctrl
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_APB_CTRL: u2,
    -                reserved10: u4,
    -                ///  core_0_pif_pms_constrain_world_1_can
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CAN: u2,
    -                reserved14: u2,
    -                ///  core_0_pif_pms_constrain_world_1_i2s1
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_I2S1: u2,
    -                reserved22: u6,
    -                ///  core_0_pif_pms_constrain_world_1_rwbt
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_RWBT: u2,
    -                reserved26: u2,
    -                ///  core_0_pif_pms_constrain_world_1_wifimac
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_WIFIMAC: u2,
    -                ///  core_0_pif_pms_constrain_world_1_pwr
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_PWR: u2,
    -                padding: u2,
    -            }),
    -            ///  SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_8_REG
    -            CORE_0_PIF_PMS_CONSTRAIN_8: mmio.Mmio(packed struct(u32) {
    -                reserved2: u2,
    -                ///  core_0_pif_pms_constrain_world_1_usb_wrap
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_USB_WRAP: u2,
    -                ///  core_0_pif_pms_constrain_world_1_crypto_peri
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CRYPTO_PERI: u2,
    -                ///  core_0_pif_pms_constrain_world_1_crypto_dma
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CRYPTO_DMA: u2,
    -                ///  core_0_pif_pms_constrain_world_1_apb_adc
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_APB_ADC: u2,
    -                reserved12: u2,
    -                ///  core_0_pif_pms_constrain_world_1_bt_pwr
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_BT_PWR: u2,
    -                ///  core_0_pif_pms_constrain_world_1_usb_device
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_USB_DEVICE: u2,
    -                ///  core_0_pif_pms_constrain_world_1_system
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SYSTEM: u2,
    -                ///  core_0_pif_pms_constrain_world_1_sensitive
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_SENSITIVE: u2,
    -                ///  core_0_pif_pms_constrain_world_1_interrupt
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_INTERRUPT: u2,
    -                ///  core_0_pif_pms_constrain_world_1_dma_copy
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_DMA_COPY: u2,
    -                ///  core_0_pif_pms_constrain_world_1_cache_config
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_CACHE_CONFIG: u2,
    -                ///  core_0_pif_pms_constrain_world_1_ad
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_AD: u2,
    -                ///  core_0_pif_pms_constrain_world_1_dio
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_DIO: u2,
    -                ///  core_0_pif_pms_constrain_world_1_world_controller
    -                CORE_0_PIF_PMS_CONSTRAIN_WORLD_1_WORLD_CONTROLLER: u2,
    -            }),
    -            ///  SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_9_REG
    -            CORE_0_PIF_PMS_CONSTRAIN_9: mmio.Mmio(packed struct(u32) {
    -                ///  core_0_pif_pms_constrain_rtcfast_spltaddr_world_0
    -                CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_SPLTADDR_WORLD_0: u11,
    -                ///  core_0_pif_pms_constrain_rtcfast_spltaddr_world_1
    -                CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_SPLTADDR_WORLD_1: u11,
    -                padding: u10,
    -            }),
    -            ///  SENSITIVE_CORE_0_PIF_PMS_CONSTRAIN_10_REG
    -            CORE_0_PIF_PMS_CONSTRAIN_10: mmio.Mmio(packed struct(u32) {
    -                ///  core_0_pif_pms_constrain_rtcfast_world_0_l
    -                CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_0_L: u3,
    -                ///  core_0_pif_pms_constrain_rtcfast_world_0_h
    -                CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_0_H: u3,
    -                ///  core_0_pif_pms_constrain_rtcfast_world_1_l
    -                CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_1_L: u3,
    -                ///  core_0_pif_pms_constrain_rtcfast_world_1_h
    -                CORE_0_PIF_PMS_CONSTRAIN_RTCFAST_WORLD_1_H: u3,
    -                padding: u20,
    -            }),
    -            ///  SENSITIVE_REGION_PMS_CONSTRAIN_0_REG
    -            REGION_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    -                ///  region_pms_constrain_lock
    -                REGION_PMS_CONSTRAIN_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_REGION_PMS_CONSTRAIN_1_REG
    -            REGION_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    -                ///  region_pms_constrain_world_0_area_0
    -                REGION_PMS_CONSTRAIN_WORLD_0_AREA_0: u2,
    -                ///  region_pms_constrain_world_0_area_1
    -                REGION_PMS_CONSTRAIN_WORLD_0_AREA_1: u2,
    -                ///  region_pms_constrain_world_0_area_2
    -                REGION_PMS_CONSTRAIN_WORLD_0_AREA_2: u2,
    -                ///  region_pms_constrain_world_0_area_3
    -                REGION_PMS_CONSTRAIN_WORLD_0_AREA_3: u2,
    -                ///  region_pms_constrain_world_0_area_4
    -                REGION_PMS_CONSTRAIN_WORLD_0_AREA_4: u2,
    -                ///  region_pms_constrain_world_0_area_5
    -                REGION_PMS_CONSTRAIN_WORLD_0_AREA_5: u2,
    -                ///  region_pms_constrain_world_0_area_6
    -                REGION_PMS_CONSTRAIN_WORLD_0_AREA_6: u2,
    -                padding: u18,
    -            }),
    -            ///  SENSITIVE_REGION_PMS_CONSTRAIN_2_REG
    -            REGION_PMS_CONSTRAIN_2: mmio.Mmio(packed struct(u32) {
    -                ///  region_pms_constrain_world_1_area_0
    -                REGION_PMS_CONSTRAIN_WORLD_1_AREA_0: u2,
    -                ///  region_pms_constrain_world_1_area_1
    -                REGION_PMS_CONSTRAIN_WORLD_1_AREA_1: u2,
    -                ///  region_pms_constrain_world_1_area_2
    -                REGION_PMS_CONSTRAIN_WORLD_1_AREA_2: u2,
    -                ///  region_pms_constrain_world_1_area_3
    -                REGION_PMS_CONSTRAIN_WORLD_1_AREA_3: u2,
    -                ///  region_pms_constrain_world_1_area_4
    -                REGION_PMS_CONSTRAIN_WORLD_1_AREA_4: u2,
    -                ///  region_pms_constrain_world_1_area_5
    -                REGION_PMS_CONSTRAIN_WORLD_1_AREA_5: u2,
    -                ///  region_pms_constrain_world_1_area_6
    -                REGION_PMS_CONSTRAIN_WORLD_1_AREA_6: u2,
    -                padding: u18,
    -            }),
    -            ///  SENSITIVE_REGION_PMS_CONSTRAIN_3_REG
    -            REGION_PMS_CONSTRAIN_3: mmio.Mmio(packed struct(u32) {
    -                ///  region_pms_constrain_addr_0
    -                REGION_PMS_CONSTRAIN_ADDR_0: u30,
    -                padding: u2,
    -            }),
    -            ///  SENSITIVE_REGION_PMS_CONSTRAIN_4_REG
    -            REGION_PMS_CONSTRAIN_4: mmio.Mmio(packed struct(u32) {
    -                ///  region_pms_constrain_addr_1
    -                REGION_PMS_CONSTRAIN_ADDR_1: u30,
    -                padding: u2,
    -            }),
    -            ///  SENSITIVE_REGION_PMS_CONSTRAIN_5_REG
    -            REGION_PMS_CONSTRAIN_5: mmio.Mmio(packed struct(u32) {
    -                ///  region_pms_constrain_addr_2
    -                REGION_PMS_CONSTRAIN_ADDR_2: u30,
    -                padding: u2,
    -            }),
    -            ///  SENSITIVE_REGION_PMS_CONSTRAIN_6_REG
    -            REGION_PMS_CONSTRAIN_6: mmio.Mmio(packed struct(u32) {
    -                ///  region_pms_constrain_addr_3
    -                REGION_PMS_CONSTRAIN_ADDR_3: u30,
    -                padding: u2,
    -            }),
    -            ///  SENSITIVE_REGION_PMS_CONSTRAIN_7_REG
    -            REGION_PMS_CONSTRAIN_7: mmio.Mmio(packed struct(u32) {
    -                ///  region_pms_constrain_addr_4
    -                REGION_PMS_CONSTRAIN_ADDR_4: u30,
    -                padding: u2,
    -            }),
    -            ///  SENSITIVE_REGION_PMS_CONSTRAIN_8_REG
    -            REGION_PMS_CONSTRAIN_8: mmio.Mmio(packed struct(u32) {
    -                ///  region_pms_constrain_addr_5
    -                REGION_PMS_CONSTRAIN_ADDR_5: u30,
    -                padding: u2,
    -            }),
    -            ///  SENSITIVE_REGION_PMS_CONSTRAIN_9_REG
    -            REGION_PMS_CONSTRAIN_9: mmio.Mmio(packed struct(u32) {
    -                ///  region_pms_constrain_addr_6
    -                REGION_PMS_CONSTRAIN_ADDR_6: u30,
    -                padding: u2,
    -            }),
    -            ///  SENSITIVE_REGION_PMS_CONSTRAIN_10_REG
    -            REGION_PMS_CONSTRAIN_10: mmio.Mmio(packed struct(u32) {
    -                ///  region_pms_constrain_addr_7
    -                REGION_PMS_CONSTRAIN_ADDR_7: u30,
    -                padding: u2,
    -            }),
    -            ///  SENSITIVE_CORE_0_PIF_PMS_MONITOR_0_REG
    -            CORE_0_PIF_PMS_MONITOR_0: mmio.Mmio(packed struct(u32) {
    -                ///  core_0_pif_pms_monitor_lock
    -                CORE_0_PIF_PMS_MONITOR_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_CORE_0_PIF_PMS_MONITOR_1_REG
    -            CORE_0_PIF_PMS_MONITOR_1: mmio.Mmio(packed struct(u32) {
    -                ///  core_0_pif_pms_monitor_violate_clr
    -                CORE_0_PIF_PMS_MONITOR_VIOLATE_CLR: u1,
    -                ///  core_0_pif_pms_monitor_violate_en
    -                CORE_0_PIF_PMS_MONITOR_VIOLATE_EN: u1,
    -                padding: u30,
    -            }),
    -            ///  SENSITIVE_CORE_0_PIF_PMS_MONITOR_2_REG
    -            CORE_0_PIF_PMS_MONITOR_2: mmio.Mmio(packed struct(u32) {
    -                ///  core_0_pif_pms_monitor_violate_intr
    -                CORE_0_PIF_PMS_MONITOR_VIOLATE_INTR: u1,
    -                ///  core_0_pif_pms_monitor_violate_status_hport_0
    -                CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HPORT_0: u1,
    -                ///  core_0_pif_pms_monitor_violate_status_hsize
    -                CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HSIZE: u3,
    -                ///  core_0_pif_pms_monitor_violate_status_hwrite
    -                CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HWRITE: u1,
    -                ///  core_0_pif_pms_monitor_violate_status_hworld
    -                CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HWORLD: u2,
    -                padding: u24,
    -            }),
    -            ///  SENSITIVE_CORE_0_PIF_PMS_MONITOR_3_REG
    -            CORE_0_PIF_PMS_MONITOR_3: mmio.Mmio(packed struct(u32) {
    -                ///  core_0_pif_pms_monitor_violate_status_haddr
    -                CORE_0_PIF_PMS_MONITOR_VIOLATE_STATUS_HADDR: u32,
    -            }),
    -            ///  SENSITIVE_CORE_0_PIF_PMS_MONITOR_4_REG
    -            CORE_0_PIF_PMS_MONITOR_4: mmio.Mmio(packed struct(u32) {
    -                ///  core_0_pif_pms_monitor_nonword_violate_clr
    -                CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_CLR: u1,
    -                ///  core_0_pif_pms_monitor_nonword_violate_en
    -                CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_EN: u1,
    -                padding: u30,
    -            }),
    -            ///  SENSITIVE_CORE_0_PIF_PMS_MONITOR_5_REG
    -            CORE_0_PIF_PMS_MONITOR_5: mmio.Mmio(packed struct(u32) {
    -                ///  core_0_pif_pms_monitor_nonword_violate_intr
    -                CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_INTR: u1,
    -                ///  core_0_pif_pms_monitor_nonword_violate_status_hsize
    -                CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_STATUS_HSIZE: u2,
    -                ///  core_0_pif_pms_monitor_nonword_violate_status_hworld
    -                CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_STATUS_HWORLD: u2,
    -                padding: u27,
    -            }),
    -            ///  SENSITIVE_CORE_0_PIF_PMS_MONITOR_6_REG
    -            CORE_0_PIF_PMS_MONITOR_6: mmio.Mmio(packed struct(u32) {
    -                ///  core_0_pif_pms_monitor_nonword_violate_status_haddr
    -                CORE_0_PIF_PMS_MONITOR_NONWORD_VIOLATE_STATUS_HADDR: u32,
    -            }),
    -            ///  SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_0_REG
    -            BACKUP_BUS_PMS_CONSTRAIN_0: mmio.Mmio(packed struct(u32) {
    -                ///  backup_bus_pms_constrain_lock
    -                BACKUP_BUS_PMS_CONSTRAIN_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_1_REG
    -            BACKUP_BUS_PMS_CONSTRAIN_1: mmio.Mmio(packed struct(u32) {
    -                ///  backup_bus_pms_constrain_uart
    -                BACKUP_BUS_PMS_CONSTRAIN_UART: u2,
    -                ///  backup_bus_pms_constrain_g0spi_1
    -                BACKUP_BUS_PMS_CONSTRAIN_G0SPI_1: u2,
    -                ///  backup_bus_pms_constrain_g0spi_0
    -                BACKUP_BUS_PMS_CONSTRAIN_G0SPI_0: u2,
    -                ///  backup_bus_pms_constrain_gpio
    -                BACKUP_BUS_PMS_CONSTRAIN_GPIO: u2,
    -                ///  backup_bus_pms_constrain_fe2
    -                BACKUP_BUS_PMS_CONSTRAIN_FE2: u2,
    -                ///  backup_bus_pms_constrain_fe
    -                BACKUP_BUS_PMS_CONSTRAIN_FE: u2,
    -                ///  backup_bus_pms_constrain_timer
    -                BACKUP_BUS_PMS_CONSTRAIN_TIMER: u2,
    -                ///  backup_bus_pms_constrain_rtc
    -                BACKUP_BUS_PMS_CONSTRAIN_RTC: u2,
    -                ///  backup_bus_pms_constrain_io_mux
    -                BACKUP_BUS_PMS_CONSTRAIN_IO_MUX: u2,
    -                ///  backup_bus_pms_constrain_wdg
    -                BACKUP_BUS_PMS_CONSTRAIN_WDG: u2,
    -                reserved24: u4,
    -                ///  backup_bus_pms_constrain_misc
    -                BACKUP_BUS_PMS_CONSTRAIN_MISC: u2,
    -                ///  backup_bus_pms_constrain_i2c
    -                BACKUP_BUS_PMS_CONSTRAIN_I2C: u2,
    -                reserved30: u2,
    -                ///  backup_bus_pms_constrain_uart1
    -                BACKUP_BUS_PMS_CONSTRAIN_UART1: u2,
    -            }),
    -            ///  SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_2_REG
    -            BACKUP_BUS_PMS_CONSTRAIN_2: mmio.Mmio(packed struct(u32) {
    -                ///  backup_bus_pms_constrain_bt
    -                BACKUP_BUS_PMS_CONSTRAIN_BT: u2,
    -                reserved4: u2,
    -                ///  backup_bus_pms_constrain_i2c_ext0
    -                BACKUP_BUS_PMS_CONSTRAIN_I2C_EXT0: u2,
    -                ///  backup_bus_pms_constrain_uhci0
    -                BACKUP_BUS_PMS_CONSTRAIN_UHCI0: u2,
    -                reserved10: u2,
    -                ///  backup_bus_pms_constrain_rmt
    -                BACKUP_BUS_PMS_CONSTRAIN_RMT: u2,
    -                reserved16: u4,
    -                ///  backup_bus_pms_constrain_ledc
    -                BACKUP_BUS_PMS_CONSTRAIN_LEDC: u2,
    -                reserved22: u4,
    -                ///  backup_bus_pms_constrain_bb
    -                BACKUP_BUS_PMS_CONSTRAIN_BB: u2,
    -                reserved26: u2,
    -                ///  backup_bus_pms_constrain_timergroup
    -                BACKUP_BUS_PMS_CONSTRAIN_TIMERGROUP: u2,
    -                ///  backup_bus_pms_constrain_timergroup1
    -                BACKUP_BUS_PMS_CONSTRAIN_TIMERGROUP1: u2,
    -                ///  backup_bus_pms_constrain_systimer
    -                BACKUP_BUS_PMS_CONSTRAIN_SYSTIMER: u2,
    -            }),
    -            ///  SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_3_REG
    -            BACKUP_BUS_PMS_CONSTRAIN_3: mmio.Mmio(packed struct(u32) {
    -                ///  backup_bus_pms_constrain_spi_2
    -                BACKUP_BUS_PMS_CONSTRAIN_SPI_2: u2,
    -                reserved4: u2,
    -                ///  backup_bus_pms_constrain_apb_ctrl
    -                BACKUP_BUS_PMS_CONSTRAIN_APB_CTRL: u2,
    -                reserved10: u4,
    -                ///  backup_bus_pms_constrain_can
    -                BACKUP_BUS_PMS_CONSTRAIN_CAN: u2,
    -                reserved14: u2,
    -                ///  backup_bus_pms_constrain_i2s1
    -                BACKUP_BUS_PMS_CONSTRAIN_I2S1: u2,
    -                reserved22: u6,
    -                ///  backup_bus_pms_constrain_rwbt
    -                BACKUP_BUS_PMS_CONSTRAIN_RWBT: u2,
    -                reserved26: u2,
    -                ///  backup_bus_pms_constrain_wifimac
    -                BACKUP_BUS_PMS_CONSTRAIN_WIFIMAC: u2,
    -                ///  backup_bus_pms_constrain_pwr
    -                BACKUP_BUS_PMS_CONSTRAIN_PWR: u2,
    -                padding: u2,
    -            }),
    -            ///  SENSITIVE_BACKUP_BUS_PMS_CONSTRAIN_4_REG
    -            BACKUP_BUS_PMS_CONSTRAIN_4: mmio.Mmio(packed struct(u32) {
    -                reserved2: u2,
    -                ///  backup_bus_pms_constrain_usb_wrap
    -                BACKUP_BUS_PMS_CONSTRAIN_USB_WRAP: u2,
    -                ///  backup_bus_pms_constrain_crypto_peri
    -                BACKUP_BUS_PMS_CONSTRAIN_CRYPTO_PERI: u2,
    -                ///  backup_bus_pms_constrain_crypto_dma
    -                BACKUP_BUS_PMS_CONSTRAIN_CRYPTO_DMA: u2,
    -                ///  backup_bus_pms_constrain_apb_adc
    -                BACKUP_BUS_PMS_CONSTRAIN_APB_ADC: u2,
    -                reserved12: u2,
    -                ///  backup_bus_pms_constrain_bt_pwr
    -                BACKUP_BUS_PMS_CONSTRAIN_BT_PWR: u2,
    -                ///  backup_bus_pms_constrain_usb_device
    -                BACKUP_BUS_PMS_CONSTRAIN_USB_DEVICE: u2,
    -                padding: u16,
    -            }),
    -            ///  SENSITIVE_BACKUP_BUS_PMS_MONITOR_0_REG
    -            BACKUP_BUS_PMS_MONITOR_0: mmio.Mmio(packed struct(u32) {
    -                ///  backup_bus_pms_monitor_lock
    -                BACKUP_BUS_PMS_MONITOR_LOCK: u1,
    -                padding: u31,
    -            }),
    -            ///  SENSITIVE_BACKUP_BUS_PMS_MONITOR_1_REG
    -            BACKUP_BUS_PMS_MONITOR_1: mmio.Mmio(packed struct(u32) {
    -                ///  backup_bus_pms_monitor_violate_clr
    -                BACKUP_BUS_PMS_MONITOR_VIOLATE_CLR: u1,
    -                ///  backup_bus_pms_monitor_violate_en
    -                BACKUP_BUS_PMS_MONITOR_VIOLATE_EN: u1,
    -                padding: u30,
    -            }),
    -            ///  SENSITIVE_BACKUP_BUS_PMS_MONITOR_2_REG
    -            BACKUP_BUS_PMS_MONITOR_2: mmio.Mmio(packed struct(u32) {
    -                ///  backup_bus_pms_monitor_violate_intr
    -                BACKUP_BUS_PMS_MONITOR_VIOLATE_INTR: u1,
    -                ///  backup_bus_pms_monitor_violate_status_htrans
    -                BACKUP_BUS_PMS_MONITOR_VIOLATE_STATUS_HTRANS: u2,
    -                ///  backup_bus_pms_monitor_violate_status_hsize
    -                BACKUP_BUS_PMS_MONITOR_VIOLATE_STATUS_HSIZE: u3,
    -                ///  backup_bus_pms_monitor_violate_status_hwrite
    -                BACKUP_BUS_PMS_MONITOR_VIOLATE_STATUS_HWRITE: u1,
    -                padding: u25,
    -            }),
    -            ///  SENSITIVE_BACKUP_BUS_PMS_MONITOR_3_REG
    -            BACKUP_BUS_PMS_MONITOR_3: mmio.Mmio(packed struct(u32) {
    -                ///  backup_bus_pms_monitor_violate_haddr
    -                BACKUP_BUS_PMS_MONITOR_VIOLATE_HADDR: u32,
    -            }),
    -            ///  SENSITIVE_CLOCK_GATE_REG
    -            CLOCK_GATE: mmio.Mmio(packed struct(u32) {
    -                ///  clk_en
    -                CLK_EN: u1,
    -                padding: u31,
    -            }),
    -            reserved4092: [3720]u8,
    -            ///  SENSITIVE_DATE_REG
    -            DATE: mmio.Mmio(packed struct(u32) {
    -                ///  reg_date
    -                DATE: u28,
    -                padding: u4,
    -            }),
    -        };
    -
    -        ///  SHA (Secure Hash Algorithm) Accelerator
    -        pub const SHA = extern struct {
    -            ///  Initial configuration register.
    -            MODE: mmio.Mmio(packed struct(u32) {
    -                ///  Sha mode.
    -                MODE: u3,
    -                padding: u29,
    -            }),
    -            ///  SHA 512/t configuration register 0.
    -            T_STRING: mmio.Mmio(packed struct(u32) {
    -                ///  Sha t_string (used if and only if mode == SHA_512/t).
    -                T_STRING: u32,
    -            }),
    -            ///  SHA 512/t configuration register 1.
    -            T_LENGTH: mmio.Mmio(packed struct(u32) {
    -                ///  Sha t_length (used if and only if mode == SHA_512/t).
    -                T_LENGTH: u6,
    -                padding: u26,
    -            }),
    -            ///  DMA configuration register 0.
    -            DMA_BLOCK_NUM: mmio.Mmio(packed struct(u32) {
    -                ///  Dma-sha block number.
    -                DMA_BLOCK_NUM: u6,
    -                padding: u26,
    -            }),
    -            ///  Typical SHA configuration register 0.
    -            START: mmio.Mmio(packed struct(u32) {
    -                reserved1: u1,
    -                ///  Reserved.
    -                START: u31,
    -            }),
    -            ///  Typical SHA configuration register 1.
    -            CONTINUE: mmio.Mmio(packed struct(u32) {
    -                reserved1: u1,
    -                ///  Reserved.
    -                CONTINUE: u31,
    -            }),
    -            ///  Busy register.
    -            BUSY: mmio.Mmio(packed struct(u32) {
    -                ///  Sha busy state. 1'b0: idle. 1'b1: busy.
    -                STATE: u1,
    -                padding: u31,
    -            }),
    -            ///  DMA configuration register 1.
    -            DMA_START: mmio.Mmio(packed struct(u32) {
    -                ///  Start dma-sha.
    -                DMA_START: u1,
    -                padding: u31,
    -            }),
    -            ///  DMA configuration register 2.
    -            DMA_CONTINUE: mmio.Mmio(packed struct(u32) {
    -                ///  Continue dma-sha.
    -                DMA_CONTINUE: u1,
    -                padding: u31,
    -            }),
    -            ///  Interrupt clear register.
    -            CLEAR_IRQ: mmio.Mmio(packed struct(u32) {
    -                ///  Clear sha interrupt.
    -                CLEAR_INTERRUPT: u1,
    -                padding: u31,
    -            }),
    -            ///  Interrupt enable register.
    -            IRQ_ENA: mmio.Mmio(packed struct(u32) {
    -                ///  Sha interrupt enable register. 1'b0: disable(default). 1'b1: enable.
    -                INTERRUPT_ENA: u1,
    -                padding: u31,
    -            }),
    -            ///  Date register.
    -            DATE: mmio.Mmio(packed struct(u32) {
    -                ///  Sha date information/ sha version information.
    -                DATE: u30,
    -                padding: u2,
    -            }),
    -            reserved64: [16]u8,
    -            ///  Sha H memory which contains intermediate hash or finial hash.
    -            H_MEM: [64]u8,
    -            ///  Sha M memory which contains message.
    -            M_MEM: [64]u8,
    -        };
    -
    -        ///  SPI (Serial Peripheral Interface) Controller
    -        pub const SPI0 = extern struct {
    -            reserved8: [8]u8,
    -            ///  SPI0 control register.
    -            CTRL: mmio.Mmio(packed struct(u32) {
    -                reserved3: u3,
    -                ///  In the dummy phase the signal level of spi is output by the spi controller.
    -                FDUMMY_OUT: u1,
    -                reserved7: u3,
    -                ///  Apply 2 signals during command phase 1:enable 0: disable
    -                FCMD_DUAL: u1,
    -                ///  Apply 4 signals during command phase 1:enable 0: disable
    -                FCMD_QUAD: u1,
    -                reserved13: u4,
    -                ///  This bit enable the bits: spi_mem_fread_qio, spi_mem_fread_dio, spi_mem_fread_qout and spi_mem_fread_dout. 1: enable 0: disable.
    -                FASTRD_MODE: u1,
    -                ///  In the read operations, read-data phase apply 2 signals. 1: enable 0: disable.
    -                FREAD_DUAL: u1,
    -                reserved18: u3,
    -                ///  The bit is used to set MISO line polarity, 1: high 0, low
    -                Q_POL: u1,
    -                ///  The bit is used to set MOSI line polarity, 1: high 0, low
    -                D_POL: u1,
    -                ///  In the read operations read-data phase apply 4 signals. 1: enable 0: disable.
    -                FREAD_QUAD: u1,
    -                ///  Write protect signal output when SPI is idle. 1: output high, 0: output low.
    -                WP: u1,
    -                reserved23: u1,
    -                ///  In the read operations address phase and read-data phase apply 2 signals. 1: enable 0: disable.
    -                FREAD_DIO: u1,
    -                ///  In the read operations address phase and read-data phase apply 4 signals. 1: enable 0: disable.
    -                FREAD_QIO: u1,
    -                padding: u7,
    -            }),
    -            ///  SPI0 control1 register.
    -            CTRL1: mmio.Mmio(packed struct(u32) {
    -                ///  SPI clock mode bits. 0: SPI clock is off when CS inactive 1: SPI clock is delayed one cycle after CS inactive 2: SPI clock is delayed two cycles after CS inactive 3: SPI clock is alwasy on.
    -                CLK_MODE: u2,
    -                reserved30: u28,
    -                ///  SPI0 RX FIFO reset signal.
    -                RXFIFO_RST: u1,
    -                padding: u1,
    -            }),
    -            ///  SPI0 control2 register.
    -            CTRL2: mmio.Mmio(packed struct(u32) {
    -                ///  (cycles-1) of prepare phase by spi clock this bits are combined with spi_mem_cs_setup bit.
    -                CS_SETUP_TIME: u5,
    -                ///  Spi cs signal is delayed to inactive by spi clock this bits are combined with spi_mem_cs_hold bit.
    -                CS_HOLD_TIME: u5,
    -                reserved25: u15,
    -                ///  These bits are used to set the minimum CS high time tSHSL between SPI burst transfer when accesses to flash. tSHSL is (SPI_MEM_CS_HOLD_DELAY[5:0] + 1) MSPI core clock cycles.
    -                CS_HOLD_DELAY: u6,
    -                ///  The FSM will be reset.
    -                SYNC_RESET: u1,
    -            }),
    -            ///  SPI clock division control register.
    -            CLOCK: mmio.Mmio(packed struct(u32) {
    -                ///  In the master mode it must be equal to spi_mem_clkcnt_N.
    -                CLKCNT_L: u8,
    -                ///  In the master mode it must be floor((spi_mem_clkcnt_N+1)/2-1).
    -                CLKCNT_H: u8,
    -                ///  In the master mode it is the divider of spi_mem_clk. So spi_mem_clk frequency is system/(spi_mem_clkcnt_N+1)
    -                CLKCNT_N: u8,
    -                reserved31: u7,
    -                ///  Set this bit in 1-division mode.
    -                CLK_EQU_SYSCLK: u1,
    -            }),
    -            ///  SPI0 user register.
    -            USER: mmio.Mmio(packed struct(u32) {
    -                reserved6: u6,
    -                ///  spi cs keep low when spi is in done phase. 1: enable 0: disable.
    -                CS_HOLD: u1,
    -                ///  spi cs is enable when spi is in prepare phase. 1: enable 0: disable.
    -                CS_SETUP: u1,
    -                reserved9: u1,
    -                ///  the bit combined with spi_mem_mosi_delay_mode bits to set mosi signal delay mode.
    -                CK_OUT_EDGE: u1,
    -                reserved26: u16,
    -                ///  spi clock is disable in dummy phase when the bit is enable.
    -                USR_DUMMY_IDLE: u1,
    -                reserved29: u2,
    -                ///  This bit enable the dummy phase of an operation.
    -                USR_DUMMY: u1,
    -                padding: u2,
    -            }),
    -            ///  SPI0 user1 register.
    -            USER1: mmio.Mmio(packed struct(u32) {
    -                ///  The length in spi_mem_clk cycles of dummy phase. The register value shall be (cycle_num-1).
    -                USR_DUMMY_CYCLELEN: u6,
    -                reserved26: u20,
    -                ///  The length in bits of address phase. The register value shall be (bit_num-1).
    -                USR_ADDR_BITLEN: u6,
    -            }),
    -            ///  SPI0 user2 register.
    -            USER2: mmio.Mmio(packed struct(u32) {
    -                ///  The value of command.
    -                USR_COMMAND_VALUE: u16,
    -                reserved28: u12,
    -                ///  The length in bits of command phase. The register value shall be (bit_num-1)
    -                USR_COMMAND_BITLEN: u4,
    -            }),
    -            reserved44: [8]u8,
    -            ///  SPI0 read control register.
    -            RD_STATUS: mmio.Mmio(packed struct(u32) {
    -                reserved16: u16,
    -                ///  Mode bits in the flash fast read mode it is combined with spi_mem_fastrd_mode bit.
    -                WB_MODE: u8,
    -                padding: u8,
    -            }),
    -            reserved52: [4]u8,
    -            ///  SPI0 misc register
    -            MISC: mmio.Mmio(packed struct(u32) {
    -                reserved3: u3,
    -                ///  The bit is used to indicate the spi0_mst_st controlled transmitting is done.
    -                TRANS_END: u1,
    -                ///  The bit is used to enable the interrupt of spi0_mst_st controlled transmitting is done.
    -                TRANS_END_INT_ENA: u1,
    -                ///  The bit is used to indicate the spi0_slv_st controlled transmitting is done.
    -                CSPI_ST_TRANS_END: u1,
    -                ///  The bit is used to enable the interrupt of spi0_slv_st controlled transmitting is done.
    -                CSPI_ST_TRANS_END_INT_ENA: u1,
    -                reserved9: u2,
    -                ///  1: spi clk line is high when idle 0: spi clk line is low when idle
    -                CK_IDLE_EDGE: u1,
    -                ///  spi cs line keep low when the bit is set.
    -                CS_KEEP_ACTIVE: u1,
    -                padding: u21,
    -            }),
    -            reserved60: [4]u8,
    -            ///  SPI0 bit mode control register.
    -            CACHE_FCTRL: mmio.Mmio(packed struct(u32) {
    -                ///  For SPI0, Cache access enable, 1: enable, 0:disable.
    -                CACHE_REQ_EN: u1,
    -                ///  For SPI0, cache read flash with 4 bytes address, 1: enable, 0:disable.
    -                CACHE_USR_ADDR_4BYTE: u1,
    -                ///  For SPI0, cache read flash for user define command, 1: enable, 0:disable.
    -                CACHE_FLASH_USR_CMD: u1,
    -                ///  For SPI0 flash, din phase apply 2 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_dio.
    -                FDIN_DUAL: u1,
    -                ///  For SPI0 flash, dout phase apply 2 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_dio.
    -                FDOUT_DUAL: u1,
    -                ///  For SPI0 flash, address phase apply 2 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_dio.
    -                FADDR_DUAL: u1,
    -                ///  For SPI0 flash, din phase apply 4 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_qio.
    -                FDIN_QUAD: u1,
    -                ///  For SPI0 flash, dout phase apply 4 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_qio.
    -                FDOUT_QUAD: u1,
    -                ///  For SPI0 flash, address phase apply 4 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_qio.
    -                FADDR_QUAD: u1,
    -                padding: u23,
    -            }),
    -            reserved84: [20]u8,
    -            ///  SPI0 FSM status register
    -            FSM: mmio.Mmio(packed struct(u32) {
    -                ///  The current status of SPI0 slave FSM: spi0_slv_st. 0: idle state, 1: preparation state, 2: send command state, 3: send address state, 4: wait state, 5: read data state, 6:write data state, 7: done state, 8: read data end state.
    -                CSPI_ST: u4,
    -                ///  The current status of SPI0 master FSM: spi0_mst_st. 0: idle state, 1:EM_CACHE_GRANT , 2: program/erase suspend state, 3: SPI0 read data state, 4: wait cache/EDMA sent data is stored in SPI0 TX FIFO, 5: SPI0 write data state.
    -                EM_ST: u3,
    -                ///  The lock delay time of SPI0/1 arbiter by spi0_slv_st, after PER is sent by SPI1.
    -                CSPI_LOCK_DELAY_TIME: u5,
    -                padding: u20,
    -            }),
    -            reserved168: [80]u8,
    -            ///  SPI0 timing calibration register
    -            TIMING_CALI: mmio.Mmio(packed struct(u32) {
    -                ///  The bit is used to enable timing adjust clock for all reading operations.
    -                TIMING_CLK_ENA: u1,
    -                ///  The bit is used to enable timing auto-calibration for all reading operations.
    -                TIMING_CALI: u1,
    -                ///  add extra dummy spi clock cycle length for spi clock calibration.
    -                EXTRA_DUMMY_CYCLELEN: u3,
    -                padding: u27,
    -            }),
    -            ///  SPI0 input delay mode control register
    -            DIN_MODE: mmio.Mmio(packed struct(u32) {
    -                ///  the input signals are delayed by system clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input with the spi_clk high edge, 6: input with the spi_clk low edge
    -                DIN0_MODE: u2,
    -                ///  the input signals are delayed by system clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input with the spi_clk high edge, 6: input with the spi_clk low edge
    -                DIN1_MODE: u2,
    -                ///  the input signals are delayed by system clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input with the spi_clk high edge, 6: input with the spi_clk low edge
    -                DIN2_MODE: u2,
    -                ///  the input signals are delayed by system clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the posedge of clk_160, 4 input with the negedge of clk_160, 5: input with the spi_clk high edge, 6: input with the spi_clk low edge
    -                DIN3_MODE: u2,
    -                padding: u24,
    -            }),
    -            ///  SPI0 input delay number control register
    -            DIN_NUM: mmio.Mmio(packed struct(u32) {
    -                ///  the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...
    -                DIN0_NUM: u2,
    -                ///  the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...
    -                DIN1_NUM: u2,
    -                ///  the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...
    -                DIN2_NUM: u2,
    -                ///  the input signals are delayed by system clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,...
    -                DIN3_NUM: u2,
    -                padding: u24,
    -            }),
    -            ///  SPI0 output delay mode control register
    -            DOUT_MODE: mmio.Mmio(packed struct(u32) {
    -                ///  the output signals are delayed by system clock cycles, 0: output without delayed, 1: output with the posedge of clk_apb,2 output with the negedge of clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low edge
    -                DOUT0_MODE: u1,
    -                ///  the output signals are delayed by system clock cycles, 0: output without delayed, 1: output with the posedge of clk_apb,2 output with the negedge of clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low edge
    -                DOUT1_MODE: u1,
    -                ///  the output signals are delayed by system clock cycles, 0: output without delayed, 1: output with the posedge of clk_apb,2 output with the negedge of clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low edge
    -                DOUT2_MODE: u1,
    -                ///  the output signals are delayed by system clock cycles, 0: output without delayed, 1: output with the posedge of clk_apb,2 output with the negedge of clk_apb, 3: output with the posedge of clk_160,4 output with the negedge of clk_160,5: output with the spi_clk high edge ,6: output with the spi_clk low edge
    -                DOUT3_MODE: u1,
    -                padding: u28,
    -            }),
    -            reserved220: [36]u8,
    -            ///  SPI0 clk_gate register
    -            CLOCK_GATE: mmio.Mmio(packed struct(u32) {
    -                ///  Register clock gate enable signal. 1: Enable. 0: Disable.
    -                CLK_EN: u1,
    -                padding: u31,
    -            }),
    -            ///  SPI0 module clock select register
    -            CORE_CLK_SEL: mmio.Mmio(packed struct(u32) {
    -                ///  When the digital system clock selects PLL clock and the frequency of PLL clock is 480MHz, the value of reg_spi01_clk_sel: 0: SPI0/1 module clock (clk) is 80MHz. 1: SPI0/1 module clock (clk) is 120MHz. 2: SPI0/1 module clock (clk) 160MHz. 3: Not used. When the digital system clock selects PLL clock and the frequency of PLL clock is 320MHz, the value of reg_spi01_clk_sel: 0: SPI0/1 module clock (clk) is 80MHz. 1: SPI0/1 module clock (clk) is 80MHz. 2: SPI0/1 module clock (clk) 160MHz. 3: Not used.
    -                SPI01_CLK_SEL: u2,
    -                padding: u30,
    -            }),
    -            reserved1020: [792]u8,
    -            ///  Version control register
    -            DATE: mmio.Mmio(packed struct(u32) {
    -                ///  SPI register version.
    -                DATE: u28,
    -                padding: u4,
    -            }),
    -        };
    -
    -        ///  SPI (Serial Peripheral Interface) Controller
    -        pub const SPI1 = extern struct {
    -            ///  SPI1 memory command register
    -            CMD: mmio.Mmio(packed struct(u32) {
    -                ///  The current status of SPI1 master FSM.
    -                SPI1_MST_ST: u4,
    -                ///  The current status of SPI1 slave FSM: mspi_st. 0: idle state, 1: preparation state, 2: send command state, 3: send address state, 4: wait state, 5: read data state, 6:write data state, 7: done state, 8: read data end state.
    -                MSPI_ST: u4,
    -                reserved17: u9,
    -                ///  In user mode, it is set to indicate that program/erase operation will be triggered. The bit is combined with spi_mem_usr bit. The bit will be cleared once the operation done.1: enable 0: disable.
    -                FLASH_PE: u1,
    -                ///  User define command enable. An operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    -                USR: u1,
    -                ///  Drive Flash into high performance mode. The bit will be cleared once the operation done.1: enable 0: disable.
    -                FLASH_HPM: u1,
    -                ///  This bit combined with reg_resandres bit releases Flash from the power-down state or high performance mode and obtains the devices ID. The bit will be cleared once the operation done.1: enable 0: disable.
    -                FLASH_RES: u1,
    -                ///  Drive Flash into power down. An operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    -                FLASH_DP: u1,
    -                ///  Chip erase enable. Chip erase operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    -                FLASH_CE: u1,
    -                ///  Block erase enable(32KB) . Block erase operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    -                FLASH_BE: u1,
    -                ///  Sector erase enable(4KB). Sector erase operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    -                FLASH_SE: u1,
    -                ///  Page program enable(1 byte ~256 bytes data to be programmed). Page program operation will be triggered when the bit is set. The bit will be cleared once the operation done .1: enable 0: disable.
    -                FLASH_PP: u1,
    -                ///  Write status register enable. Write status operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    -                FLASH_WRSR: u1,
    -                ///  Read status register-1. Read status operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    -                FLASH_RDSR: u1,
    -                ///  Read JEDEC ID . Read ID command will be sent when the bit is set. The bit will be cleared once the operation done. 1: enable 0: disable.
    -                FLASH_RDID: u1,
    -                ///  Write flash disable. Write disable command will be sent when the bit is set. The bit will be cleared once the operation done. 1: enable 0: disable.
    -                FLASH_WRDI: u1,
    -                ///  Write flash enable. Write enable command will be sent when the bit is set. The bit will be cleared once the operation done. 1: enable 0: disable.
    -                FLASH_WREN: u1,
    -                ///  Read flash enable. Read flash operation will be triggered when the bit is set. The bit will be cleared once the operation done. 1: enable 0: disable.
    -                FLASH_READ: u1,
    -            }),
    -            ///  SPI1 address register
    -            ADDR: mmio.Mmio(packed struct(u32) {
    -                ///  In user mode, it is the memory address. other then the bit0-bit23 is the memory address, the bit24-bit31 are the byte length of a transfer.
    -                USR_ADDR_VALUE: u32,
    -            }),
    -            ///  SPI1 control register.
    -            CTRL: mmio.Mmio(packed struct(u32) {
    -                reserved3: u3,
    -                ///  In the dummy phase the signal level of spi is output by the spi controller.
    -                FDUMMY_OUT: u1,
    -                reserved7: u3,
    -                ///  Apply 2 signals during command phase 1:enable 0: disable
    -                FCMD_DUAL: u1,
    -                ///  Apply 4 signals during command phase 1:enable 0: disable
    -                FCMD_QUAD: u1,
    -                reserved10: u1,
    -                ///  For SPI1, initialize crc32 module before writing encrypted data to flash. Active low.
    -                FCS_CRC_EN: u1,
    -                ///  For SPI1, enable crc32 when writing encrypted data to flash. 1: enable 0:disable
    -                TX_CRC_EN: u1,
    -                reserved13: u1,
    -                ///  This bit enable the bits: spi_mem_fread_qio, spi_mem_fread_dio, spi_mem_fread_qout and spi_mem_fread_dout. 1: enable 0: disable.
    -                FASTRD_MODE: u1,
    -                ///  In the read operations, read-data phase apply 2 signals. 1: enable 0: disable.
    -                FREAD_DUAL: u1,
    -                ///  The Device ID is read out to SPI_MEM_RD_STATUS register, this bit combine with spi_mem_flash_res bit. 1: enable 0: disable.
    -                RESANDRES: u1,
    -                reserved18: u2,
    -                ///  The bit is used to set MISO line polarity, 1: high 0, low
    -                Q_POL: u1,
    -                ///  The bit is used to set MOSI line polarity, 1: high 0, low
    -                D_POL: u1,
    -                ///  In the read operations read-data phase apply 4 signals. 1: enable 0: disable.
    -                FREAD_QUAD: u1,
    -                ///  Write protect signal output when SPI is idle. 1: output high, 0: output low.
    -                WP: u1,
    -                ///  two bytes data will be written to status register when it is set. 1: enable 0: disable.
    -                WRSR_2B: u1,
    -                ///  In the read operations address phase and read-data phase apply 2 signals. 1: enable 0: disable.
    -                FREAD_DIO: u1,
    -                ///  In the read operations address phase and read-data phase apply 4 signals. 1: enable 0: disable.
    -                FREAD_QIO: u1,
    -                padding: u7,
    -            }),
    -            ///  SPI1 control1 register.
    -            CTRL1: mmio.Mmio(packed struct(u32) {
    -                ///  SPI clock mode bits. 0: SPI clock is off when CS inactive 1: SPI clock is delayed one cycle after CS inactive 2: SPI clock is delayed two cycles after CS inactive 3: SPI clock is alwasy on.
    -                CLK_MODE: u2,
    -                ///  After RES/DP/HPM command is sent, SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 512) SPI_CLK cycles.
    -                CS_HOLD_DLY_RES: u10,
    -                padding: u20,
    -            }),
    -            ///  SPI1 control2 register.
    -            CTRL2: mmio.Mmio(packed struct(u32) {
    -                reserved31: u31,
    -                ///  The FSM will be reset.
    -                SYNC_RESET: u1,
    -            }),
    -            ///  SPI1 clock division control register.
    -            CLOCK: mmio.Mmio(packed struct(u32) {
    -                ///  In the master mode it must be equal to spi_mem_clkcnt_N.
    -                CLKCNT_L: u8,
    -                ///  In the master mode it must be floor((spi_mem_clkcnt_N+1)/2-1).
    -                CLKCNT_H: u8,
    -                ///  In the master mode it is the divider of spi_mem_clk. So spi_mem_clk frequency is system/(spi_mem_clkcnt_N+1)
    -                CLKCNT_N: u8,
    -                reserved31: u7,
    -                ///  reserved
    -                CLK_EQU_SYSCLK: u1,
    -            }),
    -            ///  SPI1 user register.
    -            USER: mmio.Mmio(packed struct(u32) {
    -                reserved9: u9,
    -                ///  the bit combined with spi_mem_mosi_delay_mode bits to set mosi signal delay mode.
    -                CK_OUT_EDGE: u1,
    -                reserved12: u2,
    -                ///  In the write operations read-data phase apply 2 signals
    -                FWRITE_DUAL: u1,
    -                ///  In the write operations read-data phase apply 4 signals
    -                FWRITE_QUAD: u1,
    -                ///  In the write operations address phase and read-data phase apply 2 signals.
    -                FWRITE_DIO: u1,
    -                ///  In the write operations address phase and read-data phase apply 4 signals.
    -                FWRITE_QIO: u1,
    -                reserved24: u8,
    -                ///  read-data phase only access to high-part of the buffer spi_mem_w8~spi_mem_w15. 1: enable 0: disable.
    -                USR_MISO_HIGHPART: u1,
    -                ///  write-data phase only access to high-part of the buffer spi_mem_w8~spi_mem_w15. 1: enable 0: disable.
    -                USR_MOSI_HIGHPART: u1,
    -                ///  SPI clock is disable in dummy phase when the bit is enable.
    -                USR_DUMMY_IDLE: u1,
    -                ///  This bit enable the write-data phase of an operation.
    -                USR_MOSI: u1,
    -                ///  This bit enable the read-data phase of an operation.
    -                USR_MISO: u1,
    -                ///  This bit enable the dummy phase of an operation.
    -                USR_DUMMY: u1,
    -                ///  This bit enable the address phase of an operation.
    -                USR_ADDR: u1,
    -                ///  This bit enable the command phase of an operation.
    -                USR_COMMAND: u1,
    -            }),
    -            ///  SPI1 user1 register.
    -            USER1: mmio.Mmio(packed struct(u32) {
    -                ///  The length in spi_mem_clk cycles of dummy phase. The register value shall be (cycle_num-1).
    -                USR_DUMMY_CYCLELEN: u6,
    -                reserved26: u20,
    -                ///  The length in bits of address phase. The register value shall be (bit_num-1).
    -                USR_ADDR_BITLEN: u6,
    -            }),
    -            ///  SPI1 user2 register.
    -            USER2: mmio.Mmio(packed struct(u32) {
    -                ///  The value of command.
    -                USR_COMMAND_VALUE: u16,
    -                reserved28: u12,
    -                ///  The length in bits of command phase. The register value shall be (bit_num-1)
    -                USR_COMMAND_BITLEN: u4,
    -            }),
    -            ///  SPI1 send data bit length control register.
    -            MOSI_DLEN: mmio.Mmio(packed struct(u32) {
    -                ///  The length in bits of write-data. The register value shall be (bit_num-1).
    -                USR_MOSI_DBITLEN: u10,
    -                padding: u22,
    -            }),
    -            ///  SPI1 receive data bit length control register.
    -            MISO_DLEN: mmio.Mmio(packed struct(u32) {
    -                ///  The length in bits of read-data. The register value shall be (bit_num-1).
    -                USR_MISO_DBITLEN: u10,
    -                padding: u22,
    -            }),
    -            ///  SPI1 status register.
    -            RD_STATUS: mmio.Mmio(packed struct(u32) {
    -                ///  The value is stored when set spi_mem_flash_rdsr bit and spi_mem_flash_res bit.
    -                STATUS: u16,
    -                ///  Mode bits in the flash fast read mode it is combined with spi_mem_fastrd_mode bit.
    -                WB_MODE: u8,
    -                padding: u8,
    -            }),
    -            reserved52: [4]u8,
    -            ///  SPI1 misc register
    -            MISC: mmio.Mmio(packed struct(u32) {
    -                ///  SPI_CS0 pin enable, 1: disable SPI_CS0, 0: SPI_CS0 pin is active to select SPI device, such as flash, external RAM and so on.
    -                CS0_DIS: u1,
    -                ///  SPI_CS1 pin enable, 1: disable SPI_CS1, 0: SPI_CS1 pin is active to select SPI device, such as flash, external RAM and so on.
    -                CS1_DIS: u1,
    -                reserved9: u7,
    -                ///  1: spi clk line is high when idle 0: spi clk line is low when idle
    -                CK_IDLE_EDGE: u1,
    -                ///  spi cs line keep low when the bit is set.
    -                CS_KEEP_ACTIVE: u1,
    -                padding: u21,
    -            }),
    -            ///  SPI1 TX CRC data register.
    -            TX_CRC: mmio.Mmio(packed struct(u32) {
    -                ///  For SPI1, the value of crc32.
    -                DATA: u32,
    -            }),
    -            ///  SPI1 bit mode control register.
    -            CACHE_FCTRL: mmio.Mmio(packed struct(u32) {
    -                reserved1: u1,
    -                ///  For SPI1, cache read flash with 4 bytes address, 1: enable, 0:disable.
    -                CACHE_USR_ADDR_4BYTE: u1,
    -                reserved3: u1,
    -                ///  For SPI1, din phase apply 2 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_dio.
    -                FDIN_DUAL: u1,
    -                ///  For SPI1, dout phase apply 2 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_dio.
    -                FDOUT_DUAL: u1,
    -                ///  For SPI1, address phase apply 2 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_dio.
    -                FADDR_DUAL: u1,
    -                ///  For SPI1, din phase apply 4 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_qio.
    -                FDIN_QUAD: u1,
    -                ///  For SPI1, dout phase apply 4 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_qio.
    -                FDOUT_QUAD: u1,
    -                ///  For SPI1, address phase apply 4 signals. 1: enable 0: disable. The bit is the same with spi_mem_fread_qio.
    -                FADDR_QUAD: u1,
    -                padding: u23,
    -            }),
    -            reserved88: [24]u8,
    -            ///  SPI1 memory data buffer0
    -            W0: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF0: u32,
    -            }),
    -            ///  SPI1 memory data buffer1
    -            W1: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF1: u32,
    -            }),
    -            ///  SPI1 memory data buffer2
    -            W2: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF2: u32,
    -            }),
    -            ///  SPI1 memory data buffer3
    -            W3: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF3: u32,
    -            }),
    -            ///  SPI1 memory data buffer4
    -            W4: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF4: u32,
    -            }),
    -            ///  SPI1 memory data buffer5
    -            W5: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF5: u32,
    -            }),
    -            ///  SPI1 memory data buffer6
    -            W6: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF6: u32,
    -            }),
    -            ///  SPI1 memory data buffer7
    -            W7: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF7: u32,
    -            }),
    -            ///  SPI1 memory data buffer8
    -            W8: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF8: u32,
    -            }),
    -            ///  SPI1 memory data buffer9
    -            W9: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF9: u32,
    -            }),
    -            ///  SPI1 memory data buffer10
    -            W10: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF10: u32,
    -            }),
    -            ///  SPI1 memory data buffer11
    -            W11: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF11: u32,
    -            }),
    -            ///  SPI1 memory data buffer12
    -            W12: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF12: u32,
    -            }),
    -            ///  SPI1 memory data buffer13
    -            W13: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF13: u32,
    -            }),
    -            ///  SPI1 memory data buffer14
    -            W14: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF14: u32,
    -            }),
    -            ///  SPI1 memory data buffer15
    -            W15: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF15: u32,
    -            }),
    -            ///  SPI1 wait idle control register
    -            FLASH_WAITI_CTRL: mmio.Mmio(packed struct(u32) {
    -                reserved1: u1,
    -                ///  The dummy phase enable when wait flash idle (RDSR)
    -                WAITI_DUMMY: u1,
    -                ///  The command to wait flash idle(RDSR).
    -                WAITI_CMD: u8,
    -                ///  The dummy cycle length when wait flash idle(RDSR).
    -                WAITI_DUMMY_CYCLELEN: u6,
    -                padding: u16,
    -            }),
    -            ///  SPI1 flash suspend control register
    -            FLASH_SUS_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  program erase resume bit, program erase suspend operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    -                FLASH_PER: u1,
    -                ///  program erase suspend bit, program erase suspend operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable.
    -                FLASH_PES: u1,
    -                ///  1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4 or *128) SPI_CLK cycles after program erase resume command is sent. 0: SPI1 does not wait after program erase resume command is sent.
    -                FLASH_PER_WAIT_EN: u1,
    -                ///  1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4 or *128) SPI_CLK cycles after program erase suspend command is sent. 0: SPI1 does not wait after program erase suspend command is sent.
    -                FLASH_PES_WAIT_EN: u1,
    -                ///  Set this bit to enable PES end triggers PER transfer option. If this bit is 0, application should send PER after PES is done.
    -                PES_PER_EN: u1,
    -                ///  Set this bit to enable Auto-suspending function.
    -                FLASH_PES_EN: u1,
    -                ///  The mask value when check SUS/SUS1/SUS2 status bit. If the read status value is status_in[15:0](only status_in[7:0] is valid when only one byte of data is read out, status_in[15:0] is valid when two bytes of data are read out), SUS/SUS1/SUS2 = status_in[15:0]^ SPI_MEM_PESR_END_MSK[15:0].
    -                PESR_END_MSK: u16,
    -                ///  1: Read two bytes when check flash SUS/SUS1/SUS2 status bit. 0: Read one byte when check flash SUS/SUS1/SUS2 status bit
    -                RD_SUS_2B: u1,
    -                ///  1: Both WIP and SUS/SUS1/SUS2 bits should be checked to insure the resume status of flash. 0: Only need to check WIP is 0.
    -                PER_END_EN: u1,
    -                ///  1: Both WIP and SUS/SUS1/SUS2 bits should be checked to insure the suspend status of flash. 0: Only need to check WIP is 0.
    -                PES_END_EN: u1,
    -                ///  When SPI1 checks SUS/SUS1/SUS2 bits fail for SPI_MEM_SUS_TIMEOUT_CNT[6:0] times, it will be treated as check pass.
    -                SUS_TIMEOUT_CNT: u7,
    -            }),
    -            ///  SPI1 flash suspend command register
    -            FLASH_SUS_CMD: mmio.Mmio(packed struct(u32) {
    -                ///  Program/Erase resume command.
    -                FLASH_PER_COMMAND: u8,
    -                ///  Program/Erase suspend command.
    -                FLASH_PES_COMMAND: u8,
    -                ///  Flash SUS/SUS1/SUS2 status bit read command. The command should be sent when SUS/SUS1/SUS2 bit should be checked to insure the suspend or resume status of flash.
    -                WAIT_PESR_COMMAND: u16,
    -            }),
    -            ///  SPI1 flash suspend status register
    -            SUS_STATUS: mmio.Mmio(packed struct(u32) {
    -                ///  The status of flash suspend, only used in SPI1.
    -                FLASH_SUS: u1,
    -                ///  1: SPI1 sends out SPI_MEM_WAIT_PESR_COMMAND[15:0] to check SUS/SUS1/SUS2 bit. 0: SPI1 sends out SPI_MEM_WAIT_PESR_COMMAND[7:0] to check SUS/SUS1/SUS2 bit.
    -                WAIT_PESR_CMD_2B: u1,
    -                ///  1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after HPM command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after HPM command is sent.
    -                FLASH_HPM_DLY_128: u1,
    -                ///  1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after RES command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after RES command is sent.
    -                FLASH_RES_DLY_128: u1,
    -                ///  1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after DP command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after DP command is sent.
    -                FLASH_DP_DLY_128: u1,
    -                ///  Valid when SPI_MEM_FLASH_PER_WAIT_EN is 1. 1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after PER command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after PER command is sent.
    -                FLASH_PER_DLY_128: u1,
    -                ///  Valid when SPI_MEM_FLASH_PES_WAIT_EN is 1. 1: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 128) SPI_CLK cycles after PES command is sent. 0: SPI1 waits (SPI_MEM_CS_HOLD_DELAY_RES[9:0] * 4) SPI_CLK cycles after PES command is sent.
    -                FLASH_PES_DLY_128: u1,
    -                ///  1: Enable SPI0 lock SPI0/1 arbiter option. 0: Disable it.
    -                SPI0_LOCK_EN: u1,
    -                padding: u24,
    -            }),
    -            ///  SPI1 timing control register
    -            TIMING_CALI: mmio.Mmio(packed struct(u32) {
    -                reserved1: u1,
    -                ///  The bit is used to enable timing auto-calibration for all reading operations.
    -                TIMING_CALI: u1,
    -                ///  add extra dummy spi clock cycle length for spi clock calibration.
    -                EXTRA_DUMMY_CYCLELEN: u3,
    -                padding: u27,
    -            }),
    -            reserved192: [20]u8,
    -            ///  SPI1 interrupt enable register
    -            INT_ENA: mmio.Mmio(packed struct(u32) {
    -                ///  The enable bit for SPI_MEM_PER_END_INT interrupt.
    -                PER_END_INT_ENA: u1,
    -                ///  The enable bit for SPI_MEM_PES_END_INT interrupt.
    -                PES_END_INT_ENA: u1,
    -                ///  The enable bit for SPI_MEM_WPE_END_INT interrupt.
    -                WPE_END_INT_ENA: u1,
    -                ///  The enable bit for SPI_MEM_SLV_ST_END_INT interrupt.
    -                SLV_ST_END_INT_ENA: u1,
    -                ///  The enable bit for SPI_MEM_MST_ST_END_INT interrupt.
    -                MST_ST_END_INT_ENA: u1,
    -                padding: u27,
    -            }),
    -            ///  SPI1 interrupt clear register
    -            INT_CLR: mmio.Mmio(packed struct(u32) {
    -                ///  The clear bit for SPI_MEM_PER_END_INT interrupt.
    -                PER_END_INT_CLR: u1,
    -                ///  The clear bit for SPI_MEM_PES_END_INT interrupt.
    -                PES_END_INT_CLR: u1,
    -                ///  The clear bit for SPI_MEM_WPE_END_INT interrupt.
    -                WPE_END_INT_CLR: u1,
    -                ///  The clear bit for SPI_MEM_SLV_ST_END_INT interrupt.
    -                SLV_ST_END_INT_CLR: u1,
    -                ///  The clear bit for SPI_MEM_MST_ST_END_INT interrupt.
    -                MST_ST_END_INT_CLR: u1,
    -                padding: u27,
    -            }),
    -            ///  SPI1 interrupt raw register
    -            INT_RAW: mmio.Mmio(packed struct(u32) {
    -                ///  The raw bit for SPI_MEM_PER_END_INT interrupt. 1: Triggered when Auto Resume command (0x7A) is sent and flash is resumed. 0: Others.
    -                PER_END_INT_RAW: u1,
    -                ///  The raw bit for SPI_MEM_PES_END_INT interrupt.1: Triggered when Auto Suspend command (0x75) is sent and flash is suspended. 0: Others.
    -                PES_END_INT_RAW: u1,
    -                ///  The raw bit for SPI_MEM_WPE_END_INT interrupt. 1: Triggered when WRSR/PP/SE/BE/CE is sent and flash is already idle. 0: Others.
    -                WPE_END_INT_RAW: u1,
    -                ///  The raw bit for SPI_MEM_SLV_ST_END_INT interrupt. 1: Triggered when spi1_slv_st is changed from non idle state to idle state. It means that SPI_CS raises high. 0: Others
    -                SLV_ST_END_INT_RAW: u1,
    -                ///  The raw bit for SPI_MEM_MST_ST_END_INT interrupt. 1: Triggered when spi1_mst_st is changed from non idle state to idle state. 0: Others.
    -                MST_ST_END_INT_RAW: u1,
    -                padding: u27,
    -            }),
    -            ///  SPI1 interrupt status register
    -            INT_ST: mmio.Mmio(packed struct(u32) {
    -                ///  The status bit for SPI_MEM_PER_END_INT interrupt.
    -                PER_END_INT_ST: u1,
    -                ///  The status bit for SPI_MEM_PES_END_INT interrupt.
    -                PES_END_INT_ST: u1,
    -                ///  The status bit for SPI_MEM_WPE_END_INT interrupt.
    -                WPE_END_INT_ST: u1,
    -                ///  The status bit for SPI_MEM_SLV_ST_END_INT interrupt.
    -                SLV_ST_END_INT_ST: u1,
    -                ///  The status bit for SPI_MEM_MST_ST_END_INT interrupt.
    -                MST_ST_END_INT_ST: u1,
    -                padding: u27,
    -            }),
    -            reserved220: [12]u8,
    -            ///  SPI1 clk_gate register
    -            CLOCK_GATE: mmio.Mmio(packed struct(u32) {
    -                ///  Register clock gate enable signal. 1: Enable. 0: Disable.
    -                CLK_EN: u1,
    -                padding: u31,
    -            }),
    -            reserved1020: [796]u8,
    -            ///  Version control register
    -            DATE: mmio.Mmio(packed struct(u32) {
    -                ///  Version control register
    -                DATE: u28,
    -                padding: u4,
    -            }),
    -        };
    -
    -        ///  SPI (Serial Peripheral Interface) Controller
    -        pub const SPI2 = extern struct {
    -            ///  Command control register
    -            CMD: mmio.Mmio(packed struct(u32) {
    -                ///  Define the APB cycles of SPI_CONF state. Can be configured in CONF state.
    -                CONF_BITLEN: u18,
    -                reserved23: u5,
    -                ///  Set this bit to synchronize SPI registers from APB clock domain into SPI module clock domain, which is only used in SPI master mode.
    -                UPDATE: u1,
    -                ///  User define command enable. An operation will be triggered when the bit is set. The bit will be cleared once the operation done.1: enable 0: disable. Can not be changed by CONF_buf.
    -                USR: u1,
    -                padding: u7,
    -            }),
    -            ///  Address value register
    -            ADDR: mmio.Mmio(packed struct(u32) {
    -                ///  Address to slave. Can be configured in CONF state.
    -                USR_ADDR_VALUE: u32,
    -            }),
    -            ///  SPI control register
    -            CTRL: mmio.Mmio(packed struct(u32) {
    -                reserved3: u3,
    -                ///  In the dummy phase the signal level of spi is output by the spi controller. Can be configured in CONF state.
    -                DUMMY_OUT: u1,
    -                reserved5: u1,
    -                ///  Apply 2 signals during addr phase 1:enable 0: disable. Can be configured in CONF state.
    -                FADDR_DUAL: u1,
    -                ///  Apply 4 signals during addr phase 1:enable 0: disable. Can be configured in CONF state.
    -                FADDR_QUAD: u1,
    -                reserved8: u1,
    -                ///  Apply 2 signals during command phase 1:enable 0: disable. Can be configured in CONF state.
    -                FCMD_DUAL: u1,
    -                ///  Apply 4 signals during command phase 1:enable 0: disable. Can be configured in CONF state.
    -                FCMD_QUAD: u1,
    -                reserved14: u4,
    -                ///  In the read operations, read-data phase apply 2 signals. 1: enable 0: disable. Can be configured in CONF state.
    -                FREAD_DUAL: u1,
    -                ///  In the read operations read-data phase apply 4 signals. 1: enable 0: disable. Can be configured in CONF state.
    -                FREAD_QUAD: u1,
    -                reserved18: u2,
    -                ///  The bit is used to set MISO line polarity, 1: high 0, low. Can be configured in CONF state.
    -                Q_POL: u1,
    -                ///  The bit is used to set MOSI line polarity, 1: high 0, low. Can be configured in CONF state.
    -                D_POL: u1,
    -                ///  SPI_HOLD output value when SPI is idle. 1: output high, 0: output low. Can be configured in CONF state.
    -                HOLD_POL: u1,
    -                ///  Write protect signal output when SPI is idle. 1: output high, 0: output low. Can be configured in CONF state.
    -                WP_POL: u1,
    -                reserved25: u3,
    -                ///  In read-data (MISO) phase 1: LSB first 0: MSB first. Can be configured in CONF state.
    -                RD_BIT_ORDER: u1,
    -                ///  In command address write-data (MOSI) phases 1: LSB firs 0: MSB first. Can be configured in CONF state.
    -                WR_BIT_ORDER: u1,
    -                padding: u5,
    -            }),
    -            ///  SPI clock control register
    -            CLOCK: mmio.Mmio(packed struct(u32) {
    -                ///  In the master mode it must be equal to spi_clkcnt_N. In the slave mode it must be 0. Can be configured in CONF state.
    -                CLKCNT_L: u6,
    -                ///  In the master mode it must be floor((spi_clkcnt_N+1)/2-1). In the slave mode it must be 0. Can be configured in CONF state.
    -                CLKCNT_H: u6,
    -                ///  In the master mode it is the divider of spi_clk. So spi_clk frequency is system/(spi_clkdiv_pre+1)/(spi_clkcnt_N+1). Can be configured in CONF state.
    -                CLKCNT_N: u6,
    -                ///  In the master mode it is pre-divider of spi_clk. Can be configured in CONF state.
    -                CLKDIV_PRE: u4,
    -                reserved31: u9,
    -                ///  In the master mode 1: spi_clk is eqaul to system 0: spi_clk is divided from system clock. Can be configured in CONF state.
    -                CLK_EQU_SYSCLK: u1,
    -            }),
    -            ///  SPI USER control register
    -            USER: mmio.Mmio(packed struct(u32) {
    -                ///  Set the bit to enable full duplex communication. 1: enable 0: disable. Can be configured in CONF state.
    -                DOUTDIN: u1,
    -                reserved3: u2,
    -                ///  Both for master mode and slave mode. 1: spi controller is in QPI mode. 0: others. Can be configured in CONF state.
    -                QPI_MODE: u1,
    -                reserved5: u1,
    -                ///  In the slave mode, this bit can be used to change the polarity of tsck. 0: tsck = spi_ck_i. 1:tsck = !spi_ck_i.
    -                TSCK_I_EDGE: u1,
    -                ///  spi cs keep low when spi is in done phase. 1: enable 0: disable. Can be configured in CONF state.
    -                CS_HOLD: u1,
    -                ///  spi cs is enable when spi is in prepare phase. 1: enable 0: disable. Can be configured in CONF state.
    -                CS_SETUP: u1,
    -                ///  In the slave mode, this bit can be used to change the polarity of rsck. 0: rsck = !spi_ck_i. 1:rsck = spi_ck_i.
    -                RSCK_I_EDGE: u1,
    -                ///  the bit combined with spi_mosi_delay_mode bits to set mosi signal delay mode. Can be configured in CONF state.
    -                CK_OUT_EDGE: u1,
    -                reserved12: u2,
    -                ///  In the write operations read-data phase apply 2 signals. Can be configured in CONF state.
    -                FWRITE_DUAL: u1,
    -                ///  In the write operations read-data phase apply 4 signals. Can be configured in CONF state.
    -                FWRITE_QUAD: u1,
    -                reserved15: u1,
    -                ///  1: Enable the DMA CONF phase of next seg-trans operation, which means seg-trans will continue. 0: The seg-trans will end after the current SPI seg-trans or this is not seg-trans mode. Can be configured in CONF state.
    -                USR_CONF_NXT: u1,
    -                reserved17: u1,
    -                ///  Set the bit to enable 3-line half duplex communication mosi and miso signals share the same pin. 1: enable 0: disable. Can be configured in CONF state.
    -                SIO: u1,
    -                reserved24: u6,
    -                ///  read-data phase only access to high-part of the buffer spi_w8~spi_w15. 1: enable 0: disable. Can be configured in CONF state.
    -                USR_MISO_HIGHPART: u1,
    -                ///  write-data phase only access to high-part of the buffer spi_w8~spi_w15. 1: enable 0: disable. Can be configured in CONF state.
    -                USR_MOSI_HIGHPART: u1,
    -                ///  spi clock is disable in dummy phase when the bit is enable. Can be configured in CONF state.
    -                USR_DUMMY_IDLE: u1,
    -                ///  This bit enable the write-data phase of an operation. Can be configured in CONF state.
    -                USR_MOSI: u1,
    -                ///  This bit enable the read-data phase of an operation. Can be configured in CONF state.
    -                USR_MISO: u1,
    -                ///  This bit enable the dummy phase of an operation. Can be configured in CONF state.
    -                USR_DUMMY: u1,
    -                ///  This bit enable the address phase of an operation. Can be configured in CONF state.
    -                USR_ADDR: u1,
    -                ///  This bit enable the command phase of an operation. Can be configured in CONF state.
    -                USR_COMMAND: u1,
    -            }),
    -            ///  SPI USER control register 1
    -            USER1: mmio.Mmio(packed struct(u32) {
    -                ///  The length in spi_clk cycles of dummy phase. The register value shall be (cycle_num-1). Can be configured in CONF state.
    -                USR_DUMMY_CYCLELEN: u8,
    -                reserved16: u8,
    -                ///  1: SPI transfer is ended when SPI RX AFIFO wfull error is valid in GP-SPI master FD/HD-mode. 0: SPI transfer is not ended when SPI RX AFIFO wfull error is valid in GP-SPI master FD/HD-mode.
    -                MST_WFULL_ERR_END_EN: u1,
    -                ///  (cycles+1) of prepare phase by spi clock this bits are combined with spi_cs_setup bit. Can be configured in CONF state.
    -                CS_SETUP_TIME: u5,
    -                ///  delay cycles of cs pin by spi clock this bits are combined with spi_cs_hold bit. Can be configured in CONF state.
    -                CS_HOLD_TIME: u5,
    -                ///  The length in bits of address phase. The register value shall be (bit_num-1). Can be configured in CONF state.
    -                USR_ADDR_BITLEN: u5,
    -            }),
    -            ///  SPI USER control register 2
    -            USER2: mmio.Mmio(packed struct(u32) {
    -                ///  The value of command. Can be configured in CONF state.
    -                USR_COMMAND_VALUE: u16,
    -                reserved27: u11,
    -                ///  1: SPI transfer is ended when SPI TX AFIFO read empty error is valid in GP-SPI master FD/HD-mode. 0: SPI transfer is not ended when SPI TX AFIFO read empty error is valid in GP-SPI master FD/HD-mode.
    -                MST_REMPTY_ERR_END_EN: u1,
    -                ///  The length in bits of command phase. The register value shall be (bit_num-1). Can be configured in CONF state.
    -                USR_COMMAND_BITLEN: u4,
    -            }),
    -            ///  SPI data bit length control register
    -            MS_DLEN: mmio.Mmio(packed struct(u32) {
    -                ///  The value of these bits is the configured SPI transmission data bit length in master mode DMA controlled transfer or CPU controlled transfer. The value is also the configured bit length in slave mode DMA RX controlled transfer. The register value shall be (bit_num-1). Can be configured in CONF state.
    -                MS_DATA_BITLEN: u18,
    -                padding: u14,
    -            }),
    -            ///  SPI misc register
    -            MISC: mmio.Mmio(packed struct(u32) {
    -                ///  SPI CS0 pin enable, 1: disable CS0, 0: spi_cs0 signal is from/to CS0 pin. Can be configured in CONF state.
    -                CS0_DIS: u1,
    -                ///  SPI CS1 pin enable, 1: disable CS1, 0: spi_cs1 signal is from/to CS1 pin. Can be configured in CONF state.
    -                CS1_DIS: u1,
    -                ///  SPI CS2 pin enable, 1: disable CS2, 0: spi_cs2 signal is from/to CS2 pin. Can be configured in CONF state.
    -                CS2_DIS: u1,
    -                ///  SPI CS3 pin enable, 1: disable CS3, 0: spi_cs3 signal is from/to CS3 pin. Can be configured in CONF state.
    -                CS3_DIS: u1,
    -                ///  SPI CS4 pin enable, 1: disable CS4, 0: spi_cs4 signal is from/to CS4 pin. Can be configured in CONF state.
    -                CS4_DIS: u1,
    -                ///  SPI CS5 pin enable, 1: disable CS5, 0: spi_cs5 signal is from/to CS5 pin. Can be configured in CONF state.
    -                CS5_DIS: u1,
    -                ///  1: spi clk out disable, 0: spi clk out enable. Can be configured in CONF state.
    -                CK_DIS: u1,
    -                ///  In the master mode the bits are the polarity of spi cs line, the value is equivalent to spi_cs ^ spi_master_cs_pol. Can be configured in CONF state.
    -                MASTER_CS_POL: u6,
    -                reserved23: u10,
    -                ///  spi slave input cs polarity select. 1: inv 0: not change. Can be configured in CONF state.
    -                SLAVE_CS_POL: u1,
    -                reserved29: u5,
    -                ///  1: spi clk line is high when idle 0: spi clk line is low when idle. Can be configured in CONF state.
    -                CK_IDLE_EDGE: u1,
    -                ///  spi cs line keep low when the bit is set. Can be configured in CONF state.
    -                CS_KEEP_ACTIVE: u1,
    -                ///  1: spi quad input swap enable 0: spi quad input swap disable. Can be configured in CONF state.
    -                QUAD_DIN_PIN_SWAP: u1,
    -            }),
    -            ///  SPI input delay mode configuration
    -            DIN_MODE: mmio.Mmio(packed struct(u32) {
    -                ///  the input signals are delayed by SPI module clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the spi_clk. Can be configured in CONF state.
    -                DIN0_MODE: u2,
    -                ///  the input signals are delayed by SPI module clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the spi_clk. Can be configured in CONF state.
    -                DIN1_MODE: u2,
    -                ///  the input signals are delayed by SPI module clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the spi_clk. Can be configured in CONF state.
    -                DIN2_MODE: u2,
    -                ///  the input signals are delayed by SPI module clock cycles, 0: input without delayed, 1: input with the posedge of clk_apb,2 input with the negedge of clk_apb, 3: input with the spi_clk. Can be configured in CONF state.
    -                DIN3_MODE: u2,
    -                reserved16: u8,
    -                ///  1:enable hclk in SPI input timing module. 0: disable it. Can be configured in CONF state.
    -                TIMING_HCLK_ACTIVE: u1,
    -                padding: u15,
    -            }),
    -            ///  SPI input delay number configuration
    -            DIN_NUM: mmio.Mmio(packed struct(u32) {
    -                ///  the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,... Can be configured in CONF state.
    -                DIN0_NUM: u2,
    -                ///  the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,... Can be configured in CONF state.
    -                DIN1_NUM: u2,
    -                ///  the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,... Can be configured in CONF state.
    -                DIN2_NUM: u2,
    -                ///  the input signals are delayed by SPI module clock cycles, 0: delayed by 1 cycle, 1: delayed by 2 cycles,... Can be configured in CONF state.
    -                DIN3_NUM: u2,
    -                padding: u24,
    -            }),
    -            ///  SPI output delay mode configuration
    -            DOUT_MODE: mmio.Mmio(packed struct(u32) {
    -                ///  The output signal 0 is delayed by the SPI module clock, 0: output without delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can be configured in CONF state.
    -                DOUT0_MODE: u1,
    -                ///  The output signal 1 is delayed by the SPI module clock, 0: output without delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can be configured in CONF state.
    -                DOUT1_MODE: u1,
    -                ///  The output signal 2 is delayed by the SPI module clock, 0: output without delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can be configured in CONF state.
    -                DOUT2_MODE: u1,
    -                ///  The output signal 3 is delayed by the SPI module clock, 0: output without delayed, 1: output delay for a SPI module clock cycle at its negative edge. Can be configured in CONF state.
    -                DOUT3_MODE: u1,
    -                padding: u28,
    -            }),
    -            ///  SPI DMA control register
    -            DMA_CONF: mmio.Mmio(packed struct(u32) {
    -                reserved18: u18,
    -                ///  Enable dma segment transfer in spi dma half slave mode. 1: enable. 0: disable.
    -                DMA_SLV_SEG_TRANS_EN: u1,
    -                ///  1: spi_dma_infifo_full_vld is cleared by spi slave cmd 5. 0: spi_dma_infifo_full_vld is cleared by spi_trans_done.
    -                SLV_RX_SEG_TRANS_CLR_EN: u1,
    -                ///  1: spi_dma_outfifo_empty_vld is cleared by spi slave cmd 6. 0: spi_dma_outfifo_empty_vld is cleared by spi_trans_done.
    -                SLV_TX_SEG_TRANS_CLR_EN: u1,
    -                ///  1: spi_dma_inlink_eof is set when the number of dma pushed data bytes is equal to the value of spi_slv/mst_dma_rd_bytelen[19:0] in spi dma transition. 0: spi_dma_inlink_eof is set by spi_trans_done in non-seg-trans or spi_dma_seg_trans_done in seg-trans.
    -                RX_EOF_EN: u1,
    -                reserved27: u5,
    -                ///  Set this bit to enable SPI DMA controlled receive data mode.
    -                DMA_RX_ENA: u1,
    -                ///  Set this bit to enable SPI DMA controlled send data mode.
    -                DMA_TX_ENA: u1,
    -                ///  Set this bit to reset RX AFIFO, which is used to receive data in SPI master and slave mode transfer.
    -                RX_AFIFO_RST: u1,
    -                ///  Set this bit to reset BUF TX AFIFO, which is used send data out in SPI slave CPU controlled mode transfer and master mode transfer.
    -                BUF_AFIFO_RST: u1,
    -                ///  Set this bit to reset DMA TX AFIFO, which is used to send data out in SPI slave DMA controlled mode transfer.
    -                DMA_AFIFO_RST: u1,
    -            }),
    -            ///  SPI DMA interrupt enable register
    -            DMA_INT_ENA: mmio.Mmio(packed struct(u32) {
    -                ///  The enable bit for SPI_DMA_INFIFO_FULL_ERR_INT interrupt.
    -                DMA_INFIFO_FULL_ERR_INT_ENA: u1,
    -                ///  The enable bit for SPI_DMA_OUTFIFO_EMPTY_ERR_INT interrupt.
    -                DMA_OUTFIFO_EMPTY_ERR_INT_ENA: u1,
    -                ///  The enable bit for SPI slave Ex_QPI interrupt.
    -                SLV_EX_QPI_INT_ENA: u1,
    -                ///  The enable bit for SPI slave En_QPI interrupt.
    -                SLV_EN_QPI_INT_ENA: u1,
    -                ///  The enable bit for SPI slave CMD7 interrupt.
    -                SLV_CMD7_INT_ENA: u1,
    -                ///  The enable bit for SPI slave CMD8 interrupt.
    -                SLV_CMD8_INT_ENA: u1,
    -                ///  The enable bit for SPI slave CMD9 interrupt.
    -                SLV_CMD9_INT_ENA: u1,
    -                ///  The enable bit for SPI slave CMDA interrupt.
    -                SLV_CMDA_INT_ENA: u1,
    -                ///  The enable bit for SPI_SLV_RD_DMA_DONE_INT interrupt.
    -                SLV_RD_DMA_DONE_INT_ENA: u1,
    -                ///  The enable bit for SPI_SLV_WR_DMA_DONE_INT interrupt.
    -                SLV_WR_DMA_DONE_INT_ENA: u1,
    -                ///  The enable bit for SPI_SLV_RD_BUF_DONE_INT interrupt.
    -                SLV_RD_BUF_DONE_INT_ENA: u1,
    -                ///  The enable bit for SPI_SLV_WR_BUF_DONE_INT interrupt.
    -                SLV_WR_BUF_DONE_INT_ENA: u1,
    -                ///  The enable bit for SPI_TRANS_DONE_INT interrupt.
    -                TRANS_DONE_INT_ENA: u1,
    -                ///  The enable bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt.
    -                DMA_SEG_TRANS_DONE_INT_ENA: u1,
    -                ///  The enable bit for SPI_SEG_MAGIC_ERR_INT interrupt.
    -                SEG_MAGIC_ERR_INT_ENA: u1,
    -                ///  The enable bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt.
    -                SLV_BUF_ADDR_ERR_INT_ENA: u1,
    -                ///  The enable bit for SPI_SLV_CMD_ERR_INT interrupt.
    -                SLV_CMD_ERR_INT_ENA: u1,
    -                ///  The enable bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt.
    -                MST_RX_AFIFO_WFULL_ERR_INT_ENA: u1,
    -                ///  The enable bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt.
    -                MST_TX_AFIFO_REMPTY_ERR_INT_ENA: u1,
    -                ///  The enable bit for SPI_APP2_INT interrupt.
    -                APP2_INT_ENA: u1,
    -                ///  The enable bit for SPI_APP1_INT interrupt.
    -                APP1_INT_ENA: u1,
    -                padding: u11,
    -            }),
    -            ///  SPI DMA interrupt clear register
    -            DMA_INT_CLR: mmio.Mmio(packed struct(u32) {
    -                ///  The clear bit for SPI_DMA_INFIFO_FULL_ERR_INT interrupt.
    -                DMA_INFIFO_FULL_ERR_INT_CLR: u1,
    -                ///  The clear bit for SPI_DMA_OUTFIFO_EMPTY_ERR_INT interrupt.
    -                DMA_OUTFIFO_EMPTY_ERR_INT_CLR: u1,
    -                ///  The clear bit for SPI slave Ex_QPI interrupt.
    -                SLV_EX_QPI_INT_CLR: u1,
    -                ///  The clear bit for SPI slave En_QPI interrupt.
    -                SLV_EN_QPI_INT_CLR: u1,
    -                ///  The clear bit for SPI slave CMD7 interrupt.
    -                SLV_CMD7_INT_CLR: u1,
    -                ///  The clear bit for SPI slave CMD8 interrupt.
    -                SLV_CMD8_INT_CLR: u1,
    -                ///  The clear bit for SPI slave CMD9 interrupt.
    -                SLV_CMD9_INT_CLR: u1,
    -                ///  The clear bit for SPI slave CMDA interrupt.
    -                SLV_CMDA_INT_CLR: u1,
    -                ///  The clear bit for SPI_SLV_RD_DMA_DONE_INT interrupt.
    -                SLV_RD_DMA_DONE_INT_CLR: u1,
    -                ///  The clear bit for SPI_SLV_WR_DMA_DONE_INT interrupt.
    -                SLV_WR_DMA_DONE_INT_CLR: u1,
    -                ///  The clear bit for SPI_SLV_RD_BUF_DONE_INT interrupt.
    -                SLV_RD_BUF_DONE_INT_CLR: u1,
    -                ///  The clear bit for SPI_SLV_WR_BUF_DONE_INT interrupt.
    -                SLV_WR_BUF_DONE_INT_CLR: u1,
    -                ///  The clear bit for SPI_TRANS_DONE_INT interrupt.
    -                TRANS_DONE_INT_CLR: u1,
    -                ///  The clear bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt.
    -                DMA_SEG_TRANS_DONE_INT_CLR: u1,
    -                ///  The clear bit for SPI_SEG_MAGIC_ERR_INT interrupt.
    -                SEG_MAGIC_ERR_INT_CLR: u1,
    -                ///  The clear bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt.
    -                SLV_BUF_ADDR_ERR_INT_CLR: u1,
    -                ///  The clear bit for SPI_SLV_CMD_ERR_INT interrupt.
    -                SLV_CMD_ERR_INT_CLR: u1,
    -                ///  The clear bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt.
    -                MST_RX_AFIFO_WFULL_ERR_INT_CLR: u1,
    -                ///  The clear bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt.
    -                MST_TX_AFIFO_REMPTY_ERR_INT_CLR: u1,
    -                ///  The clear bit for SPI_APP2_INT interrupt.
    -                APP2_INT_CLR: u1,
    -                ///  The clear bit for SPI_APP1_INT interrupt.
    -                APP1_INT_CLR: u1,
    -                padding: u11,
    -            }),
    -            ///  SPI DMA interrupt raw register
    -            DMA_INT_RAW: mmio.Mmio(packed struct(u32) {
    -                ///  1: The current data rate of DMA Rx is smaller than that of SPI, which will lose the receive data. 0: Others.
    -                DMA_INFIFO_FULL_ERR_INT_RAW: u1,
    -                ///  1: The current data rate of DMA TX is smaller than that of SPI. SPI will stop in master mode and send out all 0 in slave mode. 0: Others.
    -                DMA_OUTFIFO_EMPTY_ERR_INT_RAW: u1,
    -                ///  The raw bit for SPI slave Ex_QPI interrupt. 1: SPI slave mode Ex_QPI transmission is ended. 0: Others.
    -                SLV_EX_QPI_INT_RAW: u1,
    -                ///  The raw bit for SPI slave En_QPI interrupt. 1: SPI slave mode En_QPI transmission is ended. 0: Others.
    -                SLV_EN_QPI_INT_RAW: u1,
    -                ///  The raw bit for SPI slave CMD7 interrupt. 1: SPI slave mode CMD7 transmission is ended. 0: Others.
    -                SLV_CMD7_INT_RAW: u1,
    -                ///  The raw bit for SPI slave CMD8 interrupt. 1: SPI slave mode CMD8 transmission is ended. 0: Others.
    -                SLV_CMD8_INT_RAW: u1,
    -                ///  The raw bit for SPI slave CMD9 interrupt. 1: SPI slave mode CMD9 transmission is ended. 0: Others.
    -                SLV_CMD9_INT_RAW: u1,
    -                ///  The raw bit for SPI slave CMDA interrupt. 1: SPI slave mode CMDA transmission is ended. 0: Others.
    -                SLV_CMDA_INT_RAW: u1,
    -                ///  The raw bit for SPI_SLV_RD_DMA_DONE_INT interrupt. 1: SPI slave mode Rd_DMA transmission is ended. 0: Others.
    -                SLV_RD_DMA_DONE_INT_RAW: u1,
    -                ///  The raw bit for SPI_SLV_WR_DMA_DONE_INT interrupt. 1: SPI slave mode Wr_DMA transmission is ended. 0: Others.
    -                SLV_WR_DMA_DONE_INT_RAW: u1,
    -                ///  The raw bit for SPI_SLV_RD_BUF_DONE_INT interrupt. 1: SPI slave mode Rd_BUF transmission is ended. 0: Others.
    -                SLV_RD_BUF_DONE_INT_RAW: u1,
    -                ///  The raw bit for SPI_SLV_WR_BUF_DONE_INT interrupt. 1: SPI slave mode Wr_BUF transmission is ended. 0: Others.
    -                SLV_WR_BUF_DONE_INT_RAW: u1,
    -                ///  The raw bit for SPI_TRANS_DONE_INT interrupt. 1: SPI master mode transmission is ended. 0: others.
    -                TRANS_DONE_INT_RAW: u1,
    -                ///  The raw bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt. 1: spi master DMA full-duplex/half-duplex seg-conf-trans ends or slave half-duplex seg-trans ends. And data has been pushed to corresponding memory. 0: seg-conf-trans or seg-trans is not ended or not occurred.
    -                DMA_SEG_TRANS_DONE_INT_RAW: u1,
    -                ///  The raw bit for SPI_SEG_MAGIC_ERR_INT interrupt. 1: The magic value in CONF buffer is error in the DMA seg-conf-trans. 0: others.
    -                SEG_MAGIC_ERR_INT_RAW: u1,
    -                ///  The raw bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt. 1: The accessing data address of the current SPI slave mode CPU controlled FD, Wr_BUF or Rd_BUF transmission is bigger than 63. 0: Others.
    -                SLV_BUF_ADDR_ERR_INT_RAW: u1,
    -                ///  The raw bit for SPI_SLV_CMD_ERR_INT interrupt. 1: The slave command value in the current SPI slave HD mode transmission is not supported. 0: Others.
    -                SLV_CMD_ERR_INT_RAW: u1,
    -                ///  The raw bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt. 1: There is a RX AFIFO write-full error when SPI inputs data in master mode. 0: Others.
    -                MST_RX_AFIFO_WFULL_ERR_INT_RAW: u1,
    -                ///  The raw bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt. 1: There is a TX BUF AFIFO read-empty error when SPI outputs data in master mode. 0: Others.
    -                MST_TX_AFIFO_REMPTY_ERR_INT_RAW: u1,
    -                ///  The raw bit for SPI_APP2_INT interrupt. The value is only controlled by application.
    -                APP2_INT_RAW: u1,
    -                ///  The raw bit for SPI_APP1_INT interrupt. The value is only controlled by application.
    -                APP1_INT_RAW: u1,
    -                padding: u11,
    -            }),
    -            ///  SPI DMA interrupt status register
    -            DMA_INT_ST: mmio.Mmio(packed struct(u32) {
    -                ///  The status bit for SPI_DMA_INFIFO_FULL_ERR_INT interrupt.
    -                DMA_INFIFO_FULL_ERR_INT_ST: u1,
    -                ///  The status bit for SPI_DMA_OUTFIFO_EMPTY_ERR_INT interrupt.
    -                DMA_OUTFIFO_EMPTY_ERR_INT_ST: u1,
    -                ///  The status bit for SPI slave Ex_QPI interrupt.
    -                SLV_EX_QPI_INT_ST: u1,
    -                ///  The status bit for SPI slave En_QPI interrupt.
    -                SLV_EN_QPI_INT_ST: u1,
    -                ///  The status bit for SPI slave CMD7 interrupt.
    -                SLV_CMD7_INT_ST: u1,
    -                ///  The status bit for SPI slave CMD8 interrupt.
    -                SLV_CMD8_INT_ST: u1,
    -                ///  The status bit for SPI slave CMD9 interrupt.
    -                SLV_CMD9_INT_ST: u1,
    -                ///  The status bit for SPI slave CMDA interrupt.
    -                SLV_CMDA_INT_ST: u1,
    -                ///  The status bit for SPI_SLV_RD_DMA_DONE_INT interrupt.
    -                SLV_RD_DMA_DONE_INT_ST: u1,
    -                ///  The status bit for SPI_SLV_WR_DMA_DONE_INT interrupt.
    -                SLV_WR_DMA_DONE_INT_ST: u1,
    -                ///  The status bit for SPI_SLV_RD_BUF_DONE_INT interrupt.
    -                SLV_RD_BUF_DONE_INT_ST: u1,
    -                ///  The status bit for SPI_SLV_WR_BUF_DONE_INT interrupt.
    -                SLV_WR_BUF_DONE_INT_ST: u1,
    -                ///  The status bit for SPI_TRANS_DONE_INT interrupt.
    -                TRANS_DONE_INT_ST: u1,
    -                ///  The status bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt.
    -                DMA_SEG_TRANS_DONE_INT_ST: u1,
    -                ///  The status bit for SPI_SEG_MAGIC_ERR_INT interrupt.
    -                SEG_MAGIC_ERR_INT_ST: u1,
    -                ///  The status bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt.
    -                SLV_BUF_ADDR_ERR_INT_ST: u1,
    -                ///  The status bit for SPI_SLV_CMD_ERR_INT interrupt.
    -                SLV_CMD_ERR_INT_ST: u1,
    -                ///  The status bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt.
    -                MST_RX_AFIFO_WFULL_ERR_INT_ST: u1,
    -                ///  The status bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt.
    -                MST_TX_AFIFO_REMPTY_ERR_INT_ST: u1,
    -                ///  The status bit for SPI_APP2_INT interrupt.
    -                APP2_INT_ST: u1,
    -                ///  The status bit for SPI_APP1_INT interrupt.
    -                APP1_INT_ST: u1,
    -                padding: u11,
    -            }),
    -            reserved152: [84]u8,
    -            ///  SPI CPU-controlled buffer0
    -            W0: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF0: u32,
    -            }),
    -            ///  SPI CPU-controlled buffer1
    -            W1: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF1: u32,
    -            }),
    -            ///  SPI CPU-controlled buffer2
    -            W2: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF2: u32,
    -            }),
    -            ///  SPI CPU-controlled buffer3
    -            W3: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF3: u32,
    -            }),
    -            ///  SPI CPU-controlled buffer4
    -            W4: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF4: u32,
    -            }),
    -            ///  SPI CPU-controlled buffer5
    -            W5: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF5: u32,
    -            }),
    -            ///  SPI CPU-controlled buffer6
    -            W6: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF6: u32,
    -            }),
    -            ///  SPI CPU-controlled buffer7
    -            W7: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF7: u32,
    -            }),
    -            ///  SPI CPU-controlled buffer8
    -            W8: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF8: u32,
    -            }),
    -            ///  SPI CPU-controlled buffer9
    -            W9: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF9: u32,
    -            }),
    -            ///  SPI CPU-controlled buffer10
    -            W10: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF10: u32,
    -            }),
    -            ///  SPI CPU-controlled buffer11
    -            W11: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF11: u32,
    -            }),
    -            ///  SPI CPU-controlled buffer12
    -            W12: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF12: u32,
    -            }),
    -            ///  SPI CPU-controlled buffer13
    -            W13: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF13: u32,
    -            }),
    -            ///  SPI CPU-controlled buffer14
    -            W14: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF14: u32,
    -            }),
    -            ///  SPI CPU-controlled buffer15
    -            W15: mmio.Mmio(packed struct(u32) {
    -                ///  data buffer
    -                BUF15: u32,
    -            }),
    -            reserved224: [8]u8,
    -            ///  SPI slave control register
    -            SLAVE: mmio.Mmio(packed struct(u32) {
    -                ///  SPI clock mode bits. 0: SPI clock is off when CS inactive 1: SPI clock is delayed one cycle after CS inactive 2: SPI clock is delayed two cycles after CS inactive 3: SPI clock is alwasy on. Can be configured in CONF state.
    -                CLK_MODE: u2,
    -                ///  {CPOL, CPHA},1: support spi clk mode 1 and 3, first edge output data B[0]/B[7]. 0: support spi clk mode 0 and 2, first edge output data B[1]/B[6].
    -                CLK_MODE_13: u1,
    -                ///  It saves half a cycle when tsck is the same as rsck. 1: output data at rsck posedge 0: output data at tsck posedge
    -                RSCK_DATA_OUT: u1,
    -                reserved8: u4,
    -                ///  1: SPI_SLV_DATA_BITLEN stores data bit length of master-read-slave data length in DMA controlled mode(Rd_DMA). 0: others
    -                SLV_RDDMA_BITLEN_EN: u1,
    -                ///  1: SPI_SLV_DATA_BITLEN stores data bit length of master-write-to-slave data length in DMA controlled mode(Wr_DMA). 0: others
    -                SLV_WRDMA_BITLEN_EN: u1,
    -                ///  1: SPI_SLV_DATA_BITLEN stores data bit length of master-read-slave data length in CPU controlled mode(Rd_BUF). 0: others
    -                SLV_RDBUF_BITLEN_EN: u1,
    -                ///  1: SPI_SLV_DATA_BITLEN stores data bit length of master-write-to-slave data length in CPU controlled mode(Wr_BUF). 0: others
    -                SLV_WRBUF_BITLEN_EN: u1,
    -                reserved22: u10,
    -                ///  The magic value of BM table in master DMA seg-trans.
    -                DMA_SEG_MAGIC_VALUE: u4,
    -                ///  Set SPI work mode. 1: slave mode 0: master mode.
    -                MODE: u1,
    -                ///  Software reset enable, reset the spi clock line cs line and data lines. Can be configured in CONF state.
    -                SOFT_RESET: u1,
    -                ///  1: Enable the DMA CONF phase of current seg-trans operation, which means seg-trans will start. 0: This is not seg-trans mode.
    -                USR_CONF: u1,
    -                padding: u3,
    -            }),
    -            ///  SPI slave control register 1
    -            SLAVE1: mmio.Mmio(packed struct(u32) {
    -                ///  The transferred data bit length in SPI slave FD and HD mode.
    -                SLV_DATA_BITLEN: u18,
    -                ///  In the slave mode it is the value of command.
    -                SLV_LAST_COMMAND: u8,
    -                ///  In the slave mode it is the value of address.
    -                SLV_LAST_ADDR: u6,
    -            }),
    -            ///  SPI module clock and register clock control
    -            CLK_GATE: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to enable clk gate
    -                CLK_EN: u1,
    -                ///  Set this bit to power on the SPI module clock.
    -                MST_CLK_ACTIVE: u1,
    -                ///  This bit is used to select SPI module clock source in master mode. 1: PLL_CLK_80M. 0: XTAL CLK.
    -                MST_CLK_SEL: u1,
    -                padding: u29,
    -            }),
    -            reserved240: [4]u8,
    -            ///  Version control
    -            DATE: mmio.Mmio(packed struct(u32) {
    -                ///  SPI register version.
    -                DATE: u28,
    -                padding: u4,
    -            }),
    -        };
    -
    -        ///  System
    -        pub const SYSTEM = extern struct {
    -            ///  cpu_peripheral clock gating register
    -            CPU_PERI_CLK_EN: mmio.Mmio(packed struct(u32) {
    -                reserved6: u6,
    -                ///  reg_clk_en_assist_debug
    -                CLK_EN_ASSIST_DEBUG: u1,
    -                ///  reg_clk_en_dedicated_gpio
    -                CLK_EN_DEDICATED_GPIO: u1,
    -                padding: u24,
    -            }),
    -            ///  cpu_peripheral reset register
    -            CPU_PERI_RST_EN: mmio.Mmio(packed struct(u32) {
    -                reserved6: u6,
    -                ///  reg_rst_en_assist_debug
    -                RST_EN_ASSIST_DEBUG: u1,
    -                ///  reg_rst_en_dedicated_gpio
    -                RST_EN_DEDICATED_GPIO: u1,
    -                padding: u24,
    -            }),
    -            ///  cpu clock config register
    -            CPU_PER_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  reg_cpuperiod_sel
    -                CPUPERIOD_SEL: u2,
    -                ///  reg_pll_freq_sel
    -                PLL_FREQ_SEL: u1,
    -                ///  reg_cpu_wait_mode_force_on
    -                CPU_WAIT_MODE_FORCE_ON: u1,
    -                ///  reg_cpu_waiti_delay_num
    -                CPU_WAITI_DELAY_NUM: u4,
    -                padding: u24,
    -            }),
    -            ///  memory power down mask register
    -            MEM_PD_MASK: mmio.Mmio(packed struct(u32) {
    -                ///  reg_lslp_mem_pd_mask
    -                LSLP_MEM_PD_MASK: u1,
    -                padding: u31,
    -            }),
    -            ///  peripheral clock gating register
    -            PERIP_CLK_EN0: mmio.Mmio(packed struct(u32) {
    -                ///  reg_timers_clk_en
    -                TIMERS_CLK_EN: u1,
    -                ///  reg_spi01_clk_en
    -                SPI01_CLK_EN: u1,
    -                ///  reg_uart_clk_en
    -                UART_CLK_EN: u1,
    -                ///  reg_wdg_clk_en
    -                WDG_CLK_EN: u1,
    -                ///  reg_i2s0_clk_en
    -                I2S0_CLK_EN: u1,
    -                ///  reg_uart1_clk_en
    -                UART1_CLK_EN: u1,
    -                ///  reg_spi2_clk_en
    -                SPI2_CLK_EN: u1,
    -                ///  reg_ext0_clk_en
    -                I2C_EXT0_CLK_EN: u1,
    -                ///  reg_uhci0_clk_en
    -                UHCI0_CLK_EN: u1,
    -                ///  reg_rmt_clk_en
    -                RMT_CLK_EN: u1,
    -                ///  reg_pcnt_clk_en
    -                PCNT_CLK_EN: u1,
    -                ///  reg_ledc_clk_en
    -                LEDC_CLK_EN: u1,
    -                ///  reg_uhci1_clk_en
    -                UHCI1_CLK_EN: u1,
    -                ///  reg_timergroup_clk_en
    -                TIMERGROUP_CLK_EN: u1,
    -                ///  reg_efuse_clk_en
    -                EFUSE_CLK_EN: u1,
    -                ///  reg_timergroup1_clk_en
    -                TIMERGROUP1_CLK_EN: u1,
    -                ///  reg_spi3_clk_en
    -                SPI3_CLK_EN: u1,
    -                ///  reg_pwm0_clk_en
    -                PWM0_CLK_EN: u1,
    -                ///  reg_ext1_clk_en
    -                EXT1_CLK_EN: u1,
    -                ///  reg_can_clk_en
    -                CAN_CLK_EN: u1,
    -                ///  reg_pwm1_clk_en
    -                PWM1_CLK_EN: u1,
    -                ///  reg_i2s1_clk_en
    -                I2S1_CLK_EN: u1,
    -                ///  reg_spi2_dma_clk_en
    -                SPI2_DMA_CLK_EN: u1,
    -                ///  reg_usb_device_clk_en
    -                USB_DEVICE_CLK_EN: u1,
    -                ///  reg_uart_mem_clk_en
    -                UART_MEM_CLK_EN: u1,
    -                ///  reg_pwm2_clk_en
    -                PWM2_CLK_EN: u1,
    -                ///  reg_pwm3_clk_en
    -                PWM3_CLK_EN: u1,
    -                ///  reg_spi3_dma_clk_en
    -                SPI3_DMA_CLK_EN: u1,
    -                ///  reg_apb_saradc_clk_en
    -                APB_SARADC_CLK_EN: u1,
    -                ///  reg_systimer_clk_en
    -                SYSTIMER_CLK_EN: u1,
    -                ///  reg_adc2_arb_clk_en
    -                ADC2_ARB_CLK_EN: u1,
    -                ///  reg_spi4_clk_en
    -                SPI4_CLK_EN: u1,
    -            }),
    -            ///  peripheral clock gating register
    -            PERIP_CLK_EN1: mmio.Mmio(packed struct(u32) {
    -                reserved1: u1,
    -                ///  reg_crypto_aes_clk_en
    -                CRYPTO_AES_CLK_EN: u1,
    -                ///  reg_crypto_sha_clk_en
    -                CRYPTO_SHA_CLK_EN: u1,
    -                ///  reg_crypto_rsa_clk_en
    -                CRYPTO_RSA_CLK_EN: u1,
    -                ///  reg_crypto_ds_clk_en
    -                CRYPTO_DS_CLK_EN: u1,
    -                ///  reg_crypto_hmac_clk_en
    -                CRYPTO_HMAC_CLK_EN: u1,
    -                ///  reg_dma_clk_en
    -                DMA_CLK_EN: u1,
    -                ///  reg_sdio_host_clk_en
    -                SDIO_HOST_CLK_EN: u1,
    -                ///  reg_lcd_cam_clk_en
    -                LCD_CAM_CLK_EN: u1,
    -                ///  reg_uart2_clk_en
    -                UART2_CLK_EN: u1,
    -                ///  reg_tsens_clk_en
    -                TSENS_CLK_EN: u1,
    -                padding: u21,
    -            }),
    -            ///  reserved
    -            PERIP_RST_EN0: mmio.Mmio(packed struct(u32) {
    -                ///  reg_timers_rst
    -                TIMERS_RST: u1,
    -                ///  reg_spi01_rst
    -                SPI01_RST: u1,
    -                ///  reg_uart_rst
    -                UART_RST: u1,
    -                ///  reg_wdg_rst
    -                WDG_RST: u1,
    -                ///  reg_i2s0_rst
    -                I2S0_RST: u1,
    -                ///  reg_uart1_rst
    -                UART1_RST: u1,
    -                ///  reg_spi2_rst
    -                SPI2_RST: u1,
    -                ///  reg_ext0_rst
    -                I2C_EXT0_RST: u1,
    -                ///  reg_uhci0_rst
    -                UHCI0_RST: u1,
    -                ///  reg_rmt_rst
    -                RMT_RST: u1,
    -                ///  reg_pcnt_rst
    -                PCNT_RST: u1,
    -                ///  reg_ledc_rst
    -                LEDC_RST: u1,
    -                ///  reg_uhci1_rst
    -                UHCI1_RST: u1,
    -                ///  reg_timergroup_rst
    -                TIMERGROUP_RST: u1,
    -                ///  reg_efuse_rst
    -                EFUSE_RST: u1,
    -                ///  reg_timergroup1_rst
    -                TIMERGROUP1_RST: u1,
    -                ///  reg_spi3_rst
    -                SPI3_RST: u1,
    -                ///  reg_pwm0_rst
    -                PWM0_RST: u1,
    -                ///  reg_ext1_rst
    -                EXT1_RST: u1,
    -                ///  reg_can_rst
    -                CAN_RST: u1,
    -                ///  reg_pwm1_rst
    -                PWM1_RST: u1,
    -                ///  reg_i2s1_rst
    -                I2S1_RST: u1,
    -                ///  reg_spi2_dma_rst
    -                SPI2_DMA_RST: u1,
    -                ///  reg_usb_device_rst
    -                USB_DEVICE_RST: u1,
    -                ///  reg_uart_mem_rst
    -                UART_MEM_RST: u1,
    -                ///  reg_pwm2_rst
    -                PWM2_RST: u1,
    -                ///  reg_pwm3_rst
    -                PWM3_RST: u1,
    -                ///  reg_spi3_dma_rst
    -                SPI3_DMA_RST: u1,
    -                ///  reg_apb_saradc_rst
    -                APB_SARADC_RST: u1,
    -                ///  reg_systimer_rst
    -                SYSTIMER_RST: u1,
    -                ///  reg_adc2_arb_rst
    -                ADC2_ARB_RST: u1,
    -                ///  reg_spi4_rst
    -                SPI4_RST: u1,
    -            }),
    -            ///  peripheral reset register
    -            PERIP_RST_EN1: mmio.Mmio(packed struct(u32) {
    -                reserved1: u1,
    -                ///  reg_crypto_aes_rst
    -                CRYPTO_AES_RST: u1,
    -                ///  reg_crypto_sha_rst
    -                CRYPTO_SHA_RST: u1,
    -                ///  reg_crypto_rsa_rst
    -                CRYPTO_RSA_RST: u1,
    -                ///  reg_crypto_ds_rst
    -                CRYPTO_DS_RST: u1,
    -                ///  reg_crypto_hmac_rst
    -                CRYPTO_HMAC_RST: u1,
    -                ///  reg_dma_rst
    -                DMA_RST: u1,
    -                ///  reg_sdio_host_rst
    -                SDIO_HOST_RST: u1,
    -                ///  reg_lcd_cam_rst
    -                LCD_CAM_RST: u1,
    -                ///  reg_uart2_rst
    -                UART2_RST: u1,
    -                ///  reg_tsens_rst
    -                TSENS_RST: u1,
    -                padding: u21,
    -            }),
    -            ///  clock config register
    -            BT_LPCK_DIV_INT: mmio.Mmio(packed struct(u32) {
    -                ///  reg_bt_lpck_div_num
    -                BT_LPCK_DIV_NUM: u12,
    -                padding: u20,
    -            }),
    -            ///  clock config register
    -            BT_LPCK_DIV_FRAC: mmio.Mmio(packed struct(u32) {
    -                ///  reg_bt_lpck_div_b
    -                BT_LPCK_DIV_B: u12,
    -                ///  reg_bt_lpck_div_a
    -                BT_LPCK_DIV_A: u12,
    -                ///  reg_lpclk_sel_rtc_slow
    -                LPCLK_SEL_RTC_SLOW: u1,
    -                ///  reg_lpclk_sel_8m
    -                LPCLK_SEL_8M: u1,
    -                ///  reg_lpclk_sel_xtal
    -                LPCLK_SEL_XTAL: u1,
    -                ///  reg_lpclk_sel_xtal32k
    -                LPCLK_SEL_XTAL32K: u1,
    -                ///  reg_lpclk_rtc_en
    -                LPCLK_RTC_EN: u1,
    -                padding: u3,
    -            }),
    -            ///  interrupt generate register
    -            CPU_INTR_FROM_CPU_0: mmio.Mmio(packed struct(u32) {
    -                ///  reg_cpu_intr_from_cpu_0
    -                CPU_INTR_FROM_CPU_0: u1,
    -                padding: u31,
    -            }),
    -            ///  interrupt generate register
    -            CPU_INTR_FROM_CPU_1: mmio.Mmio(packed struct(u32) {
    -                ///  reg_cpu_intr_from_cpu_1
    -                CPU_INTR_FROM_CPU_1: u1,
    -                padding: u31,
    -            }),
    -            ///  interrupt generate register
    -            CPU_INTR_FROM_CPU_2: mmio.Mmio(packed struct(u32) {
    -                ///  reg_cpu_intr_from_cpu_2
    -                CPU_INTR_FROM_CPU_2: u1,
    -                padding: u31,
    -            }),
    -            ///  interrupt generate register
    -            CPU_INTR_FROM_CPU_3: mmio.Mmio(packed struct(u32) {
    -                ///  reg_cpu_intr_from_cpu_3
    -                CPU_INTR_FROM_CPU_3: u1,
    -                padding: u31,
    -            }),
    -            ///  rsa memory power control register
    -            RSA_PD_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  reg_rsa_mem_pd
    -                RSA_MEM_PD: u1,
    -                ///  reg_rsa_mem_force_pu
    -                RSA_MEM_FORCE_PU: u1,
    -                ///  reg_rsa_mem_force_pd
    -                RSA_MEM_FORCE_PD: u1,
    -                padding: u29,
    -            }),
    -            ///  edma clcok and reset register
    -            EDMA_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  reg_edma_clk_on
    -                EDMA_CLK_ON: u1,
    -                ///  reg_edma_reset
    -                EDMA_RESET: u1,
    -                padding: u30,
    -            }),
    -            ///  cache control register
    -            CACHE_CONTROL: mmio.Mmio(packed struct(u32) {
    -                ///  reg_icache_clk_on
    -                ICACHE_CLK_ON: u1,
    -                ///  reg_icache_reset
    -                ICACHE_RESET: u1,
    -                ///  reg_dcache_clk_on
    -                DCACHE_CLK_ON: u1,
    -                ///  reg_dcache_reset
    -                DCACHE_RESET: u1,
    -                padding: u28,
    -            }),
    -            ///  SYSTEM_EXTERNAL_DEVICE_ENCRYPT_DECRYPT_CONTROL_REG
    -            EXTERNAL_DEVICE_ENCRYPT_DECRYPT_CONTROL: mmio.Mmio(packed struct(u32) {
    -                ///  reg_enable_spi_manual_encrypt
    -                ENABLE_SPI_MANUAL_ENCRYPT: u1,
    -                ///  reg_enable_download_db_encrypt
    -                ENABLE_DOWNLOAD_DB_ENCRYPT: u1,
    -                ///  reg_enable_download_g0cb_decrypt
    -                ENABLE_DOWNLOAD_G0CB_DECRYPT: u1,
    -                ///  reg_enable_download_manual_encrypt
    -                ENABLE_DOWNLOAD_MANUAL_ENCRYPT: u1,
    -                padding: u28,
    -            }),
    -            ///  fast memory config register
    -            RTC_FASTMEM_CONFIG: mmio.Mmio(packed struct(u32) {
    -                reserved8: u8,
    -                ///  reg_rtc_mem_crc_start
    -                RTC_MEM_CRC_START: u1,
    -                ///  reg_rtc_mem_crc_addr
    -                RTC_MEM_CRC_ADDR: u11,
    -                ///  reg_rtc_mem_crc_len
    -                RTC_MEM_CRC_LEN: u11,
    -                ///  reg_rtc_mem_crc_finish
    -                RTC_MEM_CRC_FINISH: u1,
    -            }),
    -            ///  reserved
    -            RTC_FASTMEM_CRC: mmio.Mmio(packed struct(u32) {
    -                ///  reg_rtc_mem_crc_res
    -                RTC_MEM_CRC_RES: u32,
    -            }),
    -            ///  eco register
    -            REDUNDANT_ECO_CTRL: mmio.Mmio(packed struct(u32) {
    -                ///  reg_redundant_eco_drive
    -                REDUNDANT_ECO_DRIVE: u1,
    -                ///  reg_redundant_eco_result
    -                REDUNDANT_ECO_RESULT: u1,
    -                padding: u30,
    -            }),
    -            ///  clock gating register
    -            CLOCK_GATE: mmio.Mmio(packed struct(u32) {
    -                ///  reg_clk_en
    -                CLK_EN: u1,
    -                padding: u31,
    -            }),
    -            ///  system clock config register
    -            SYSCLK_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  reg_pre_div_cnt
    -                PRE_DIV_CNT: u10,
    -                ///  reg_soc_clk_sel
    -                SOC_CLK_SEL: u2,
    -                ///  reg_clk_xtal_freq
    -                CLK_XTAL_FREQ: u7,
    -                ///  reg_clk_div_en
    -                CLK_DIV_EN: u1,
    -                padding: u12,
    -            }),
    -            ///  mem pvt register
    -            MEM_PVT: mmio.Mmio(packed struct(u32) {
    -                ///  reg_mem_path_len
    -                MEM_PATH_LEN: u4,
    -                ///  reg_mem_err_cnt_clr
    -                MEM_ERR_CNT_CLR: u1,
    -                ///  reg_mem_pvt_monitor_en
    -                MONITOR_EN: u1,
    -                ///  reg_mem_timing_err_cnt
    -                MEM_TIMING_ERR_CNT: u16,
    -                ///  reg_mem_vt_sel
    -                MEM_VT_SEL: u2,
    -                padding: u8,
    -            }),
    -            ///  mem pvt register
    -            COMB_PVT_LVT_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  reg_comb_path_len_lvt
    -                COMB_PATH_LEN_LVT: u5,
    -                ///  reg_comb_err_cnt_clr_lvt
    -                COMB_ERR_CNT_CLR_LVT: u1,
    -                ///  reg_comb_pvt_monitor_en_lvt
    -                COMB_PVT_MONITOR_EN_LVT: u1,
    -                padding: u25,
    -            }),
    -            ///  mem pvt register
    -            COMB_PVT_NVT_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  reg_comb_path_len_nvt
    -                COMB_PATH_LEN_NVT: u5,
    -                ///  reg_comb_err_cnt_clr_nvt
    -                COMB_ERR_CNT_CLR_NVT: u1,
    -                ///  reg_comb_pvt_monitor_en_nvt
    -                COMB_PVT_MONITOR_EN_NVT: u1,
    -                padding: u25,
    -            }),
    -            ///  mem pvt register
    -            COMB_PVT_HVT_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  reg_comb_path_len_hvt
    -                COMB_PATH_LEN_HVT: u5,
    -                ///  reg_comb_err_cnt_clr_hvt
    -                COMB_ERR_CNT_CLR_HVT: u1,
    -                ///  reg_comb_pvt_monitor_en_hvt
    -                COMB_PVT_MONITOR_EN_HVT: u1,
    -                padding: u25,
    -            }),
    -            ///  mem pvt register
    -            COMB_PVT_ERR_LVT_SITE0: mmio.Mmio(packed struct(u32) {
    -                ///  reg_comb_timing_err_cnt_lvt_site0
    -                COMB_TIMING_ERR_CNT_LVT_SITE0: u16,
    -                padding: u16,
    -            }),
    -            ///  mem pvt register
    -            COMB_PVT_ERR_NVT_SITE0: mmio.Mmio(packed struct(u32) {
    -                ///  reg_comb_timing_err_cnt_nvt_site0
    -                COMB_TIMING_ERR_CNT_NVT_SITE0: u16,
    -                padding: u16,
    -            }),
    -            ///  mem pvt register
    -            COMB_PVT_ERR_HVT_SITE0: mmio.Mmio(packed struct(u32) {
    -                ///  reg_comb_timing_err_cnt_hvt_site0
    -                COMB_TIMING_ERR_CNT_HVT_SITE0: u16,
    -                padding: u16,
    -            }),
    -            ///  mem pvt register
    -            COMB_PVT_ERR_LVT_SITE1: mmio.Mmio(packed struct(u32) {
    -                ///  reg_comb_timing_err_cnt_lvt_site1
    -                COMB_TIMING_ERR_CNT_LVT_SITE1: u16,
    -                padding: u16,
    -            }),
    -            ///  mem pvt register
    -            COMB_PVT_ERR_NVT_SITE1: mmio.Mmio(packed struct(u32) {
    -                ///  reg_comb_timing_err_cnt_nvt_site1
    -                COMB_TIMING_ERR_CNT_NVT_SITE1: u16,
    -                padding: u16,
    -            }),
    -            ///  mem pvt register
    -            COMB_PVT_ERR_HVT_SITE1: mmio.Mmio(packed struct(u32) {
    -                ///  reg_comb_timing_err_cnt_hvt_site1
    -                COMB_TIMING_ERR_CNT_HVT_SITE1: u16,
    -                padding: u16,
    -            }),
    -            ///  mem pvt register
    -            COMB_PVT_ERR_LVT_SITE2: mmio.Mmio(packed struct(u32) {
    -                ///  reg_comb_timing_err_cnt_lvt_site2
    -                COMB_TIMING_ERR_CNT_LVT_SITE2: u16,
    -                padding: u16,
    -            }),
    -            ///  mem pvt register
    -            COMB_PVT_ERR_NVT_SITE2: mmio.Mmio(packed struct(u32) {
    -                ///  reg_comb_timing_err_cnt_nvt_site2
    -                COMB_TIMING_ERR_CNT_NVT_SITE2: u16,
    -                padding: u16,
    -            }),
    -            ///  mem pvt register
    -            COMB_PVT_ERR_HVT_SITE2: mmio.Mmio(packed struct(u32) {
    -                ///  reg_comb_timing_err_cnt_hvt_site2
    -                COMB_TIMING_ERR_CNT_HVT_SITE2: u16,
    -                padding: u16,
    -            }),
    -            ///  mem pvt register
    -            COMB_PVT_ERR_LVT_SITE3: mmio.Mmio(packed struct(u32) {
    -                ///  reg_comb_timing_err_cnt_lvt_site3
    -                COMB_TIMING_ERR_CNT_LVT_SITE3: u16,
    -                padding: u16,
    -            }),
    -            ///  mem pvt register
    -            COMB_PVT_ERR_NVT_SITE3: mmio.Mmio(packed struct(u32) {
    -                ///  reg_comb_timing_err_cnt_nvt_site3
    -                COMB_TIMING_ERR_CNT_NVT_SITE3: u16,
    -                padding: u16,
    -            }),
    -            ///  mem pvt register
    -            COMB_PVT_ERR_HVT_SITE3: mmio.Mmio(packed struct(u32) {
    -                ///  reg_comb_timing_err_cnt_hvt_site3
    -                COMB_TIMING_ERR_CNT_HVT_SITE3: u16,
    -                padding: u16,
    -            }),
    -            reserved4092: [3936]u8,
    -            ///  Version register
    -            SYSTEM_REG_DATE: mmio.Mmio(packed struct(u32) {
    -                ///  reg_system_reg_date
    -                SYSTEM_REG_DATE: u28,
    -                padding: u4,
    -            }),
    -        };
    -
    -        ///  System Timer
    -        pub const SYSTIMER = extern struct {
    -            ///  SYSTIMER_CONF.
    -            CONF: mmio.Mmio(packed struct(u32) {
    -                ///  systimer clock force on
    -                SYSTIMER_CLK_FO: u1,
    -                reserved22: u21,
    -                ///  target2 work enable
    -                TARGET2_WORK_EN: u1,
    -                ///  target1 work enable
    -                TARGET1_WORK_EN: u1,
    -                ///  target0 work enable
    -                TARGET0_WORK_EN: u1,
    -                ///  If timer unit1 is stalled when core1 stalled
    -                TIMER_UNIT1_CORE1_STALL_EN: u1,
    -                ///  If timer unit1 is stalled when core0 stalled
    -                TIMER_UNIT1_CORE0_STALL_EN: u1,
    -                ///  If timer unit0 is stalled when core1 stalled
    -                TIMER_UNIT0_CORE1_STALL_EN: u1,
    -                ///  If timer unit0 is stalled when core0 stalled
    -                TIMER_UNIT0_CORE0_STALL_EN: u1,
    -                ///  timer unit1 work enable
    -                TIMER_UNIT1_WORK_EN: u1,
    -                ///  timer unit0 work enable
    -                TIMER_UNIT0_WORK_EN: u1,
    -                ///  register file clk gating
    -                CLK_EN: u1,
    -            }),
    -            ///  SYSTIMER_UNIT0_OP.
    -            UNIT0_OP: mmio.Mmio(packed struct(u32) {
    -                reserved29: u29,
    -                ///  reg_timer_unit0_value_valid
    -                TIMER_UNIT0_VALUE_VALID: u1,
    -                ///  update timer_unit0
    -                TIMER_UNIT0_UPDATE: u1,
    -                padding: u1,
    -            }),
    -            ///  SYSTIMER_UNIT1_OP.
    -            UNIT1_OP: mmio.Mmio(packed struct(u32) {
    -                reserved29: u29,
    -                ///  timer value is sync and valid
    -                TIMER_UNIT1_VALUE_VALID: u1,
    -                ///  update timer unit1
    -                TIMER_UNIT1_UPDATE: u1,
    -                padding: u1,
    -            }),
    -            ///  SYSTIMER_UNIT0_LOAD_HI.
    -            UNIT0_LOAD_HI: mmio.Mmio(packed struct(u32) {
    -                ///  timer unit0 load high 32 bit
    -                TIMER_UNIT0_LOAD_HI: u20,
    -                padding: u12,
    -            }),
    -            ///  SYSTIMER_UNIT0_LOAD_LO.
    -            UNIT0_LOAD_LO: mmio.Mmio(packed struct(u32) {
    -                ///  timer unit0 load low 32 bit
    -                TIMER_UNIT0_LOAD_LO: u32,
    -            }),
    -            ///  SYSTIMER_UNIT1_LOAD_HI.
    -            UNIT1_LOAD_HI: mmio.Mmio(packed struct(u32) {
    -                ///  timer unit1 load high 32 bit
    -                TIMER_UNIT1_LOAD_HI: u20,
    -                padding: u12,
    -            }),
    -            ///  SYSTIMER_UNIT1_LOAD_LO.
    -            UNIT1_LOAD_LO: mmio.Mmio(packed struct(u32) {
    -                ///  timer unit1 load low 32 bit
    -                TIMER_UNIT1_LOAD_LO: u32,
    -            }),
    -            ///  SYSTIMER_TARGET0_HI.
    -            TARGET0_HI: mmio.Mmio(packed struct(u32) {
    -                ///  timer taget0 high 32 bit
    -                TIMER_TARGET0_HI: u20,
    -                padding: u12,
    -            }),
    -            ///  SYSTIMER_TARGET0_LO.
    -            TARGET0_LO: mmio.Mmio(packed struct(u32) {
    -                ///  timer taget0 low 32 bit
    -                TIMER_TARGET0_LO: u32,
    -            }),
    -            ///  SYSTIMER_TARGET1_HI.
    -            TARGET1_HI: mmio.Mmio(packed struct(u32) {
    -                ///  timer taget1 high 32 bit
    -                TIMER_TARGET1_HI: u20,
    -                padding: u12,
    -            }),
    -            ///  SYSTIMER_TARGET1_LO.
    -            TARGET1_LO: mmio.Mmio(packed struct(u32) {
    -                ///  timer taget1 low 32 bit
    -                TIMER_TARGET1_LO: u32,
    -            }),
    -            ///  SYSTIMER_TARGET2_HI.
    -            TARGET2_HI: mmio.Mmio(packed struct(u32) {
    -                ///  timer taget2 high 32 bit
    -                TIMER_TARGET2_HI: u20,
    -                padding: u12,
    -            }),
    -            ///  SYSTIMER_TARGET2_LO.
    -            TARGET2_LO: mmio.Mmio(packed struct(u32) {
    -                ///  timer taget2 low 32 bit
    -                TIMER_TARGET2_LO: u32,
    -            }),
    -            ///  SYSTIMER_TARGET0_CONF.
    -            TARGET0_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  target0 period
    -                TARGET0_PERIOD: u26,
    -                reserved30: u4,
    -                ///  Set target0 to period mode
    -                TARGET0_PERIOD_MODE: u1,
    -                ///  select which unit to compare
    -                TARGET0_TIMER_UNIT_SEL: u1,
    -            }),
    -            ///  SYSTIMER_TARGET1_CONF.
    -            TARGET1_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  target1 period
    -                TARGET1_PERIOD: u26,
    -                reserved30: u4,
    -                ///  Set target1 to period mode
    -                TARGET1_PERIOD_MODE: u1,
    -                ///  select which unit to compare
    -                TARGET1_TIMER_UNIT_SEL: u1,
    -            }),
    -            ///  SYSTIMER_TARGET2_CONF.
    -            TARGET2_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  target2 period
    -                TARGET2_PERIOD: u26,
    -                reserved30: u4,
    -                ///  Set target2 to period mode
    -                TARGET2_PERIOD_MODE: u1,
    -                ///  select which unit to compare
    -                TARGET2_TIMER_UNIT_SEL: u1,
    -            }),
    -            ///  SYSTIMER_UNIT0_VALUE_HI.
    -            UNIT0_VALUE_HI: mmio.Mmio(packed struct(u32) {
    -                ///  timer read value high 32bit
    -                TIMER_UNIT0_VALUE_HI: u20,
    -                padding: u12,
    -            }),
    -            ///  SYSTIMER_UNIT0_VALUE_LO.
    -            UNIT0_VALUE_LO: mmio.Mmio(packed struct(u32) {
    -                ///  timer read value low 32bit
    -                TIMER_UNIT0_VALUE_LO: u32,
    -            }),
    -            ///  SYSTIMER_UNIT1_VALUE_HI.
    -            UNIT1_VALUE_HI: mmio.Mmio(packed struct(u32) {
    -                ///  timer read value high 32bit
    -                TIMER_UNIT1_VALUE_HI: u20,
    -                padding: u12,
    -            }),
    -            ///  SYSTIMER_UNIT1_VALUE_LO.
    -            UNIT1_VALUE_LO: mmio.Mmio(packed struct(u32) {
    -                ///  timer read value low 32bit
    -                TIMER_UNIT1_VALUE_LO: u32,
    -            }),
    -            ///  SYSTIMER_COMP0_LOAD.
    -            COMP0_LOAD: mmio.Mmio(packed struct(u32) {
    -                ///  timer comp0 load value
    -                TIMER_COMP0_LOAD: u1,
    -                padding: u31,
    -            }),
    -            ///  SYSTIMER_COMP1_LOAD.
    -            COMP1_LOAD: mmio.Mmio(packed struct(u32) {
    -                ///  timer comp1 load value
    -                TIMER_COMP1_LOAD: u1,
    -                padding: u31,
    -            }),
    -            ///  SYSTIMER_COMP2_LOAD.
    -            COMP2_LOAD: mmio.Mmio(packed struct(u32) {
    -                ///  timer comp2 load value
    -                TIMER_COMP2_LOAD: u1,
    -                padding: u31,
    -            }),
    -            ///  SYSTIMER_UNIT0_LOAD.
    -            UNIT0_LOAD: mmio.Mmio(packed struct(u32) {
    -                ///  timer unit0 load value
    -                TIMER_UNIT0_LOAD: u1,
    -                padding: u31,
    -            }),
    -            ///  SYSTIMER_UNIT1_LOAD.
    -            UNIT1_LOAD: mmio.Mmio(packed struct(u32) {
    -                ///  timer unit1 load value
    -                TIMER_UNIT1_LOAD: u1,
    -                padding: u31,
    -            }),
    -            ///  SYSTIMER_INT_ENA.
    -            INT_ENA: mmio.Mmio(packed struct(u32) {
    -                ///  interupt0 enable
    -                TARGET0_INT_ENA: u1,
    -                ///  interupt1 enable
    -                TARGET1_INT_ENA: u1,
    -                ///  interupt2 enable
    -                TARGET2_INT_ENA: u1,
    -                padding: u29,
    -            }),
    -            ///  SYSTIMER_INT_RAW.
    -            INT_RAW: mmio.Mmio(packed struct(u32) {
    -                ///  interupt0 raw
    -                TARGET0_INT_RAW: u1,
    -                ///  interupt1 raw
    -                TARGET1_INT_RAW: u1,
    -                ///  interupt2 raw
    -                TARGET2_INT_RAW: u1,
    -                padding: u29,
    -            }),
    -            ///  SYSTIMER_INT_CLR.
    -            INT_CLR: mmio.Mmio(packed struct(u32) {
    -                ///  interupt0 clear
    -                TARGET0_INT_CLR: u1,
    -                ///  interupt1 clear
    -                TARGET1_INT_CLR: u1,
    -                ///  interupt2 clear
    -                TARGET2_INT_CLR: u1,
    -                padding: u29,
    -            }),
    -            ///  SYSTIMER_INT_ST.
    -            INT_ST: mmio.Mmio(packed struct(u32) {
    -                ///  reg_target0_int_st
    -                TARGET0_INT_ST: u1,
    -                ///  reg_target1_int_st
    -                TARGET1_INT_ST: u1,
    -                ///  reg_target2_int_st
    -                TARGET2_INT_ST: u1,
    -                padding: u29,
    -            }),
    -            reserved252: [136]u8,
    -            ///  SYSTIMER_DATE.
    -            DATE: mmio.Mmio(packed struct(u32) {
    -                ///  reg_date
    -                DATE: u32,
    -            }),
    -        };
    -
    -        ///  Timer Group
    -        pub const TIMG0 = extern struct {
    -            ///  TIMG_T0CONFIG_REG.
    -            T0CONFIG: mmio.Mmio(packed struct(u32) {
    -                reserved9: u9,
    -                ///  reg_t0_use_xtal.
    -                T0_USE_XTAL: u1,
    -                ///  reg_t0_alarm_en.
    -                T0_ALARM_EN: u1,
    -                reserved12: u1,
    -                ///  reg_t0_divcnt_rst.
    -                T0_DIVCNT_RST: u1,
    -                ///  reg_t0_divider.
    -                T0_DIVIDER: u16,
    -                ///  reg_t0_autoreload.
    -                T0_AUTORELOAD: u1,
    -                ///  reg_t0_increase.
    -                T0_INCREASE: u1,
    -                ///  reg_t0_en.
    -                T0_EN: u1,
    -            }),
    -            ///  TIMG_T0LO_REG.
    -            T0LO: mmio.Mmio(packed struct(u32) {
    -                ///  t0_lo
    -                T0_LO: u32,
    -            }),
    -            ///  TIMG_T0HI_REG.
    -            T0HI: mmio.Mmio(packed struct(u32) {
    -                ///  t0_hi
    -                T0_HI: u22,
    -                padding: u10,
    -            }),
    -            ///  TIMG_T0UPDATE_REG.
    -            T0UPDATE: mmio.Mmio(packed struct(u32) {
    -                reserved31: u31,
    -                ///  t0_update
    -                T0_UPDATE: u1,
    -            }),
    -            ///  TIMG_T0ALARMLO_REG.
    -            T0ALARMLO: mmio.Mmio(packed struct(u32) {
    -                ///  reg_t0_alarm_lo.
    -                T0_ALARM_LO: u32,
    -            }),
    -            ///  TIMG_T0ALARMHI_REG.
    -            T0ALARMHI: mmio.Mmio(packed struct(u32) {
    -                ///  reg_t0_alarm_hi.
    -                T0_ALARM_HI: u22,
    -                padding: u10,
    -            }),
    -            ///  TIMG_T0LOADLO_REG.
    -            T0LOADLO: mmio.Mmio(packed struct(u32) {
    -                ///  reg_t0_load_lo.
    -                T0_LOAD_LO: u32,
    -            }),
    -            ///  TIMG_T0LOADHI_REG.
    -            T0LOADHI: mmio.Mmio(packed struct(u32) {
    -                ///  reg_t0_load_hi.
    -                T0_LOAD_HI: u22,
    -                padding: u10,
    -            }),
    -            ///  TIMG_T0LOAD_REG.
    -            T0LOAD: mmio.Mmio(packed struct(u32) {
    -                ///  t0_load
    -                T0_LOAD: u32,
    -            }),
    -            reserved72: [36]u8,
    -            ///  TIMG_WDTCONFIG0_REG.
    -            WDTCONFIG0: mmio.Mmio(packed struct(u32) {
    -                reserved12: u12,
    -                ///  reg_wdt_appcpu_reset_en.
    -                WDT_APPCPU_RESET_EN: u1,
    -                ///  reg_wdt_procpu_reset_en.
    -                WDT_PROCPU_RESET_EN: u1,
    -                ///  reg_wdt_flashboot_mod_en.
    -                WDT_FLASHBOOT_MOD_EN: u1,
    -                ///  reg_wdt_sys_reset_length.
    -                WDT_SYS_RESET_LENGTH: u3,
    -                ///  reg_wdt_cpu_reset_length.
    -                WDT_CPU_RESET_LENGTH: u3,
    -                ///  reg_wdt_use_xtal.
    -                WDT_USE_XTAL: u1,
    -                ///  reg_wdt_conf_update_en.
    -                WDT_CONF_UPDATE_EN: u1,
    -                ///  reg_wdt_stg3.
    -                WDT_STG3: u2,
    -                ///  reg_wdt_stg2.
    -                WDT_STG2: u2,
    -                ///  reg_wdt_stg1.
    -                WDT_STG1: u2,
    -                ///  reg_wdt_stg0.
    -                WDT_STG0: u2,
    -                ///  reg_wdt_en.
    -                WDT_EN: u1,
    -            }),
    -            ///  TIMG_WDTCONFIG1_REG.
    -            WDTCONFIG1: mmio.Mmio(packed struct(u32) {
    -                ///  reg_wdt_divcnt_rst.
    -                WDT_DIVCNT_RST: u1,
    -                reserved16: u15,
    -                ///  reg_wdt_clk_prescale.
    -                WDT_CLK_PRESCALE: u16,
    -            }),
    -            ///  TIMG_WDTCONFIG2_REG.
    -            WDTCONFIG2: mmio.Mmio(packed struct(u32) {
    -                ///  reg_wdt_stg0_hold.
    -                WDT_STG0_HOLD: u32,
    -            }),
    -            ///  TIMG_WDTCONFIG3_REG.
    -            WDTCONFIG3: mmio.Mmio(packed struct(u32) {
    -                ///  reg_wdt_stg1_hold.
    -                WDT_STG1_HOLD: u32,
    -            }),
    -            ///  TIMG_WDTCONFIG4_REG.
    -            WDTCONFIG4: mmio.Mmio(packed struct(u32) {
    -                ///  reg_wdt_stg2_hold.
    -                WDT_STG2_HOLD: u32,
    -            }),
    -            ///  TIMG_WDTCONFIG5_REG.
    -            WDTCONFIG5: mmio.Mmio(packed struct(u32) {
    -                ///  reg_wdt_stg3_hold.
    -                WDT_STG3_HOLD: u32,
    -            }),
    -            ///  TIMG_WDTFEED_REG.
    -            WDTFEED: mmio.Mmio(packed struct(u32) {
    -                ///  wdt_feed
    -                WDT_FEED: u32,
    -            }),
    -            ///  TIMG_WDTWPROTECT_REG.
    -            WDTWPROTECT: mmio.Mmio(packed struct(u32) {
    -                ///  reg_wdt_wkey.
    -                WDT_WKEY: u32,
    -            }),
    -            ///  TIMG_RTCCALICFG_REG.
    -            RTCCALICFG: mmio.Mmio(packed struct(u32) {
    -                reserved12: u12,
    -                ///  reg_rtc_cali_start_cycling.
    -                RTC_CALI_START_CYCLING: u1,
    -                ///  reg_rtc_cali_clk_sel.0:rtcslowclock.1:clk_80m.2:xtal_32k
    -                RTC_CALI_CLK_SEL: u2,
    -                ///  rtc_cali_rdy
    -                RTC_CALI_RDY: u1,
    -                ///  reg_rtc_cali_max.
    -                RTC_CALI_MAX: u15,
    -                ///  reg_rtc_cali_start.
    -                RTC_CALI_START: u1,
    -            }),
    -            ///  TIMG_RTCCALICFG1_REG.
    -            RTCCALICFG1: mmio.Mmio(packed struct(u32) {
    -                ///  rtc_cali_cycling_data_vld
    -                RTC_CALI_CYCLING_DATA_VLD: u1,
    -                reserved7: u6,
    -                ///  rtc_cali_value
    -                RTC_CALI_VALUE: u25,
    -            }),
    -            ///  INT_ENA_TIMG_REG
    -            INT_ENA_TIMERS: mmio.Mmio(packed struct(u32) {
    -                ///  t0_int_ena
    -                T0_INT_ENA: u1,
    -                ///  wdt_int_ena
    -                WDT_INT_ENA: u1,
    -                padding: u30,
    -            }),
    -            ///  INT_RAW_TIMG_REG
    -            INT_RAW_TIMERS: mmio.Mmio(packed struct(u32) {
    -                ///  t0_int_raw
    -                T0_INT_RAW: u1,
    -                ///  wdt_int_raw
    -                WDT_INT_RAW: u1,
    -                padding: u30,
    -            }),
    -            ///  INT_ST_TIMG_REG
    -            INT_ST_TIMERS: mmio.Mmio(packed struct(u32) {
    -                ///  t0_int_st
    -                T0_INT_ST: u1,
    -                ///  wdt_int_st
    -                WDT_INT_ST: u1,
    -                padding: u30,
    -            }),
    -            ///  INT_CLR_TIMG_REG
    -            INT_CLR_TIMERS: mmio.Mmio(packed struct(u32) {
    -                ///  t0_int_clr
    -                T0_INT_CLR: u1,
    -                ///  wdt_int_clr
    -                WDT_INT_CLR: u1,
    -                padding: u30,
    -            }),
    -            ///  TIMG_RTCCALICFG2_REG.
    -            RTCCALICFG2: mmio.Mmio(packed struct(u32) {
    -                ///  timeoutindicator
    -                RTC_CALI_TIMEOUT: u1,
    -                reserved3: u2,
    -                ///  reg_rtc_cali_timeout_rst_cnt.Cyclesthatreleasecalibrationtimeoutreset
    -                RTC_CALI_TIMEOUT_RST_CNT: u4,
    -                ///  reg_rtc_cali_timeout_thres.timeoutifcalivaluecountsoverthreshold
    -                RTC_CALI_TIMEOUT_THRES: u25,
    -            }),
    -            reserved248: [116]u8,
    -            ///  TIMG_NTIMG_DATE_REG.
    -            NTIMG_DATE: mmio.Mmio(packed struct(u32) {
    -                ///  reg_ntimers_date.
    -                NTIMGS_DATE: u28,
    -                padding: u4,
    -            }),
    -            ///  TIMG_REGCLK_REG.
    -            REGCLK: mmio.Mmio(packed struct(u32) {
    -                reserved29: u29,
    -                ///  reg_wdt_clk_is_active.
    -                WDT_CLK_IS_ACTIVE: u1,
    -                ///  reg_timer_clk_is_active.
    -                TIMER_CLK_IS_ACTIVE: u1,
    -                ///  reg_clk_en.
    -                CLK_EN: u1,
    -            }),
    -        };
    -
    -        ///  XTS-AES-128 Flash Encryption
    -        pub const XTS_AES = extern struct {
    -            ///  The memory that stores plaintext
    -            PLAIN_MEM: [16]u8,
    -            reserved64: [48]u8,
    -            ///  XTS-AES line-size register
    -            LINESIZE: mmio.Mmio(packed struct(u32) {
    -                ///  This bit stores the line size parameter. 0: 16Byte, 1: 32Byte.
    -                LINESIZE: u1,
    -                padding: u31,
    -            }),
    -            ///  XTS-AES destination register
    -            DESTINATION: mmio.Mmio(packed struct(u32) {
    -                ///  This bit stores the destination. 0: flash(default). 1: reserved.
    -                DESTINATION: u1,
    -                padding: u31,
    -            }),
    -            ///  XTS-AES physical address register
    -            PHYSICAL_ADDRESS: mmio.Mmio(packed struct(u32) {
    -                ///  Those bits stores the physical address. If linesize is 16-byte, the physical address should be aligned of 16 bytes. If linesize is 32-byte, the physical address should be aligned of 32 bytes.
    -                PHYSICAL_ADDRESS: u30,
    -                padding: u2,
    -            }),
    -            ///  XTS-AES trigger register
    -            TRIGGER: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to start manual encryption calculation
    -                TRIGGER: u1,
    -                padding: u31,
    -            }),
    -            ///  XTS-AES release register
    -            RELEASE: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to release the manual encrypted result, after that the result will be visible to spi
    -                RELEASE: u1,
    -                padding: u31,
    -            }),
    -            ///  XTS-AES destroy register
    -            DESTROY: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to destroy XTS-AES result.
    -                DESTROY: u1,
    -                padding: u31,
    -            }),
    -            ///  XTS-AES status register
    -            STATE: mmio.Mmio(packed struct(u32) {
    -                ///  Those bits shows XTS-AES status. 0=IDLE, 1=WORK, 2=RELEASE, 3=USE. IDLE means that XTS-AES is idle. WORK means that XTS-AES is busy with calculation. RELEASE means the encrypted result is generated but not visible to mspi. USE means that the encrypted result is visible to mspi.
    -                STATE: u2,
    -                padding: u30,
    -            }),
    -            ///  XTS-AES version control register
    -            DATE: mmio.Mmio(packed struct(u32) {
    -                ///  Those bits stores the version information of XTS-AES.
    -                DATE: u30,
    -                padding: u2,
    -            }),
    -        };
    -
    -        ///  Two-Wire Automotive Interface
    -        pub const TWAI = extern struct {
    -            ///  Mode Register
    -            MODE: mmio.Mmio(packed struct(u32) {
    -                ///  This bit is used to configure the operating mode of the TWAI Controller. 1: Reset mode; 0: Operating mode.
    -                RESET_MODE: u1,
    -                ///  1: Listen only mode. In this mode the nodes will only receive messages from the bus, without generating the acknowledge signal nor updating the RX error counter.
    -                LISTEN_ONLY_MODE: u1,
    -                ///  1: Self test mode. In this mode the TX nodes can perform a successful transmission without receiving the acknowledge signal. This mode is often used to test a single node with the self reception request command.
    -                SELF_TEST_MODE: u1,
    -                ///  This bit is used to configure the filter mode. 0: Dual filter mode; 1: Single filter mode.
    -                RX_FILTER_MODE: u1,
    -                padding: u28,
    -            }),
    -            ///  Command Register
    -            CMD: mmio.Mmio(packed struct(u32) {
    -                ///  Set the bit to 1 to allow the driving nodes start transmission.
    -                TX_REQ: u1,
    -                ///  Set the bit to 1 to cancel a pending transmission request.
    -                ABORT_TX: u1,
    -                ///  Set the bit to 1 to release the RX buffer.
    -                RELEASE_BUF: u1,
    -                ///  Set the bit to 1 to clear the data overrun status bit.
    -                CLR_OVERRUN: u1,
    -                ///  Self reception request command. Set the bit to 1 to allow a message be transmitted and received simultaneously.
    -                SELF_RX_REQ: u1,
    -                padding: u27,
    -            }),
    -            ///  Status register
    -            STATUS: mmio.Mmio(packed struct(u32) {
    -                ///  1: The data in the RX buffer is not empty, with at least one received data packet.
    -                RX_BUF_ST: u1,
    -                ///  1: The RX FIFO is full and data overrun has occurred.
    -                OVERRUN_ST: u1,
    -                ///  1: The TX buffer is empty, the CPU may write a message into it.
    -                TX_BUF_ST: u1,
    -                ///  1: The TWAI controller has successfully received a packet from the bus.
    -                TX_COMPLETE: u1,
    -                ///  1: The TWAI Controller is receiving a message from the bus.
    -                RX_ST: u1,
    -                ///  1: The TWAI Controller is transmitting a message to the bus.
    -                TX_ST: u1,
    -                ///  1: At least one of the RX/TX error counter has reached or exceeded the value set in register TWAI_ERR_WARNING_LIMIT_REG.
    -                ERR_ST: u1,
    -                ///  1: In bus-off status, the TWAI Controller is no longer involved in bus activities.
    -                BUS_OFF_ST: u1,
    -                ///  This bit reflects whether the data packet in the RX FIFO is complete. 1: The current packet is missing; 0: The current packet is complete
    -                MISS_ST: u1,
    -                padding: u23,
    -            }),
    -            ///  Interrupt Register
    -            INT_RAW: mmio.Mmio(packed struct(u32) {
    -                ///  Receive interrupt. If this bit is set to 1, it indicates there are messages to be handled in the RX FIFO.
    -                RX_INT_ST: u1,
    -                ///  Transmit interrupt. If this bit is set to 1, it indicates the message transmitting mis- sion is finished and a new transmission is able to execute.
    -                TX_INT_ST: u1,
    -                ///  Error warning interrupt. If this bit is set to 1, it indicates the error status signal and the bus-off status signal of Status register have changed (e.g., switched from 0 to 1 or from 1 to 0).
    -                ERR_WARN_INT_ST: u1,
    -                ///  Data overrun interrupt. If this bit is set to 1, it indicates a data overrun interrupt is generated in the RX FIFO.
    -                OVERRUN_INT_ST: u1,
    -                reserved5: u1,
    -                ///  Error passive interrupt. If this bit is set to 1, it indicates the TWAI Controller is switched between error active status and error passive status due to the change of error counters.
    -                ERR_PASSIVE_INT_ST: u1,
    -                ///  Arbitration lost interrupt. If this bit is set to 1, it indicates an arbitration lost interrupt is generated.
    -                ARB_LOST_INT_ST: u1,
    -                ///  Error interrupt. If this bit is set to 1, it indicates an error is detected on the bus.
    -                BUS_ERR_INT_ST: u1,
    -                padding: u24,
    -            }),
    -            ///  Interrupt Enable Register
    -            INT_ENA: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to 1 to enable receive interrupt.
    -                RX_INT_ENA: u1,
    -                ///  Set this bit to 1 to enable transmit interrupt.
    -                TX_INT_ENA: u1,
    -                ///  Set this bit to 1 to enable error warning interrupt.
    -                ERR_WARN_INT_ENA: u1,
    -                ///  Set this bit to 1 to enable data overrun interrupt.
    -                OVERRUN_INT_ENA: u1,
    -                reserved5: u1,
    -                ///  Set this bit to 1 to enable error passive interrupt.
    -                ERR_PASSIVE_INT_ENA: u1,
    -                ///  Set this bit to 1 to enable arbitration lost interrupt.
    -                ARB_LOST_INT_ENA: u1,
    -                ///  Set this bit to 1 to enable error interrupt.
    -                BUS_ERR_INT_ENA: u1,
    -                padding: u24,
    -            }),
    -            reserved24: [4]u8,
    -            ///  Bus Timing Register 0
    -            BUS_TIMING_0: mmio.Mmio(packed struct(u32) {
    -                ///  Baud Rate Prescaler, determines the frequency dividing ratio.
    -                BAUD_PRESC: u13,
    -                reserved14: u1,
    -                ///  Synchronization Jump Width (SJW), 1 \verb+~+ 14 Tq wide.
    -                SYNC_JUMP_WIDTH: u2,
    -                padding: u16,
    -            }),
    -            ///  Bus Timing Register 1
    -            BUS_TIMING_1: mmio.Mmio(packed struct(u32) {
    -                ///  The width of PBS1.
    -                TIME_SEG1: u4,
    -                ///  The width of PBS2.
    -                TIME_SEG2: u3,
    -                ///  The number of sample points. 0: the bus is sampled once; 1: the bus is sampled three times
    -                TIME_SAMP: u1,
    -                padding: u24,
    -            }),
    -            reserved44: [12]u8,
    -            ///  Arbitration Lost Capture Register
    -            ARB_LOST_CAP: mmio.Mmio(packed struct(u32) {
    -                ///  This register contains information about the bit position of lost arbitration.
    -                ARB_LOST_CAP: u5,
    -                padding: u27,
    -            }),
    -            ///  Error Code Capture Register
    -            ERR_CODE_CAP: mmio.Mmio(packed struct(u32) {
    -                ///  This register contains information about the location of errors, see Table 181 for details.
    -                ECC_SEGMENT: u5,
    -                ///  This register contains information about transmission direction of the node when error occurs. 1: Error occurs when receiving a message; 0: Error occurs when transmitting a message
    -                ECC_DIRECTION: u1,
    -                ///  This register contains information about error types: 00: bit error; 01: form error; 10: stuff error; 11: other type of error
    -                ECC_TYPE: u2,
    -                padding: u24,
    -            }),
    -            ///  Error Warning Limit Register
    -            ERR_WARNING_LIMIT: mmio.Mmio(packed struct(u32) {
    -                ///  Error warning threshold. In the case when any of a error counter value exceeds the threshold, or all the error counter values are below the threshold, an error warning interrupt will be triggered (given the enable signal is valid).
    -                ERR_WARNING_LIMIT: u8,
    -                padding: u24,
    -            }),
    -            ///  Receive Error Counter Register
    -            RX_ERR_CNT: mmio.Mmio(packed struct(u32) {
    -                ///  The RX error counter register, reflects value changes under reception status.
    -                RX_ERR_CNT: u8,
    -                padding: u24,
    -            }),
    -            ///  Transmit Error Counter Register
    -            TX_ERR_CNT: mmio.Mmio(packed struct(u32) {
    -                ///  The TX error counter register, reflects value changes under transmission status.
    -                TX_ERR_CNT: u8,
    -                padding: u24,
    -            }),
    -            ///  Data register 0
    -            DATA_0: mmio.Mmio(packed struct(u32) {
    -                ///  In reset mode, it is acceptance code register 0 with R/W Permission. In operation mode, it stores the 0th byte information of the data to be transmitted under operating mode.
    -                TX_BYTE_0: u8,
    -                padding: u24,
    -            }),
    -            ///  Data register 1
    -            DATA_1: mmio.Mmio(packed struct(u32) {
    -                ///  In reset mode, it is acceptance code register 1 with R/W Permission. In operation mode, it stores the 1st byte information of the data to be transmitted under operating mode.
    -                TX_BYTE_1: u8,
    -                padding: u24,
    -            }),
    -            ///  Data register 2
    -            DATA_2: mmio.Mmio(packed struct(u32) {
    -                ///  In reset mode, it is acceptance code register 2 with R/W Permission. In operation mode, it stores the 2nd byte information of the data to be transmitted under operating mode.
    -                TX_BYTE_2: u8,
    -                padding: u24,
    -            }),
    -            ///  Data register 3
    -            DATA_3: mmio.Mmio(packed struct(u32) {
    -                ///  In reset mode, it is acceptance code register 3 with R/W Permission. In operation mode, it stores the 3rd byte information of the data to be transmitted under operating mode.
    -                TX_BYTE_3: u8,
    -                padding: u24,
    -            }),
    -            ///  Data register 4
    -            DATA_4: mmio.Mmio(packed struct(u32) {
    -                ///  In reset mode, it is acceptance mask register 0 with R/W Permission. In operation mode, it stores the 4th byte information of the data to be transmitted under operating mode.
    -                TX_BYTE_4: u8,
    -                padding: u24,
    -            }),
    -            ///  Data register 5
    -            DATA_5: mmio.Mmio(packed struct(u32) {
    -                ///  In reset mode, it is acceptance mask register 1 with R/W Permission. In operation mode, it stores the 5th byte information of the data to be transmitted under operating mode.
    -                TX_BYTE_5: u8,
    -                padding: u24,
    -            }),
    -            ///  Data register 6
    -            DATA_6: mmio.Mmio(packed struct(u32) {
    -                ///  In reset mode, it is acceptance mask register 2 with R/W Permission. In operation mode, it stores the 6th byte information of the data to be transmitted under operating mode.
    -                TX_BYTE_6: u8,
    -                padding: u24,
    -            }),
    -            ///  Data register 7
    -            DATA_7: mmio.Mmio(packed struct(u32) {
    -                ///  In reset mode, it is acceptance mask register 3 with R/W Permission. In operation mode, it stores the 7th byte information of the data to be transmitted under operating mode.
    -                TX_BYTE_7: u8,
    -                padding: u24,
    -            }),
    -            ///  Data register 8
    -            DATA_8: mmio.Mmio(packed struct(u32) {
    -                ///  Stored the 8th byte information of the data to be transmitted under operating mode.
    -                TX_BYTE_8: u8,
    -                padding: u24,
    -            }),
    -            ///  Data register 9
    -            DATA_9: mmio.Mmio(packed struct(u32) {
    -                ///  Stored the 9th byte information of the data to be transmitted under operating mode.
    -                TX_BYTE_9: u8,
    -                padding: u24,
    -            }),
    -            ///  Data register 10
    -            DATA_10: mmio.Mmio(packed struct(u32) {
    -                ///  Stored the 10th byte information of the data to be transmitted under operating mode.
    -                TX_BYTE_10: u8,
    -                padding: u24,
    -            }),
    -            ///  Data register 11
    -            DATA_11: mmio.Mmio(packed struct(u32) {
    -                ///  Stored the 11th byte information of the data to be transmitted under operating mode.
    -                TX_BYTE_11: u8,
    -                padding: u24,
    -            }),
    -            ///  Data register 12
    -            DATA_12: mmio.Mmio(packed struct(u32) {
    -                ///  Stored the 12th byte information of the data to be transmitted under operating mode.
    -                TX_BYTE_12: u8,
    -                padding: u24,
    -            }),
    -            ///  Receive Message Counter Register
    -            RX_MESSAGE_CNT: mmio.Mmio(packed struct(u32) {
    -                ///  This register reflects the number of messages available within the RX FIFO.
    -                RX_MESSAGE_COUNTER: u7,
    -                padding: u25,
    -            }),
    -            reserved124: [4]u8,
    -            ///  Clock Divider register
    -            CLOCK_DIVIDER: mmio.Mmio(packed struct(u32) {
    -                ///  These bits are used to configure frequency dividing coefficients of the external CLKOUT pin.
    -                CD: u8,
    -                ///  This bit can be configured under reset mode. 1: Disable the external CLKOUT pin; 0: Enable the external CLKOUT pin
    -                CLOCK_OFF: u1,
    -                padding: u23,
    -            }),
    -        };
    -
    -        ///  UART (Universal Asynchronous Receiver-Transmitter) Controller
    -        pub const UART0 = extern struct {
    -            ///  FIFO data register
    -            FIFO: mmio.Mmio(packed struct(u32) {
    -                ///  UART 0 accesses FIFO via this register.
    -                RXFIFO_RD_BYTE: u8,
    -                padding: u24,
    -            }),
    -            ///  Raw interrupt status
    -            INT_RAW: mmio.Mmio(packed struct(u32) {
    -                ///  This interrupt raw bit turns to high level when receiver receives more data than what rxfifo_full_thrhd specifies.
    -                RXFIFO_FULL_INT_RAW: u1,
    -                ///  This interrupt raw bit turns to high level when the amount of data in Tx-FIFO is less than what txfifo_empty_thrhd specifies .
    -                TXFIFO_EMPTY_INT_RAW: u1,
    -                ///  This interrupt raw bit turns to high level when receiver detects a parity error in the data.
    -                PARITY_ERR_INT_RAW: u1,
    -                ///  This interrupt raw bit turns to high level when receiver detects a data frame error .
    -                FRM_ERR_INT_RAW: u1,
    -                ///  This interrupt raw bit turns to high level when receiver receives more data than the FIFO can store.
    -                RXFIFO_OVF_INT_RAW: u1,
    -                ///  This interrupt raw bit turns to high level when receiver detects the edge change of DSRn signal.
    -                DSR_CHG_INT_RAW: u1,
    -                ///  This interrupt raw bit turns to high level when receiver detects the edge change of CTSn signal.
    -                CTS_CHG_INT_RAW: u1,
    -                ///  This interrupt raw bit turns to high level when receiver detects a 0 after the stop bit.
    -                BRK_DET_INT_RAW: u1,
    -                ///  This interrupt raw bit turns to high level when receiver takes more time than rx_tout_thrhd to receive a byte.
    -                RXFIFO_TOUT_INT_RAW: u1,
    -                ///  This interrupt raw bit turns to high level when receiver recevies Xon char when uart_sw_flow_con_en is set to 1.
    -                SW_XON_INT_RAW: u1,
    -                ///  This interrupt raw bit turns to high level when receiver receives Xoff char when uart_sw_flow_con_en is set to 1.
    -                SW_XOFF_INT_RAW: u1,
    -                ///  This interrupt raw bit turns to high level when receiver detects a glitch in the middle of a start bit.
    -                GLITCH_DET_INT_RAW: u1,
    -                ///  This interrupt raw bit turns to high level when transmitter completes sending NULL characters, after all data in Tx-FIFO are sent.
    -                TX_BRK_DONE_INT_RAW: u1,
    -                ///  This interrupt raw bit turns to high level when transmitter has kept the shortest duration after sending the last data.
    -                TX_BRK_IDLE_DONE_INT_RAW: u1,
    -                ///  This interrupt raw bit turns to high level when transmitter has send out all data in FIFO.
    -                TX_DONE_INT_RAW: u1,
    -                ///  This interrupt raw bit turns to high level when receiver detects a parity error from the echo of transmitter in rs485 mode.
    -                RS485_PARITY_ERR_INT_RAW: u1,
    -                ///  This interrupt raw bit turns to high level when receiver detects a data frame error from the echo of transmitter in rs485 mode.
    -                RS485_FRM_ERR_INT_RAW: u1,
    -                ///  This interrupt raw bit turns to high level when detects a clash between transmitter and receiver in rs485 mode.
    -                RS485_CLASH_INT_RAW: u1,
    -                ///  This interrupt raw bit turns to high level when receiver detects the configured at_cmd char.
    -                AT_CMD_CHAR_DET_INT_RAW: u1,
    -                ///  This interrupt raw bit turns to high level when input rxd edge changes more times than what reg_active_threshold specifies in light sleeping mode.
    -                WAKEUP_INT_RAW: u1,
    -                padding: u12,
    -            }),
    -            ///  Masked interrupt status
    -            INT_ST: mmio.Mmio(packed struct(u32) {
    -                ///  This is the status bit for rxfifo_full_int_raw when rxfifo_full_int_ena is set to 1.
    -                RXFIFO_FULL_INT_ST: u1,
    -                ///  This is the status bit for txfifo_empty_int_raw when txfifo_empty_int_ena is set to 1.
    -                TXFIFO_EMPTY_INT_ST: u1,
    -                ///  This is the status bit for parity_err_int_raw when parity_err_int_ena is set to 1.
    -                PARITY_ERR_INT_ST: u1,
    -                ///  This is the status bit for frm_err_int_raw when frm_err_int_ena is set to 1.
    -                FRM_ERR_INT_ST: u1,
    -                ///  This is the status bit for rxfifo_ovf_int_raw when rxfifo_ovf_int_ena is set to 1.
    -                RXFIFO_OVF_INT_ST: u1,
    -                ///  This is the status bit for dsr_chg_int_raw when dsr_chg_int_ena is set to 1.
    -                DSR_CHG_INT_ST: u1,
    -                ///  This is the status bit for cts_chg_int_raw when cts_chg_int_ena is set to 1.
    -                CTS_CHG_INT_ST: u1,
    -                ///  This is the status bit for brk_det_int_raw when brk_det_int_ena is set to 1.
    -                BRK_DET_INT_ST: u1,
    -                ///  This is the status bit for rxfifo_tout_int_raw when rxfifo_tout_int_ena is set to 1.
    -                RXFIFO_TOUT_INT_ST: u1,
    -                ///  This is the status bit for sw_xon_int_raw when sw_xon_int_ena is set to 1.
    -                SW_XON_INT_ST: u1,
    -                ///  This is the status bit for sw_xoff_int_raw when sw_xoff_int_ena is set to 1.
    -                SW_XOFF_INT_ST: u1,
    -                ///  This is the status bit for glitch_det_int_raw when glitch_det_int_ena is set to 1.
    -                GLITCH_DET_INT_ST: u1,
    -                ///  This is the status bit for tx_brk_done_int_raw when tx_brk_done_int_ena is set to 1.
    -                TX_BRK_DONE_INT_ST: u1,
    -                ///  This is the stauts bit for tx_brk_idle_done_int_raw when tx_brk_idle_done_int_ena is set to 1.
    -                TX_BRK_IDLE_DONE_INT_ST: u1,
    -                ///  This is the status bit for tx_done_int_raw when tx_done_int_ena is set to 1.
    -                TX_DONE_INT_ST: u1,
    -                ///  This is the status bit for rs485_parity_err_int_raw when rs485_parity_int_ena is set to 1.
    -                RS485_PARITY_ERR_INT_ST: u1,
    -                ///  This is the status bit for rs485_frm_err_int_raw when rs485_fm_err_int_ena is set to 1.
    -                RS485_FRM_ERR_INT_ST: u1,
    -                ///  This is the status bit for rs485_clash_int_raw when rs485_clash_int_ena is set to 1.
    -                RS485_CLASH_INT_ST: u1,
    -                ///  This is the status bit for at_cmd_det_int_raw when at_cmd_char_det_int_ena is set to 1.
    -                AT_CMD_CHAR_DET_INT_ST: u1,
    -                ///  This is the status bit for uart_wakeup_int_raw when uart_wakeup_int_ena is set to 1.
    -                WAKEUP_INT_ST: u1,
    -                padding: u12,
    -            }),
    -            ///  Interrupt enable bits
    -            INT_ENA: mmio.Mmio(packed struct(u32) {
    -                ///  This is the enable bit for rxfifo_full_int_st register.
    -                RXFIFO_FULL_INT_ENA: u1,
    -                ///  This is the enable bit for txfifo_empty_int_st register.
    -                TXFIFO_EMPTY_INT_ENA: u1,
    -                ///  This is the enable bit for parity_err_int_st register.
    -                PARITY_ERR_INT_ENA: u1,
    -                ///  This is the enable bit for frm_err_int_st register.
    -                FRM_ERR_INT_ENA: u1,
    -                ///  This is the enable bit for rxfifo_ovf_int_st register.
    -                RXFIFO_OVF_INT_ENA: u1,
    -                ///  This is the enable bit for dsr_chg_int_st register.
    -                DSR_CHG_INT_ENA: u1,
    -                ///  This is the enable bit for cts_chg_int_st register.
    -                CTS_CHG_INT_ENA: u1,
    -                ///  This is the enable bit for brk_det_int_st register.
    -                BRK_DET_INT_ENA: u1,
    -                ///  This is the enable bit for rxfifo_tout_int_st register.
    -                RXFIFO_TOUT_INT_ENA: u1,
    -                ///  This is the enable bit for sw_xon_int_st register.
    -                SW_XON_INT_ENA: u1,
    -                ///  This is the enable bit for sw_xoff_int_st register.
    -                SW_XOFF_INT_ENA: u1,
    -                ///  This is the enable bit for glitch_det_int_st register.
    -                GLITCH_DET_INT_ENA: u1,
    -                ///  This is the enable bit for tx_brk_done_int_st register.
    -                TX_BRK_DONE_INT_ENA: u1,
    -                ///  This is the enable bit for tx_brk_idle_done_int_st register.
    -                TX_BRK_IDLE_DONE_INT_ENA: u1,
    -                ///  This is the enable bit for tx_done_int_st register.
    -                TX_DONE_INT_ENA: u1,
    -                ///  This is the enable bit for rs485_parity_err_int_st register.
    -                RS485_PARITY_ERR_INT_ENA: u1,
    -                ///  This is the enable bit for rs485_parity_err_int_st register.
    -                RS485_FRM_ERR_INT_ENA: u1,
    -                ///  This is the enable bit for rs485_clash_int_st register.
    -                RS485_CLASH_INT_ENA: u1,
    -                ///  This is the enable bit for at_cmd_char_det_int_st register.
    -                AT_CMD_CHAR_DET_INT_ENA: u1,
    -                ///  This is the enable bit for uart_wakeup_int_st register.
    -                WAKEUP_INT_ENA: u1,
    -                padding: u12,
    -            }),
    -            ///  Interrupt clear bits
    -            INT_CLR: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to clear the rxfifo_full_int_raw interrupt.
    -                RXFIFO_FULL_INT_CLR: u1,
    -                ///  Set this bit to clear txfifo_empty_int_raw interrupt.
    -                TXFIFO_EMPTY_INT_CLR: u1,
    -                ///  Set this bit to clear parity_err_int_raw interrupt.
    -                PARITY_ERR_INT_CLR: u1,
    -                ///  Set this bit to clear frm_err_int_raw interrupt.
    -                FRM_ERR_INT_CLR: u1,
    -                ///  Set this bit to clear rxfifo_ovf_int_raw interrupt.
    -                RXFIFO_OVF_INT_CLR: u1,
    -                ///  Set this bit to clear the dsr_chg_int_raw interrupt.
    -                DSR_CHG_INT_CLR: u1,
    -                ///  Set this bit to clear the cts_chg_int_raw interrupt.
    -                CTS_CHG_INT_CLR: u1,
    -                ///  Set this bit to clear the brk_det_int_raw interrupt.
    -                BRK_DET_INT_CLR: u1,
    -                ///  Set this bit to clear the rxfifo_tout_int_raw interrupt.
    -                RXFIFO_TOUT_INT_CLR: u1,
    -                ///  Set this bit to clear the sw_xon_int_raw interrupt.
    -                SW_XON_INT_CLR: u1,
    -                ///  Set this bit to clear the sw_xoff_int_raw interrupt.
    -                SW_XOFF_INT_CLR: u1,
    -                ///  Set this bit to clear the glitch_det_int_raw interrupt.
    -                GLITCH_DET_INT_CLR: u1,
    -                ///  Set this bit to clear the tx_brk_done_int_raw interrupt..
    -                TX_BRK_DONE_INT_CLR: u1,
    -                ///  Set this bit to clear the tx_brk_idle_done_int_raw interrupt.
    -                TX_BRK_IDLE_DONE_INT_CLR: u1,
    -                ///  Set this bit to clear the tx_done_int_raw interrupt.
    -                TX_DONE_INT_CLR: u1,
    -                ///  Set this bit to clear the rs485_parity_err_int_raw interrupt.
    -                RS485_PARITY_ERR_INT_CLR: u1,
    -                ///  Set this bit to clear the rs485_frm_err_int_raw interrupt.
    -                RS485_FRM_ERR_INT_CLR: u1,
    -                ///  Set this bit to clear the rs485_clash_int_raw interrupt.
    -                RS485_CLASH_INT_CLR: u1,
    -                ///  Set this bit to clear the at_cmd_char_det_int_raw interrupt.
    -                AT_CMD_CHAR_DET_INT_CLR: u1,
    -                ///  Set this bit to clear the uart_wakeup_int_raw interrupt.
    -                WAKEUP_INT_CLR: u1,
    -                padding: u12,
    -            }),
    -            ///  Clock divider configuration
    -            CLKDIV: mmio.Mmio(packed struct(u32) {
    -                ///  The integral part of the frequency divider factor.
    -                CLKDIV: u12,
    -                reserved20: u8,
    -                ///  The decimal part of the frequency divider factor.
    -                FRAG: u4,
    -                padding: u8,
    -            }),
    -            ///  Rx Filter configuration
    -            RX_FILT: mmio.Mmio(packed struct(u32) {
    -                ///  when input pulse width is lower than this value, the pulse is ignored.
    -                GLITCH_FILT: u8,
    -                ///  Set this bit to enable Rx signal filter.
    -                GLITCH_FILT_EN: u1,
    -                padding: u23,
    -            }),
    -            ///  UART status register
    -            STATUS: mmio.Mmio(packed struct(u32) {
    -                ///  Stores the byte number of valid data in Rx-FIFO.
    -                RXFIFO_CNT: u10,
    -                reserved13: u3,
    -                ///  The register represent the level value of the internal uart dsr signal.
    -                DSRN: u1,
    -                ///  This register represent the level value of the internal uart cts signal.
    -                CTSN: u1,
    -                ///  This register represent the level value of the internal uart rxd signal.
    -                RXD: u1,
    -                ///  Stores the byte number of data in Tx-FIFO.
    -                TXFIFO_CNT: u10,
    -                reserved29: u3,
    -                ///  This bit represents the level of the internal uart dtr signal.
    -                DTRN: u1,
    -                ///  This bit represents the level of the internal uart rts signal.
    -                RTSN: u1,
    -                ///  This bit represents the level of the internal uart txd signal.
    -                TXD: u1,
    -            }),
    -            ///  a
    -            CONF0: mmio.Mmio(packed struct(u32) {
    -                ///  This register is used to configure the parity check mode.
    -                PARITY: u1,
    -                ///  Set this bit to enable uart parity check.
    -                PARITY_EN: u1,
    -                ///  This register is used to set the length of data.
    -                BIT_NUM: u2,
    -                ///  This register is used to set the length of stop bit.
    -                STOP_BIT_NUM: u2,
    -                ///  This register is used to configure the software rts signal which is used in software flow control.
    -                SW_RTS: u1,
    -                ///  This register is used to configure the software dtr signal which is used in software flow control.
    -                SW_DTR: u1,
    -                ///  Set this bit to enbale transmitter to send NULL when the process of sending data is done.
    -                TXD_BRK: u1,
    -                ///  Set this bit to enable IrDA loopback mode.
    -                IRDA_DPLX: u1,
    -                ///  This is the start enable bit for IrDA transmitter.
    -                IRDA_TX_EN: u1,
    -                ///  1'h1: The IrDA transmitter's 11th bit is the same as 10th bit. 1'h0: Set IrDA transmitter's 11th bit to 0.
    -                IRDA_WCTL: u1,
    -                ///  Set this bit to invert the level of IrDA transmitter.
    -                IRDA_TX_INV: u1,
    -                ///  Set this bit to invert the level of IrDA receiver.
    -                IRDA_RX_INV: u1,
    -                ///  Set this bit to enable uart loopback test mode.
    -                LOOPBACK: u1,
    -                ///  Set this bit to enable flow control function for transmitter.
    -                TX_FLOW_EN: u1,
    -                ///  Set this bit to enable IrDA protocol.
    -                IRDA_EN: u1,
    -                ///  Set this bit to reset the uart receive-FIFO.
    -                RXFIFO_RST: u1,
    -                ///  Set this bit to reset the uart transmit-FIFO.
    -                TXFIFO_RST: u1,
    -                ///  Set this bit to inverse the level value of uart rxd signal.
    -                RXD_INV: u1,
    -                ///  Set this bit to inverse the level value of uart cts signal.
    -                CTS_INV: u1,
    -                ///  Set this bit to inverse the level value of uart dsr signal.
    -                DSR_INV: u1,
    -                ///  Set this bit to inverse the level value of uart txd signal.
    -                TXD_INV: u1,
    -                ///  Set this bit to inverse the level value of uart rts signal.
    -                RTS_INV: u1,
    -                ///  Set this bit to inverse the level value of uart dtr signal.
    -                DTR_INV: u1,
    -                ///  1'h1: Force clock on for register. 1'h0: Support clock only when application writes registers.
    -                CLK_EN: u1,
    -                ///  1'h1: Receiver stops storing data into FIFO when data is wrong. 1'h0: Receiver stores the data even if the received data is wrong.
    -                ERR_WR_MASK: u1,
    -                ///  This is the enable bit for detecting baudrate.
    -                AUTOBAUD_EN: u1,
    -                ///  UART memory clock gate enable signal.
    -                MEM_CLK_EN: u1,
    -                padding: u3,
    -            }),
    -            ///  Configuration register 1
    -            CONF1: mmio.Mmio(packed struct(u32) {
    -                ///  It will produce rxfifo_full_int interrupt when receiver receives more data than this register value.
    -                RXFIFO_FULL_THRHD: u9,
    -                ///  It will produce txfifo_empty_int interrupt when the data amount in Tx-FIFO is less than this register value.
    -                TXFIFO_EMPTY_THRHD: u9,
    -                ///  Disable UART Rx data overflow detect.
    -                DIS_RX_DAT_OVF: u1,
    -                ///  Set this bit to stop accumulating idle_cnt when hardware flow control works.
    -                RX_TOUT_FLOW_DIS: u1,
    -                ///  This is the flow enable bit for UART receiver.
    -                RX_FLOW_EN: u1,
    -                ///  This is the enble bit for uart receiver's timeout function.
    -                RX_TOUT_EN: u1,
    -                padding: u10,
    -            }),
    -            ///  Autobaud minimum low pulse duration register
    -            LOWPULSE: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the value of the minimum duration time of the low level pulse. It is used in baud rate-detect process.
    -                MIN_CNT: u12,
    -                padding: u20,
    -            }),
    -            ///  Autobaud minimum high pulse duration register
    -            HIGHPULSE: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the value of the maxinum duration time for the high level pulse. It is used in baud rate-detect process.
    -                MIN_CNT: u12,
    -                padding: u20,
    -            }),
    -            ///  Autobaud edge change count register
    -            RXD_CNT: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the count of rxd edge change. It is used in baud rate-detect process.
    -                RXD_EDGE_CNT: u10,
    -                padding: u22,
    -            }),
    -            ///  Software flow-control configuration
    -            FLOW_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to enable software flow control. It is used with register sw_xon or sw_xoff.
    -                SW_FLOW_CON_EN: u1,
    -                ///  Set this bit to remove flow control char from the received data.
    -                XONOFF_DEL: u1,
    -                ///  Set this bit to enable the transmitter to go on sending data.
    -                FORCE_XON: u1,
    -                ///  Set this bit to stop the transmitter from sending data.
    -                FORCE_XOFF: u1,
    -                ///  Set this bit to send Xon char. It is cleared by hardware automatically.
    -                SEND_XON: u1,
    -                ///  Set this bit to send Xoff char. It is cleared by hardware automatically.
    -                SEND_XOFF: u1,
    -                padding: u26,
    -            }),
    -            ///  Sleep-mode configuration
    -            SLEEP_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  The uart is activated from light sleeping mode when the input rxd edge changes more times than this register value.
    -                ACTIVE_THRESHOLD: u10,
    -                padding: u22,
    -            }),
    -            ///  Software flow-control character configuration
    -            SWFC_CONF0: mmio.Mmio(packed struct(u32) {
    -                ///  When the data amount in Rx-FIFO is more than this register value with uart_sw_flow_con_en set to 1, it will send a Xoff char.
    -                XOFF_THRESHOLD: u9,
    -                ///  This register stores the Xoff flow control char.
    -                XOFF_CHAR: u8,
    -                padding: u15,
    -            }),
    -            ///  Software flow-control character configuration
    -            SWFC_CONF1: mmio.Mmio(packed struct(u32) {
    -                ///  When the data amount in Rx-FIFO is less than this register value with uart_sw_flow_con_en set to 1, it will send a Xon char.
    -                XON_THRESHOLD: u9,
    -                ///  This register stores the Xon flow control char.
    -                XON_CHAR: u8,
    -                padding: u15,
    -            }),
    -            ///  Tx Break character configuration
    -            TXBRK_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  This register is used to configure the number of 0 to be sent after the process of sending data is done. It is active when txd_brk is set to 1.
    -                TX_BRK_NUM: u8,
    -                padding: u24,
    -            }),
    -            ///  Frame-end idle configuration
    -            IDLE_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  It will produce frame end signal when receiver takes more time to receive one byte data than this register value.
    -                RX_IDLE_THRHD: u10,
    -                ///  This register is used to configure the duration time between transfers.
    -                TX_IDLE_NUM: u10,
    -                padding: u12,
    -            }),
    -            ///  RS485 mode configuration
    -            RS485_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to choose the rs485 mode.
    -                RS485_EN: u1,
    -                ///  Set this bit to delay the stop bit by 1 bit.
    -                DL0_EN: u1,
    -                ///  Set this bit to delay the stop bit by 1 bit.
    -                DL1_EN: u1,
    -                ///  Set this bit to enable receiver could receive data when the transmitter is transmitting data in rs485 mode.
    -                RS485TX_RX_EN: u1,
    -                ///  1'h1: enable rs485 transmitter to send data when rs485 receiver line is busy.
    -                RS485RXBY_TX_EN: u1,
    -                ///  This register is used to delay the receiver's internal data signal.
    -                RS485_RX_DLY_NUM: u1,
    -                ///  This register is used to delay the transmitter's internal data signal.
    -                RS485_TX_DLY_NUM: u4,
    -                padding: u22,
    -            }),
    -            ///  Pre-sequence timing configuration
    -            AT_CMD_PRECNT: mmio.Mmio(packed struct(u32) {
    -                ///  This register is used to configure the idle duration time before the first at_cmd is received by receiver.
    -                PRE_IDLE_NUM: u16,
    -                padding: u16,
    -            }),
    -            ///  Post-sequence timing configuration
    -            AT_CMD_POSTCNT: mmio.Mmio(packed struct(u32) {
    -                ///  This register is used to configure the duration time between the last at_cmd and the next data.
    -                POST_IDLE_NUM: u16,
    -                padding: u16,
    -            }),
    -            ///  Timeout configuration
    -            AT_CMD_GAPTOUT: mmio.Mmio(packed struct(u32) {
    -                ///  This register is used to configure the duration time between the at_cmd chars.
    -                RX_GAP_TOUT: u16,
    -                padding: u16,
    -            }),
    -            ///  AT escape sequence detection configuration
    -            AT_CMD_CHAR: mmio.Mmio(packed struct(u32) {
    -                ///  This register is used to configure the content of at_cmd char.
    -                AT_CMD_CHAR: u8,
    -                ///  This register is used to configure the num of continuous at_cmd chars received by receiver.
    -                CHAR_NUM: u8,
    -                padding: u16,
    -            }),
    -            ///  UART threshold and allocation configuration
    -            MEM_CONF: mmio.Mmio(packed struct(u32) {
    -                reserved1: u1,
    -                ///  This register is used to configure the amount of mem allocated for receive-FIFO. The default number is 128 bytes.
    -                RX_SIZE: u3,
    -                ///  This register is used to configure the amount of mem allocated for transmit-FIFO. The default number is 128 bytes.
    -                TX_SIZE: u3,
    -                ///  This register is used to configure the maximum amount of data that can be received when hardware flow control works.
    -                RX_FLOW_THRHD: u9,
    -                ///  This register is used to configure the threshold time that receiver takes to receive one byte. The rxfifo_tout_int interrupt will be trigger when the receiver takes more time to receive one byte with rx_tout_en set to 1.
    -                RX_TOUT_THRHD: u10,
    -                ///  Set this bit to force power down UART memory.
    -                MEM_FORCE_PD: u1,
    -                ///  Set this bit to force power up UART memory.
    -                MEM_FORCE_PU: u1,
    -                padding: u4,
    -            }),
    -            ///  Tx-FIFO write and read offset address.
    -            MEM_TX_STATUS: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the offset address in Tx-FIFO when software writes Tx-FIFO via APB.
    -                APB_TX_WADDR: u10,
    -                reserved11: u1,
    -                ///  This register stores the offset address in Tx-FIFO when Tx-FSM reads data via Tx-FIFO_Ctrl.
    -                TX_RADDR: u10,
    -                padding: u11,
    -            }),
    -            ///  Rx-FIFO write and read offset address.
    -            MEM_RX_STATUS: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the offset address in RX-FIFO when software reads data from Rx-FIFO via APB. UART0 is 10'h100. UART1 is 10'h180.
    -                APB_RX_RADDR: u10,
    -                reserved11: u1,
    -                ///  This register stores the offset address in Rx-FIFO when Rx-FIFO_Ctrl writes Rx-FIFO. UART0 is 10'h100. UART1 is 10'h180.
    -                RX_WADDR: u10,
    -                padding: u11,
    -            }),
    -            ///  UART transmit and receive status.
    -            FSM_STATUS: mmio.Mmio(packed struct(u32) {
    -                ///  This is the status register of receiver.
    -                ST_URX_OUT: u4,
    -                ///  This is the status register of transmitter.
    -                ST_UTX_OUT: u4,
    -                padding: u24,
    -            }),
    -            ///  Autobaud high pulse register
    -            POSPULSE: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the minimal input clock count between two positive edges. It is used in boudrate-detect process.
    -                POSEDGE_MIN_CNT: u12,
    -                padding: u20,
    -            }),
    -            ///  Autobaud low pulse register
    -            NEGPULSE: mmio.Mmio(packed struct(u32) {
    -                ///  This register stores the minimal input clock count between two negative edges. It is used in boudrate-detect process.
    -                NEGEDGE_MIN_CNT: u12,
    -                padding: u20,
    -            }),
    -            ///  UART core clock configuration
    -            CLK_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  The denominator of the frequency divider factor.
    -                SCLK_DIV_B: u6,
    -                ///  The numerator of the frequency divider factor.
    -                SCLK_DIV_A: u6,
    -                ///  The integral part of the frequency divider factor.
    -                SCLK_DIV_NUM: u8,
    -                ///  UART clock source select. 1: 80Mhz, 2: 8Mhz, 3: XTAL.
    -                SCLK_SEL: u2,
    -                ///  Set this bit to enable UART Tx/Rx clock.
    -                SCLK_EN: u1,
    -                ///  Write 1 then write 0 to this bit, reset UART Tx/Rx.
    -                RST_CORE: u1,
    -                ///  Set this bit to enable UART Tx clock.
    -                TX_SCLK_EN: u1,
    -                ///  Set this bit to enable UART Rx clock.
    -                RX_SCLK_EN: u1,
    -                ///  Write 1 then write 0 to this bit, reset UART Tx.
    -                TX_RST_CORE: u1,
    -                ///  Write 1 then write 0 to this bit, reset UART Rx.
    -                RX_RST_CORE: u1,
    -                padding: u4,
    -            }),
    -            ///  UART Version register
    -            DATE: mmio.Mmio(packed struct(u32) {
    -                ///  This is the version register.
    -                DATE: u32,
    -            }),
    -            ///  UART ID register
    -            ID: mmio.Mmio(packed struct(u32) {
    -                ///  This register is used to configure the uart_id.
    -                ID: u30,
    -                ///  This bit used to select synchronize mode. 1: Registers are auto synchronized into UART Core clock and UART core should be keep the same with APB clock. 0: After configure registers, software needs to write 1 to UART_REG_UPDATE to synchronize registers.
    -                HIGH_SPEED: u1,
    -                ///  Software write 1 would synchronize registers into UART Core clock domain and would be cleared by hardware after synchronization is done.
    -                REG_UPDATE: u1,
    -            }),
    -        };
    -
    -        ///  Full-speed USB Serial/JTAG Controller
    -        pub const USB_DEVICE = extern struct {
    -            ///  USB_DEVICE_EP1_REG.
    -            EP1: mmio.Mmio(packed struct(u32) {
    -                ///  Write and read byte data to/from UART Tx/Rx FIFO through this field. When USB_DEVICE_SERIAL_IN_EMPTY_INT is set, then user can write data (up to 64 bytes) into UART Tx FIFO. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is set, user can check USB_DEVICE_OUT_EP1_WR_ADDR USB_DEVICE_OUT_EP0_RD_ADDR to know how many data is received, then read data from UART Rx FIFO.
    -                RDWR_BYTE: u8,
    -                padding: u24,
    -            }),
    -            ///  USB_DEVICE_EP1_CONF_REG.
    -            EP1_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to indicate writing byte data to UART Tx FIFO is done.
    -                WR_DONE: u1,
    -                ///  1'b1: Indicate UART Tx FIFO is not full and can write data into in. After writing USB_DEVICE_WR_DONE, this bit would be 0 until data in UART Tx FIFO is read by USB Host.
    -                SERIAL_IN_EP_DATA_FREE: u1,
    -                ///  1'b1: Indicate there is data in UART Rx FIFO.
    -                SERIAL_OUT_EP_DATA_AVAIL: u1,
    -                padding: u29,
    -            }),
    -            ///  USB_DEVICE_INT_RAW_REG.
    -            INT_RAW: mmio.Mmio(packed struct(u32) {
    -                ///  The raw interrupt bit turns to high level when flush cmd is received for IN endpoint 2 of JTAG.
    -                JTAG_IN_FLUSH_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when SOF frame is received.
    -                SOF_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when Serial Port OUT Endpoint received one packet.
    -                SERIAL_OUT_RECV_PKT_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when Serial Port IN Endpoint is empty.
    -                SERIAL_IN_EMPTY_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when pid error is detected.
    -                PID_ERR_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when CRC5 error is detected.
    -                CRC5_ERR_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when CRC16 error is detected.
    -                CRC16_ERR_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when stuff error is detected.
    -                STUFF_ERR_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when IN token for IN endpoint 1 is received.
    -                IN_TOKEN_REC_IN_EP1_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when usb bus reset is detected.
    -                USB_BUS_RESET_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when OUT endpoint 1 received packet with zero palyload.
    -                OUT_EP1_ZERO_PAYLOAD_INT_RAW: u1,
    -                ///  The raw interrupt bit turns to high level when OUT endpoint 2 received packet with zero palyload.
    -                OUT_EP2_ZERO_PAYLOAD_INT_RAW: u1,
    -                padding: u20,
    -            }),
    -            ///  USB_DEVICE_INT_ST_REG.
    -            INT_ST: mmio.Mmio(packed struct(u32) {
    -                ///  The raw interrupt status bit for the USB_DEVICE_JTAG_IN_FLUSH_INT interrupt.
    -                JTAG_IN_FLUSH_INT_ST: u1,
    -                ///  The raw interrupt status bit for the USB_DEVICE_SOF_INT interrupt.
    -                SOF_INT_ST: u1,
    -                ///  The raw interrupt status bit for the USB_DEVICE_SERIAL_OUT_RECV_PKT_INT interrupt.
    -                SERIAL_OUT_RECV_PKT_INT_ST: u1,
    -                ///  The raw interrupt status bit for the USB_DEVICE_SERIAL_IN_EMPTY_INT interrupt.
    -                SERIAL_IN_EMPTY_INT_ST: u1,
    -                ///  The raw interrupt status bit for the USB_DEVICE_PID_ERR_INT interrupt.
    -                PID_ERR_INT_ST: u1,
    -                ///  The raw interrupt status bit for the USB_DEVICE_CRC5_ERR_INT interrupt.
    -                CRC5_ERR_INT_ST: u1,
    -                ///  The raw interrupt status bit for the USB_DEVICE_CRC16_ERR_INT interrupt.
    -                CRC16_ERR_INT_ST: u1,
    -                ///  The raw interrupt status bit for the USB_DEVICE_STUFF_ERR_INT interrupt.
    -                STUFF_ERR_INT_ST: u1,
    -                ///  The raw interrupt status bit for the USB_DEVICE_IN_TOKEN_REC_IN_EP1_INT interrupt.
    -                IN_TOKEN_REC_IN_EP1_INT_ST: u1,
    -                ///  The raw interrupt status bit for the USB_DEVICE_USB_BUS_RESET_INT interrupt.
    -                USB_BUS_RESET_INT_ST: u1,
    -                ///  The raw interrupt status bit for the USB_DEVICE_OUT_EP1_ZERO_PAYLOAD_INT interrupt.
    -                OUT_EP1_ZERO_PAYLOAD_INT_ST: u1,
    -                ///  The raw interrupt status bit for the USB_DEVICE_OUT_EP2_ZERO_PAYLOAD_INT interrupt.
    -                OUT_EP2_ZERO_PAYLOAD_INT_ST: u1,
    -                padding: u20,
    -            }),
    -            ///  USB_DEVICE_INT_ENA_REG.
    -            INT_ENA: mmio.Mmio(packed struct(u32) {
    -                ///  The interrupt enable bit for the USB_DEVICE_JTAG_IN_FLUSH_INT interrupt.
    -                JTAG_IN_FLUSH_INT_ENA: u1,
    -                ///  The interrupt enable bit for the USB_DEVICE_SOF_INT interrupt.
    -                SOF_INT_ENA: u1,
    -                ///  The interrupt enable bit for the USB_DEVICE_SERIAL_OUT_RECV_PKT_INT interrupt.
    -                SERIAL_OUT_RECV_PKT_INT_ENA: u1,
    -                ///  The interrupt enable bit for the USB_DEVICE_SERIAL_IN_EMPTY_INT interrupt.
    -                SERIAL_IN_EMPTY_INT_ENA: u1,
    -                ///  The interrupt enable bit for the USB_DEVICE_PID_ERR_INT interrupt.
    -                PID_ERR_INT_ENA: u1,
    -                ///  The interrupt enable bit for the USB_DEVICE_CRC5_ERR_INT interrupt.
    -                CRC5_ERR_INT_ENA: u1,
    -                ///  The interrupt enable bit for the USB_DEVICE_CRC16_ERR_INT interrupt.
    -                CRC16_ERR_INT_ENA: u1,
    -                ///  The interrupt enable bit for the USB_DEVICE_STUFF_ERR_INT interrupt.
    -                STUFF_ERR_INT_ENA: u1,
    -                ///  The interrupt enable bit for the USB_DEVICE_IN_TOKEN_REC_IN_EP1_INT interrupt.
    -                IN_TOKEN_REC_IN_EP1_INT_ENA: u1,
    -                ///  The interrupt enable bit for the USB_DEVICE_USB_BUS_RESET_INT interrupt.
    -                USB_BUS_RESET_INT_ENA: u1,
    -                ///  The interrupt enable bit for the USB_DEVICE_OUT_EP1_ZERO_PAYLOAD_INT interrupt.
    -                OUT_EP1_ZERO_PAYLOAD_INT_ENA: u1,
    -                ///  The interrupt enable bit for the USB_DEVICE_OUT_EP2_ZERO_PAYLOAD_INT interrupt.
    -                OUT_EP2_ZERO_PAYLOAD_INT_ENA: u1,
    -                padding: u20,
    -            }),
    -            ///  USB_DEVICE_INT_CLR_REG.
    -            INT_CLR: mmio.Mmio(packed struct(u32) {
    -                ///  Set this bit to clear the USB_DEVICE_JTAG_IN_FLUSH_INT interrupt.
    -                JTAG_IN_FLUSH_INT_CLR: u1,
    -                ///  Set this bit to clear the USB_DEVICE_JTAG_SOF_INT interrupt.
    -                SOF_INT_CLR: u1,
    -                ///  Set this bit to clear the USB_DEVICE_SERIAL_OUT_RECV_PKT_INT interrupt.
    -                SERIAL_OUT_RECV_PKT_INT_CLR: u1,
    -                ///  Set this bit to clear the USB_DEVICE_SERIAL_IN_EMPTY_INT interrupt.
    -                SERIAL_IN_EMPTY_INT_CLR: u1,
    -                ///  Set this bit to clear the USB_DEVICE_PID_ERR_INT interrupt.
    -                PID_ERR_INT_CLR: u1,
    -                ///  Set this bit to clear the USB_DEVICE_CRC5_ERR_INT interrupt.
    -                CRC5_ERR_INT_CLR: u1,
    -                ///  Set this bit to clear the USB_DEVICE_CRC16_ERR_INT interrupt.
    -                CRC16_ERR_INT_CLR: u1,
    -                ///  Set this bit to clear the USB_DEVICE_STUFF_ERR_INT interrupt.
    -                STUFF_ERR_INT_CLR: u1,
    -                ///  Set this bit to clear the USB_DEVICE_IN_TOKEN_IN_EP1_INT interrupt.
    -                IN_TOKEN_REC_IN_EP1_INT_CLR: u1,
    -                ///  Set this bit to clear the USB_DEVICE_USB_BUS_RESET_INT interrupt.
    -                USB_BUS_RESET_INT_CLR: u1,
    -                ///  Set this bit to clear the USB_DEVICE_OUT_EP1_ZERO_PAYLOAD_INT interrupt.
    -                OUT_EP1_ZERO_PAYLOAD_INT_CLR: u1,
    -                ///  Set this bit to clear the USB_DEVICE_OUT_EP2_ZERO_PAYLOAD_INT interrupt.
    -                OUT_EP2_ZERO_PAYLOAD_INT_CLR: u1,
    -                padding: u20,
    -            }),
    -            ///  USB_DEVICE_CONF0_REG.
    -            CONF0: mmio.Mmio(packed struct(u32) {
    -                ///  Select internal/external PHY
    -                PHY_SEL: u1,
    -                ///  Enable software control USB D+ D- exchange
    -                EXCHG_PINS_OVERRIDE: u1,
    -                ///  USB D+ D- exchange
    -                EXCHG_PINS: u1,
    -                ///  Control single-end input high threshold,1.76V to 2V, step 80mV
    -                VREFH: u2,
    -                ///  Control single-end input low threshold,0.8V to 1.04V, step 80mV
    -                VREFL: u2,
    -                ///  Enable software control input threshold
    -                VREF_OVERRIDE: u1,
    -                ///  Enable software control USB D+ D- pullup pulldown
    -                PAD_PULL_OVERRIDE: u1,
    -                ///  Control USB D+ pull up.
    -                DP_PULLUP: u1,
    -                ///  Control USB D+ pull down.
    -                DP_PULLDOWN: u1,
    -                ///  Control USB D- pull up.
    -                DM_PULLUP: u1,
    -                ///  Control USB D- pull down.
    -                DM_PULLDOWN: u1,
    -                ///  Control pull up value.
    -                PULLUP_VALUE: u1,
    -                ///  Enable USB pad function.
    -                USB_PAD_ENABLE: u1,
    -                padding: u17,
    -            }),
    -            ///  USB_DEVICE_TEST_REG.
    -            TEST: mmio.Mmio(packed struct(u32) {
    -                ///  Enable test of the USB pad
    -                ENABLE: u1,
    -                ///  USB pad oen in test
    -                USB_OE: u1,
    -                ///  USB D+ tx value in test
    -                TX_DP: u1,
    -                ///  USB D- tx value in test
    -                TX_DM: u1,
    -                padding: u28,
    -            }),
    -            ///  USB_DEVICE_JFIFO_ST_REG.
    -            JFIFO_ST: mmio.Mmio(packed struct(u32) {
    -                ///  JTAT in fifo counter.
    -                IN_FIFO_CNT: u2,
    -                ///  1: JTAG in fifo is empty.
    -                IN_FIFO_EMPTY: u1,
    -                ///  1: JTAG in fifo is full.
    -                IN_FIFO_FULL: u1,
    -                ///  JTAT out fifo counter.
    -                OUT_FIFO_CNT: u2,
    -                ///  1: JTAG out fifo is empty.
    -                OUT_FIFO_EMPTY: u1,
    -                ///  1: JTAG out fifo is full.
    -                OUT_FIFO_FULL: u1,
    -                ///  Write 1 to reset JTAG in fifo.
    -                IN_FIFO_RESET: u1,
    -                ///  Write 1 to reset JTAG out fifo.
    -                OUT_FIFO_RESET: u1,
    -                padding: u22,
    -            }),
    -            ///  USB_DEVICE_FRAM_NUM_REG.
    -            FRAM_NUM: mmio.Mmio(packed struct(u32) {
    -                ///  Frame index of received SOF frame.
    -                SOF_FRAME_INDEX: u11,
    -                padding: u21,
    -            }),
    -            ///  USB_DEVICE_IN_EP0_ST_REG.
    -            IN_EP0_ST: mmio.Mmio(packed struct(u32) {
    -                ///  State of IN Endpoint 0.
    -                IN_EP0_STATE: u2,
    -                ///  Write data address of IN endpoint 0.
    -                IN_EP0_WR_ADDR: u7,
    -                ///  Read data address of IN endpoint 0.
    -                IN_EP0_RD_ADDR: u7,
    -                padding: u16,
    -            }),
    -            ///  USB_DEVICE_IN_EP1_ST_REG.
    -            IN_EP1_ST: mmio.Mmio(packed struct(u32) {
    -                ///  State of IN Endpoint 1.
    -                IN_EP1_STATE: u2,
    -                ///  Write data address of IN endpoint 1.
    -                IN_EP1_WR_ADDR: u7,
    -                ///  Read data address of IN endpoint 1.
    -                IN_EP1_RD_ADDR: u7,
    -                padding: u16,
    -            }),
    -            ///  USB_DEVICE_IN_EP2_ST_REG.
    -            IN_EP2_ST: mmio.Mmio(packed struct(u32) {
    -                ///  State of IN Endpoint 2.
    -                IN_EP2_STATE: u2,
    -                ///  Write data address of IN endpoint 2.
    -                IN_EP2_WR_ADDR: u7,
    -                ///  Read data address of IN endpoint 2.
    -                IN_EP2_RD_ADDR: u7,
    -                padding: u16,
    -            }),
    -            ///  USB_DEVICE_IN_EP3_ST_REG.
    -            IN_EP3_ST: mmio.Mmio(packed struct(u32) {
    -                ///  State of IN Endpoint 3.
    -                IN_EP3_STATE: u2,
    -                ///  Write data address of IN endpoint 3.
    -                IN_EP3_WR_ADDR: u7,
    -                ///  Read data address of IN endpoint 3.
    -                IN_EP3_RD_ADDR: u7,
    -                padding: u16,
    -            }),
    -            ///  USB_DEVICE_OUT_EP0_ST_REG.
    -            OUT_EP0_ST: mmio.Mmio(packed struct(u32) {
    -                ///  State of OUT Endpoint 0.
    -                OUT_EP0_STATE: u2,
    -                ///  Write data address of OUT endpoint 0. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is detected, there are USB_DEVICE_OUT_EP0_WR_ADDR-2 bytes data in OUT EP0.
    -                OUT_EP0_WR_ADDR: u7,
    -                ///  Read data address of OUT endpoint 0.
    -                OUT_EP0_RD_ADDR: u7,
    -                padding: u16,
    -            }),
    -            ///  USB_DEVICE_OUT_EP1_ST_REG.
    -            OUT_EP1_ST: mmio.Mmio(packed struct(u32) {
    -                ///  State of OUT Endpoint 1.
    -                OUT_EP1_STATE: u2,
    -                ///  Write data address of OUT endpoint 1. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is detected, there are USB_DEVICE_OUT_EP1_WR_ADDR-2 bytes data in OUT EP1.
    -                OUT_EP1_WR_ADDR: u7,
    -                ///  Read data address of OUT endpoint 1.
    -                OUT_EP1_RD_ADDR: u7,
    -                ///  Data count in OUT endpoint 1 when one packet is received.
    -                OUT_EP1_REC_DATA_CNT: u7,
    -                padding: u9,
    -            }),
    -            ///  USB_DEVICE_OUT_EP2_ST_REG.
    -            OUT_EP2_ST: mmio.Mmio(packed struct(u32) {
    -                ///  State of OUT Endpoint 2.
    -                OUT_EP2_STATE: u2,
    -                ///  Write data address of OUT endpoint 2. When USB_DEVICE_SERIAL_OUT_RECV_PKT_INT is detected, there are USB_DEVICE_OUT_EP2_WR_ADDR-2 bytes data in OUT EP2.
    -                OUT_EP2_WR_ADDR: u7,
    -                ///  Read data address of OUT endpoint 2.
    -                OUT_EP2_RD_ADDR: u7,
    -                padding: u16,
    -            }),
    -            ///  USB_DEVICE_MISC_CONF_REG.
    -            MISC_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  1'h1: Force clock on for register. 1'h0: Support clock only when application writes registers.
    -                CLK_EN: u1,
    -                padding: u31,
    -            }),
    -            ///  USB_DEVICE_MEM_CONF_REG.
    -            MEM_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  1: power down usb memory.
    -                USB_MEM_PD: u1,
    -                ///  1: Force clock on for usb memory.
    -                USB_MEM_CLK_EN: u1,
    -                padding: u30,
    -            }),
    -            reserved128: [52]u8,
    -            ///  USB_DEVICE_DATE_REG.
    -            DATE: mmio.Mmio(packed struct(u32) {
    -                ///  register version.
    -                DATE: u32,
    -            }),
    -        };
    -
    -        ///  Universal Host Controller Interface
    -        pub const UHCI0 = extern struct {
    -            ///  a
    -            CONF0: mmio.Mmio(packed struct(u32) {
    -                ///  Write 1, then write 0 to this bit to reset decode state machine.
    -                TX_RST: u1,
    -                ///  Write 1, then write 0 to this bit to reset encode state machine.
    -                RX_RST: u1,
    -                ///  Set this bit to link up HCI and UART0.
    -                UART0_CE: u1,
    -                ///  Set this bit to link up HCI and UART1.
    -                UART1_CE: u1,
    -                reserved5: u1,
    -                ///  Set this bit to separate the data frame using a special char.
    -                SEPER_EN: u1,
    -                ///  Set this bit to encode the data packet with a formatting header.
    -                HEAD_EN: u1,
    -                ///  Set this bit to enable UHCI to receive the 16 bit CRC.
    -                CRC_REC_EN: u1,
    -                ///  If this bit is set to 1, UHCI will end the payload receiving process when UART has been in idle state.
    -                UART_IDLE_EOF_EN: u1,
    -                ///  If this bit is set to 1, UHCI decoder receiving payload data is end when the receiving byte count has reached the specified value. The value is payload length indicated by UHCI packet header when UHCI_HEAD_EN is 1 or the value is configuration value when UHCI_HEAD_EN is 0. If this bit is set to 0, UHCI decoder receiving payload data is end when 0xc0 is received.
    -                LEN_EOF_EN: u1,
    -                ///  Set this bit to enable data integrity checking by appending a 16 bit CCITT-CRC to end of the payload.
    -                ENCODE_CRC_EN: u1,
    -                ///  1'b1: Force clock on for register. 1'b0: Support clock only when application writes registers.
    -                CLK_EN: u1,
    -                ///  If this bit is set to 1, UHCI will end payload receive process when NULL frame is received by UART.
    -                UART_RX_BRK_EOF_EN: u1,
    -                padding: u19,
    -            }),
    -            ///  a
    -            INT_RAW: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                RX_START_INT_RAW: u1,
    -                ///  a
    -                TX_START_INT_RAW: u1,
    -                ///  a
    -                RX_HUNG_INT_RAW: u1,
    -                ///  a
    -                TX_HUNG_INT_RAW: u1,
    -                ///  a
    -                SEND_S_REG_Q_INT_RAW: u1,
    -                ///  a
    -                SEND_A_REG_Q_INT_RAW: u1,
    -                ///  This is the interrupt raw bit. Triggered when there are some errors in EOF in the
    -                OUT_EOF_INT_RAW: u1,
    -                ///  Soft control int raw bit.
    -                APP_CTRL0_INT_RAW: u1,
    -                ///  Soft control int raw bit.
    -                APP_CTRL1_INT_RAW: u1,
    -                padding: u23,
    -            }),
    -            ///  a
    -            INT_ST: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                RX_START_INT_ST: u1,
    -                ///  a
    -                TX_START_INT_ST: u1,
    -                ///  a
    -                RX_HUNG_INT_ST: u1,
    -                ///  a
    -                TX_HUNG_INT_ST: u1,
    -                ///  a
    -                SEND_S_REG_Q_INT_ST: u1,
    -                ///  a
    -                SEND_A_REG_Q_INT_ST: u1,
    -                ///  a
    -                OUTLINK_EOF_ERR_INT_ST: u1,
    -                ///  a
    -                APP_CTRL0_INT_ST: u1,
    -                ///  a
    -                APP_CTRL1_INT_ST: u1,
    -                padding: u23,
    -            }),
    -            ///  a
    -            INT_ENA: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                RX_START_INT_ENA: u1,
    -                ///  a
    -                TX_START_INT_ENA: u1,
    -                ///  a
    -                RX_HUNG_INT_ENA: u1,
    -                ///  a
    -                TX_HUNG_INT_ENA: u1,
    -                ///  a
    -                SEND_S_REG_Q_INT_ENA: u1,
    -                ///  a
    -                SEND_A_REG_Q_INT_ENA: u1,
    -                ///  a
    -                OUTLINK_EOF_ERR_INT_ENA: u1,
    -                ///  a
    -                APP_CTRL0_INT_ENA: u1,
    -                ///  a
    -                APP_CTRL1_INT_ENA: u1,
    -                padding: u23,
    -            }),
    -            ///  a
    -            INT_CLR: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                RX_START_INT_CLR: u1,
    -                ///  a
    -                TX_START_INT_CLR: u1,
    -                ///  a
    -                RX_HUNG_INT_CLR: u1,
    -                ///  a
    -                TX_HUNG_INT_CLR: u1,
    -                ///  a
    -                SEND_S_REG_Q_INT_CLR: u1,
    -                ///  a
    -                SEND_A_REG_Q_INT_CLR: u1,
    -                ///  a
    -                OUTLINK_EOF_ERR_INT_CLR: u1,
    -                ///  a
    -                APP_CTRL0_INT_CLR: u1,
    -                ///  a
    -                APP_CTRL1_INT_CLR: u1,
    -                padding: u23,
    -            }),
    -            ///  a
    -            CONF1: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                CHECK_SUM_EN: u1,
    -                ///  a
    -                CHECK_SEQ_EN: u1,
    -                ///  a
    -                CRC_DISABLE: u1,
    -                ///  a
    -                SAVE_HEAD: u1,
    -                ///  a
    -                TX_CHECK_SUM_RE: u1,
    -                ///  a
    -                TX_ACK_NUM_RE: u1,
    -                reserved7: u1,
    -                ///  a
    -                WAIT_SW_START: u1,
    -                ///  a
    -                SW_START: u1,
    -                padding: u23,
    -            }),
    -            ///  a
    -            STATE0: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                RX_ERR_CAUSE: u3,
    -                ///  a
    -                DECODE_STATE: u3,
    -                padding: u26,
    -            }),
    -            ///  a
    -            STATE1: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                ENCODE_STATE: u3,
    -                padding: u29,
    -            }),
    -            ///  a
    -            ESCAPE_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                TX_C0_ESC_EN: u1,
    -                ///  a
    -                TX_DB_ESC_EN: u1,
    -                ///  a
    -                TX_11_ESC_EN: u1,
    -                ///  a
    -                TX_13_ESC_EN: u1,
    -                ///  a
    -                RX_C0_ESC_EN: u1,
    -                ///  a
    -                RX_DB_ESC_EN: u1,
    -                ///  a
    -                RX_11_ESC_EN: u1,
    -                ///  a
    -                RX_13_ESC_EN: u1,
    -                padding: u24,
    -            }),
    -            ///  a
    -            HUNG_CONF: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                TXFIFO_TIMEOUT: u8,
    -                ///  a
    -                TXFIFO_TIMEOUT_SHIFT: u3,
    -                ///  a
    -                TXFIFO_TIMEOUT_ENA: u1,
    -                ///  a
    -                RXFIFO_TIMEOUT: u8,
    -                ///  a
    -                RXFIFO_TIMEOUT_SHIFT: u3,
    -                ///  a
    -                RXFIFO_TIMEOUT_ENA: u1,
    -                padding: u8,
    -            }),
    -            ///  a
    -            ACK_NUM: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                ACK_NUM: u3,
    -                ///  a
    -                LOAD: u1,
    -                padding: u28,
    -            }),
    -            ///  a
    -            RX_HEAD: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                RX_HEAD: u32,
    -            }),
    -            ///  a
    -            QUICK_SENT: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                SINGLE_SEND_NUM: u3,
    -                ///  a
    -                SINGLE_SEND_EN: u1,
    -                ///  a
    -                ALWAYS_SEND_NUM: u3,
    -                ///  a
    -                ALWAYS_SEND_EN: u1,
    -                padding: u24,
    -            }),
    -            ///  a
    -            REG_Q0_WORD0: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                SEND_Q0_WORD0: u32,
    -            }),
    -            ///  a
    -            REG_Q0_WORD1: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                SEND_Q0_WORD1: u32,
    -            }),
    -            ///  a
    -            REG_Q1_WORD0: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                SEND_Q1_WORD0: u32,
    -            }),
    -            ///  a
    -            REG_Q1_WORD1: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                SEND_Q1_WORD1: u32,
    -            }),
    -            ///  a
    -            REG_Q2_WORD0: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                SEND_Q2_WORD0: u32,
    -            }),
    -            ///  a
    -            REG_Q2_WORD1: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                SEND_Q2_WORD1: u32,
    -            }),
    -            ///  a
    -            REG_Q3_WORD0: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                SEND_Q3_WORD0: u32,
    -            }),
    -            ///  a
    -            REG_Q3_WORD1: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                SEND_Q3_WORD1: u32,
    -            }),
    -            ///  a
    -            REG_Q4_WORD0: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                SEND_Q4_WORD0: u32,
    -            }),
    -            ///  a
    -            REG_Q4_WORD1: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                SEND_Q4_WORD1: u32,
    -            }),
    -            ///  a
    -            REG_Q5_WORD0: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                SEND_Q5_WORD0: u32,
    -            }),
    -            ///  a
    -            REG_Q5_WORD1: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                SEND_Q5_WORD1: u32,
    -            }),
    -            ///  a
    -            REG_Q6_WORD0: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                SEND_Q6_WORD0: u32,
    -            }),
    -            ///  a
    -            REG_Q6_WORD1: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                SEND_Q6_WORD1: u32,
    -            }),
    -            ///  a
    -            ESC_CONF0: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                SEPER_CHAR: u8,
    -                ///  a
    -                SEPER_ESC_CHAR0: u8,
    -                ///  a
    -                SEPER_ESC_CHAR1: u8,
    -                padding: u8,
    -            }),
    -            ///  a
    -            ESC_CONF1: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                ESC_SEQ0: u8,
    -                ///  a
    -                ESC_SEQ0_CHAR0: u8,
    -                ///  a
    -                ESC_SEQ0_CHAR1: u8,
    -                padding: u8,
    -            }),
    -            ///  a
    -            ESC_CONF2: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                ESC_SEQ1: u8,
    -                ///  a
    -                ESC_SEQ1_CHAR0: u8,
    -                ///  a
    -                ESC_SEQ1_CHAR1: u8,
    -                padding: u8,
    -            }),
    -            ///  a
    -            ESC_CONF3: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                ESC_SEQ2: u8,
    -                ///  a
    -                ESC_SEQ2_CHAR0: u8,
    -                ///  a
    -                ESC_SEQ2_CHAR1: u8,
    -                padding: u8,
    -            }),
    -            ///  a
    -            PKT_THRES: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                PKT_THRS: u13,
    -                padding: u19,
    -            }),
    -            ///  a
    -            DATE: mmio.Mmio(packed struct(u32) {
    -                ///  a
    -                DATE: u32,
    -            }),
    -        };
    -    };
    -};
    diff --git a/src/cpus.zig b/src/cpus.zig
    deleted file mode 100644
    index c8bda91..0000000
    --- a/src/cpus.zig
    +++ /dev/null
    @@ -1,23 +0,0 @@
    -const std = @import("std");
    -const microzig = @import("microzig");
    -
    -fn root_dir() []const u8 {
    -    return std.fs.path.dirname(@src().file) orelse unreachable;
    -}
    -
    -pub const esp32_c3 = microzig.Cpu{
    -    .name = "Espressif RISC-V",
    -    .source = .{
    -        .path = root_dir() ++ "/cpus/espressif-riscv.zig",
    -    },
    -    .target = std.zig.CrossTarget{
    -        .cpu_arch = .riscv32,
    -        .cpu_model = .{ .explicit = &std.Target.riscv.cpu.generic_rv32 },
    -        .cpu_features_add = std.Target.riscv.featureSet(&.{
    -            std.Target.riscv.Feature.c,
    -            std.Target.riscv.Feature.m,
    -        }),
    -        .os_tag = .freestanding,
    -        .abi = .eabi,
    -    },
    -};
    
    From 2fb0b5eeca59b381bfea1c536a1564b1a3d7fa0b Mon Sep 17 00:00:00 2001
    From: Yerlan 
    Date: Sat, 23 Sep 2023 13:55:50 +0200
    Subject: [PATCH 29/29] Update README.adoc for Zig 0.11 release (#29)
    
    Zig 0.11 was released.
    I guess it makes sense to update the readme.
    Looking at microzig, it looks like 0.11 is the supported version.
    ---
     README.adoc | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/README.adoc b/README.adoc
    index 4123f3c..d1a8bf8 100644
    --- a/README.adoc
    +++ b/README.adoc
    @@ -6,4 +6,4 @@ SVD is copied from https://github.com/esp-rs/esp-pacs
     
     == What version of Zig to use
     
    -Right now we are following https://ziglang.org/download/[master], but once 0.11.0 is released, we will be switching to the latest stable version of Zig.
    +0.11.0