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

📄 immap_cpm2.h

📁 一个非常有用的SPI驱动程序,是在LINUX平台下的,但也可以一直到其他平台
💻 H
字号:
/* * CPM2 Internal Memory Map * Copyright (c) 1999 Dan Malek (dmalek@jlc.net) * * The Internal Memory Map for devices with CPM2 on them.  This * is the superset of all CPM2 devices (8260, 8266, 8280, 8272, * 8560).  */#ifdef __KERNEL__#ifndef __IMMAP_CPM2__#define __IMMAP_CPM2__/* System configuration registers.*/typedef	struct sys_82xx_conf {	u32	sc_siumcr;	u32	sc_sypcr;	u8	res1[6];	u16	sc_swsr;	u8	res2[20];	u32	sc_bcr;	u8	sc_ppc_acr;	u8	res3[3];	u32	sc_ppc_alrh;	u32	sc_ppc_alrl;	u8	sc_lcl_acr;	u8	res4[3];	u32	sc_lcl_alrh;	u32	sc_lcl_alrl;	u32	sc_tescr1;	u32	sc_tescr2;	u32	sc_ltescr1;	u32	sc_ltescr2;	u32	sc_pdtea;	u8	sc_pdtem;	u8	res5[3];	u32	sc_ldtea;	u8	sc_ldtem;	u8	res6[163];} sysconf_82xx_cpm2_t;typedef	struct sys_85xx_conf {	u32	sc_cear;	u16	sc_ceer;	u16	sc_cemr;	u8	res1[70];	u32	sc_smaer;	u8	res2[4];	u32	sc_smevr;	u32	sc_smctr;	u32	sc_lmaer;	u8	res3[4];	u32	sc_lmevr;	u32	sc_lmctr;	u8	res4[144];} sysconf_85xx_cpm2_t;typedef union sys_conf {	sysconf_82xx_cpm2_t	siu_82xx;	sysconf_85xx_cpm2_t	siu_85xx;} sysconf_cpm2_t;/* Memory controller registers.*/typedef struct	mem_ctlr {	u32	memc_br0;	u32	memc_or0;	u32	memc_br1;	u32	memc_or1;	u32	memc_br2;	u32	memc_or2;	u32	memc_br3;	u32	memc_or3;	u32	memc_br4;	u32	memc_or4;	u32	memc_br5;	u32	memc_or5;	u32	memc_br6;	u32	memc_or6;	u32	memc_br7;	u32	memc_or7;	u32	memc_br8;	u32	memc_or8;	u32	memc_br9;	u32	memc_or9;	u32	memc_br10;	u32	memc_or10;	u32	memc_br11;	u32	memc_or11;	u8	res1[8];	u32	memc_mar;	u8	res2[4];	u32	memc_mamr;	u32	memc_mbmr;	u32	memc_mcmr;	u8	res3[8];	u16	memc_mptpr;	u8	res4[2];	u32	memc_mdr;	u8	res5[4];	u32	memc_psdmr;	u32	memc_lsdmr;	u8	memc_purt;	u8	res6[3];	u8	memc_psrt;	u8	res7[3];	u8	memc_lurt;	u8	res8[3];	u8	memc_lsrt;	u8	res9[3];	u32	memc_immr;	u32	memc_pcibr0;	u32	memc_pcibr1;	u8	res10[16];	u32	memc_pcimsk0;	u32	memc_pcimsk1;	u8	res11[52];} memctl_cpm2_t;/* System Integration Timers.*/typedef struct	sys_int_timers {	u8	res1[32];	u16	sit_tmcntsc;	u8	res2[2];	u32	sit_tmcnt;	u8	res3[4];	u32	sit_tmcntal;	u8	res4[16];	u16	sit_piscr;	u8	res5[2];	u32	sit_pitc;	u32	sit_pitr;	u8	res6[92];	u8	res7[390];} sit_cpm2_t;#define PISCR_PIRQ_MASK		((u16)0xff00)#define PISCR_PS		((u16)0x0080)#define PISCR_PIE		((u16)0x0004)#define PISCR_PTF		((u16)0x0002)#define PISCR_PTE		((u16)0x0001)/* PCI Controller.*/typedef struct pci_ctlr {	u32	pci_omisr;	u32	pci_omimr;	u8	res1[8];	u32	pci_ifqpr;	u32	pci_ofqpr;	u8	res2[8];	u32	pci_imr0;	u32	pci_imr1;	u32	pci_omr0;	u32	pci_omr1;	u32	pci_odr;	u8	res3[4];	u32	pci_idr;	u8	res4[20];	u32	pci_imisr;	u32	pci_imimr;	u8	res5[24];	u32	pci_ifhpr;	u8	res6[4];	u32	pci_iftpr;	u8	res7[4];	u32	pci_iphpr;	u8	res8[4];	u32	pci_iptpr;	u8	res9[4];	u32	pci_ofhpr;	u8	res10[4];	u32	pci_oftpr;	u8	res11[4];	u32	pci_ophpr;	u8	res12[4];	u32	pci_optpr;	u8	res13[8];	u32	pci_mucr;	u8	res14[8];	u32	pci_qbar;	u8	res15[12];	u32	pci_dmamr0;	u32	pci_dmasr0;	u32	pci_dmacdar0;	u8	res16[4];	u32	pci_dmasar0;	u8	res17[4];	u32	pci_dmadar0;	u8	res18[4];	u32	pci_dmabcr0;	u32	pci_dmandar0;	u8	res19[86];	u32	pci_dmamr1;	u32	pci_dmasr1;	u32	pci_dmacdar1;	u8	res20[4];	u32	pci_dmasar1;	u8	res21[4];	u32	pci_dmadar1;	u8	res22[4];	u32	pci_dmabcr1;	u32	pci_dmandar1;	u8	res23[88];	u32	pci_dmamr2;	u32	pci_dmasr2;	u32	pci_dmacdar2;	u8	res24[4];	u32	pci_dmasar2;	u8	res25[4];	u32	pci_dmadar2;	u8	res26[4];	u32	pci_dmabcr2;	u32	pci_dmandar2;	u8	res27[88];	u32	pci_dmamr3;	u32	pci_dmasr3;	u32	pci_dmacdar3;	u8	res28[4];	u32	pci_dmasar3;	u8	res29[4];	u32	pci_dmadar3;	u8	res30[4];	u32	pci_dmabcr3;	u32	pci_dmandar3;	u8	res31[344];	u32	pci_potar0;	u8	res32[4];	u32	pci_pobar0;	u8	res33[4];	u32	pci_pocmr0;	u8	res34[4];	u32	pci_potar1;	u8	res35[4];	u32	pci_pobar1;	u8	res36[4];	u32	pci_pocmr1;	u8	res37[4];	u32	pci_potar2;	u8	res38[4];	u32	pci_pobar2;	u8	res39[4];	u32	pci_pocmr2;	u8	res40[50];	u32	pci_ptcr;	u32	pci_gpcr;	u32	pci_gcr;	u32	pci_esr;	u32	pci_emr;	u32	pci_ecr;	u32	pci_eacr;	u8	res41[4];	u32	pci_edcr;	u8	res42[4];	u32	pci_eccr;	u8	res43[44];	u32	pci_pitar1;	u8	res44[4];	u32	pci_pibar1;	u8	res45[4];	u32	pci_picmr1;	u8	res46[4];	u32	pci_pitar0;	u8	res47[4];	u32	pci_pibar0;	u8	res48[4];	u32	pci_picmr0;	u8	res49[4];	u32	pci_cfg_addr;	u32	pci_cfg_data;	u32	pci_int_ack;	u8	res50[756];} pci_cpm2_t;/* Interrupt Controller.*/typedef struct interrupt_controller {	u16	ic_sicr;	u8	res1[2];	u32	ic_sivec;	u32	ic_sipnrh;	u32	ic_sipnrl;	u32	ic_siprr;	u32	ic_scprrh;	u32	ic_scprrl;	u32	ic_simrh;	u32	ic_simrl;	u32	ic_siexr;	u8	res2[88];} intctl_cpm2_t;/* Clocks and Reset.*/typedef struct clk_and_reset {	u32	car_sccr;	u8	res1[4];	u32	car_scmr;	u8	res2[4];	u32	car_rsr;	u32	car_rmr;	u8	res[104];} car_cpm2_t;/* Input/Output Port control/status registers. * Names consistent with processor manual, although they are different * from the original 8xx names....... */typedef struct io_port {	u32	iop_pdira;	u32	iop_ppara;	u32	iop_psora;	u32	iop_podra;	u32	iop_pdata;	u8	res1[12];	u32	iop_pdirb;	u32	iop_pparb;	u32	iop_psorb;	u32	iop_podrb;	u32	iop_pdatb;	u8	res2[12];	u32	iop_pdirc;	u32	iop_pparc;	u32	iop_psorc;	u32	iop_podrc;	u32	iop_pdatc;	u8	res3[12];	u32	iop_pdird;	u32	iop_ppard;	u32	iop_psord;	u32	iop_podrd;	u32	iop_pdatd;	u8	res4[12];} iop_cpm2_t;/* Communication Processor Module Timers*/typedef struct cpm_timers {	u8	cpmt_tgcr1;	u8	res1[3];	u8	cpmt_tgcr2;	u8	res2[11];	u16	cpmt_tmr1;	u16	cpmt_tmr2;	u16	cpmt_trr1;	u16	cpmt_trr2;	u16	cpmt_tcr1;	u16	cpmt_tcr2;	u16	cpmt_tcn1;	u16	cpmt_tcn2;	u16	cpmt_tmr3;	u16	cpmt_tmr4;	u16	cpmt_trr3;	u16	cpmt_trr4;	u16	cpmt_tcr3;	u16	cpmt_tcr4;	u16	cpmt_tcn3;	u16	cpmt_tcn4;	u16	cpmt_ter1;	u16	cpmt_ter2;	u16	cpmt_ter3;	u16	cpmt_ter4;	u8	res3[584];} cpmtimer_cpm2_t;/* DMA control/status registers.*/typedef struct sdma_csr {	u8	res0[24];	u8	sdma_sdsr;	u8	res1[3];	u8	sdma_sdmr;	u8	res2[3];	u8	sdma_idsr1;	u8	res3[3];	u8	sdma_idmr1;	u8	res4[3];	u8	sdma_idsr2;	u8	res5[3];	u8	sdma_idmr2;	u8	res6[3];	u8	sdma_idsr3;	u8	res7[3];	u8	sdma_idmr3;	u8	res8[3];	u8	sdma_idsr4;	u8	res9[3];	u8	sdma_idmr4;	u8	res10[707];} sdma_cpm2_t;/* Fast controllers*/typedef struct fcc {	u32	fcc_gfmr;	u32	fcc_fpsmr;	u16	fcc_ftodr;	u8	res1[2];	u16	fcc_fdsr;	u8	res2[2];	u16	fcc_fcce;	u8	res3[2];	u16	fcc_fccm;	u8	res4[2];	u8	fcc_fccs;	u8	res5[3];	u8	fcc_ftirr_phy[4];} fcc_t;/* Fast controllers continued */typedef struct fcc_c {	u32	fcc_firper;	u32	fcc_firer;	u32	fcc_firsr_hi;	u32	fcc_firsr_lo;	u8	fcc_gfemr;	u8	res1[15];} fcc_c_t;/* TC Layer */typedef struct tclayer {	u16	tc_tcmode;	u16	tc_cdsmr;	u16	tc_tcer;	u16	tc_rcc;	u16	tc_tcmr;	u16	tc_fcc;	u16	tc_ccc;	u16	tc_icc;	u16	tc_tcc;	u16	tc_ecc;	u8	res1[12];} tclayer_t;/* I2C*/typedef struct i2c {	u8	i2c_i2mod;	u8	res1[3];	u8	i2c_i2add;	u8	res2[3];	u8	i2c_i2brg;	u8	res3[3];	u8	i2c_i2com;	u8	res4[3];	u8	i2c_i2cer;	u8	res5[3];	u8	i2c_i2cmr;	u8	res6[331];} i2c_cpm2_t;typedef struct scc {		/* Serial communication channels */	u32	scc_gsmrl;	u32	scc_gsmrh;	u16	scc_psmr;	u8	res1[2];	u16	scc_todr;	u16	scc_dsr;	u16	scc_scce;	u8	res2[2];	u16	scc_sccm;	u8	res3;	u8	scc_sccs;	u8	res4[8];} scc_t;typedef struct smc {		/* Serial management channels */	u8	res1[2];	u16	smc_smcmr;	u8	res2[2];	u8	smc_smce;	u8	res3[3];	u8	smc_smcm;	u8	res4[5];} smc_t;/* Serial Peripheral Interface.*/typedef struct spi_ctrl {	u16	spi_spmode;	u8	res1[4];	u8	spi_spie;	u8	res2[3];	u8	spi_spim;	u8	res3[2];	u8	spi_spcom;	u8	res4[82];} spictl_cpm2_t;/* CPM Mux.*/typedef struct cpmux {	u8	cmx_si1cr;	u8	res1;	u8	cmx_si2cr;	u8	res2;	u32	cmx_fcr;	u32	cmx_scr;	u8	cmx_smr;	u8	res3;	u16	cmx_uar;	u8	res4[16];} cpmux_t;/* SIRAM control*/typedef struct siram {	u16	si_amr;	u16	si_bmr;	u16	si_cmr;	u16	si_dmr;	u8	si_gmr;	u8	res1;	u8	si_cmdr;	u8	res2;	u8	si_str;	u8	res3;	u16	si_rsr;} siramctl_t;typedef struct mcc {	u16	mcc_mcce;	u8	res1[2];	u16	mcc_mccm;	u8	res2[2];	u8	mcc_mccf;	u8	res3[7];} mcc_t;typedef struct comm_proc {	u32	cp_cpcr;	u32	cp_rccr;	u8	res1[14];	u16	cp_rter;	u8	res2[2];	u16	cp_rtmr;	u16	cp_rtscr;	u8	res3[2];	u32	cp_rtsr;	u8	res4[12];} cpm_cpm2_t;/* USB Controller.*/typedef struct usb_ctlr {	u8	usb_usmod;	u8	usb_usadr;	u8	usb_uscom;	u8	res1[1];	u16	usb_usep1;	u16	usb_usep2;	u16	usb_usep3;	u16	usb_usep4;	u8	res2[4];	u16	usb_usber;	u8	res3[2];	u16	usb_usbmr;	u8	usb_usbs;	u8	res4[7];} usb_cpm2_t;/* ...and the whole thing wrapped up....*/typedef struct immap {	/* Some references are into the unique and known dpram spaces,	 * others are from the generic base.	 */#define im_dprambase	im_dpram1	u8		im_dpram1[16*1024];	u8		res1[16*1024];	u8		im_dpram2[4*1024];	u8		res2[8*1024];	u8		im_dpram3[4*1024];	u8		res3[16*1024];	sysconf_cpm2_t	im_siu_conf;	/* SIU Configuration */	memctl_cpm2_t	im_memctl;	/* Memory Controller */	sit_cpm2_t	im_sit;		/* System Integration Timers */	pci_cpm2_t	im_pci;		/* PCI Controller */	intctl_cpm2_t	im_intctl;	/* Interrupt Controller */	car_cpm2_t	im_clkrst;	/* Clocks and reset */	iop_cpm2_t	im_ioport;	/* IO Port control/status */	cpmtimer_cpm2_t	im_cpmtimer;	/* CPM timers */	sdma_cpm2_t	im_sdma;	/* SDMA control/status */	fcc_t		im_fcc[3];	/* Three FCCs */	u8		res4z[32];	fcc_c_t		im_fcc_c[3];	/* Continued FCCs */	u8		res4[32];	tclayer_t	im_tclayer[8];	/* Eight TCLayers */	u16		tc_tcgsr;	u16		tc_tcger;		/* First set of baud rate generators.	*/	u8		res[236];	u32		im_brgc5;	u32		im_brgc6;	u32		im_brgc7;	u32		im_brgc8;	u8		res5[608];	i2c_cpm2_t	im_i2c;		/* I2C control/status */	cpm_cpm2_t	im_cpm;		/* Communication processor */	/* Second set of baud rate generators.	*/	u32		im_brgc1;	u32		im_brgc2;	u32		im_brgc3;	u32		im_brgc4;	scc_t		im_scc[4];	/* Four SCCs */	smc_t		im_smc[2];	/* Couple of SMCs */	spictl_cpm2_t	im_spi;		/* A SPI */	cpmux_t		im_cpmux;	/* CPM clock route mux */	siramctl_t	im_siramctl1;	/* First SI RAM Control */	mcc_t		im_mcc1;	/* First MCC */	siramctl_t	im_siramctl2;	/* Second SI RAM Control */	mcc_t		im_mcc2;	/* Second MCC */	usb_cpm2_t	im_usb;		/* USB Controller */	u8		res6[1153];	u16		im_si1txram[256];	u8		res7[512];	u16		im_si1rxram[256];	u8		res8[512];	u16		im_si2txram[256];	u8		res9[512];	u16		im_si2rxram[256];	u8		res10[512];	u8		res11[4096];} cpm2_map_t;extern cpm2_map_t	*cpm2_immr;#endif /* __IMMAP_CPM2__ */#endif /* __KERNEL__ */

⌨️ 快捷键说明

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