Write to sets of two bits in a register at a time in C
I would try just using a uint32_t instead of bit fields. Here's what I would probably do:

typedef enum
{
    LED,
    PWM,
    ...
} MUX_E;

uint32_t MuxRegister;

void SetMuxOption (uint8_t const option, MUX_E const bits)
{
    MuxRegister &amp;= ~(uint32_t) (3 &lt;&lt; 2*bits);
    MuxRegister |= (uint32_t) (option &lt;&lt; 2*bits);
}