Swap SCLK and MOSI on SERCOM1

Hello, I have a board (Zero derivative) that I accidentally swapped the SCLK and MOSI pins on (on sercom1). It would be nice to use MUXing to throw some lipstick on that pig, but when setting the SercomSPITXPad settings, the necessary configuration: SPI_PAD_1_SCK_0 is not defined. I arbitrarily added it to the enum in SERCOM.cpp but obviously this did not work. Is there any possible way to get those two pins swapped via configuration? It would be nice to use the jacked up wiring to prototype until I can get a board with the fixed pinout. Included variant.h modifications for reference:

/*
 * SPI Interfaces
 */
#define SPI_INTERFACES_COUNT 2

#define PIN_SPI_MISO (22u)
#define PIN_SPI_MOSI (23u)
#define PIN_SPI_SCK (24u)
#define PERIPH_SPI sercom4
#define PAD_SPI_TX SPI_PAD_2_SCK_3
#define PAD_SPI_RX SERCOM_RX_PAD_2

static const uint8_t SS = PIN_A2;
static const uint8_t MISO = PIN_SPI_MISO;
static const uint8_t SCK = PIN_SPI_SCK;

#define PIN_SPI1_MISO (10u)
#define PIN_SPI1_MOSI (13u)
#define PIN_SPI1_SCK (11u)
#define PERIPH_SPI1 sercom1
#define PAD_SPI1_TX SPI_PAD_1_SCK_0
#define PAD_SPI1_RX SERCOM_RX_PAD_2

static const uint8_t SS1 = 12;
static const uint8_t MOSI1 = PIN_SPI1_MOSI;
static const uint8_t MISO1 = PIN_SPI1_MISO;
static const uint8_t SCK1 = PIN_SPI1_SCK;

Thanks!

If it were me I would cut the two traces and then add jumpers to correct the mistook. Wire Wrap wire is great for this. Blue is a popular color.

I don't believe that this is possible. See the datasheet. Your choices are:


(SCK on PAD0 isn't there...)

That may be my best option, woulda been nice to give myself more room :rofl:

That was my fear.... I did check the datasheet but it doesn't help when I search by "MOSI" instead of "DO"... obviously I come by these bonehead errors honestly.