1*a4145534SPeter Tyser /* 2*a4145534SPeter Tyser * 3*a4145534SPeter Tyser * (C) Copyright 2000-2003 4*a4145534SPeter Tyser * Wolfgang Denk, DENX Software Engineering, wd@denx.de. 5*a4145534SPeter Tyser * 6*a4145534SPeter Tyser * (C) Copyright 2004-2008 Freescale Semiconductor, Inc. 7*a4145534SPeter Tyser * TsiChung Liew (Tsi-Chung.Liew@freescale.com) 8*a4145534SPeter Tyser * 9*a4145534SPeter Tyser * See file CREDITS for list of people who contributed to this 10*a4145534SPeter Tyser * project. 11*a4145534SPeter Tyser * 12*a4145534SPeter Tyser * This program is free software; you can redistribute it and/or 13*a4145534SPeter Tyser * modify it under the terms of the GNU General Public License as 14*a4145534SPeter Tyser * published by the Free Software Foundation; either version 2 of 15*a4145534SPeter Tyser * the License, or (at your option) any later version. 16*a4145534SPeter Tyser * 17*a4145534SPeter Tyser * This program is distributed in the hope that it will be useful, 18*a4145534SPeter Tyser * but WITHOUT ANY WARRANTY; without even the implied warranty of 19*a4145534SPeter Tyser * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20*a4145534SPeter Tyser * GNU General Public License for more details. 21*a4145534SPeter Tyser * 22*a4145534SPeter Tyser * You should have received a copy of the GNU General Public License 23*a4145534SPeter Tyser * along with this program; if not, write to the Free Software 24*a4145534SPeter Tyser * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 25*a4145534SPeter Tyser * MA 02111-1307 USA 26*a4145534SPeter Tyser */ 27*a4145534SPeter Tyser 28*a4145534SPeter Tyser #include <common.h> 29*a4145534SPeter Tyser #include <watchdog.h> 30*a4145534SPeter Tyser #include <asm/immap.h> 31*a4145534SPeter Tyser 32*a4145534SPeter Tyser #if defined(CONFIG_CMD_NET) 33*a4145534SPeter Tyser #include <config.h> 34*a4145534SPeter Tyser #include <net.h> 35*a4145534SPeter Tyser #include <asm/fec.h> 36*a4145534SPeter Tyser #endif 37*a4145534SPeter Tyser 38*a4145534SPeter Tyser #ifdef CONFIG_MCF5301x 39*a4145534SPeter Tyser void cpu_init_f(void) 40*a4145534SPeter Tyser { 41*a4145534SPeter Tyser volatile scm1_t *scm1 = (scm1_t *) MMAP_SCM1; 42*a4145534SPeter Tyser volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO; 43*a4145534SPeter Tyser volatile fbcs_t *fbcs = (fbcs_t *) MMAP_FBCS; 44*a4145534SPeter Tyser 45*a4145534SPeter Tyser /* watchdog is enabled by default - disable the watchdog */ 46*a4145534SPeter Tyser #ifndef CONFIG_WATCHDOG 47*a4145534SPeter Tyser /*wdog->cr = 0; */ 48*a4145534SPeter Tyser #endif 49*a4145534SPeter Tyser 50*a4145534SPeter Tyser scm1->mpr = 0x77777777; 51*a4145534SPeter Tyser scm1->pacra = 0; 52*a4145534SPeter Tyser scm1->pacrb = 0; 53*a4145534SPeter Tyser scm1->pacrc = 0; 54*a4145534SPeter Tyser scm1->pacrd = 0; 55*a4145534SPeter Tyser scm1->pacre = 0; 56*a4145534SPeter Tyser scm1->pacrf = 0; 57*a4145534SPeter Tyser scm1->pacrg = 0; 58*a4145534SPeter Tyser 59*a4145534SPeter Tyser #if (defined(CONFIG_SYS_CS0_BASE) && defined(CONFIG_SYS_CS0_MASK) \ 60*a4145534SPeter Tyser && defined(CONFIG_SYS_CS0_CTRL)) 61*a4145534SPeter Tyser gpio->par_cs |= GPIO_PAR_CS0_CS0; 62*a4145534SPeter Tyser fbcs->csar0 = CONFIG_SYS_CS0_BASE; 63*a4145534SPeter Tyser fbcs->cscr0 = CONFIG_SYS_CS0_CTRL; 64*a4145534SPeter Tyser fbcs->csmr0 = CONFIG_SYS_CS0_MASK; 65*a4145534SPeter Tyser #endif 66*a4145534SPeter Tyser 67*a4145534SPeter Tyser #if (defined(CONFIG_SYS_CS1_BASE) && defined(CONFIG_SYS_CS1_MASK) \ 68*a4145534SPeter Tyser && defined(CONFIG_SYS_CS1_CTRL)) 69*a4145534SPeter Tyser gpio->par_cs |= GPIO_PAR_CS1_CS1; 70*a4145534SPeter Tyser fbcs->csar1 = CONFIG_SYS_CS1_BASE; 71*a4145534SPeter Tyser fbcs->cscr1 = CONFIG_SYS_CS1_CTRL; 72*a4145534SPeter Tyser fbcs->csmr1 = CONFIG_SYS_CS1_MASK; 73*a4145534SPeter Tyser #endif 74*a4145534SPeter Tyser 75*a4145534SPeter Tyser #if (defined(CONFIG_SYS_CS2_BASE) && defined(CONFIG_SYS_CS2_MASK) \ 76*a4145534SPeter Tyser && defined(CONFIG_SYS_CS2_CTRL)) 77*a4145534SPeter Tyser fbcs->csar2 = CONFIG_SYS_CS2_BASE; 78*a4145534SPeter Tyser fbcs->cscr2 = CONFIG_SYS_CS2_CTRL; 79*a4145534SPeter Tyser fbcs->csmr2 = CONFIG_SYS_CS2_MASK; 80*a4145534SPeter Tyser #endif 81*a4145534SPeter Tyser 82*a4145534SPeter Tyser #if (defined(CONFIG_SYS_CS3_BASE) && defined(CONFIG_SYS_CS3_MASK) \ 83*a4145534SPeter Tyser && defined(CONFIG_SYS_CS3_CTRL)) 84*a4145534SPeter Tyser fbcs->csar3 = CONFIG_SYS_CS3_BASE; 85*a4145534SPeter Tyser fbcs->cscr3 = CONFIG_SYS_CS3_CTRL; 86*a4145534SPeter Tyser fbcs->csmr3 = CONFIG_SYS_CS3_MASK; 87*a4145534SPeter Tyser #endif 88*a4145534SPeter Tyser 89*a4145534SPeter Tyser #if (defined(CONFIG_SYS_CS4_BASE) && defined(CONFIG_SYS_CS4_MASK) \ 90*a4145534SPeter Tyser && defined(CONFIG_SYS_CS4_CTRL)) 91*a4145534SPeter Tyser gpio->par_cs |= GPIO_PAR_CS4; 92*a4145534SPeter Tyser fbcs->csar4 = CONFIG_SYS_CS4_BASE; 93*a4145534SPeter Tyser fbcs->cscr4 = CONFIG_SYS_CS4_CTRL; 94*a4145534SPeter Tyser fbcs->csmr4 = CONFIG_SYS_CS4_MASK; 95*a4145534SPeter Tyser #endif 96*a4145534SPeter Tyser 97*a4145534SPeter Tyser #if (defined(CONFIG_SYS_CS5_BASE) && defined(CONFIG_SYS_CS5_MASK) \ 98*a4145534SPeter Tyser && defined(CONFIG_SYS_CS5_CTRL)) 99*a4145534SPeter Tyser gpio->par_cs |= GPIO_PAR_CS5; 100*a4145534SPeter Tyser fbcs->csar5 = CONFIG_SYS_CS5_BASE; 101*a4145534SPeter Tyser fbcs->cscr5 = CONFIG_SYS_CS5_CTRL; 102*a4145534SPeter Tyser fbcs->csmr5 = CONFIG_SYS_CS5_MASK; 103*a4145534SPeter Tyser #endif 104*a4145534SPeter Tyser 105*a4145534SPeter Tyser #ifdef CONFIG_FSL_I2C 106*a4145534SPeter Tyser gpio->par_feci2c = GPIO_PAR_FECI2C_SDA_SDA | GPIO_PAR_FECI2C_SCL_SCL; 107*a4145534SPeter Tyser #endif 108*a4145534SPeter Tyser 109*a4145534SPeter Tyser icache_enable(); 110*a4145534SPeter Tyser } 111*a4145534SPeter Tyser 112*a4145534SPeter Tyser /* initialize higher level parts of CPU like timers */ 113*a4145534SPeter Tyser int cpu_init_r(void) 114*a4145534SPeter Tyser { 115*a4145534SPeter Tyser #ifdef CONFIG_MCFFEC 116*a4145534SPeter Tyser volatile ccm_t *ccm = (ccm_t *) MMAP_CCM; 117*a4145534SPeter Tyser #endif 118*a4145534SPeter Tyser #ifdef CONFIG_MCFRTC 119*a4145534SPeter Tyser volatile rtc_t *rtc = (rtc_t *) (CONFIG_SYS_MCFRTC_BASE); 120*a4145534SPeter Tyser volatile rtcex_t *rtcex = (rtcex_t *) & rtc->extended; 121*a4145534SPeter Tyser 122*a4145534SPeter Tyser rtcex->gocu = CONFIG_SYS_RTC_CNT; 123*a4145534SPeter Tyser rtcex->gocl = CONFIG_SYS_RTC_SETUP; 124*a4145534SPeter Tyser 125*a4145534SPeter Tyser #endif 126*a4145534SPeter Tyser #ifdef CONFIG_MCFFEC 127*a4145534SPeter Tyser if (CONFIG_SYS_FEC0_MIIBASE != CONFIG_SYS_FEC1_MIIBASE) 128*a4145534SPeter Tyser ccm->misccr |= CCM_MISCCR_FECM; 129*a4145534SPeter Tyser else 130*a4145534SPeter Tyser ccm->misccr &= ~CCM_MISCCR_FECM; 131*a4145534SPeter Tyser #endif 132*a4145534SPeter Tyser 133*a4145534SPeter Tyser return (0); 134*a4145534SPeter Tyser } 135*a4145534SPeter Tyser 136*a4145534SPeter Tyser void uart_port_conf(int port) 137*a4145534SPeter Tyser { 138*a4145534SPeter Tyser volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO; 139*a4145534SPeter Tyser 140*a4145534SPeter Tyser /* Setup Ports: */ 141*a4145534SPeter Tyser switch (port) { 142*a4145534SPeter Tyser case 0: 143*a4145534SPeter Tyser gpio->par_uart &= ~(GPIO_PAR_UART_U0TXD | GPIO_PAR_UART_U0RXD); 144*a4145534SPeter Tyser gpio->par_uart |= (GPIO_PAR_UART_U0TXD | GPIO_PAR_UART_U0RXD); 145*a4145534SPeter Tyser break; 146*a4145534SPeter Tyser case 1: 147*a4145534SPeter Tyser #ifdef CONFIG_SYS_UART1_ALT1_GPIO 148*a4145534SPeter Tyser gpio->par_simp1h &= 149*a4145534SPeter Tyser ~(GPIO_PAR_SIMP1H_DATA1_UNMASK | 150*a4145534SPeter Tyser GPIO_PAR_SIMP1H_VEN1_UNMASK); 151*a4145534SPeter Tyser gpio->par_simp1h |= 152*a4145534SPeter Tyser (GPIO_PAR_SIMP1H_DATA1_U1TXD | GPIO_PAR_SIMP1H_VEN1_U1RXD); 153*a4145534SPeter Tyser #elif defined(CONFIG_SYS_UART1_ALT2_GPIO) 154*a4145534SPeter Tyser gpio->par_ssih &= 155*a4145534SPeter Tyser ~(GPIO_PAR_SSIH_RXD_UNMASK | GPIO_PAR_SSIH_TXD_UNMASK); 156*a4145534SPeter Tyser gpio->par_ssih |= 157*a4145534SPeter Tyser (GPIO_PAR_SSIH_RXD_U1RXD | GPIO_PAR_SSIH_TXD_U1TXD); 158*a4145534SPeter Tyser #endif 159*a4145534SPeter Tyser break; 160*a4145534SPeter Tyser case 2: 161*a4145534SPeter Tyser #ifdef CONFIG_SYS_UART2_PRI_GPIO 162*a4145534SPeter Tyser gpio->par_uart |= (GPIO_PAR_UART_U2TXD | GPIO_PAR_UART_U2RXD); 163*a4145534SPeter Tyser #elif defined(CONFIG_SYS_UART2_ALT1_GPIO) 164*a4145534SPeter Tyser gpio->par_dspih &= 165*a4145534SPeter Tyser ~(GPIO_PAR_DSPIH_SIN_UNMASK | GPIO_PAR_DSPIH_SOUT_UNMASK); 166*a4145534SPeter Tyser gpio->par_dspih |= 167*a4145534SPeter Tyser (GPIO_PAR_DSPIH_SIN_U2RXD | GPIO_PAR_DSPIH_SOUT_U2TXD); 168*a4145534SPeter Tyser #elif defined(CONFIG_SYS_UART2_ALT2_GPIO) 169*a4145534SPeter Tyser gpio->par_feci2c &= 170*a4145534SPeter Tyser ~(GPIO_PAR_FECI2C_SDA_UNMASK | GPIO_PAR_FECI2C_SCL_UNMASK); 171*a4145534SPeter Tyser gpio->par_feci2c |= 172*a4145534SPeter Tyser (GPIO_PAR_FECI2C_SDA_U2TXD | GPIO_PAR_FECI2C_SCL_U2RXD); 173*a4145534SPeter Tyser #endif 174*a4145534SPeter Tyser break; 175*a4145534SPeter Tyser } 176*a4145534SPeter Tyser } 177*a4145534SPeter Tyser 178*a4145534SPeter Tyser #if defined(CONFIG_CMD_NET) 179*a4145534SPeter Tyser int fecpin_setclear(struct eth_device *dev, int setclear) 180*a4145534SPeter Tyser { 181*a4145534SPeter Tyser volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO; 182*a4145534SPeter Tyser struct fec_info_s *info = (struct fec_info_s *)dev->priv; 183*a4145534SPeter Tyser 184*a4145534SPeter Tyser if (setclear) { 185*a4145534SPeter Tyser if (info->iobase == CONFIG_SYS_FEC0_IOBASE) { 186*a4145534SPeter Tyser gpio->par_fec |= 187*a4145534SPeter Tyser GPIO_PAR_FEC0_7W_FEC | GPIO_PAR_FEC0_RMII_FEC; 188*a4145534SPeter Tyser gpio->par_feci2c |= 189*a4145534SPeter Tyser GPIO_PAR_FECI2C_MDC0 | GPIO_PAR_FECI2C_MDIO0; 190*a4145534SPeter Tyser } else { 191*a4145534SPeter Tyser gpio->par_fec |= 192*a4145534SPeter Tyser GPIO_PAR_FEC1_7W_FEC | GPIO_PAR_FEC1_RMII_FEC; 193*a4145534SPeter Tyser gpio->par_feci2c |= 194*a4145534SPeter Tyser GPIO_PAR_FECI2C_MDC1 | GPIO_PAR_FECI2C_MDIO1; 195*a4145534SPeter Tyser } 196*a4145534SPeter Tyser } else { 197*a4145534SPeter Tyser if (info->iobase == CONFIG_SYS_FEC0_IOBASE) { 198*a4145534SPeter Tyser gpio->par_fec &= 199*a4145534SPeter Tyser ~(GPIO_PAR_FEC0_7W_FEC | GPIO_PAR_FEC0_RMII_FEC); 200*a4145534SPeter Tyser gpio->par_feci2c &= GPIO_PAR_FECI2C_RMII0_UNMASK; 201*a4145534SPeter Tyser } else { 202*a4145534SPeter Tyser gpio->par_fec &= 203*a4145534SPeter Tyser ~(GPIO_PAR_FEC1_7W_FEC | GPIO_PAR_FEC1_RMII_FEC); 204*a4145534SPeter Tyser gpio->par_feci2c &= GPIO_PAR_FECI2C_RMII1_UNMASK; 205*a4145534SPeter Tyser } 206*a4145534SPeter Tyser } 207*a4145534SPeter Tyser return 0; 208*a4145534SPeter Tyser } 209*a4145534SPeter Tyser #endif /* CONFIG_CMD_NET */ 210*a4145534SPeter Tyser #endif /* CONFIG_MCF5301x */ 211*a4145534SPeter Tyser 212*a4145534SPeter Tyser #ifdef CONFIG_MCF532x 213*a4145534SPeter Tyser void cpu_init_f(void) 214*a4145534SPeter Tyser { 215*a4145534SPeter Tyser volatile scm1_t *scm1 = (scm1_t *) MMAP_SCM1; 216*a4145534SPeter Tyser volatile scm2_t *scm2 = (scm2_t *) MMAP_SCM2; 217*a4145534SPeter Tyser volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO; 218*a4145534SPeter Tyser volatile fbcs_t *fbcs = (fbcs_t *) MMAP_FBCS; 219*a4145534SPeter Tyser volatile wdog_t *wdog = (wdog_t *) MMAP_WDOG; 220*a4145534SPeter Tyser 221*a4145534SPeter Tyser /* watchdog is enabled by default - disable the watchdog */ 222*a4145534SPeter Tyser #ifndef CONFIG_WATCHDOG 223*a4145534SPeter Tyser wdog->cr = 0; 224*a4145534SPeter Tyser #endif 225*a4145534SPeter Tyser 226*a4145534SPeter Tyser scm1->mpr0 = 0x77777777; 227*a4145534SPeter Tyser scm2->pacra = 0; 228*a4145534SPeter Tyser scm2->pacrb = 0; 229*a4145534SPeter Tyser scm2->pacrc = 0; 230*a4145534SPeter Tyser scm2->pacrd = 0; 231*a4145534SPeter Tyser scm2->pacre = 0; 232*a4145534SPeter Tyser scm2->pacrf = 0; 233*a4145534SPeter Tyser scm2->pacrg = 0; 234*a4145534SPeter Tyser scm1->pacrh = 0; 235*a4145534SPeter Tyser 236*a4145534SPeter Tyser /* Port configuration */ 237*a4145534SPeter Tyser gpio->par_cs = 0; 238*a4145534SPeter Tyser 239*a4145534SPeter Tyser #if (defined(CONFIG_SYS_CS0_BASE) && defined(CONFIG_SYS_CS0_MASK) \ 240*a4145534SPeter Tyser && defined(CONFIG_SYS_CS0_CTRL)) 241*a4145534SPeter Tyser fbcs->csar0 = CONFIG_SYS_CS0_BASE; 242*a4145534SPeter Tyser fbcs->cscr0 = CONFIG_SYS_CS0_CTRL; 243*a4145534SPeter Tyser fbcs->csmr0 = CONFIG_SYS_CS0_MASK; 244*a4145534SPeter Tyser #endif 245*a4145534SPeter Tyser 246*a4145534SPeter Tyser #if (defined(CONFIG_SYS_CS1_BASE) && defined(CONFIG_SYS_CS1_MASK) \ 247*a4145534SPeter Tyser && defined(CONFIG_SYS_CS1_CTRL)) 248*a4145534SPeter Tyser /* Latch chipselect */ 249*a4145534SPeter Tyser gpio->par_cs |= GPIO_PAR_CS1; 250*a4145534SPeter Tyser fbcs->csar1 = CONFIG_SYS_CS1_BASE; 251*a4145534SPeter Tyser fbcs->cscr1 = CONFIG_SYS_CS1_CTRL; 252*a4145534SPeter Tyser fbcs->csmr1 = CONFIG_SYS_CS1_MASK; 253*a4145534SPeter Tyser #endif 254*a4145534SPeter Tyser 255*a4145534SPeter Tyser #if (defined(CONFIG_SYS_CS2_BASE) && defined(CONFIG_SYS_CS2_MASK) \ 256*a4145534SPeter Tyser && defined(CONFIG_SYS_CS2_CTRL)) 257*a4145534SPeter Tyser gpio->par_cs |= GPIO_PAR_CS2; 258*a4145534SPeter Tyser fbcs->csar2 = CONFIG_SYS_CS2_BASE; 259*a4145534SPeter Tyser fbcs->cscr2 = CONFIG_SYS_CS2_CTRL; 260*a4145534SPeter Tyser fbcs->csmr2 = CONFIG_SYS_CS2_MASK; 261*a4145534SPeter Tyser #endif 262*a4145534SPeter Tyser 263*a4145534SPeter Tyser #if (defined(CONFIG_SYS_CS3_BASE) && defined(CONFIG_SYS_CS3_MASK) \ 264*a4145534SPeter Tyser && defined(CONFIG_SYS_CS3_CTRL)) 265*a4145534SPeter Tyser gpio->par_cs |= GPIO_PAR_CS3; 266*a4145534SPeter Tyser fbcs->csar3 = CONFIG_SYS_CS3_BASE; 267*a4145534SPeter Tyser fbcs->cscr3 = CONFIG_SYS_CS3_CTRL; 268*a4145534SPeter Tyser fbcs->csmr3 = CONFIG_SYS_CS3_MASK; 269*a4145534SPeter Tyser #endif 270*a4145534SPeter Tyser 271*a4145534SPeter Tyser #if (defined(CONFIG_SYS_CS4_BASE) && defined(CONFIG_SYS_CS4_MASK) \ 272*a4145534SPeter Tyser && defined(CONFIG_SYS_CS4_CTRL)) 273*a4145534SPeter Tyser gpio->par_cs |= GPIO_PAR_CS4; 274*a4145534SPeter Tyser fbcs->csar4 = CONFIG_SYS_CS4_BASE; 275*a4145534SPeter Tyser fbcs->cscr4 = CONFIG_SYS_CS4_CTRL; 276*a4145534SPeter Tyser fbcs->csmr4 = CONFIG_SYS_CS4_MASK; 277*a4145534SPeter Tyser #endif 278*a4145534SPeter Tyser 279*a4145534SPeter Tyser #if (defined(CONFIG_SYS_CS5_BASE) && defined(CONFIG_SYS_CS5_MASK) \ 280*a4145534SPeter Tyser && defined(CONFIG_SYS_CS5_CTRL)) 281*a4145534SPeter Tyser gpio->par_cs |= GPIO_PAR_CS5; 282*a4145534SPeter Tyser fbcs->csar5 = CONFIG_SYS_CS5_BASE; 283*a4145534SPeter Tyser fbcs->cscr5 = CONFIG_SYS_CS5_CTRL; 284*a4145534SPeter Tyser fbcs->csmr5 = CONFIG_SYS_CS5_MASK; 285*a4145534SPeter Tyser #endif 286*a4145534SPeter Tyser 287*a4145534SPeter Tyser #ifdef CONFIG_FSL_I2C 288*a4145534SPeter Tyser gpio->par_feci2c = GPIO_PAR_FECI2C_SCL_SCL | GPIO_PAR_FECI2C_SDA_SDA; 289*a4145534SPeter Tyser #endif 290*a4145534SPeter Tyser 291*a4145534SPeter Tyser icache_enable(); 292*a4145534SPeter Tyser } 293*a4145534SPeter Tyser 294*a4145534SPeter Tyser /* 295*a4145534SPeter Tyser * initialize higher level parts of CPU like timers 296*a4145534SPeter Tyser */ 297*a4145534SPeter Tyser int cpu_init_r(void) 298*a4145534SPeter Tyser { 299*a4145534SPeter Tyser return (0); 300*a4145534SPeter Tyser } 301*a4145534SPeter Tyser 302*a4145534SPeter Tyser void uart_port_conf(int port) 303*a4145534SPeter Tyser { 304*a4145534SPeter Tyser volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO; 305*a4145534SPeter Tyser 306*a4145534SPeter Tyser /* Setup Ports: */ 307*a4145534SPeter Tyser switch (port) { 308*a4145534SPeter Tyser case 0: 309*a4145534SPeter Tyser gpio->par_uart &= ~(GPIO_PAR_UART_TXD0 | GPIO_PAR_UART_RXD0); 310*a4145534SPeter Tyser gpio->par_uart |= (GPIO_PAR_UART_TXD0 | GPIO_PAR_UART_RXD0); 311*a4145534SPeter Tyser break; 312*a4145534SPeter Tyser case 1: 313*a4145534SPeter Tyser gpio->par_uart &= 314*a4145534SPeter Tyser ~(GPIO_PAR_UART_TXD1(3) | GPIO_PAR_UART_RXD1(3)); 315*a4145534SPeter Tyser gpio->par_uart |= 316*a4145534SPeter Tyser (GPIO_PAR_UART_TXD1(3) | GPIO_PAR_UART_RXD1(3)); 317*a4145534SPeter Tyser break; 318*a4145534SPeter Tyser case 2: 319*a4145534SPeter Tyser #ifdef CONFIG_SYS_UART2_ALT1_GPIO 320*a4145534SPeter Tyser gpio->par_timer &= 0x0F; 321*a4145534SPeter Tyser gpio->par_timer |= (GPIO_PAR_TIN3_URXD2 | GPIO_PAR_TIN2_UTXD2); 322*a4145534SPeter Tyser #elif defined(CONFIG_SYS_UART2_ALT2_GPIO) 323*a4145534SPeter Tyser gpio->par_feci2c &= 0xFF00; 324*a4145534SPeter Tyser gpio->par_feci2c |= (GPIO_PAR_FECI2C_SCL_UTXD2 | GPIO_PAR_FECI2C_SDA_URXD2); 325*a4145534SPeter Tyser #elif defined(CONFIG_SYS_UART2_ALT3_GPIO) 326*a4145534SPeter Tyser gpio->par_ssi &= 0xF0FF; 327*a4145534SPeter Tyser gpio->par_ssi |= (GPIO_PAR_SSI_RXD(2) | GPIO_PAR_SSI_TXD(2)); 328*a4145534SPeter Tyser #endif 329*a4145534SPeter Tyser break; 330*a4145534SPeter Tyser } 331*a4145534SPeter Tyser } 332*a4145534SPeter Tyser 333*a4145534SPeter Tyser #if defined(CONFIG_CMD_NET) 334*a4145534SPeter Tyser int fecpin_setclear(struct eth_device *dev, int setclear) 335*a4145534SPeter Tyser { 336*a4145534SPeter Tyser volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO; 337*a4145534SPeter Tyser 338*a4145534SPeter Tyser if (setclear) { 339*a4145534SPeter Tyser gpio->par_fec |= GPIO_PAR_FEC_7W_FEC | GPIO_PAR_FEC_MII_FEC; 340*a4145534SPeter Tyser gpio->par_feci2c |= 341*a4145534SPeter Tyser GPIO_PAR_FECI2C_MDC_EMDC | GPIO_PAR_FECI2C_MDIO_EMDIO; 342*a4145534SPeter Tyser } else { 343*a4145534SPeter Tyser gpio->par_fec &= ~(GPIO_PAR_FEC_7W_FEC | GPIO_PAR_FEC_MII_FEC); 344*a4145534SPeter Tyser gpio->par_feci2c &= 345*a4145534SPeter Tyser ~(GPIO_PAR_FECI2C_MDC_EMDC | GPIO_PAR_FECI2C_MDIO_EMDIO); 346*a4145534SPeter Tyser } 347*a4145534SPeter Tyser return 0; 348*a4145534SPeter Tyser } 349*a4145534SPeter Tyser #endif 350*a4145534SPeter Tyser #endif /* CONFIG_MCF532x */ 351