📄 gpio.h
字号:
#ifndef __GPIO_H
#define __GPIO_H
#define GPIOSEL_8_HVSYNC (1 << 8)
//
// GPIO_SEL[]
//
// GPIO_SEL[1:0]
#define GPIOSEL_10_EPP (0x0 << 0) // EPP
#define GPIOSEL_10_MODEM (0x1 << 0)
#define GPIOSEL_10_UARTS (0x2 << 0) // 2 UART, for extra GPIO and UART debugging
#define GPIOSEL_10_GPIOS (0x3 << 0)
// GPIO_SEL[5:2]
#define GPIOSEL_52_ATAPI (0x0 << 2)
#define GPIOSEL_52_UDE (0x1 << 2)
#define GPIOSEL_52_UDE2 (0x8 << 2)
#define GPIOSEL_52_GPIO (0xc << 2)
// GPIO_SEL[6]
#define GPIOSEL_6_GPIO (0 << 6) // 0: RISC_INT3 and IRQE3_L
#define GPIOSEL_6_CLK27M (1 << 6) // 1: TV-encoder 27M
// GPIO_SEL[7]
#define GPIOSEL_7_GPIO (0 << 7) // 0: RISC_INT2 and IRQE2_L
#define GPIOSEL_7_PALNTSC (1 << 7) // 1: O_PAL_NTSC
// GPIO_SEL[8]
#define GPIOSEL_8_HVSYNC_IN (0 << 8) // 0: GPIO
#define GPIOSEL_8_GPIO (1 << 8) // 1: DSP FL0
// GPIO_SEL[9]
#define GPIOSEL_9_UART_NORMAL (0 << 9) // 0: UART1/UART2
#define GPIOSEL_9_UART_SWAPPED (1 << 9) // 1: UART2/UART1
// GPIO_SEL[10]
#define GPIOSEL_A_GPIO20 (0 << 10) // 0: GPIO[20]
#define GPIOSEL_A_FL0 (1 << 10) // 1: DSP FL0
// GPIO_SEL[11]
#define GPIOSEL_B_GPIO21 (0 << 11) // 0: GPIO[21]
#define GPIOSEL_B_FL1 (1 << 11) // 1: DSP FL1
// GPIO_SEL[12]
#define GPIOSEL_C_GPIO59 (0 << 12) // 0: GPIO[59]
#define GPIOSEL_C_FL2 (1 << 12) // 1: DSP FL2
// GPIO_SEL[14:13]
#define GPIOSEL_ED_TVOUT_ALYS (0 << 13) // 0b00: always output
#define GPIOSEL_ED_TVOUT_TRI (2 << 13) // 0b10: HZ when GPIOE[2]==1
#define GPIOSEL_ED_TVOUT_TRIN (3 << 13) // 0b11: HZ when GPIOE[2]==0
//
// GPIO_SEL_AUX
//
// GPIO_SEL_AUX[0]
#define GPIOAUX_0_ROMADDR21 (0 << 0) // 0: ROM_ADDR[21] (default)
#define GPIOAUX_0_GPIO0 (1 << 0) // 1: GPIO[0]
// GPIO_SEL_AUX[1]
#define GPIOAUX_1_ROMADDR20 (0 << 1) // 0: ROM_ADDR[20] (default)
#define GPIOAUX_1_GPIO1 (1 << 1) // 1: GPIO[1]
// GPIO_SEL_AUX[2]
#define GPIOAUX_2_MEMWEB (0 << 2) // 0: MEMWE_B (default)
#define GPIOAUX_2_GPIO2 (1 << 2) // 1: GPIO[2]
// GPIO_SEL_AUX[3]
#define GPIOAUX_3_MEMOEB (0 << 3) // 0: MEMOE_B (default)
#define GPIOAUX_3_GPIO12 (1 << 3) // 1: GPIO[12]
// GPIO_SEL_AUX[6:4]
#define GPIOAUX_64_MEMCS3_CSX (1 << 4) // 000: normal
#define GPIOAUX_64_MEMCS3_CS1 (0 << 4) // 001: direct CS3 to CS1 (for CS1 programming)
#define GPIOAUX_64_MEMCS3_CS2 (2 << 4) // 010: direct CS3 to CS2 (for CS2 programming)
#define GPIOAUX_64_MEMCS3_CS3 (3 << 4) // 011: direct CS3 to CS2 (for CS3 programming)
#define GPIOAUX_64_MEMCS3_GPIO (4 << 4) // 100: GPIO[15:13]
// GPIO_SEL_AUX[7]
#define GPIOAUX_7_ROMADDR22 (0 << 7) // 0: ROM_ADDR[22]
#define GPIOAUX_7_GPIO16 (1 << 7) // 1: GPIO[16]
// GPIO_SEL_AUX[8]
#define GPIOAUX_8_ROMADDR23 (0 << 8) // 0: ROM_ADDR[23]
#define GPIOAUX_8_GPIO17 (1 << 8) // 1: GPIO[17]
// GPIO_SEL_AUX[9]
#define GPIOAUX_9_ROMADDR24 (0 << 9) // 0: ROM_ADDR[24]
#define GPIOAUX_9_GPIO18 (1 << 9) // 1: GPIO[18]
// GPIO_SEL_AUX[10]
#define GPIOAUX_A_ROMADDR25 (0 << 10) // 0: ROM_ADDR[25]
#define GPIOAUX_A_GPIO19 (1 << 10) // 1: GPIO[19]
// aux: 10
// sel: 00
#define GPIO_SEL_DEFAULT (GPIOSEL_10_EPP | \
GPIOSEL_52_ATAPI | \
GPIOSEL_6_GPIO | \
GPIOSEL_7_GPIO | \
GPIOSEL_8_HVSYNC_IN | \
GPIOSEL_9_UART_NORMAL | \
GPIOSEL_A_FL0 | \
GPIOSEL_B_FL1 | \
GPIOSEL_C_GPIO59 | \
GPIOSEL_ED_TVOUT_ALYS)
#define GPIO_SEL_AUX_DEFAULT (GPIOAUX_0_GPIO0 | \
GPIOAUX_1_GPIO1 | \
GPIOAUX_2_GPIO2 | \
GPIOAUX_3_MEMOEB | \
GPIOAUX_64_MEMCS3_CSX | \
GPIOAUX_7_ROMADDR22 | \
GPIOAUX_8_ROMADDR23 | \
GPIOAUX_9_ROMADDR24 | \
GPIOAUX_A_ROMADDR25)
//
// generic GPIO operations
//
void GPIO_G_SET(BYTE i, BYTE d, UINT16 a);
#define GPIO_SEL_AUX(a, d) ((d) ? (regs0->gpio_sel_aux |= (1 << (a % 16))) : \
(regs0->gpio_sel_aux &= ~(1 << (a % 16))))
#define GPIO_SEL(a, d) ((d) ? (regs0->gpio_sel |= (1 << (a % 16))) : \
(regs0->gpio_sel &= ~(1 << (a % 16))))
#define GPIO_I_GET(a) ((regs0->gpio_in[a / 16] >> (a % 16)) & 0x01)
#define GPIO_O_SET(a, d) ((d) ? (regs0->gpio_out[a / 16] |= (1 << (a % 16))) : \
(regs0->gpio_out[a / 16] &= ~(1 << (a % 16))))
#define GPIO_E_SET(a, d) ((d) ? (regs0->gpio_oe[a / 16] |= (1 << (a % 16))) : \
(regs0->gpio_oe[a / 16] &= ~(1 << (a % 16))))
#define GPIO_M_SET(a, d) ((d) ? (regs0->gpio_master[a / 16] |= (1 << (a % 16))) : \
(regs0->gpio_master[a / 16] &= ~(1 << (a % 16))))
#endif __GPIO_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -