Clean up gigantic GPIO eyesore (#2048)

This commit is contained in:
Dániel Buga 2024-09-02 10:58:54 +02:00 committed by GitHub
parent 2dc285a947
commit c5e342a7a7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 87 additions and 310 deletions

View File

@ -8,8 +8,7 @@
//!
//! Let's get through the functionality and configurations provided by this GPIO
//! module:
//! - `get_io_mux_reg(gpio_num: u8) -> &'static
//! crate::peripherals::io_mux::GPIO0:`:
//! - `get_io_mux_reg(gpio_num: u8) -> &'static io_mux::GPIO0:`:
//! * This function returns a reference to the GPIO register associated
//! with the given GPIO number. It uses unsafe code and transmutation to
//! access the GPIO registers based on the provided GPIO number.
@ -46,6 +45,8 @@
//! registers for both the `PRO CPU` and `APP CPU`. The implementation uses the
//! `gpio` peripheral to access the appropriate registers.
use core::mem::transmute;
use crate::{
gpio::{
AlternateFunction,
@ -54,7 +55,7 @@ use crate::{
InterruptStatusRegisterAccessBank0,
InterruptStatusRegisterAccessBank1,
},
peripherals::GPIO,
peripherals::{io_mux, GPIO, IO_MUX},
Cpu,
};
@ -72,155 +73,47 @@ pub(crate) const ZERO_INPUT: u8 = 0x30;
pub(crate) const GPIO_FUNCTION: AlternateFunction = AlternateFunction::Function2;
pub(crate) fn get_io_mux_reg(gpio_num: u8) -> &'static crate::peripherals::io_mux::GPIO0 {
pub(crate) fn get_io_mux_reg(gpio_num: u8) -> &'static io_mux::GPIO0 {
unsafe {
let iomux = &*crate::peripherals::IO_MUX::PTR;
let iomux = &*IO_MUX::PTR;
match gpio_num {
0 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO0,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio0()),
1 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO1,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio1()),
2 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO2,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio2()),
3 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO3,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio3()),
4 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO4,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio4()),
5 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO5,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio5()),
6 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO6,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio6()),
7 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO7,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio7()),
8 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO8,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio8()),
9 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO9,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio9()),
10 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO10,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio10()),
11 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO11,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio11()),
12 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO12,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio12()),
13 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO13,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio13()),
14 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO14,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio14()),
15 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO15,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio15()),
16 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO16,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio16()),
17 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO17,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio17()),
18 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO18,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio18()),
19 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO19,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio19()),
20 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO20,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio20()),
21 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO21,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio21()),
22 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO22,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio22()),
23 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO23,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio23()),
24 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO24,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio24()),
25 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO25,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio25()),
26 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO26,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio26()),
27 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO27,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio27()),
32 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO32,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio32()),
33 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO33,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio33()),
34 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO34,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio34()),
35 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO35,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio35()),
36 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO36,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio36()),
37 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO37,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio37()),
38 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO38,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio38()),
39 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO39,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio39()),
0 => transmute::<&'static io_mux::GPIO0, &'static io_mux::GPIO0>(iomux.gpio0()),
1 => transmute::<&'static io_mux::GPIO1, &'static io_mux::GPIO0>(iomux.gpio1()),
2 => transmute::<&'static io_mux::GPIO2, &'static io_mux::GPIO0>(iomux.gpio2()),
3 => transmute::<&'static io_mux::GPIO3, &'static io_mux::GPIO0>(iomux.gpio3()),
4 => transmute::<&'static io_mux::GPIO4, &'static io_mux::GPIO0>(iomux.gpio4()),
5 => transmute::<&'static io_mux::GPIO5, &'static io_mux::GPIO0>(iomux.gpio5()),
6 => transmute::<&'static io_mux::GPIO6, &'static io_mux::GPIO0>(iomux.gpio6()),
7 => transmute::<&'static io_mux::GPIO7, &'static io_mux::GPIO0>(iomux.gpio7()),
8 => transmute::<&'static io_mux::GPIO8, &'static io_mux::GPIO0>(iomux.gpio8()),
9 => transmute::<&'static io_mux::GPIO9, &'static io_mux::GPIO0>(iomux.gpio9()),
10 => transmute::<&'static io_mux::GPIO10, &'static io_mux::GPIO0>(iomux.gpio10()),
11 => transmute::<&'static io_mux::GPIO11, &'static io_mux::GPIO0>(iomux.gpio11()),
12 => transmute::<&'static io_mux::GPIO12, &'static io_mux::GPIO0>(iomux.gpio12()),
13 => transmute::<&'static io_mux::GPIO13, &'static io_mux::GPIO0>(iomux.gpio13()),
14 => transmute::<&'static io_mux::GPIO14, &'static io_mux::GPIO0>(iomux.gpio14()),
15 => transmute::<&'static io_mux::GPIO15, &'static io_mux::GPIO0>(iomux.gpio15()),
16 => transmute::<&'static io_mux::GPIO16, &'static io_mux::GPIO0>(iomux.gpio16()),
17 => transmute::<&'static io_mux::GPIO17, &'static io_mux::GPIO0>(iomux.gpio17()),
18 => transmute::<&'static io_mux::GPIO18, &'static io_mux::GPIO0>(iomux.gpio18()),
19 => transmute::<&'static io_mux::GPIO19, &'static io_mux::GPIO0>(iomux.gpio19()),
20 => transmute::<&'static io_mux::GPIO20, &'static io_mux::GPIO0>(iomux.gpio20()),
21 => transmute::<&'static io_mux::GPIO21, &'static io_mux::GPIO0>(iomux.gpio21()),
22 => transmute::<&'static io_mux::GPIO22, &'static io_mux::GPIO0>(iomux.gpio22()),
23 => transmute::<&'static io_mux::GPIO23, &'static io_mux::GPIO0>(iomux.gpio23()),
24 => transmute::<&'static io_mux::GPIO24, &'static io_mux::GPIO0>(iomux.gpio24()),
25 => transmute::<&'static io_mux::GPIO25, &'static io_mux::GPIO0>(iomux.gpio25()),
26 => transmute::<&'static io_mux::GPIO26, &'static io_mux::GPIO0>(iomux.gpio26()),
27 => transmute::<&'static io_mux::GPIO27, &'static io_mux::GPIO0>(iomux.gpio27()),
32 => transmute::<&'static io_mux::GPIO32, &'static io_mux::GPIO0>(iomux.gpio32()),
33 => transmute::<&'static io_mux::GPIO33, &'static io_mux::GPIO0>(iomux.gpio33()),
34 => transmute::<&'static io_mux::GPIO34, &'static io_mux::GPIO0>(iomux.gpio34()),
35 => transmute::<&'static io_mux::GPIO35, &'static io_mux::GPIO0>(iomux.gpio35()),
36 => transmute::<&'static io_mux::GPIO36, &'static io_mux::GPIO0>(iomux.gpio36()),
37 => transmute::<&'static io_mux::GPIO37, &'static io_mux::GPIO0>(iomux.gpio37()),
38 => transmute::<&'static io_mux::GPIO38, &'static io_mux::GPIO0>(iomux.gpio38()),
39 => transmute::<&'static io_mux::GPIO39, &'static io_mux::GPIO0>(iomux.gpio39()),
_ => panic!(),
}
}

View File

@ -8,8 +8,7 @@
//!
//! Let's get through the functionality and configurations provided by this GPIO
//! module:
//! - `get_io_mux_reg(gpio_num: u8) -> &'static
//! crate::peripherals::io_mux::GPIO0:`:
//! - `get_io_mux_reg(gpio_num: u8) -> &'static io_mux::GPIO0:`:
//! * This function returns a reference to the GPIO register associated
//! with the given GPIO number. It uses unsafe code and transmutation to
//! access the GPIO registers based on the provided GPIO number.
@ -53,6 +52,8 @@
//! registers for both the `PRO CPU` and `APP CPU`. The implementation uses the
//! `gpio` peripheral to access the appropriate registers.
use core::mem::transmute;
use crate::{
gpio::{
AlternateFunction,
@ -61,7 +62,7 @@ use crate::{
InterruptStatusRegisterAccessBank0,
InterruptStatusRegisterAccessBank1,
},
peripherals::GPIO,
peripherals::{io_mux, GPIO, IO_MUX},
};
/// The total number of GPIO pins available.
@ -78,167 +79,50 @@ pub(crate) const ZERO_INPUT: u8 = 0x3c;
pub(crate) const GPIO_FUNCTION: AlternateFunction = AlternateFunction::Function1;
pub(crate) const fn get_io_mux_reg(gpio_num: u8) -> &'static crate::peripherals::io_mux::GPIO0 {
pub(crate) const fn get_io_mux_reg(gpio_num: u8) -> &'static io_mux::GPIO0 {
unsafe {
let iomux = &*crate::peripherals::IO_MUX::PTR;
let iomux = &*IO_MUX::PTR;
match gpio_num {
0 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO0,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio0()),
1 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO1,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio1()),
2 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO2,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio2()),
3 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO3,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio3()),
4 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO4,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio4()),
5 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO5,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio5()),
6 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO6,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio6()),
7 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO7,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio7()),
8 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO8,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio8()),
9 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO9,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio9()),
10 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO10,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio10()),
11 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO11,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio11()),
12 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO12,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio12()),
13 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO13,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio13()),
14 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO14,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio14()),
15 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO15,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio15()),
16 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO16,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio16()),
17 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO17,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio17()),
18 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO18,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio18()),
19 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO19,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio19()),
20 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO20,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio20()),
21 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO21,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio21()),
26 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO26,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio26()),
27 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO27,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio27()),
32 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO32,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio32()),
33 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO33,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio33()),
34 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO34,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio34()),
35 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO35,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio35()),
36 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO36,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio36()),
37 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO37,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio37()),
38 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO38,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio38()),
39 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO39,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio39()),
40 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO40,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio40()),
41 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO41,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio41()),
42 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO42,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio42()),
43 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO43,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio43()),
44 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO44,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio44()),
45 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO45,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio45()),
46 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO46,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio46()),
0 => transmute::<&'static io_mux::GPIO0, &'static io_mux::GPIO0>(iomux.gpio0()),
1 => transmute::<&'static io_mux::GPIO1, &'static io_mux::GPIO0>(iomux.gpio1()),
2 => transmute::<&'static io_mux::GPIO2, &'static io_mux::GPIO0>(iomux.gpio2()),
3 => transmute::<&'static io_mux::GPIO3, &'static io_mux::GPIO0>(iomux.gpio3()),
4 => transmute::<&'static io_mux::GPIO4, &'static io_mux::GPIO0>(iomux.gpio4()),
5 => transmute::<&'static io_mux::GPIO5, &'static io_mux::GPIO0>(iomux.gpio5()),
6 => transmute::<&'static io_mux::GPIO6, &'static io_mux::GPIO0>(iomux.gpio6()),
7 => transmute::<&'static io_mux::GPIO7, &'static io_mux::GPIO0>(iomux.gpio7()),
8 => transmute::<&'static io_mux::GPIO8, &'static io_mux::GPIO0>(iomux.gpio8()),
9 => transmute::<&'static io_mux::GPIO9, &'static io_mux::GPIO0>(iomux.gpio9()),
10 => transmute::<&'static io_mux::GPIO10, &'static io_mux::GPIO0>(iomux.gpio10()),
11 => transmute::<&'static io_mux::GPIO11, &'static io_mux::GPIO0>(iomux.gpio11()),
12 => transmute::<&'static io_mux::GPIO12, &'static io_mux::GPIO0>(iomux.gpio12()),
13 => transmute::<&'static io_mux::GPIO13, &'static io_mux::GPIO0>(iomux.gpio13()),
14 => transmute::<&'static io_mux::GPIO14, &'static io_mux::GPIO0>(iomux.gpio14()),
15 => transmute::<&'static io_mux::GPIO15, &'static io_mux::GPIO0>(iomux.gpio15()),
16 => transmute::<&'static io_mux::GPIO16, &'static io_mux::GPIO0>(iomux.gpio16()),
17 => transmute::<&'static io_mux::GPIO17, &'static io_mux::GPIO0>(iomux.gpio17()),
18 => transmute::<&'static io_mux::GPIO18, &'static io_mux::GPIO0>(iomux.gpio18()),
19 => transmute::<&'static io_mux::GPIO19, &'static io_mux::GPIO0>(iomux.gpio19()),
20 => transmute::<&'static io_mux::GPIO20, &'static io_mux::GPIO0>(iomux.gpio20()),
21 => transmute::<&'static io_mux::GPIO21, &'static io_mux::GPIO0>(iomux.gpio21()),
26 => transmute::<&'static io_mux::GPIO26, &'static io_mux::GPIO0>(iomux.gpio26()),
27 => transmute::<&'static io_mux::GPIO27, &'static io_mux::GPIO0>(iomux.gpio27()),
32 => transmute::<&'static io_mux::GPIO32, &'static io_mux::GPIO0>(iomux.gpio32()),
33 => transmute::<&'static io_mux::GPIO33, &'static io_mux::GPIO0>(iomux.gpio33()),
34 => transmute::<&'static io_mux::GPIO34, &'static io_mux::GPIO0>(iomux.gpio34()),
35 => transmute::<&'static io_mux::GPIO35, &'static io_mux::GPIO0>(iomux.gpio35()),
36 => transmute::<&'static io_mux::GPIO36, &'static io_mux::GPIO0>(iomux.gpio36()),
37 => transmute::<&'static io_mux::GPIO37, &'static io_mux::GPIO0>(iomux.gpio37()),
38 => transmute::<&'static io_mux::GPIO38, &'static io_mux::GPIO0>(iomux.gpio38()),
39 => transmute::<&'static io_mux::GPIO39, &'static io_mux::GPIO0>(iomux.gpio39()),
40 => transmute::<&'static io_mux::GPIO40, &'static io_mux::GPIO0>(iomux.gpio40()),
41 => transmute::<&'static io_mux::GPIO41, &'static io_mux::GPIO0>(iomux.gpio41()),
42 => transmute::<&'static io_mux::GPIO42, &'static io_mux::GPIO0>(iomux.gpio42()),
43 => transmute::<&'static io_mux::GPIO43, &'static io_mux::GPIO0>(iomux.gpio43()),
44 => transmute::<&'static io_mux::GPIO44, &'static io_mux::GPIO0>(iomux.gpio44()),
45 => transmute::<&'static io_mux::GPIO45, &'static io_mux::GPIO0>(iomux.gpio45()),
46 => transmute::<&'static io_mux::GPIO46, &'static io_mux::GPIO0>(iomux.gpio46()),
_ => ::core::unreachable!(),
}
}