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

📄 psc.h

📁 RMI的处理器au1200系列所用的BOOTLOAD,包括SD卡启动USB启动硬盘启动网络启动,并初始化硬件的所有参数,支持内核调试.
💻 H
📖 第 1 页 / 共 2 页
字号:
#define	PSC_I2S_EVNT_RU			(1<<11)	// RX Fifo underflow#define	PSC_I2S_EVNT_RO			(1<<12)	// RX fifo overflow#define	PSC_I2S_EVNT_RR			(1<<13)	// RX Fifo request#define PSC_I2S_TXRX_DATA		(0xFFFFFF<<0)	// Data#define PSC_I2S_TXRX_DATA_N(n)	((n&0xFFFFFF)<<0)/*#####################################################################################################                         AC97 Register Definitions                                    #####################################################################################################*/#define PSC_AC97_SEL	 	PSC_SEL#define PSC_AC97_CTL	 	PSC_CTL#define PSC_AC97_CFG	 	0x00000008#define PSC_AC97_MSK	 	0x0000000C#define PSC_AC97_PCR	 	0x00000010#define PSC_AC97_STS	 	0x00000014#define PSC_AC97_EVNT	 	0x00000018#define PSC_AC97_TXRX	 	0x0000001C#define PSC_AC97_CDC		0x00000020#define PSC_AC97_RST		0x00000024#define PSC_AC97_GPO		0x00000028#define PSC_AC97_GPI		0x0000002C#ifndef ASSEMBLERtypedef volatile struct {    PSC_SELECT psc;		//00,04    uint32 cfg;			//08    uint32 msk;			//0C    uint32 pcr;			//10    uint32 sts;			//14    uint32 evnt;		//18    uint32 txrx;		//1C    uint32 cdc;			//20    uint32 rst;			//24    uint32 gpo;			//28    uint32 gpi;			//2C} PSC_AC97;#endif#define PSC_AC97_CFG_GE			(1<<0)	// GPIO Register Enable#define PSC_AC97_CFG_RXSLOT		(0x3FF<<1)	// Valid Rx slots#define PSC_AC97_CFG_RXSLOT_N(n) ((n&0x3FF)<<1)#define PSC_AC97_CFG_TXSLOT		(0x3FF<<11)	// Valid Tx slots#define PSC_AC97_CFG_TXSLOT_N(n) ((n&0x3FF)<<11)#define PSC_AC97_CFG_LEN		(0x1F<<21)	// Data Length#define PSC_AC97_CFG_LEN_N(n) ((n&0x1F)<<21)#define PSC_AC97_CFG_DE			(1<<26)	// Device Enable#define PSC_AC97_CFG_DD			(1<<27)	// DMA Disable#define	PSC_AC97_CFG_TRD	  	(0x3<<28)	// TX Request Depth#define	PSC_AC97_CFG_TRD_N(n)	((n&0x3)<<28)#define	PSC_AC97_CFG_RRD	  	(0x3<<30)	// Rx Request Depth#define	PSC_AC97_CFG_RRD_N(n)	((n&0x3)<<30)#define	PSC_AC97_MSK_TD			(1<<4)	// Tx Done#define	PSC_AC97_MSK_RD			(1<<5)	// Rx Done#define	PSC_AC97_MSK_TU			(1<<8)	// TX Fifo underflow#define	PSC_AC97_MSK_TO			(1<<9)	// TX fifo overflow#define	PSC_AC97_MSK_TR			(1<<10)	// TX Fifo request#define	PSC_AC97_MSK_RU			(1<<11)	// RX Fifo underflow#define	PSC_AC97_MSK_RO			(1<<12)	// RX fifo overflow#define	PSC_AC97_MSK_RR			(1<<13)	// RX Fifo request#define	PSC_AC97_MSK_CD			(1<<24)	// CODEC Command done#define	PSC_AC97_MSK_GR			(1<<25)	// GPI Data Ready Interrupt#define PSC_AC97_PCR_TS			(1<<0)	// Tx start#define PSC_AC97_PCR_TP			(1<<1)	// Tx Stop#define PSC_AC97_PCR_TC			(1<<2)	// Tx Data Clear#define PSC_AC97_PCR_RS			(1<<4)	// Rx Start#define PSC_AC97_PCR_RP			(1<<5)	// Rx Stop#define PSC_AC97_PCR_RC			(1<<6)	// Rx Data Clear// Status Register is Read Only //#define PSC_AC97_STS_SR			(1<<0)	// PSC Ready#define PSC_AC97_STS_DR			(1<<1)	// Device Ready#define PSC_AC97_STS_DI			(1<<2)	// Device INterrupt#define PSC_AC97_STS_TB			(1<<4)	// Tx BUsy#define PSC_AC97_STS_RB			(1<<5)	// Rx Busy#define PSC_AC97_STS_TR			(1<<8)	// Tx Rrequest#define PSC_AC97_STS_TE			(1<<9)	// Tx Fifo Empty#define PSC_AC97_STS_TF			(1<<10)	// Tx Fifo Full#define PSC_AC97_STS_RR			(1<<11)	// Rx Rrequest#define PSC_AC97_STS_RE			(1<<12)	// Rx Fifo Empty#define PSC_AC97_STS_RF			(1<<13)	// Rx Fifo Full#define PSC_AC97_STS_CR			(1<<24)	// Codec ready#define PSC_AC97_STS_CP			(1<<25)	// Command Pending#define PSC_AC97_STS_CB			(1<<26)	// Codec Bit Clock detected#define	PSC_AC97_EVNT_TD   		(1<<4)	// Tx Done#define	PSC_AC97_EVNT_RD   		(1<<5)	// Rx Done#define	PSC_AC97_EVNT_TU   		(1<<8)	// TX Fifo underflow#define	PSC_AC97_EVNT_TO   		(1<<9)	// TX fifo overflow#define	PSC_AC97_EVNT_TR   		(1<<10)	// TX Fifo request#define	PSC_AC97_EVNT_RU   		(1<<11)	// RX Fifo underflow#define	PSC_AC97_EVNT_RO   		(1<<12)	// RX fifo overflow#define	PSC_AC97_EVNT_RR   		(1<<13)	// RX Fifo request#define	PSC_AC97_EVNT_CD   		(1<<24)	// CODEC Command done#define	PSC_AC97_EVNT_GR   		(1<<25)	// GPI Data Ready Interrupt#define PSC_AC97_TXRX_DATA		(0xFFFFF<<0)	// Data#define PSC_AC97_TXRX_DATA_N(n)	((n&0xFFFFF)<<0)#define PSC_AC97_CDC_DATA		(0xFFFF<<0)	// data#define PSC_AC97_CDC_DATA_N(n) 	((n&0xFFFF)<<0)#define PSC_AC97_CDC_INDX		(0x7F<<16)	// register index#define PSC_AC97_CDC_INDX_N(n) 	((n&0x7F)<<16)#define PSC_AC97_CDC_ID			(0x3<<23)	// 2bit id for codec#define PSC_AC97_CDC_ID_N(n) 	((n&0x3)<<23)#define PSC_AC97_CDC_RD			(1<<25)	// Codec Read/Write#define PSC_AC97_RST_SNC		(1<<0)	// Sync signal control#define PSC_AC97_RST_RST		(1<<1)	// AC link reset#define PSC_AC97_GPO_DATA		(0xFFFFF<<0)#define PSC_AC97_GPO_DATA_N(n)	((n&0xFFFFF)<<0)#define PSC_AC97_GPI_DATA		(0xFFFFF<<0)#define PSC_AC97_GPI_DATA_N(n)	((n&0xFFFFF)<<0)/*#####################################################################################################                        SMBus Register Definitions                                    #####################################################################################################*/#define PSC_SMB_SEL	 		PSC_SEL#define PSC_SMB_CTL	 		PSC_CTL#define PSC_SMB_CFG	 		0x00000008#define PSC_SMB_MSK	 		0x0000000C#define PSC_SMB_PCR	 		0x00000010#define PSC_SMB_STS	 		0x00000014#define PSC_SMB_EVNT	 	0x00000018#define PSC_SMB_TXRX	 	0x0000001C#define PSC_SMB_TMR			0x00000030#ifndef ASSEMBLERtypedef volatile struct {    PSC_SELECT psc;		//00,04    uint32 cfg;			//08    uint32 msk;			//0C    uint32 pcr;			//10    uint32 sts;			//14    uint32 evnt;		//18    uint32 txrx;		//1C    uint32 tmr;			//20} PSC_SMB;#endif#define PSC_SMB_CFG_SLV			(0x7F<<4)	// Slave Address#define PSC_SMB_CFG_SLV_N(n)	((n&0x7F)<<1)#define PSC_SMB_CFG_SFM			(1<<8)	// Standard or Fast Mode#define PSC_SMB_CFG_CGE			(1<<9)	// General Call Enable#define	PSC_SMB_CFG_SDIV		(0x3<<13)	// Clock Divider#define	PSC_SMB_CFG_SDIV_N(n)	((n&0x3)<<13)#define PSC_SMB_CFG_DE			(1<<26)	// Device Enable#define PSC_SMB_CFG_DD			(1<<27)	// DMA Disable#define	PSC_SMB_CFG_TRD			(0x3<<28)	// TX Request Depth#define	PSC_SMB_CFG_TRD_N(n)	((n&0x3)<<28)#define	PSC_SMB_CFG_RRD			(0x3<<30)	// Rx Request Depth#define	PSC_SMB_CFG_RRD_N(n)	((n&0x3)<<30)#define	PSC_SMB_MSK_MD			(1<<4)	// Master Done#define	PSC_SMB_MSK_SD			(1<<5)	// Slave done#define	PSC_SMB_MSK_TU			(1<<8)	// TX Fifo underflow#define	PSC_SMB_MSK_TO			(1<<9)	// TX fifo overflow#define	PSC_SMB_MSK_RU			(1<<11)	// RX Fifo underflow#define	PSC_SMB_MSK_RO			(1<<12)	// RX fifo overflow#define	PSC_SMB_MSK_MM			(1<<16)	// Multiple Master Error#define	PSC_SMB_MSK_AL			(1<<28)	// Arbitration Lost (MasterOnly)#define	PSC_SMB_MSK_AN			(1<<29)	// Address not ack'd#define	PSC_SMB_MSK_DN			(1<<30)	// Data nont ack'd#define PSC_SMB_PCR_MS			(1<<0)	// Master Start#define PSC_SMB_PCR_DC			(1<<2)	// Tx Data Clear// Status Register is Read Only //#define PSC_SMB_STS_SR			(1<<0)	// PSC Ready#define PSC_SMB_STS_DR			(1<<1)	// Device Ready#define PSC_SMB_STS_DI			(1<<2)	// Device INterrupt#define PSC_SMB_STS_MB			(1<<4)	// Master BUsy#define PSC_SMB_STS_SB			(1<<5)	// Slave Busy#define PSC_SMB_STS_TR			(1<<8)	// Tx Rrequest#define PSC_SMB_STS_TE			(1<<9)	// Tx Fifo Empty#define PSC_SMB_STS_TF			(1<<10)	// Tx Fifo Full#define PSC_SMB_STS_RR			(1<<11)	// Rx Rrequest#define PSC_SMB_STS_RE			(1<<12)	// Rx Fifo Empty#define PSC_SMB_STS_RF			(1<<13)	// Rx Fifo Full#define PSC_SMB_STS_BB			(1<<28)	// Bus Busy#define	PSC_SMB_EVNT_MD			(1<<4)	// Master Done#define	PSC_SMB_EVNT_SD			(1<<5)	// Slave done#define	PSC_SMB_EVNT_TU			(1<<8)	// TX Fifo underflow#define	PSC_SMB_EVNT_TO			(1<<9)	// TX fifo overflow#define	PSC_SMB_EVNT_RU			(1<<11)	// RX Fifo underflow#define	PSC_SMB_EVNT_RO			(1<<12)	// RX fifo overflow#define	PSC_SMB_EVNT_MM			(1<<16)	// Multiple Master Error#define	PSC_SMB_EVNT_AL			(1<<28)	// Arbitration Lost (MasterOnly)#define	PSC_SMB_EVNT_AN			(1<<29)	// Address not ack'd#define	PSC_SMB_EVNT_DN			(1<<30)	// Data nont ack'd#define PSC_SMB_TXRX_AD			(0xFF<<0)	// Addr/Data#define PSC_SMB_TXRX_AD_N(n)	((n&0xFF)<<0)#define PSC_SMB_TXRX_STP		(1<<29)	// Stop#define PSC_SMB_TXRX_RSR		(1<<30)	// Restart#define PSC_SMB_TMR_CH			(0x1F<<0)	// Clock High#define PSC_SMB_TMR_CH_N(n)		((n&0x1F)<<0)#define PSC_SMB_TMR_CL			(0x1F<<5)	// Clock Low#define PSC_SMB_TMR_CL_N(n)		((n&0x1F)<<5)#define PSC_SMB_TMR_SU			(0x1F<<10)	// Start Setup#define PSC_SMB_TMR_SU_N(n)		((n&0x1F)<<10)#define PSC_SMB_TMR_SH			(0x1F<<15)	// Start Hold#define PSC_SMB_TMR_SH_N(n)		((n&0x1F)<<15)#define PSC_SMB_TMR_PU			(0x1F<<20)	// Stop Setup#define PSC_SMB_TMR_PU_N(n)		((n&0x1F)<<20)#define PSC_SMB_TMR_PS			(0x1F<<25)	// Stop Start Buffer#define PSC_SMB_TMR_PS_N(n)		((n&0x1F)<<25)#define PSC_SMB_TMR_TH			(0x3<<30)	// Transmit Hold#define PSC_SMB_TMR_TH_N(n)		((n&0x3)<<30)static inline void psc_config(uint32 psc, uint32 type){    PSC_SELECT *psc_sel = (PSC_SELECT *) KSEG1(psc);    psc_sel->sel = type;}static inline void psc_enable(uint32 psc, uint32 clk_src){    PSC_SELECT *psc_sel = (PSC_SELECT *) KSEG1(psc);    PSC_SPI *spi;    psc_sel->ctl |= PSC_CTL_CE;    asm(" sync");    psc_sel->ctl |= PSC_CTL_EN;    asm(" sync");    // Going to cheat a little here -- since the device ready bit is the same for    // all available PSC configurations -- I will just use SPI data structure to     // poll for "device ready". NOTE -- not all the status bits are the same    // for the different configurations    spi = (PSC_SPI *) psc_sel;    while (!(spi->sts & PSC_SMB_STS_SR));;}static inline void psc_disable(uint32 psc){    PSC_SELECT *psc_sel = (PSC_SELECT *) KSEG1(psc);    psc_sel->ctl &= ~PSC_CTL_EN;    asm(" sync");    psc_sel->ctl &= ~PSC_CTL_CE;    asm(" sync");}#endif				// __AU1550_PSC_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -