/* Baremetal Risc-V USB <=> Amiga Joystick/Mouse HID converter. * March 2026 - Anders Holck * This software has no license. If you choose to use, please include my name :) */ #ifndef PINMUX_H #define PINMUX_H #include "usb_dwc2.h" #define PINMUX_BASE 0x03001000 /* Pinmux offsets for GPIOA 14-29 */ #define PINMUX_GPIOA14 0x050 #define PINMUX_GPIOA15 0x054 #define PINMUX_GPIOA16 0x058 #define PINMUX_GPIOA17 0x05C #define PINMUX_GPIOA18 0x060 #define PINMUX_GPIOA19 0x064 #define PINMUX_GPIOA20 0x068 #define PINMUX_GPIOA21 0x06C #define PINMUX_GPIOA22 0x070 #define PINMUX_GPIOA23 0x074 #define PINMUX_GPIOA24 0x078 #define PINMUX_GPIOA25 0x07C #define PINMUX_GPIOA26 0x080 #define PINMUX_GPIOA27 0x084 #define PINMUX_GPIOA28 0x088 #define PINMUX_GPIOA29 0x08C /* Function Mode for GPIO (usually Mode 0 or 3) */ #define MUX_MODE_GPIO 0 static inline void pinmux_config(uint32_t offset, uint32_t mode) { write32(PINMUX_BASE + offset, mode); } static inline void pinmux_init_amiga() { // Config GP0-GP15 as GPIO pinmux_config(PINMUX_GPIOA28, MUX_MODE_GPIO); // GP0 pinmux_config(PINMUX_GPIOA29, MUX_MODE_GPIO); // GP1 pinmux_config(PINMUX_GPIOA14, MUX_MODE_GPIO); // GP2 pinmux_config(PINMUX_GPIOA15, MUX_MODE_GPIO); // GP3 pinmux_config(PINMUX_GPIOA16, MUX_MODE_GPIO); // GP4 pinmux_config(PINMUX_GPIOA17, MUX_MODE_GPIO); // GP5 pinmux_config(PINMUX_GPIOA18, MUX_MODE_GPIO); // GP6 pinmux_config(PINMUX_GPIOA19, MUX_MODE_GPIO); // GP7 pinmux_config(PINMUX_GPIOA20, MUX_MODE_GPIO); // GP8 pinmux_config(PINMUX_GPIOA21, MUX_MODE_GPIO); // GP9 pinmux_config(PINMUX_GPIOA22, MUX_MODE_GPIO); // GP10 pinmux_config(PINMUX_GPIOA23, MUX_MODE_GPIO); // GP11 pinmux_config(PINMUX_GPIOA24, MUX_MODE_GPIO); // GP12 pinmux_config(PINMUX_GPIOA25, MUX_MODE_GPIO); // GP13 pinmux_config(PINMUX_GPIOA26, MUX_MODE_GPIO); // GP14 pinmux_config(PINMUX_GPIOA27, MUX_MODE_GPIO); // GP15 } #endif /* PINMUX_H */