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 Phillipsvoid 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 Phillipsvoid 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 Phillipsvoid 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 Phillipsvoid 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 Vorontsovvoid 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