diff options
| -rw-r--r-- | arch/arm/cpu/arm926ejs/davinci/Makefile | 1 | ||||
| -rw-r--r-- | arch/arm/cpu/arm926ejs/davinci/da830_pinmux.c | 151 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-davinci/pinmux_defs.h | 15 | ||||
| -rw-r--r-- | board/davinci/da8xxevm/da830evm.c | 145 | ||||
| -rw-r--r-- | include/configs/da830evm.h | 1 | 
5 files changed, 181 insertions, 132 deletions
| diff --git a/arch/arm/cpu/arm926ejs/davinci/Makefile b/arch/arm/cpu/arm926ejs/davinci/Makefile index dec7bfbfa..bba4671f7 100644 --- a/arch/arm/cpu/arm926ejs/davinci/Makefile +++ b/arch/arm/cpu/arm926ejs/davinci/Makefile @@ -33,6 +33,7 @@ COBJS-$(CONFIG_SOC_DM355)	+= dm355.o  COBJS-$(CONFIG_SOC_DM365)	+= dm365.o  COBJS-$(CONFIG_SOC_DM644X)	+= dm644x.o  COBJS-$(CONFIG_SOC_DM646X)	+= dm646x.o +COBJS-$(CONFIG_SOC_DA830)	+= da830_pinmux.o  COBJS-$(CONFIG_SOC_DA850)	+= da850_pinmux.o  COBJS-$(CONFIG_DRIVER_TI_EMAC)	+= lxt972.o dp83848.o et1011c.o ksz8873.o diff --git a/arch/arm/cpu/arm926ejs/davinci/da830_pinmux.c b/arch/arm/cpu/arm926ejs/davinci/da830_pinmux.c new file mode 100644 index 000000000..d0c964a34 --- /dev/null +++ b/arch/arm/cpu/arm926ejs/davinci/da830_pinmux.c @@ -0,0 +1,151 @@ +/* + * Pinmux configurations for the DA830 SoCs + * + * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <common.h> +#include <asm/arch/davinci_misc.h> +#include <asm/arch/hardware.h> +#include <asm/arch/pinmux_defs.h> + +/* SPI0 pin muxer settings */ +const struct pinmux_config spi0_pins_base[] = { +	{ pinmux(7), 1, 3 },  /* SPI0_SOMI */ +	{ pinmux(7), 1, 4 },  /* SPI0_SIMO */ +	{ pinmux(7), 1, 6 }   /* SPI0_CLK */ +}; + +const struct pinmux_config spi0_pins_scs0[] = { +	{ pinmux(7), 1, 7 }   /* SPI0_SCS[0] */ +}; + +const struct pinmux_config spi0_pins_ena[] = { +	{ pinmux(7), 1, 5 }   /* SPI0_ENA */ +}; + +/* NAND pin muxer settings */ +const struct pinmux_config emifa_pins_cs0[] = { +	{ pinmux(18), 1, 2 }   /* EMA_CS[0] */ +}; + +const struct pinmux_config emifa_pins_cs2[] = { +	{ pinmux(18), 1, 3 }   /* EMA_CS[2] */ +}; + +const struct pinmux_config emifa_pins_cs3[] = { +	{ pinmux(18), 1, 4 }   /* EMA_CS[3] */ +}; + +#ifdef CONFIG_USE_NAND +const struct pinmux_config emifa_pins[] = { +	{ pinmux(13), 1, 6 },  /* EMA_D[0] */ +	{ pinmux(13), 1, 7 },  /* EMA_D[1] */ +	{ pinmux(14), 1, 0 },  /* EMA_D[2] */ +	{ pinmux(14), 1, 1 },  /* EMA_D[3] */ +	{ pinmux(14), 1, 2 },  /* EMA_D[4] */ +	{ pinmux(14), 1, 3 },  /* EMA_D[5] */ +	{ pinmux(14), 1, 4 },  /* EMA_D[6] */ +	{ pinmux(14), 1, 5 },  /* EMA_D[7] */ +	{ pinmux(14), 1, 6 },  /* EMA_D[8] */ +	{ pinmux(14), 1, 7 },  /* EMA_D[9] */ +	{ pinmux(15), 1, 0 },  /* EMA_D[10] */ +	{ pinmux(15), 1, 1 },  /* EMA_D[11] */ +	{ pinmux(15), 1, 2 },  /* EMA_D[12] */ +	{ pinmux(15), 1, 3 },  /* EMA_D[13] */ +	{ pinmux(15), 1, 4 },  /* EMA_D[14] */ +	{ pinmux(15), 1, 5 },  /* EMA_D[15] */ +	{ pinmux(15), 1, 6 },  /* EMA_A[0] */ +	{ pinmux(15), 1, 7 },  /* EMA_A[1] */ +	{ pinmux(16), 1, 0 },  /* EMA_A[2] */ +	{ pinmux(16), 1, 1 },  /* EMA_A[3] */ +	{ pinmux(16), 1, 2 },  /* EMA_A[4] */ +	{ pinmux(16), 1, 3 },  /* EMA_A[5] */ +	{ pinmux(16), 1, 4 },  /* EMA_A[6] */ +	{ pinmux(16), 1, 5 },  /* EMA_A[7] */ +	{ pinmux(16), 1, 6 },  /* EMA_A[8] */ +	{ pinmux(16), 1, 7 },  /* EMA_A[9] */ +	{ pinmux(17), 1, 0 },  /* EMA_A[10] */ +	{ pinmux(17), 1, 1 },  /* EMA_A[11] */ +	{ pinmux(17), 1, 2 },  /* EMA_A[12] */ +	{ pinmux(17), 1, 3 },  /* EMA_BA[1] */ +	{ pinmux(17), 1, 4 },  /* EMA_BA[0] */ +	{ pinmux(17), 1, 5 },  /* EMA_CLK */ +	{ pinmux(17), 1, 6 },  /* EMA_SDCKE */ +	{ pinmux(17), 1, 7 },  /* EMA_CAS */ +	{ pinmux(18), 1, 0 },  /* EMA_CAS */ +	{ pinmux(18), 1, 1 },  /* EMA_WE */ +	{ pinmux(18), 1, 5 },  /* EMA_OE */ +	{ pinmux(18), 1, 6 },  /* EMA_WE_DQM[1] */ +	{ pinmux(18), 1, 7 },  /* EMA_WE_DQM[0] */ +	{ pinmux(10), 1, 0 }   /* Tristate */ +}; +#endif + +/* EMAC PHY interface pins */ +const struct pinmux_config emac_pins_rmii[] = { +	{ pinmux(10), 2, 1 },  /* RMII_TXD[0] */ +	{ pinmux(10), 2, 2 },  /* RMII_TXD[1] */ +	{ pinmux(10), 2, 3 },  /* RMII_TXEN */ +	{ pinmux(10), 2, 4 },  /* RMII_CRS_DV */ +	{ pinmux(10), 2, 5 },  /* RMII_RXD[0] */ +	{ pinmux(10), 2, 6 },  /* RMII_RXD[1] */ +	{ pinmux(10), 2, 7 }   /* RMII_RXER */ +}; + +const struct pinmux_config emac_pins_mdio[] = { +	{ pinmux(11), 2, 0 },  /* MDIO_CLK */ +	{ pinmux(11), 2, 1 }   /* MDIO_D */ +}; + +const struct pinmux_config emac_pins_rmii_clk_source[] = { +	{ pinmux(9), 0, 5 }    /* ref.clk from external source */ +}; + +/* UART2 pin muxer settings */ +const struct pinmux_config uart2_pins_txrx[] = { +	{ pinmux(8), 2, 7 },   /* UART2_RXD */ +	{ pinmux(9), 2, 0 }    /* UART2_TXD */ +}; + +/* I2C0 pin muxer settings */ +const struct pinmux_config i2c0_pins[] = { +	{ pinmux(8), 2, 3 },   /* I2C0_SDA */ +	{ pinmux(8), 2, 4 }    /* I2C0_SCL */ +}; + +/* USB0_DRVVBUS pin muxer settings */ +const struct pinmux_config usb_pins[] = { +	{ pinmux(9), 1, 1 }    /* USB0_DRVVBUS */ +}; + +#ifdef CONFIG_DAVINCI_MMC +/* MMC0 pin muxer settings */ +const struct pinmux_config mmc0_pins_8bit[] = { +	{ pinmux(15), 2, 7 },  /* MMCSD0_CLK */ +	{ pinmux(16), 2, 0 },  /* MMCSD0_CMD */ +	{ pinmux(13), 2, 6 },  /* MMCSD0_DAT_0 */ +	{ pinmux(13), 2, 7 },  /* MMCSD0_DAT_1 */ +	{ pinmux(14), 2, 0 },  /* MMCSD0_DAT_2 */ +	{ pinmux(14), 2, 1 },  /* MMCSD0_DAT_3 */ +	{ pinmux(14), 2, 2 },  /* MMCSD0_DAT_4 */ +	{ pinmux(14), 2, 3 },  /* MMCSD0_DAT_5 */ +	{ pinmux(14), 2, 4 },  /* MMCSD0_DAT_6 */ +	{ pinmux(14), 2, 5 }   /* MMCSD0_DAT_7 */ +	/* DA830 supports 8-bit mode */ +}; +#endif diff --git a/arch/arm/include/asm/arch-davinci/pinmux_defs.h b/arch/arm/include/asm/arch-davinci/pinmux_defs.h index a851f1f50..beaf0d601 100644 --- a/arch/arm/include/asm/arch-davinci/pinmux_defs.h +++ b/arch/arm/include/asm/arch-davinci/pinmux_defs.h @@ -22,8 +22,14 @@  #define __ASM_ARCH_PINMUX_DEFS_H  #include <asm/arch/davinci_misc.h> +#include <config.h> -/* SPI pin muxer settings */ +/* SPI0 pin muxer settings */ +extern const struct pinmux_config spi0_pins_base[3]; +extern const struct pinmux_config spi0_pins_scs0[1]; +extern const struct pinmux_config spi0_pins_ena[1]; + +/* SPI1 pin muxer settings */  extern const struct pinmux_config spi1_pins_base[3];  extern const struct pinmux_config spi1_pins_scs0[1]; @@ -35,6 +41,7 @@ extern const struct pinmux_config uart2_pins_rtscts[2];  /* EMAC pin muxer settings*/  extern const struct pinmux_config emac_pins_rmii[7]; +extern const struct pinmux_config emac_pins_rmii_clk_source[1];  extern const struct pinmux_config emac_pins_mii[15];  extern const struct pinmux_config emac_pins_mdio[2]; @@ -43,13 +50,19 @@ extern const struct pinmux_config i2c0_pins[2];  extern const struct pinmux_config i2c1_pins[2];  /* EMIFA pin muxer settings */ +extern const struct pinmux_config emifa_pins[40]; +extern const struct pinmux_config emifa_pins_cs0[1];  extern const struct pinmux_config emifa_pins_cs2[1];  extern const struct pinmux_config emifa_pins_cs3[1];  extern const struct pinmux_config emifa_pins_cs4[1];  extern const struct pinmux_config emifa_pins_nand[12];  extern const struct pinmux_config emifa_pins_nor[43]; +/* USB pin mux setting */ +extern const struct pinmux_config usb_pins[1]; +  /* MMC pin muxer settings */ +extern const struct pinmux_config mmc0_pins_8bit[10];  extern const struct pinmux_config mmc0_pins[6];  #endif diff --git a/board/davinci/da8xxevm/da830evm.c b/board/davinci/da8xxevm/da830evm.c index bf014aefb..a4e925415 100644 --- a/board/davinci/da8xxevm/da830evm.c +++ b/board/davinci/da8xxevm/da830evm.c @@ -39,6 +39,7 @@  #include <asm/arch/hardware.h>  #include <asm/arch/emif_defs.h>  #include <asm/arch/emac_defs.h> +#include <asm/arch/pinmux_defs.h>  #include <asm/io.h>  #include <nand.h>  #include <asm/arch/nand_defs.h> @@ -51,148 +52,30 @@  DECLARE_GLOBAL_DATA_PTR; -/* SPI0 pin muxer settings */ -static const struct pinmux_config spi0_pins[] = { -	{ pinmux(7), 1, 3 }, -	{ pinmux(7), 1, 4 }, -	{ pinmux(7), 1, 5 }, -	{ pinmux(7), 1, 6 }, -	{ pinmux(7), 1, 7 } -}; - -/* EMIF-A bus pins for 8-bit NAND support on CS3 */ -static const struct pinmux_config emifa_nand_pins[] = { -	{ pinmux(13), 1, 6 }, -	{ pinmux(13), 1, 7 }, -	{ pinmux(14), 1, 0 }, -	{ pinmux(14), 1, 1 }, -	{ pinmux(14), 1, 2 }, -	{ pinmux(14), 1, 3 }, -	{ pinmux(14), 1, 4 }, -	{ pinmux(14), 1, 5 }, -	{ pinmux(15), 1, 7 }, -	{ pinmux(16), 1, 0 }, -	{ pinmux(18), 1, 1 }, -	{ pinmux(18), 1, 4 }, -	{ pinmux(18), 1, 5 }, -}; - -/* EMAC PHY interface pins */ -static const struct pinmux_config emac_pins[] = { -	{ pinmux(9), 0, 5 }, -	{ pinmux(10), 2, 1 }, -	{ pinmux(10), 2, 2 }, -	{ pinmux(10), 2, 3 }, -	{ pinmux(10), 2, 4 }, -	{ pinmux(10), 2, 5 }, -	{ pinmux(10), 2, 6 }, -	{ pinmux(10), 2, 7 }, -	{ pinmux(11), 2, 0 }, -	{ pinmux(11), 2, 1 }, -}; - -/* UART pin muxer settings */ -static const struct pinmux_config uart_pins[] = { -	{ pinmux(8), 2, 7 }, -	{ pinmux(9), 2, 0 } -}; - -/* I2C pin muxer settings */ -static const struct pinmux_config i2c_pins[] = { -	{ pinmux(8), 2, 3 }, -	{ pinmux(8), 2, 4 } -}; - -#ifdef CONFIG_USE_NAND -/* NAND pin muxer settings */ -const struct pinmux_config aemif_pins[] = { -	{ pinmux(13), 1, 6 }, -	{ pinmux(13), 1, 7 }, -	{ pinmux(14), 1, 0 }, -	{ pinmux(14), 1, 1 }, -	{ pinmux(14), 1, 2 }, -	{ pinmux(14), 1, 3 }, -	{ pinmux(14), 1, 4 }, -	{ pinmux(14), 1, 5 }, -	{ pinmux(14), 1, 6 }, -	{ pinmux(14), 1, 7 }, -	{ pinmux(15), 1, 0 }, -	{ pinmux(15), 1, 1 }, -	{ pinmux(15), 1, 2 }, -	{ pinmux(15), 1, 3 }, -	{ pinmux(15), 1, 4 }, -	{ pinmux(15), 1, 5 }, -	{ pinmux(15), 1, 6 }, -	{ pinmux(15), 1, 7 }, -	{ pinmux(16), 1, 0 }, -	{ pinmux(16), 1, 1 }, -	{ pinmux(16), 1, 2 }, -	{ pinmux(16), 1, 3 }, -	{ pinmux(16), 1, 4 }, -	{ pinmux(16), 1, 5 }, -	{ pinmux(16), 1, 6 }, -	{ pinmux(16), 1, 7 }, -	{ pinmux(17), 1, 0 }, -	{ pinmux(17), 1, 1 }, -	{ pinmux(17), 1, 2 }, -	{ pinmux(17), 1, 3 }, -	{ pinmux(17), 1, 4 }, -	{ pinmux(17), 1, 5 }, -	{ pinmux(17), 1, 6 }, -	{ pinmux(17), 1, 7 }, -	{ pinmux(18), 1, 0 }, -	{ pinmux(18), 1, 1 }, -	{ pinmux(18), 1, 2 }, -	{ pinmux(18), 1, 3 }, -	{ pinmux(18), 1, 4 }, -	{ pinmux(18), 1, 5 }, -	{ pinmux(18), 1, 6 }, -	{ pinmux(18), 1, 7 }, -	{ pinmux(10), 1, 0 } -}; -#endif - - -/* USB0_DRVVBUS pin muxer settings */ -static const struct pinmux_config usb_pins[] = { -	{ pinmux(9), 1, 1 } -}; - -#ifdef CONFIG_DAVINCI_MMC -/* MMC0 pin muxer settings */ -const struct pinmux_config mmc0_pins[] = { -	{ pinmux(15), 2, 7 },	/* MMCSD0_CLK */ -	{ pinmux(16), 2, 0 },	/* MMCSD0_CMD */ -	{ pinmux(13), 2, 6 },	/* MMCSD0_DAT_0 */ -	{ pinmux(13), 2, 7 },	/* MMCSD0_DAT_1 */ -	{ pinmux(14), 2, 0 },	/* MMCSD0_DAT_2 */ -	{ pinmux(14), 2, 1 },	/* MMCSD0_DAT_3 */ -	{ pinmux(14), 2, 2 },	/* MMCSD0_DAT_4 */ -	{ pinmux(14), 2, 3 },	/* MMCSD0_DAT_5 */ -	{ pinmux(14), 2, 4 },	/* MMCSD0_DAT_6 */ -	{ pinmux(14), 2, 5 },	/* MMCSD0_DAT_7 */ -	/* DA830 supports 8-bit mode */ -}; -#endif -  static const struct pinmux_resource pinmuxes[] = {  #ifdef CONFIG_SPI_FLASH -	PINMUX_ITEM(spi0_pins), +	PINMUX_ITEM(spi0_pins_base), +	PINMUX_ITEM(spi0_pins_scs0), +	PINMUX_ITEM(spi0_pins_ena),  #endif -	PINMUX_ITEM(uart_pins), -	PINMUX_ITEM(i2c_pins), +	PINMUX_ITEM(uart2_pins_txrx), +	PINMUX_ITEM(i2c0_pins),  #ifdef CONFIG_USB_DA8XX  	PINMUX_ITEM(usb_pins),  #endif  #ifdef CONFIG_USE_NAND -	PINMUX_ITEM(emifa_nand_pins), -	PINMUX_ITEM(aemif_pins), +	PINMUX_ITEM(emifa_pins), +	PINMUX_ITEM(emifa_pins_cs0), +	PINMUX_ITEM(emifa_pins_cs2), +	PINMUX_ITEM(emifa_pins_cs3),  #endif  #if defined(CONFIG_DRIVER_TI_EMAC) -	PINMUX_ITEM(emac_pins), +	PINMUX_ITEM(emac_pins_rmii), +	PINMUX_ITEM(emac_pins_mdio), +	PINMUX_ITEM(emac_pins_rmii_clk_source),  #endif  #ifdef CONFIG_DAVINCI_MMC -	PINMUX_ITEM(mmc0_pins), +	PINMUX_ITEM(mmc0_pins_8bit)  #endif  }; diff --git a/include/configs/da830evm.h b/include/configs/da830evm.h index 28995a00e..00e92a685 100644 --- a/include/configs/da830evm.h +++ b/include/configs/da830evm.h @@ -36,6 +36,7 @@  #define CONFIG_MACH_DAVINCI_DA830_EVM  #define CONFIG_ARM926EJS		/* arm926ejs CPU core */  #define CONFIG_SOC_DA8XX		/* TI DA8xx SoC */ +#define CONFIG_SOC_DA830		/* TI DA830 SoC */  #define CONFIG_SYS_CLK_FREQ		clk_get(DAVINCI_ARM_CLKID)  #define CONFIG_SYS_OSCIN_FREQ		24000000  #define CONFIG_SYS_TIMERBASE		DAVINCI_TIMER0_BASE |