xref: /rk3399_rockchip-uboot/arch/arm/cpu/arm1136/mx31/devices.c (revision d121d20195aca8c7bd76f1ba67ee84f8964330c4)
184ad6884SPeter Tyser /*
284ad6884SPeter Tyser  *
384ad6884SPeter Tyser  * (C) Copyright 2009 Magnus Lilja <lilja.magnus@gmail.com>
484ad6884SPeter Tyser  *
584ad6884SPeter Tyser  * (c) 2007 Pengutronix, Sascha Hauer <s.hauer@pengutronix.de>
684ad6884SPeter Tyser  *
784ad6884SPeter Tyser  * See file CREDITS for list of people who contributed to this
884ad6884SPeter Tyser  * project.
984ad6884SPeter Tyser  *
1084ad6884SPeter Tyser  * This program is free software; you can redistribute it and/or
1184ad6884SPeter Tyser  * modify it under the terms of the GNU General Public License as
1284ad6884SPeter Tyser  * published by the Free Software Foundation; either version 2 of
1384ad6884SPeter Tyser  * the License, or (at your option) any later version.
1484ad6884SPeter Tyser  *
1584ad6884SPeter Tyser  * This program is distributed in the hope that it will be useful,
1684ad6884SPeter Tyser  * but WITHOUT ANY WARRANTY; without even the implied warranty of
1784ad6884SPeter Tyser  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1884ad6884SPeter Tyser  * GNU General Public License for more details.
1984ad6884SPeter Tyser  *
2084ad6884SPeter Tyser  * You should have received a copy of the GNU General Public License
2184ad6884SPeter Tyser  * along with this program; if not, write to the Free Software
2284ad6884SPeter Tyser  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
2384ad6884SPeter Tyser  * MA 02111-1307 USA
2484ad6884SPeter Tyser  */
2584ad6884SPeter Tyser 
2684ad6884SPeter Tyser #include <common.h>
2786271115SStefano Babic #include <asm/arch/imx-regs.h>
2886271115SStefano Babic #include <asm/arch/clock.h>
2984ad6884SPeter Tyser 
3084ad6884SPeter Tyser #ifdef CONFIG_SYS_MX31_UART1
3184ad6884SPeter Tyser void mx31_uart1_hw_init(void)
3284ad6884SPeter Tyser {
3384ad6884SPeter Tyser 	/* setup pins for UART1 */
3484ad6884SPeter Tyser 	mx31_gpio_mux(MUX_RXD1__UART1_RXD_MUX);
3584ad6884SPeter Tyser 	mx31_gpio_mux(MUX_TXD1__UART1_TXD_MUX);
3684ad6884SPeter Tyser 	mx31_gpio_mux(MUX_RTS1__UART1_RTS_B);
3784ad6884SPeter Tyser 	mx31_gpio_mux(MUX_CTS1__UART1_CTS_B);
3884ad6884SPeter Tyser }
3984ad6884SPeter Tyser #endif
4084ad6884SPeter Tyser 
41*d121d201SHelmut Raiger #ifdef CONFIG_SYS_MX31_UART2
42*d121d201SHelmut Raiger void mx31_uart2_hw_init(void)
43*d121d201SHelmut Raiger {
44*d121d201SHelmut Raiger 	/* setup pins for UART2 */
45*d121d201SHelmut Raiger 	mx31_gpio_mux(MUX_RXD2__UART2_RXD_MUX);
46*d121d201SHelmut Raiger 	mx31_gpio_mux(MUX_TXD2__UART2_TXD_MUX);
47*d121d201SHelmut Raiger 	mx31_gpio_mux(MUX_RTS2__UART2_RTS_B);
48*d121d201SHelmut Raiger 	mx31_gpio_mux(MUX_CTS2__UART2_CTS_B);
49*d121d201SHelmut Raiger }
50*d121d201SHelmut Raiger #endif
51*d121d201SHelmut Raiger 
5284ad6884SPeter Tyser #ifdef CONFIG_MXC_SPI
53*d121d201SHelmut Raiger /*
54*d121d201SHelmut Raiger  * Note: putting several spi setups here makes no sense as they may differ
55*d121d201SHelmut Raiger  * at board level (physical pin SS0 of CSPI2 may aswell be used as SS0 of CSPI3)
56*d121d201SHelmut Raiger  */
5784ad6884SPeter Tyser void mx31_spi2_hw_init(void)
5884ad6884SPeter Tyser {
5984ad6884SPeter Tyser 	/* SPI2 */
6084ad6884SPeter Tyser 	mx31_gpio_mux(MUX_CSPI2_SS2__CSPI2_SS2_B);
6184ad6884SPeter Tyser 	mx31_gpio_mux(MUX_CSPI2_SCLK__CSPI2_CLK);
6284ad6884SPeter Tyser 	mx31_gpio_mux(MUX_CSPI2_SPI_RDY__CSPI2_DATAREADY_B);
6384ad6884SPeter Tyser 	mx31_gpio_mux(MUX_CSPI2_MOSI__CSPI2_MOSI);
6484ad6884SPeter Tyser 	mx31_gpio_mux(MUX_CSPI2_MISO__CSPI2_MISO);
6584ad6884SPeter Tyser 	mx31_gpio_mux(MUX_CSPI2_SS0__CSPI2_SS0_B);
6684ad6884SPeter Tyser 	mx31_gpio_mux(MUX_CSPI2_SS1__CSPI2_SS1_B);
6784ad6884SPeter Tyser 
6884ad6884SPeter Tyser 	/* start SPI2 clock */
6984ad6884SPeter Tyser 	__REG(CCM_CGR2) = __REG(CCM_CGR2) | (3 << 4);
7084ad6884SPeter Tyser }
7184ad6884SPeter Tyser #endif
72