Skip to main content

gpio_for_signal

Macro gpio_for_signal 

Source
macro_rules! gpio_for_signal {
    (XTAL_32K_P $(, $_fallback:literal)?) => { ... };
    (ADC1_CH0 $(, $_fallback:literal)?) => { ... };
    (LP_GPIO0 $(, $_fallback:literal)?) => { ... };
    (LP_UART_DTRN $(, $_fallback:literal)?) => { ... };
    (XTAL_32K_N $(, $_fallback:literal)?) => { ... };
    (ADC1_CH1 $(, $_fallback:literal)?) => { ... };
    (LP_GPIO1 $(, $_fallback:literal)?) => { ... };
    (LP_UART_DSRN $(, $_fallback:literal)?) => { ... };
    (FSPIQ $(, $_fallback:literal)?) => { ... };
    (ADC1_CH2 $(, $_fallback:literal)?) => { ... };
    (LP_GPIO2 $(, $_fallback:literal)?) => { ... };
    (LP_UART_RTSN $(, $_fallback:literal)?) => { ... };
    (ADC1_CH3 $(, $_fallback:literal)?) => { ... };
    (LP_GPIO3 $(, $_fallback:literal)?) => { ... };
    (LP_UART_CTSN $(, $_fallback:literal)?) => { ... };
    (MTMS $(, $_fallback:literal)?) => { ... };
    (FSPIHD $(, $_fallback:literal)?) => { ... };
    (ADC1_CH4 $(, $_fallback:literal)?) => { ... };
    (LP_GPIO4 $(, $_fallback:literal)?) => { ... };
    (LP_UART_RXD $(, $_fallback:literal)?) => { ... };
    (MTDI $(, $_fallback:literal)?) => { ... };
    (FSPIWP $(, $_fallback:literal)?) => { ... };
    (ADC1_CH5 $(, $_fallback:literal)?) => { ... };
    (LP_GPIO5 $(, $_fallback:literal)?) => { ... };
    (LP_UART_TXD $(, $_fallback:literal)?) => { ... };
    (MTCK $(, $_fallback:literal)?) => { ... };
    (FSPICLK $(, $_fallback:literal)?) => { ... };
    (ADC1_CH6 $(, $_fallback:literal)?) => { ... };
    (LP_GPIO6 $(, $_fallback:literal)?) => { ... };
    (LP_I2C_SDA $(, $_fallback:literal)?) => { ... };
    (MTDO $(, $_fallback:literal)?) => { ... };
    (FSPID $(, $_fallback:literal)?) => { ... };
    (LP_GPIO7 $(, $_fallback:literal)?) => { ... };
    (LP_I2C_SCL $(, $_fallback:literal)?) => { ... };
    (USJ_DM $(, $_fallback:literal)?) => { ... };
    (USJ_DP $(, $_fallback:literal)?) => { ... };
    (U0TXD $(, $_fallback:literal)?) => { ... };
    (FSPICS0 $(, $_fallback:literal)?) => { ... };
    (U0RXD $(, $_fallback:literal)?) => { ... };
    (FSPICS1 $(, $_fallback:literal)?) => { ... };
    (SDIO_CMD $(, $_fallback:literal)?) => { ... };
    (FSPICS2 $(, $_fallback:literal)?) => { ... };
    (SDIO_CLK $(, $_fallback:literal)?) => { ... };
    (FSPICS3 $(, $_fallback:literal)?) => { ... };
    (SDIO_DATA0 $(, $_fallback:literal)?) => { ... };
    (FSPICS4 $(, $_fallback:literal)?) => { ... };
    (SDIO_DATA1 $(, $_fallback:literal)?) => { ... };
    (FSPICS5 $(, $_fallback:literal)?) => { ... };
    (SDIO_DATA2 $(, $_fallback:literal)?) => { ... };
    (SDIO_DATA3 $(, $_fallback:literal)?) => { ... };
    (SPICS0 $(, $_fallback:literal)?) => { ... };
    (SPIQ $(, $_fallback:literal)?) => { ... };
    (SPIWP $(, $_fallback:literal)?) => { ... };
    (SPIHD $(, $_fallback:literal)?) => { ... };
    (SPICLK $(, $_fallback:literal)?) => { ... };
    (SPID $(, $_fallback:literal)?) => { ... };
    ($_signal:ident, $fallback:literal) => { ... };
}
Available on crate feature _device-selected only.
Expand description

Returns the name of the GPIO that provides the given signal, as a string.

The macro takes the name of a direct function - a digital IO MUX function, an analog function, or an LP IO MUX function - and expands to a string literal like "GPIO4". It is meant to keep documentation free of per-chip pin lists.

Signals that are not wired to a pad on this chip have to be routed through the GPIO matrix, which can reach any pad. The macro has no pad to return for those, so it accepts an optional fallback to expand to instead. The fallback is not validated.

If multiple pads provide the signal, the macro returns one that is not reserved for some other purpose, such as booting or interfacing with flash.

Example usage:

  • gpio_for_signal!(ADC1_CH0)
  • gpio_for_signal!(LP_I2C_SDA, "GPIO6")