rp2: No support for external pins in Pico W build
The named pins feature for supporting external pins requires the definition of machine_pin_ext_init and various other functions for configuring, setting and getting external pins.
This feature is entirely monopolized by the Pico W build, in such a way that it's impossible to add additional external pins on top of those defined for Pico W.
There should be no reason why we can't take a copy of machine_pin_cyw43.c , and extend it as necessary.
This would require moving the hard-coded exception for Pico W in CMakeLists.txt into the board config -
https://github.com/micropython/micropython/blob/3637252b7bc3e85ea92038161e008a550991d1f4/ports/rp2/CMakeLists.txt#L300-L302
ESP32 handles additional sources with the MICROPY_SOURCE_BOARD variable, I think the RP2 port should mirror this behavior, and this is how machine_pin_cyw43.c should be included - https://github.com/micropython/micropython/blob/3637252b7bc3e85ea92038161e008a550991d1f4/ports/esp32/esp32_common.cmake#L105
ESP32 RTC_VALID_EXT_PINS not valid for ESP32 S2/S3
modesp32.h defines the valid RTC_VALID_EXT_PINS suitable for Pico D4. S2 has a different pinout.
For example, pin 10 is not valid on Pico D4 (Flash memory), but is a valid RTC pin on S2. If I'm not mistaken, I believe this should work on S2, but getting 'invalid pin' error.
o = Pin(10, Pin.IN, pull=Pin.PULL_UP)
esp32.wake_on_ext0(pin = o, level = esp32.WAKEUP_ALL_LOW) #single pin
Thank you!