xref: /rk3399_rockchip-uboot/board/freescale/mpc8568mds/bcsr.c (revision 3765b3e7bd0f8e46914d417f29cbcb0c72b1acf7)
1acbca876SKumar Gala /*
2acbca876SKumar Gala  * Copyright 2007 Freescale Semiconductor.
3acbca876SKumar Gala  *
4*1a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
5acbca876SKumar Gala  */
6acbca876SKumar Gala 
7acbca876SKumar Gala #include <common.h>
8ad162249SAnton Vorontsov #include <asm/io.h>
9ad162249SAnton Vorontsov 
10acbca876SKumar Gala #include "bcsr.h"
11acbca876SKumar Gala 
enable_8568mds_duart(void)12e56143e5SKim Phillips void enable_8568mds_duart(void)
13acbca876SKumar Gala {
146d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	volatile uint* duart_mux	= (uint *)(CONFIG_SYS_CCSRBAR + 0xe0060);
156d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	volatile uint* devices		= (uint *)(CONFIG_SYS_CCSRBAR + 0xe0070);
166d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	volatile u8 *bcsr		= (u8 *)(CONFIG_SYS_BCSR);
17acbca876SKumar Gala 
18acbca876SKumar Gala 	*duart_mux = 0x80000000;	/* Set the mux to Duart on PMUXCR */
19acbca876SKumar Gala 	*devices  = 0;			/* Enable all peripheral devices */
20acbca876SKumar Gala 	bcsr[5] |= 0x01;		/* Enable Duart in BCSR*/
21acbca876SKumar Gala }
22acbca876SKumar Gala 
enable_8568mds_flash_write(void)23e56143e5SKim Phillips void enable_8568mds_flash_write(void)
24acbca876SKumar Gala {
256d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	volatile u8 *bcsr = (u8 *)(CONFIG_SYS_BCSR);
26acbca876SKumar Gala 
27acbca876SKumar Gala 	bcsr[9] |= 0x01;
28acbca876SKumar Gala }
29acbca876SKumar Gala 
disable_8568mds_flash_write(void)30e56143e5SKim Phillips void disable_8568mds_flash_write(void)
31acbca876SKumar Gala {
326d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	volatile u8 *bcsr = (u8 *)(CONFIG_SYS_BCSR);
33acbca876SKumar Gala 
34acbca876SKumar Gala 	bcsr[9] &= ~(0x01);
35acbca876SKumar Gala }
36acbca876SKumar Gala 
enable_8568mds_qe_mdio(void)37e56143e5SKim Phillips void enable_8568mds_qe_mdio(void)
38acbca876SKumar Gala {
396d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	u8 *bcsr = (u8 *)(CONFIG_SYS_BCSR);
40acbca876SKumar Gala 
41acbca876SKumar Gala 	bcsr[7] |= 0x01;
42acbca876SKumar Gala }
43ad162249SAnton Vorontsov 
44ad162249SAnton Vorontsov #if defined(CONFIG_UEC_ETH1) || defined(CONFIG_UEC_ETH2)
reset_8568mds_uccs(void)45ad162249SAnton Vorontsov void reset_8568mds_uccs(void)
46ad162249SAnton Vorontsov {
476d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	volatile u8 *bcsr = (u8 *)(CONFIG_SYS_BCSR);
48ad162249SAnton Vorontsov 
49ad162249SAnton Vorontsov 	/* Turn off UCC1 & UCC2 */
50ad162249SAnton Vorontsov 	out_8(&bcsr[8], in_8(&bcsr[8]) & ~BCSR_UCC1_GETH_EN);
51ad162249SAnton Vorontsov 	out_8(&bcsr[9], in_8(&bcsr[9]) & ~BCSR_UCC2_GETH_EN);
52ad162249SAnton Vorontsov 
53ad162249SAnton Vorontsov 	/* Mode is RGMII, all bits clear */
54ad162249SAnton Vorontsov 	out_8(&bcsr[11], in_8(&bcsr[11]) & ~(BCSR_UCC1_MODE_MSK |
55ad162249SAnton Vorontsov 					     BCSR_UCC2_MODE_MSK));
56ad162249SAnton Vorontsov 
57ad162249SAnton Vorontsov 	/* Turn UCC1 & UCC2 on */
58ad162249SAnton Vorontsov 	out_8(&bcsr[8], in_8(&bcsr[8]) | BCSR_UCC1_GETH_EN);
59ad162249SAnton Vorontsov 	out_8(&bcsr[9], in_8(&bcsr[9]) | BCSR_UCC2_GETH_EN);
60ad162249SAnton Vorontsov }
61ad162249SAnton Vorontsov #endif
62