diff --git a/include/arm11/gpio.h b/include/arm11/gpio.h new file mode 100644 index 0000000..ad88174 --- /dev/null +++ b/include/arm11/gpio.h @@ -0,0 +1,21 @@ +#pragma once + +#include "types.h" + + + +/** + * @brief Sets a bit in the specified GPIO register. + * + * @param[in] reg The register number. + * @param[in] bitNum The bit number. + */ +void gpioSetBit(u16 reg, u8 bitNum); + +/** + * @brief Clears a bit in the specified GPIO register. + * + * @param[in] reg The register number. + * @param[in] bitNum The bit number. + */ +void gpioClearBit(u16 reg, u8 bitNum); diff --git a/include/arm11/interrupt.h b/include/arm11/interrupt.h index 03817f9..407f396 100644 --- a/include/arm11/interrupt.h +++ b/include/arm11/interrupt.h @@ -21,7 +21,8 @@ IRQ_MPCORE_SW13 = 13, IRQ_MPCORE_SW14 = 14, IRQ_MPCORE_SW15 = 15, - IRQ_PXI_SYNC = 80 + IRQ_PXI_SYNC = 80, + IRQ_MCU_HID = 113 } Interrupt; diff --git a/source/arm11/gpio.c b/source/arm11/gpio.c new file mode 100644 index 0000000..416712c --- /dev/null +++ b/source/arm11/gpio.c @@ -0,0 +1,17 @@ +#include "types.h" +#include "mem_map.h" + + +#define REGs_GPIO ((vu16*)(IO_MEM_ARM9_ARM11 + 0x47000)) + + + +void gpioSetBit(u16 reg, u8 bitNum) +{ + REGs_GPIO[reg] |= 1u<