⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gpio.h

📁 代码有点长,需细心阅读,仅供影音视听类产品的开发人员参考
💻 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 + -