pio_writel(pio, SODR, mask);
                else
                        pio_writel(pio, CODR, mask);
+               if (flags & AT32_GPIOF_MULTIDRV)
+                       pio_writel(pio, MDER, mask);
+               else
+                       pio_writel(pio, MDDR, mask);
                pio_writel(pio, PUDR, mask);
                pio_writel(pio, OER, mask);
        } else {
 
 #define AT32_GPIOF_OUTPUT      0x00000002      /* (OUT) Enable output driver */
 #define AT32_GPIOF_HIGH                0x00000004      /* (OUT) Set output high */
 #define AT32_GPIOF_DEGLITCH    0x00000008      /* (IN) Filter glitches */
+#define AT32_GPIOF_MULTIDRV    0x00000010      /* Enable multidriver option */
 
 void at32_select_periph(unsigned int pin, unsigned int periph,
                        unsigned long flags);