#ifndef BOOTLOADER_GPIO #define BOOTLOADER_GPIO /* format for flags offset size name 0 4 LINE (0-15) 4 4 PORT (0-10) 8 4 ALT (0-15) 12 2 MODER (0-3) 14 2 PUPDR (0-2) 16 2 OSPEEDR (0-3) 18 1 OTYPER (0-1) 19 1 INITSTATE (0-1) */ enum { GPIO_FLAGS_SHIFT_LINE = 0, GPIO_FLAGS_SHIFT_PORT = 4, GPIO_FLAGS_SHIFT_ALT = 8, GPIO_FLAGS_SHIFT_MODE = 12, GPIO_FLAGS_SHIFT_PULL = 14, GPIO_FLAGS_SHIFT_SPD = 16, GPIO_FLAGS_SHIFT_TYPE = 18, GPIO_FLAGS_SHIFT_INIT = 19, }; enum { GPIO_FLAGS_MASK_LINE = 0x0000000F, GPIO_FLAGS_MASK_PORT = 0x000000F0, GPIO_FLAGS_MASK_ALT = 0x00000F00, GPIO_FLAGS_MASK_MODE = 0x00003000, GPIO_FLAGS_MASK_PULL = 0x0000C000, GPIO_FLAGS_MASK_SPD = 0x00030000, GPIO_FLAGS_MASK_TYPE = 0x00040000, GPIO_FLAGS_MASK_INIT = 0x00080000, }; enum { GPIO_PIN_0 = 0<