Stop using immap_t for cpm offset on 85xx
In the future the offsets to various blocks may not be in same location. Move to using CFG_MPC85xx_CPM_ADDR as the base of the CPM registers instead of getting it via &immap->im_cpm. Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
This commit is contained in:
		
							parent
							
								
									f59b55a5b8
								
							
						
					
					
						commit
						aafeefbdb8
					
				|  | @ -37,7 +37,7 @@ DECLARE_GLOBAL_DATA_PTR; | |||
| void | ||||
| m8560_cpm_reset(void) | ||||
| { | ||||
| 	volatile immap_t *immr = (immap_t *)CFG_IMMR; | ||||
| 	volatile ccsr_cpm_t *cpm = (ccsr_cpm_t *)CFG_MPC85xx_CPM_ADDR; | ||||
| 	volatile ulong count; | ||||
| 
 | ||||
| 	gd = (gd_t *) (CFG_INIT_RAM_ADDR + CFG_GBL_DATA_OFFSET); | ||||
|  | @ -50,11 +50,11 @@ m8560_cpm_reset(void) | |||
| 	/*
 | ||||
| 	 * Reset CPM | ||||
| 	 */ | ||||
| 	immr->im_cpm.im_cpm_cp.cpcr = CPM_CR_RST; | ||||
| 	cpm->im_cpm_cp.cpcr = CPM_CR_RST; | ||||
| 	count = 0; | ||||
| 	do {			/* Spin until command processed		*/ | ||||
| 		__asm__ __volatile__ ("eieio"); | ||||
| 	} while ((immr->im_cpm.im_cpm_cp.cpcr & CPM_CR_FLG) && ++count < 1000000); | ||||
| 	} while ((cpm->im_cpm_cp.cpcr & CPM_CR_FLG) && ++count < 1000000); | ||||
| } | ||||
| 
 | ||||
| /* Allocate some memory from the dual ported ram.
 | ||||
|  | @ -64,7 +64,7 @@ m8560_cpm_reset(void) | |||
| uint | ||||
| m8560_cpm_dpalloc(uint size, uint align) | ||||
| { | ||||
| 	volatile immap_t *immr = (immap_t *)CFG_IMMR; | ||||
| 	volatile ccsr_cpm_t *cpm = (ccsr_cpm_t *)CFG_MPC85xx_CPM_ADDR; | ||||
| 	uint	retloc; | ||||
| 	uint	align_mask, off; | ||||
| 	uint	savebase; | ||||
|  | @ -86,7 +86,7 @@ m8560_cpm_dpalloc(uint size, uint align) | |||
| 	retloc = gd->dp_alloc_base; | ||||
| 	gd->dp_alloc_base += size; | ||||
| 
 | ||||
| 	memset((void *)&(immr->im_cpm.im_dprambase[retloc]), 0, size); | ||||
| 	memset((void *)&(cpm->im_dprambase[retloc]), 0, size); | ||||
| 
 | ||||
| 	return(retloc); | ||||
| } | ||||
|  | @ -120,16 +120,16 @@ m8560_cpm_hostalloc(uint size, uint align) | |||
| void | ||||
| m8560_cpm_setbrg(uint brg, uint rate) | ||||
| { | ||||
| 	volatile immap_t *immr = (immap_t *)CFG_IMMR; | ||||
| 	volatile ccsr_cpm_t *cpm = (ccsr_cpm_t *)CFG_MPC85xx_CPM_ADDR; | ||||
| 	volatile uint	*bp; | ||||
| 
 | ||||
| 	/* This is good enough to get SMCs running.....
 | ||||
| 	*/ | ||||
| 	if (brg < 4) { | ||||
| 		bp = (uint *)&(immr->im_cpm.im_cpm_brg1.brgc1); | ||||
| 		bp = (uint *)&(cpm->im_cpm_brg1.brgc1); | ||||
| 	} | ||||
| 	else { | ||||
| 		bp = (uint *)&(immr->im_cpm.im_cpm_brg2.brgc5); | ||||
| 		bp = (uint *)&(cpm->im_cpm_brg2.brgc5); | ||||
| 		brg -= 4; | ||||
| 	} | ||||
| 	bp += brg; | ||||
|  | @ -142,16 +142,16 @@ m8560_cpm_setbrg(uint brg, uint rate) | |||
| void | ||||
| m8560_cpm_fastbrg(uint brg, uint rate, int div16) | ||||
| { | ||||
| 	volatile immap_t *immr = (immap_t *)CFG_IMMR; | ||||
| 	volatile ccsr_cpm_t *cpm = (ccsr_cpm_t *)CFG_MPC85xx_CPM_ADDR; | ||||
| 	volatile uint	*bp; | ||||
| 
 | ||||
| 	/* This is good enough to get SMCs running.....
 | ||||
| 	*/ | ||||
| 	if (brg < 4) { | ||||
| 		bp = (uint *)&(immr->im_cpm.im_cpm_brg1.brgc1); | ||||
| 		bp = (uint *)&(cpm->im_cpm_brg1.brgc1); | ||||
| 	} | ||||
| 	else { | ||||
| 		bp = (uint *)&(immr->im_cpm.im_cpm_brg2.brgc5); | ||||
| 		bp = (uint *)&(cpm->im_cpm_brg2.brgc5); | ||||
| 		brg -= 4; | ||||
| 	} | ||||
| 	bp += brg; | ||||
|  | @ -167,14 +167,14 @@ m8560_cpm_fastbrg(uint brg, uint rate, int div16) | |||
| void | ||||
| m8560_cpm_extcbrg(uint brg, uint rate, uint extclk, int pinsel) | ||||
| { | ||||
| 	volatile immap_t *immr = (immap_t *)CFG_IMMR; | ||||
| 	volatile ccsr_cpm_t *cpm = (ccsr_cpm_t *)CFG_MPC85xx_CPM_ADDR; | ||||
| 	volatile uint	*bp; | ||||
| 
 | ||||
| 	if (brg < 4) { | ||||
| 		bp = (uint *)&(immr->im_cpm.im_cpm_brg1.brgc1); | ||||
| 		bp = (uint *)&(cpm->im_cpm_brg1.brgc1); | ||||
| 	} | ||||
| 	else { | ||||
| 		bp = (uint *)&(immr->im_cpm.im_cpm_brg2.brgc5); | ||||
| 		bp = (uint *)&(cpm->im_cpm_brg2.brgc5); | ||||
| 		brg -= 4; | ||||
| 	} | ||||
| 	bp += brg; | ||||
|  |  | |||
|  | @ -59,7 +59,7 @@ static void config_qe_ioports(void) | |||
| #endif | ||||
| 
 | ||||
| #ifdef CONFIG_CPM2 | ||||
| static void config_8560_ioports (volatile immap_t * immr) | ||||
| void config_8560_ioports (volatile ccsr_cpm_t * cpm) | ||||
| { | ||||
| 	int portnum; | ||||
| 
 | ||||
|  | @ -99,7 +99,7 @@ static void config_8560_ioports (volatile immap_t * immr) | |||
| 		} | ||||
| 
 | ||||
| 		if (pmsk != 0) { | ||||
| 			volatile ioport_t *iop = ioport_addr (immr, portnum); | ||||
| 			volatile ioport_t *iop = ioport_addr (cpm, portnum); | ||||
| 			uint tpmsk = ~pmsk; | ||||
| 
 | ||||
| 			/*
 | ||||
|  | @ -143,7 +143,7 @@ void cpu_init_f (void) | |||
| 
 | ||||
| 
 | ||||
| #ifdef CONFIG_CPM2 | ||||
| 	config_8560_ioports(immap); | ||||
| 	config_8560_ioports((ccsr_cpm_t *)CFG_MPC85xx_CPM_ADDR); | ||||
| #endif | ||||
| 
 | ||||
| 	/* Map banks 0 and 1 to the FLASH banks 0 and 1 at preliminary
 | ||||
|  |  | |||
|  | @ -230,8 +230,8 @@ static int fec_init(struct eth_device* dev, bd_t *bis) | |||
| { | ||||
|     struct ether_fcc_info_s * info = dev->priv; | ||||
|     int i; | ||||
|     volatile immap_t *immr = (immap_t *)CFG_IMMR; | ||||
|     volatile ccsr_cpm_cp_t *cp = &(immr->im_cpm.im_cpm_cp); | ||||
|     volatile ccsr_cpm_t *cpm = (ccsr_cpm_t *)CFG_MPC85xx_CPM_ADDR; | ||||
|     volatile ccsr_cpm_cp_t *cp = &(cpm->im_cpm_cp); | ||||
|     fcc_enet_t *pram_ptr; | ||||
|     unsigned long mem_addr; | ||||
| 
 | ||||
|  | @ -242,35 +242,35 @@ static int fec_init(struct eth_device* dev, bd_t *bis) | |||
|     /* 28.9 - (1-2): ioports have been set up already */ | ||||
| 
 | ||||
|     /* 28.9 - (3): connect FCC's tx and rx clocks */ | ||||
|     immr->im_cpm.im_cpm_mux.cmxuar = 0; /* ATM */ | ||||
|     immr->im_cpm.im_cpm_mux.cmxfcr = (immr->im_cpm.im_cpm_mux.cmxfcr & ~info->cmxfcr_mask) | | ||||
|     cpm->im_cpm_mux.cmxuar = 0; /* ATM */ | ||||
|     cpm->im_cpm_mux.cmxfcr = (cpm->im_cpm_mux.cmxfcr & ~info->cmxfcr_mask) | | ||||
| 							info->cmxfcr_value; | ||||
| 
 | ||||
|     /* 28.9 - (4): GFMR: disable tx/rx, CCITT CRC, set Mode Ethernet */ | ||||
|     if(info->ether_index == 0) { | ||||
| 	immr->im_cpm.im_cpm_fcc1.gfmr = FCC_GFMR_MODE_ENET | FCC_GFMR_TCRC_32; | ||||
| 	cpm->im_cpm_fcc1.gfmr = FCC_GFMR_MODE_ENET | FCC_GFMR_TCRC_32; | ||||
|     } else if (info->ether_index == 1) { | ||||
| 	immr->im_cpm.im_cpm_fcc2.gfmr = FCC_GFMR_MODE_ENET | FCC_GFMR_TCRC_32; | ||||
| 	cpm->im_cpm_fcc2.gfmr = FCC_GFMR_MODE_ENET | FCC_GFMR_TCRC_32; | ||||
|     } else if (info->ether_index == 2) { | ||||
| 	immr->im_cpm.im_cpm_fcc3.gfmr = FCC_GFMR_MODE_ENET | FCC_GFMR_TCRC_32; | ||||
| 	cpm->im_cpm_fcc3.gfmr = FCC_GFMR_MODE_ENET | FCC_GFMR_TCRC_32; | ||||
|     } | ||||
| 
 | ||||
|     /* 28.9 - (5): FPSMR: enable full duplex, select CCITT CRC for Ethernet,MII */ | ||||
|     if(info->ether_index == 0) { | ||||
| 	immr->im_cpm.im_cpm_fcc1.fpsmr = CFG_FCC_PSMR | FCC_PSMR_ENCRC; | ||||
| 	cpm->im_cpm_fcc1.fpsmr = CFG_FCC_PSMR | FCC_PSMR_ENCRC; | ||||
|     } else if (info->ether_index == 1){ | ||||
| 	immr->im_cpm.im_cpm_fcc2.fpsmr = CFG_FCC_PSMR | FCC_PSMR_ENCRC; | ||||
| 	cpm->im_cpm_fcc2.fpsmr = CFG_FCC_PSMR | FCC_PSMR_ENCRC; | ||||
|     } else if (info->ether_index == 2){ | ||||
| 	immr->im_cpm.im_cpm_fcc3.fpsmr = CFG_FCC_PSMR | FCC_PSMR_ENCRC; | ||||
| 	cpm->im_cpm_fcc3.fpsmr = CFG_FCC_PSMR | FCC_PSMR_ENCRC; | ||||
|     } | ||||
| 
 | ||||
|     /* 28.9 - (6): FDSR: Ethernet Syn */ | ||||
|     if(info->ether_index == 0) { | ||||
| 	immr->im_cpm.im_cpm_fcc1.fdsr = 0xD555; | ||||
| 	cpm->im_cpm_fcc1.fdsr = 0xD555; | ||||
|     } else if (info->ether_index == 1) { | ||||
| 	immr->im_cpm.im_cpm_fcc2.fdsr = 0xD555; | ||||
| 	cpm->im_cpm_fcc2.fdsr = 0xD555; | ||||
|     } else if (info->ether_index == 2) { | ||||
| 	immr->im_cpm.im_cpm_fcc3.fdsr = 0xD555; | ||||
| 	cpm->im_cpm_fcc3.fdsr = 0xD555; | ||||
|     } | ||||
| 
 | ||||
|     /* reset indeces to current rx/tx bd (see eth_send()/eth_rx()) */ | ||||
|  | @ -296,7 +296,7 @@ static int fec_init(struct eth_device* dev, bd_t *bis) | |||
|     rtx.txbd[TX_BUF_CNT - 1].cbd_sc |= BD_ENET_TX_WRAP; | ||||
| 
 | ||||
|     /* 28.9 - (7): initialize parameter ram */ | ||||
|     pram_ptr = (fcc_enet_t *)&(immr->im_cpm.im_dprambase[info->proff_enet]); | ||||
|     pram_ptr = (fcc_enet_t *)&(cpm->im_dprambase[info->proff_enet]); | ||||
| 
 | ||||
|     /* clear whole structure to make sure all reserved fields are zero */ | ||||
|     memset((void*)pram_ptr, 0, sizeof(fcc_enet_t)); | ||||
|  | @ -385,14 +385,14 @@ static int fec_init(struct eth_device* dev, bd_t *bis) | |||
|     /* 28.9 - (8)(9): clear out events in FCCE */ | ||||
|     /* 28.9 - (9): FCCM: mask all events */ | ||||
|     if(info->ether_index == 0) { | ||||
| 	immr->im_cpm.im_cpm_fcc1.fcce = ~0x0; | ||||
| 	immr->im_cpm.im_cpm_fcc1.fccm = 0; | ||||
| 	cpm->im_cpm_fcc1.fcce = ~0x0; | ||||
| 	cpm->im_cpm_fcc1.fccm = 0; | ||||
|     } else if (info->ether_index == 1) { | ||||
| 	immr->im_cpm.im_cpm_fcc2.fcce = ~0x0; | ||||
| 	immr->im_cpm.im_cpm_fcc2.fccm = 0; | ||||
| 	cpm->im_cpm_fcc2.fcce = ~0x0; | ||||
| 	cpm->im_cpm_fcc2.fccm = 0; | ||||
|     } else if (info->ether_index == 2) { | ||||
| 	immr->im_cpm.im_cpm_fcc3.fcce = ~0x0; | ||||
| 	immr->im_cpm.im_cpm_fcc3.fccm = 0; | ||||
| 	cpm->im_cpm_fcc3.fcce = ~0x0; | ||||
| 	cpm->im_cpm_fcc3.fccm = 0; | ||||
|     } | ||||
| 
 | ||||
|     /* 28.9 - (10-12): we don't use ethernet interrupts */ | ||||
|  | @ -413,11 +413,11 @@ static int fec_init(struct eth_device* dev, bd_t *bis) | |||
| 
 | ||||
|     /* 28.9 - (14): enable tx/rx in gfmr */ | ||||
|     if(info->ether_index == 0) { | ||||
| 	immr->im_cpm.im_cpm_fcc1.gfmr |= FCC_GFMR_ENT | FCC_GFMR_ENR; | ||||
| 	cpm->im_cpm_fcc1.gfmr |= FCC_GFMR_ENT | FCC_GFMR_ENR; | ||||
|     } else if (info->ether_index == 1) { | ||||
| 	immr->im_cpm.im_cpm_fcc2.gfmr |= FCC_GFMR_ENT | FCC_GFMR_ENR; | ||||
| 	cpm->im_cpm_fcc2.gfmr |= FCC_GFMR_ENT | FCC_GFMR_ENR; | ||||
|     } else if (info->ether_index == 2) { | ||||
| 	immr->im_cpm.im_cpm_fcc3.gfmr |= FCC_GFMR_ENT | FCC_GFMR_ENR; | ||||
| 	cpm->im_cpm_fcc3.gfmr |= FCC_GFMR_ENT | FCC_GFMR_ENR; | ||||
|     } | ||||
| 
 | ||||
|     return 1; | ||||
|  | @ -426,15 +426,15 @@ static int fec_init(struct eth_device* dev, bd_t *bis) | |||
| static void fec_halt(struct eth_device* dev) | ||||
| { | ||||
|     struct ether_fcc_info_s * info = dev->priv; | ||||
|     volatile immap_t *immr = (immap_t *)CFG_IMMR; | ||||
|     volatile ccsr_cpm_t *cpm = (ccsr_cpm_t *)CFG_MPC85xx_CPM_ADDR; | ||||
| 
 | ||||
|     /* write GFMR: disable tx/rx */ | ||||
|     if(info->ether_index == 0) { | ||||
| 	immr->im_cpm.im_cpm_fcc1.gfmr &= ~(FCC_GFMR_ENT | FCC_GFMR_ENR); | ||||
| 	cpm->im_cpm_fcc1.gfmr &= ~(FCC_GFMR_ENT | FCC_GFMR_ENR); | ||||
|     } else if(info->ether_index == 1) { | ||||
| 	immr->im_cpm.im_cpm_fcc2.gfmr &= ~(FCC_GFMR_ENT | FCC_GFMR_ENR); | ||||
| 	cpm->im_cpm_fcc2.gfmr &= ~(FCC_GFMR_ENT | FCC_GFMR_ENR); | ||||
|     } else if(info->ether_index == 2) { | ||||
| 	immr->im_cpm.im_cpm_fcc3.gfmr &= ~(FCC_GFMR_ENT | FCC_GFMR_ENR); | ||||
| 	cpm->im_cpm_fcc3.gfmr &= ~(FCC_GFMR_ENT | FCC_GFMR_ENR); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -88,17 +88,17 @@ DECLARE_GLOBAL_DATA_PTR; | |||
| 
 | ||||
| int serial_init (void) | ||||
| { | ||||
| 	volatile immap_t *im = (immap_t *)CFG_IMMR; | ||||
| 	volatile ccsr_cpm_t *cpm = (ccsr_cpm_t *)CFG_MPC85xx_CPM_ADDR; | ||||
| 	volatile ccsr_cpm_scc_t *sp; | ||||
| 	volatile scc_uart_t *up; | ||||
| 	volatile cbd_t *tbdf, *rbdf; | ||||
| 	volatile ccsr_cpm_cp_t *cp = &(im->im_cpm.im_cpm_cp); | ||||
| 	volatile ccsr_cpm_cp_t *cp = &(cpm->im_cpm_cp); | ||||
| 	uint	dpaddr; | ||||
| 
 | ||||
| 	/* initialize pointers to SCC */ | ||||
| 
 | ||||
| 	sp = (ccsr_cpm_scc_t *) &(im->im_cpm.im_cpm_scc[SCC_INDEX]); | ||||
| 	up = (scc_uart_t *)&(im->im_cpm.im_dprambase[PROFF_SCC]); | ||||
| 	sp = (ccsr_cpm_scc_t *) &(cpm->im_cpm_scc[SCC_INDEX]); | ||||
| 	up = (scc_uart_t *)&(cpm->im_dprambase[PROFF_SCC]); | ||||
| 
 | ||||
| 	/* Disable transmitter/receiver.
 | ||||
| 	*/ | ||||
|  | @ -107,8 +107,8 @@ int serial_init (void) | |||
| 	/* put the SCC channel into NMSI (non multiplexd serial interface)
 | ||||
| 	 * mode and wire the selected SCC Tx and Rx clocks to BRGx (15-15). | ||||
| 	 */ | ||||
| 	im->im_cpm.im_cpm_mux.cmxscr = \ | ||||
| 		(im->im_cpm.im_cpm_mux.cmxscr&~CMXSCR_MASK)|CMXSCR_VALUE; | ||||
| 	cpm->im_cpm_mux.cmxscr = \ | ||||
| 		(cpm->im_cpm_mux.cmxscr&~CMXSCR_MASK)|CMXSCR_VALUE; | ||||
| 
 | ||||
| 	/* Set up the baud rate generator.
 | ||||
| 	*/ | ||||
|  | @ -123,7 +123,7 @@ int serial_init (void) | |||
| 	/* Set the physical address of the host memory buffers in
 | ||||
| 	 * the buffer descriptors. | ||||
| 	 */ | ||||
| 	rbdf = (cbd_t *)&(im->im_cpm.im_dprambase[dpaddr]); | ||||
| 	rbdf = (cbd_t *)&(cpm->im_dprambase[dpaddr]); | ||||
| 	rbdf->cbd_bufaddr = (uint) (rbdf+2); | ||||
| 	rbdf->cbd_sc = BD_SC_EMPTY | BD_SC_WRAP; | ||||
| 	tbdf = rbdf + 1; | ||||
|  | @ -201,14 +201,13 @@ serial_putc(const char c) | |||
| { | ||||
| 	volatile scc_uart_t	*up; | ||||
| 	volatile cbd_t		*tbdf; | ||||
| 	volatile immap_t	*im; | ||||
| 	volatile ccsr_cpm_t	*cpm = (ccsr_cpm_t *)CFG_MPC85xx_CPM_ADDR; | ||||
| 
 | ||||
| 	if (c == '\n') | ||||
| 		serial_putc ('\r'); | ||||
| 
 | ||||
| 	im = (immap_t *)CFG_IMMR; | ||||
| 	up = (scc_uart_t *)&(im->im_cpm.im_dprambase[PROFF_SCC]); | ||||
| 	tbdf = (cbd_t *)&(im->im_cpm.im_dprambase[up->scc_genscc.scc_tbase]); | ||||
| 	up = (scc_uart_t *)&(cpm->im_dprambase[PROFF_SCC]); | ||||
| 	tbdf = (cbd_t *)&(cpm->im_dprambase[up->scc_genscc.scc_tbase]); | ||||
| 
 | ||||
| 	/* Wait for last character to go.
 | ||||
| 	 */ | ||||
|  | @ -235,12 +234,11 @@ serial_getc(void) | |||
| { | ||||
| 	volatile cbd_t		*rbdf; | ||||
| 	volatile scc_uart_t	*up; | ||||
| 	volatile immap_t	*im; | ||||
| 	volatile ccsr_cpm_t	*cpm = (ccsr_cpm_t *)CFG_MPC85xx_CPM_ADDR; | ||||
| 	unsigned char		c; | ||||
| 
 | ||||
| 	im = (immap_t *)CFG_IMMR; | ||||
| 	up = (scc_uart_t *)&(im->im_cpm.im_dprambase[PROFF_SCC]); | ||||
| 	rbdf = (cbd_t *)&(im->im_cpm.im_dprambase[up->scc_genscc.scc_rbase]); | ||||
| 	up = (scc_uart_t *)&(cpm->im_dprambase[PROFF_SCC]); | ||||
| 	rbdf = (cbd_t *)&(cpm->im_dprambase[up->scc_genscc.scc_rbase]); | ||||
| 
 | ||||
| 	/* Wait for character to show up.
 | ||||
| 	 */ | ||||
|  | @ -260,11 +258,10 @@ serial_tstc() | |||
| { | ||||
| 	volatile cbd_t		*rbdf; | ||||
| 	volatile scc_uart_t	*up; | ||||
| 	volatile immap_t	*im; | ||||
| 	volatile ccsr_cpm_t	*cpm = (ccsr_cpm_t *)CFG_MPC85xx_CPM_ADDR; | ||||
| 
 | ||||
| 	im = (immap_t *)CFG_IMMR; | ||||
| 	up = (scc_uart_t *)&(im->im_cpm.im_dprambase[PROFF_SCC]); | ||||
| 	rbdf = (cbd_t *)&(im->im_cpm.im_dprambase[up->scc_genscc.scc_rbase]); | ||||
| 	up = (scc_uart_t *)&(cpm->im_dprambase[PROFF_SCC]); | ||||
| 	rbdf = (cbd_t *)&(cpm->im_dprambase[up->scc_genscc.scc_rbase]); | ||||
| 
 | ||||
| 	return ((rbdf->cbd_sc & BD_SC_EMPTY) == 0); | ||||
| } | ||||
|  |  | |||
|  | @ -55,12 +55,12 @@ int get_clocks (void) | |||
| { | ||||
| 	sys_info_t sys_info; | ||||
| #if defined(CONFIG_CPM2) | ||||
| 	volatile immap_t *immap = (immap_t *) CFG_IMMR; | ||||
| 	volatile ccsr_cpm_t *cpm = (ccsr_cpm_t *)CFG_MPC85xx_CPM_ADDR; | ||||
| 	uint sccr, dfbrg; | ||||
| 
 | ||||
| 	/* set VCO = 4 * BRG */ | ||||
| 	immap->im_cpm.im_cpm_intctl.sccr &= 0xfffffffc; | ||||
| 	sccr = immap->im_cpm.im_cpm_intctl.sccr; | ||||
| 	cpm->im_cpm_intctl.sccr &= 0xfffffffc; | ||||
| 	sccr = cpm->im_cpm_intctl.sccr; | ||||
| 	dfbrg = (sccr & SCCR_DFBRG_MSK) >> SCCR_DFBRG_SHIFT; | ||||
| #endif | ||||
| 	get_sys_info (&sys_info); | ||||
|  |  | |||
|  | @ -1636,9 +1636,11 @@ typedef struct immap { | |||
| 	ccsr_tsec_t		im_tsec1; | ||||
| 	ccsr_tsec_t		im_tsec2; | ||||
| 	ccsr_pic_t		im_pic; | ||||
| 	ccsr_cpm_t		im_cpm; | ||||
| } immap_t; | ||||
| 
 | ||||
| #define CFG_MPC85xx_CPM_OFFSET	(0x80000) | ||||
| #define CFG_MPC85xx_CPM_ADDR	(CFG_IMMR + CFG_MPC85xx_CPM_OFFSET) | ||||
| 
 | ||||
| extern immap_t  *immr; | ||||
| 
 | ||||
| #endif /*__IMMAP_85xx__*/ | ||||
|  |  | |||
|  | @ -23,121 +23,121 @@ typedef struct { | |||
| 
 | ||||
| extern __inline__ void iopin_set_high (iopin_t * iopin) | ||||
| { | ||||
| 	volatile uint *datp = &((immap_t *) CFG_IMMR)->im_cpm.im_cpm_iop.pdata; | ||||
| 	volatile uint *datp = &((ccsr_cpm_t *) CFG_MPC85xx_CPM_ADDR)->im_cpm_iop.pdata; | ||||
| 	datp[iopin->port * 8] |= (1 << (31 - iopin->pin)); | ||||
| } | ||||
| 
 | ||||
| extern __inline__ void iopin_set_low (iopin_t * iopin) | ||||
| { | ||||
| 	volatile uint *datp = &((immap_t *) CFG_IMMR)->im_cpm.im_cpm_iop.pdata; | ||||
| 	volatile uint *datp = &((ccsr_cpm_t *) CFG_MPC85xx_CPM_ADDR)->im_cpm_iop.pdata; | ||||
| 	datp[iopin->port * 8] &= ~(1 << (31 - iopin->pin)); | ||||
| } | ||||
| 
 | ||||
| extern __inline__ uint iopin_is_high (iopin_t * iopin) | ||||
| { | ||||
| 	volatile uint *datp = &((immap_t *) CFG_IMMR)->im_cpm.im_cpm_iop.pdata; | ||||
| 	volatile uint *datp = &((ccsr_cpm_t *) CFG_MPC85xx_CPM_ADDR)->im_cpm_iop.pdata; | ||||
| 	return (datp[iopin->port * 8] >> (31 - iopin->pin)) & 1; | ||||
| } | ||||
| 
 | ||||
| extern __inline__ uint iopin_is_low (iopin_t * iopin) | ||||
| { | ||||
| 	volatile uint *datp = &((immap_t *) CFG_IMMR)->im_cpm.im_cpm_iop.pdata; | ||||
| 	volatile uint *datp = &((ccsr_cpm_t *) CFG_MPC85xx_CPM_ADDR)->im_cpm_iop.pdata; | ||||
| 	return ((datp[iopin->port * 8] >> (31 - iopin->pin)) & 1) ^ 1; | ||||
| } | ||||
| 
 | ||||
| extern __inline__ void iopin_set_out (iopin_t * iopin) | ||||
| { | ||||
| 	volatile uint *dirp = &((immap_t *) CFG_IMMR)->im_cpm.im_cpm_iop.pdira; | ||||
| 	volatile uint *dirp = &((ccsr_cpm_t *) CFG_MPC85xx_CPM_ADDR)->im_cpm_iop.pdira; | ||||
| 	dirp[iopin->port * 8] |= (1 << (31 - iopin->pin)); | ||||
| } | ||||
| 
 | ||||
| extern __inline__ void iopin_set_in (iopin_t * iopin) | ||||
| { | ||||
| 	volatile uint *dirp = &((immap_t *) CFG_IMMR)->im_cpm.im_cpm_iop.pdira; | ||||
| 	volatile uint *dirp = &((ccsr_cpm_t *) CFG_MPC85xx_CPM_ADDR)->im_cpm_iop.pdira; | ||||
| 	dirp[iopin->port * 8] &= ~(1 << (31 - iopin->pin)); | ||||
| } | ||||
| 
 | ||||
| extern __inline__ uint iopin_is_out (iopin_t * iopin) | ||||
| { | ||||
| 	volatile uint *dirp = &((immap_t *) CFG_IMMR)->im_cpm.im_cpm_iop.pdira; | ||||
| 	volatile uint *dirp = &((ccsr_cpm_t *) CFG_MPC85xx_CPM_ADDR)->im_cpm_iop.pdira; | ||||
| 	return (dirp[iopin->port * 8] >> (31 - iopin->pin)) & 1; | ||||
| } | ||||
| 
 | ||||
| extern __inline__ uint iopin_is_in (iopin_t * iopin) | ||||
| { | ||||
| 	volatile uint *dirp = &((immap_t *) CFG_IMMR)->im_cpm.im_cpm_iop.pdira; | ||||
| 	volatile uint *dirp = &((ccsr_cpm_t *) CFG_MPC85xx_CPM_ADDR)->im_cpm_iop.pdira; | ||||
| 	return ((dirp[iopin->port * 8] >> (31 - iopin->pin)) & 1) ^ 1; | ||||
| } | ||||
| 
 | ||||
| extern __inline__ void iopin_set_odr (iopin_t * iopin) | ||||
| { | ||||
| 	volatile uint *odrp = &((immap_t *) CFG_IMMR)->im_cpm.im_cpm_iop.podra; | ||||
| 	volatile uint *odrp = &((ccsr_cpm_t *) CFG_MPC85xx_CPM_ADDR)->im_cpm_iop.podra; | ||||
| 	odrp[iopin->port * 8] |= (1 << (31 - iopin->pin)); | ||||
| } | ||||
| 
 | ||||
| extern __inline__ void iopin_set_act (iopin_t * iopin) | ||||
| { | ||||
| 	volatile uint *odrp = &((immap_t *) CFG_IMMR)->im_cpm.im_cpm_iop.podra; | ||||
| 	volatile uint *odrp = &((ccsr_cpm_t *) CFG_MPC85xx_CPM_ADDR)->im_cpm_iop.podra; | ||||
| 	odrp[iopin->port * 8] &= ~(1 << (31 - iopin->pin)); | ||||
| } | ||||
| 
 | ||||
| extern __inline__ uint iopin_is_odr (iopin_t * iopin) | ||||
| { | ||||
| 	volatile uint *odrp = &((immap_t *) CFG_IMMR)->im_cpm.im_cpm_iop.podra; | ||||
| 	volatile uint *odrp = &((ccsr_cpm_t *) CFG_MPC85xx_CPM_ADDR)->im_cpm_iop.podra; | ||||
| 	return (odrp[iopin->port * 8] >> (31 - iopin->pin)) & 1; | ||||
| } | ||||
| 
 | ||||
| extern __inline__ uint iopin_is_act (iopin_t * iopin) | ||||
| { | ||||
| 	volatile uint *odrp = &((immap_t *) CFG_IMMR)->im_cpm.im_cpm_iop.podra; | ||||
| 	volatile uint *odrp = &((ccsr_cpm_t *) CFG_MPC85xx_CPM_ADDR)->im_cpm_iop.podra; | ||||
| 	return ((odrp[iopin->port * 8] >> (31 - iopin->pin)) & 1) ^ 1; | ||||
| } | ||||
| 
 | ||||
| extern __inline__ void iopin_set_ded (iopin_t * iopin) | ||||
| { | ||||
| 	volatile uint *parp = &((immap_t *) CFG_IMMR)->im_cpm.im_cpm_iop.ppara; | ||||
| 	volatile uint *parp = &((ccsr_cpm_t *) CFG_MPC85xx_CPM_ADDR)->im_cpm_iop.ppara; | ||||
| 	parp[iopin->port * 8] |= (1 << (31 - iopin->pin)); | ||||
| } | ||||
| 
 | ||||
| extern __inline__ void iopin_set_gen (iopin_t * iopin) | ||||
| { | ||||
| 	volatile uint *parp = &((immap_t *) CFG_IMMR)->im_cpm.im_cpm_iop.ppara; | ||||
| 	volatile uint *parp = &((ccsr_cpm_t *) CFG_MPC85xx_CPM_ADDR)->im_cpm_iop.ppara; | ||||
| 	parp[iopin->port * 8] &= ~(1 << (31 - iopin->pin)); | ||||
| } | ||||
| 
 | ||||
| extern __inline__ uint iopin_is_ded (iopin_t * iopin) | ||||
| { | ||||
| 	volatile uint *parp = &((immap_t *) CFG_IMMR)->im_cpm.im_cpm_iop.ppara; | ||||
| 	volatile uint *parp = &((ccsr_cpm_t *) CFG_MPC85xx_CPM_ADDR)->im_cpm_iop.ppara; | ||||
| 	return (parp[iopin->port * 8] >> (31 - iopin->pin)) & 1; | ||||
| } | ||||
| 
 | ||||
| extern __inline__ uint iopin_is_gen (iopin_t * iopin) | ||||
| { | ||||
| 	volatile uint *parp = &((immap_t *) CFG_IMMR)->im_cpm.im_cpm_iop.ppara; | ||||
| 	volatile uint *parp = &((ccsr_cpm_t *) CFG_MPC85xx_CPM_ADDR)->im_cpm_iop.ppara; | ||||
| 	return ((parp[iopin->port * 8] >> (31 - iopin->pin)) & 1) ^ 1; | ||||
| } | ||||
| 
 | ||||
| extern __inline__ void iopin_set_opt2 (iopin_t * iopin) | ||||
| { | ||||
| 	volatile uint *sorp = &((immap_t *) CFG_IMMR)->im_cpm.im_cpm_iop.psora; | ||||
| 	volatile uint *sorp = &((ccsr_cpm_t *) CFG_MPC85xx_CPM_ADDR)->im_cpm_iop.psora; | ||||
| 	sorp[iopin->port * 8] |= (1 << (31 - iopin->pin)); | ||||
| } | ||||
| 
 | ||||
| extern __inline__ void iopin_set_opt1 (iopin_t * iopin) | ||||
| { | ||||
| 	volatile uint *sorp = &((immap_t *) CFG_IMMR)->im_cpm.im_cpm_iop.psora; | ||||
| 	volatile uint *sorp = &((ccsr_cpm_t *) CFG_MPC85xx_CPM_ADDR)->im_cpm_iop.psora; | ||||
| 	sorp[iopin->port * 8] &= ~(1 << (31 - iopin->pin)); | ||||
| } | ||||
| 
 | ||||
| extern __inline__ uint iopin_is_opt2 (iopin_t * iopin) | ||||
| { | ||||
| 	volatile uint *sorp = &((immap_t *) CFG_IMMR)->im_cpm.im_cpm_iop.psora; | ||||
| 	volatile uint *sorp = &((ccsr_cpm_t *) CFG_MPC85xx_CPM_ADDR)->im_cpm_iop.psora; | ||||
| 	return (sorp[iopin->port * 8] >> (31 - iopin->pin)) & 1; | ||||
| } | ||||
| 
 | ||||
| extern __inline__ uint iopin_is_opt1 (iopin_t * iopin) | ||||
| { | ||||
| 	volatile uint *sorp = &((immap_t *) CFG_IMMR)->im_cpm.im_cpm_iop.psora; | ||||
| 	volatile uint *sorp = &((ccsr_cpm_t *) CFG_MPC85xx_CPM_ADDR)->im_cpm_iop.psora; | ||||
| 	return ((sorp[iopin->port * 8] >> (31 - iopin->pin)) & 1) ^ 1; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -26,7 +26,7 @@ typedef struct { | |||
|  * a 0x20 byte boundary | ||||
|  */ | ||||
| #ifdef CONFIG_MPC85xx | ||||
| #define ioport_addr(im, idx) (ioport_t *)((uint)&((im)->im_cpm.im_cpm_iop) + ((idx)*0x20)) | ||||
| #define ioport_addr(im, idx) (ioport_t *)((uint)&(im->im_cpm_iop) + ((idx)*0x20)) | ||||
| #else | ||||
| #define ioport_addr(im, idx) (ioport_t *)((uint)&(im)->im_ioport + ((idx)*0x20)) | ||||
| #endif | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue