1*601fbec7SMasahiro Yamada /* 2*601fbec7SMasahiro Yamada * SoC-specific code for tms320dm644x chips 3*601fbec7SMasahiro Yamada * 4*601fbec7SMasahiro Yamada * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net> 5*601fbec7SMasahiro Yamada * Copyright (C) 2008 Lyrtech <www.lyrtech.com> 6*601fbec7SMasahiro Yamada * Copyright (C) 2004 Texas Instruments. 7*601fbec7SMasahiro Yamada * 8*601fbec7SMasahiro Yamada * SPDX-License-Identifier: GPL-2.0+ 9*601fbec7SMasahiro Yamada */ 10*601fbec7SMasahiro Yamada 11*601fbec7SMasahiro Yamada #include <common.h> 12*601fbec7SMasahiro Yamada #include <asm/arch/hardware.h> 13*601fbec7SMasahiro Yamada 14*601fbec7SMasahiro Yamada 15*601fbec7SMasahiro Yamada #define PINMUX0_EMACEN (1 << 31) 16*601fbec7SMasahiro Yamada #define PINMUX0_AECS5 (1 << 11) 17*601fbec7SMasahiro Yamada #define PINMUX0_AECS4 (1 << 10) 18*601fbec7SMasahiro Yamada 19*601fbec7SMasahiro Yamada #define PINMUX1_I2C (1 << 7) 20*601fbec7SMasahiro Yamada #define PINMUX1_UART1 (1 << 1) 21*601fbec7SMasahiro Yamada #define PINMUX1_UART0 (1 << 0) 22*601fbec7SMasahiro Yamada 23*601fbec7SMasahiro Yamada davinci_enable_uart0(void)24*601fbec7SMasahiro Yamadavoid davinci_enable_uart0(void) 25*601fbec7SMasahiro Yamada { 26*601fbec7SMasahiro Yamada lpsc_on(DAVINCI_LPSC_UART0); 27*601fbec7SMasahiro Yamada 28*601fbec7SMasahiro Yamada /* Bringup UART0 out of reset */ 29*601fbec7SMasahiro Yamada REG(UART0_PWREMU_MGMT) = 0x00006001; 30*601fbec7SMasahiro Yamada 31*601fbec7SMasahiro Yamada /* Enable UART0 MUX lines */ 32*601fbec7SMasahiro Yamada REG(PINMUX1) |= PINMUX1_UART0; 33*601fbec7SMasahiro Yamada } 34*601fbec7SMasahiro Yamada 35*601fbec7SMasahiro Yamada #ifdef CONFIG_DRIVER_TI_EMAC davinci_enable_emac(void)36*601fbec7SMasahiro Yamadavoid davinci_enable_emac(void) 37*601fbec7SMasahiro Yamada { 38*601fbec7SMasahiro Yamada lpsc_on(DAVINCI_LPSC_EMAC); 39*601fbec7SMasahiro Yamada lpsc_on(DAVINCI_LPSC_EMAC_WRAPPER); 40*601fbec7SMasahiro Yamada lpsc_on(DAVINCI_LPSC_MDIO); 41*601fbec7SMasahiro Yamada 42*601fbec7SMasahiro Yamada /* Enable GIO3.3V cells used for EMAC */ 43*601fbec7SMasahiro Yamada REG(VDD3P3V_PWDN) = 0; 44*601fbec7SMasahiro Yamada 45*601fbec7SMasahiro Yamada /* Enable EMAC. */ 46*601fbec7SMasahiro Yamada REG(PINMUX0) |= PINMUX0_EMACEN; 47*601fbec7SMasahiro Yamada } 48*601fbec7SMasahiro Yamada #endif 49*601fbec7SMasahiro Yamada 50*601fbec7SMasahiro Yamada #ifdef CONFIG_SYS_I2C_DAVINCI davinci_enable_i2c(void)51*601fbec7SMasahiro Yamadavoid davinci_enable_i2c(void) 52*601fbec7SMasahiro Yamada { 53*601fbec7SMasahiro Yamada lpsc_on(DAVINCI_LPSC_I2C); 54*601fbec7SMasahiro Yamada 55*601fbec7SMasahiro Yamada /* Enable I2C pin Mux */ 56*601fbec7SMasahiro Yamada REG(PINMUX1) |= PINMUX1_I2C; 57*601fbec7SMasahiro Yamada } 58*601fbec7SMasahiro Yamada #endif 59*601fbec7SMasahiro Yamada davinci_errata_workarounds(void)60*601fbec7SMasahiro Yamadavoid davinci_errata_workarounds(void) 61*601fbec7SMasahiro Yamada { 62*601fbec7SMasahiro Yamada /* 63*601fbec7SMasahiro Yamada * Workaround for TMS320DM6446 errata 1.3.22: 64*601fbec7SMasahiro Yamada * PSC: PTSTAT Register Does Not Clear After Warm/Maximum Reset 65*601fbec7SMasahiro Yamada * Revision(s) Affected: 1.3 and earlier 66*601fbec7SMasahiro Yamada */ 67*601fbec7SMasahiro Yamada REG(PSC_SILVER_BULLET) = 0; 68*601fbec7SMasahiro Yamada 69*601fbec7SMasahiro Yamada /* 70*601fbec7SMasahiro Yamada * Set the PR_OLD_COUNT bits in the Bus Burst Priority Register (PBBPR) 71*601fbec7SMasahiro Yamada * as suggested in TMS320DM6446 errata 2.1.2: 72*601fbec7SMasahiro Yamada * 73*601fbec7SMasahiro Yamada * On DM6446 Silicon Revision 2.1 and earlier, under certain conditions 74*601fbec7SMasahiro Yamada * low priority modules can occupy the bus and prevent high priority 75*601fbec7SMasahiro Yamada * modules like the VPSS from getting the required DDR2 throughput. 76*601fbec7SMasahiro Yamada * A hex value of 0x20 should provide a good ARM (cache enabled) 77*601fbec7SMasahiro Yamada * performance and still allow good utilization by the VPSS or other 78*601fbec7SMasahiro Yamada * modules. 79*601fbec7SMasahiro Yamada */ 80*601fbec7SMasahiro Yamada REG(VBPR) = 0x20; 81*601fbec7SMasahiro Yamada } 82