@@ -872,9 +872,25 @@ static inline PIO pio_get_instance(uint instance) {
872
872
*
873
873
* PIO appears as an alternate function in the GPIO muxing, just like an SPI
874
874
* or UART. This function configures that multiplexing to connect a given PIO
875
- * instance to a GPIO. Note that this is not necessary for a state machine to
876
- * be able to read the *input* value from a GPIO, but only for it to set the
877
- * output value or output enable.
875
+ * instance to a GPIO. It also configures the GPIO pad to pass signals in and
876
+ * out, by:
877
+ *
878
+ * * Clearing the pad output disable (OD) bit
879
+ * * Setting the pad input enable (IE) bit
880
+ * * (Non-RP2040) removing pad isolation
881
+ *
882
+ * This function achieves this low-level pad setup by calling gpio_set_function()
883
+ * internally.
884
+ *
885
+ * Note that, if your PIO program only needs the *input* from a given GPIO,
886
+ * it's not necessary to select the PIO GPIO function, because PIO input
887
+ * paths ignore the GPIO muxing. However, you must still configure the GPIO
888
+ * pad itself for input.
889
+ *
890
+ * Conversely, if using PIO for both input and output on a given pin, you must
891
+ * select the PIO GPIO function for the given PIO instance, as well as
892
+ * configuring the pad for input and output. Calling this function is
893
+ * sufficient for both the input-only and input/output case.
878
894
*
879
895
* \param pio The PIO instance; e.g. \ref pio0 or \ref pio1
880
896
* \param pin the GPIO pin whose function select to set
0 commit comments