@@ -43,8 +43,8 @@ macro_rules! accessor_fns {
4343 unsafe {
4444 let sio = & * $crate:: pac:: SIO :: PTR ;
4545 match pin. bank {
46- DynBankId :: Bank0 => & sio. [ <gpio_ $reg: lower>] ( ) ,
47- DynBankId :: Qspi => core:: mem:: transmute( & sio. [ <gpio_hi_ $reg: lower>] ( ) ) ,
46+ DynBankId :: Bank0 => sio. [ <gpio_ $reg: lower>] ( ) ,
47+ DynBankId :: Qspi => core:: mem:: transmute:: < & $crate :: pac :: sio :: [ < GPIO_HI_ $reg : upper> ] , & $crate :: pac :: sio :: [ < GPIO_ $reg : upper> ] > ( sio. [ <gpio_hi_ $reg: lower>] ( ) ) ,
4848 }
4949 }
5050 }
@@ -57,19 +57,11 @@ macro_rules! accessor_fns {
5757 match pin. bank {
5858 DynBankId :: Bank0 => {
5959 let gpio = unsafe { & * $crate:: pac:: IO_BANK0 :: PTR } ;
60- & gpio. gpio( usize :: from( pin. num) ) . [ <gpio_ $reg: lower>] ( )
60+ gpio. gpio( usize :: from( pin. num) ) . [ <gpio_ $reg: lower>] ( )
6161 }
6262 DynBankId :: Qspi => unsafe {
6363 let qspi = & * $crate:: pac:: IO_QSPI :: PTR ;
64- match pin. num {
65- 0 => core:: mem:: transmute( & qspi. gpio_qspisclk( ) . [ <gpio_ $reg: lower>] ( ) ) ,
66- 1 => core:: mem:: transmute( & qspi. gpio_qspiss( ) . [ <gpio_ $reg: lower>] ( ) ) ,
67- 2 => core:: mem:: transmute( & qspi. gpio_qspisd0( ) . [ <gpio_ $reg: lower>] ( ) ) ,
68- 3 => core:: mem:: transmute( & qspi. gpio_qspisd1( ) . [ <gpio_ $reg: lower>] ( ) ) ,
69- 4 => core:: mem:: transmute( & qspi. gpio_qspisd2( ) . [ <gpio_ $reg: lower>] ( ) ) ,
70- 5 => core:: mem:: transmute( & qspi. gpio_qspisd3( ) . [ <gpio_ $reg: lower>] ( ) ) ,
71- _ => unreachable!( "Invalid QSPI bank pin number." ) ,
72- }
64+ core:: mem:: transmute:: <& $crate:: pac:: io_qspi:: gpio_qspi:: [ <GPIO_ $reg: upper>] , & $crate:: pac:: io_bank0:: gpio:: [ <GPIO_ $reg: upper>] >( qspi. gpio_qspi( usize :: from( pin. num) ) . [ <gpio_ $reg: lower>] ( ) )
7365 } ,
7466 }
7567 }
@@ -86,14 +78,14 @@ macro_rules! accessor_fns {
8678 let bank = & * $crate:: pac:: IO_BANK0 :: PTR ;
8779 match proc {
8880 CoreId :: Core0 => bank. [ <proc0_ $reg: lower>] ( usize :: from( index) ) ,
89- CoreId :: Core1 => core:: mem:: transmute( & bank. [ <proc1_ $reg: lower>] ( usize :: from( index) ) ) ,
81+ CoreId :: Core1 => core:: mem:: transmute:: < & $crate :: pac :: io_bank0 :: [ < PROC1_ $reg : upper> ] , & $crate :: pac :: io_bank0 :: [ < PROC0_ $reg : upper> ] > ( bank. [ <proc1_ $reg: lower>] ( usize :: from( index) ) ) ,
9082 }
9183 }
9284 DynBankId :: Qspi => {
9385 let bank = & * $crate:: pac:: IO_QSPI :: PTR ;
9486 match proc {
95- CoreId :: Core0 => core:: mem:: transmute( & bank. [ <proc0_ $reg: lower>] ( ) ) ,
96- CoreId :: Core1 => core:: mem:: transmute( & bank. [ <proc1_ $reg: lower>] ( ) ) ,
87+ CoreId :: Core0 => core:: mem:: transmute:: < & $crate :: pac :: io_qspi :: [ < PROC0_ $reg : upper> ] , & $crate :: pac :: io_bank0 :: [ < PROC0_ $reg : upper> ] > ( bank. [ <proc0_ $reg: lower>] ( ) ) ,
88+ CoreId :: Core1 => core:: mem:: transmute:: < & $crate :: pac :: io_qspi :: [ < PROC1_ $reg : upper> ] , & $crate :: pac :: io_bank0 :: [ < PROC0_ $reg : upper> ] > ( bank. [ <proc1_ $reg: lower>] ( ) ) ,
9789 }
9890 }
9991 } ;
@@ -115,7 +107,7 @@ macro_rules! accessor_fns {
115107 }
116108 DynBankId :: Qspi => {
117109 let bank = & * $crate:: pac:: IO_QSPI :: PTR ;
118- core:: mem:: transmute( & bank. [ < dormant_wake_ $reg: lower>] ( ) )
110+ core:: mem:: transmute:: < & $crate :: pac :: io_qspi :: [ < DORMANT_WAKE_ $reg : upper > ] , & $crate :: pac :: io_bank0 :: [ < DORMANT_WAKE_ $reg : upper > ] > ( bank. [ < dormant_wake_ $reg: lower>] ( ) )
119111 }
120112 } ;
121113 ( reg, usize :: from( offset) )
@@ -140,13 +132,32 @@ where
140132 }
141133 DynBankId :: Qspi => unsafe {
142134 let qspi = & * pac:: PADS_QSPI :: PTR ;
135+ use rp2040_pac:: { generic:: Reg , pads_bank0, pads_qspi} ;
143136 match pin. num {
144- 0 => core:: mem:: transmute ( & qspi. gpio_qspi_sclk ( ) ) ,
145- 1 => core:: mem:: transmute ( & qspi. gpio_qspi_ss ( ) ) ,
146- 2 => core:: mem:: transmute ( & qspi. gpio_qspi_sd0 ( ) ) ,
147- 3 => core:: mem:: transmute ( & qspi. gpio_qspi_sd1 ( ) ) ,
148- 4 => core:: mem:: transmute ( & qspi. gpio_qspi_sd2 ( ) ) ,
149- 5 => core:: mem:: transmute ( & qspi. gpio_qspi_sd3 ( ) ) ,
137+ 0 => core:: mem:: transmute :: <
138+ & Reg < pads_qspi:: gpio_qspi_sclk:: GPIO_QSPI_SCLK_SPEC > ,
139+ & Reg < pads_bank0:: gpio:: GPIO_SPEC > ,
140+ > ( qspi. gpio_qspi_sclk ( ) ) ,
141+ 1 => core:: mem:: transmute :: <
142+ & Reg < pads_qspi:: gpio_qspi_ss:: GPIO_QSPI_SS_SPEC > ,
143+ & Reg < pads_bank0:: gpio:: GPIO_SPEC > ,
144+ > ( qspi. gpio_qspi_ss ( ) ) ,
145+ 2 => core:: mem:: transmute :: <
146+ & Reg < pads_qspi:: gpio_qspi_sd0:: GPIO_QSPI_SD0_SPEC > ,
147+ & Reg < pads_bank0:: gpio:: GPIO_SPEC > ,
148+ > ( qspi. gpio_qspi_sd0 ( ) ) ,
149+ 3 => core:: mem:: transmute :: <
150+ & Reg < pads_qspi:: gpio_qspi_sd1:: GPIO_QSPI_SD1_SPEC > ,
151+ & Reg < pads_bank0:: gpio:: GPIO_SPEC > ,
152+ > ( qspi. gpio_qspi_sd1 ( ) ) ,
153+ 4 => core:: mem:: transmute :: <
154+ & Reg < pads_qspi:: gpio_qspi_sd2:: GPIO_QSPI_SD2_SPEC > ,
155+ & Reg < pads_bank0:: gpio:: GPIO_SPEC > ,
156+ > ( qspi. gpio_qspi_sd2 ( ) ) ,
157+ 5 => core:: mem:: transmute :: <
158+ & Reg < pads_qspi:: gpio_qspi_sd3:: GPIO_QSPI_SD3_SPEC > ,
159+ & Reg < pads_bank0:: gpio:: GPIO_SPEC > ,
160+ > ( qspi. gpio_qspi_sd3 ( ) ) ,
150161 _ => unreachable ! ( "Invalid QSPI bank pin number." ) ,
151162 }
152163 } ,
@@ -165,13 +176,16 @@ where
165176 accessor_fns ! ( sio oe_clr) ;
166177 accessor_fns ! ( sio oe_xor) ;
167178
168- fn proc_in_by_pass ( & self ) -> & crate :: pac:: syscfg:: PROC_IN_SYNC_BYPASS {
179+ fn proc_in_by_pass ( & self ) -> & pac:: syscfg:: PROC_IN_SYNC_BYPASS {
169180 let pin = self . as_dyn ( ) ;
170181 unsafe {
171182 let syscfg = & * pac:: SYSCFG :: PTR ;
172183 match pin. bank {
173184 DynBankId :: Bank0 => syscfg. proc_in_sync_bypass ( ) ,
174- DynBankId :: Qspi => core:: mem:: transmute ( & syscfg. proc_in_sync_bypass_hi ( ) ) ,
185+ DynBankId :: Qspi => core:: mem:: transmute :: <
186+ & pac:: syscfg:: PROC_IN_SYNC_BYPASS_HI ,
187+ & pac:: syscfg:: PROC_IN_SYNC_BYPASS ,
188+ > ( syscfg. proc_in_sync_bypass_hi ( ) ) ,
175189 }
176190 }
177191 }
@@ -187,7 +201,7 @@ where
187201 }
188202 DynBankId :: Qspi => {
189203 let bank = & * pac:: IO_QSPI :: PTR ;
190- core:: mem:: transmute ( & bank. intr ( ) )
204+ core:: mem:: transmute :: < & pac :: io_qspi :: INTR , & pac :: io_bank0 :: INTR > ( bank. intr ( ) )
191205 }
192206 } ;
193207
0 commit comments