Patchwork [U-Boot,U-BOOT] arm: da830: moved pinmux configurations to the arch tree

login
register
mail settings
Submitter Vishwanathrao Badarkhe, Manish
Date May 30, 2013, 7:55 a.m.
Message ID <1369900511-6682-1-git-send-email-manishv.b@ti.com>
Download mbox | patch
Permalink /patch/247469/
State Accepted
Delegated to: Tom Rini
Headers show

Comments

Vishwanathrao Badarkhe, Manish - May 30, 2013, 7:55 a.m.
Move pinmux configurations for the DA830 SoCs from board file
to the arch tree so that it can be used for all da830 based devices.
Also, avoids duplicate pinmuxing in case of NAND.

Signed-off-by: Vishwanathrao Badarkhe, Manish <manishv.b@ti.com>
---
Depends on:
http://u-boot.10912.n7.nabble.com/PATCH-da830-add-MMC-support-td155590.html

:100644 100644 dec7bfb... bba4671... M	arch/arm/cpu/arm926ejs/davinci/Makefile
:000000 100644 0000000... d0c964a... A	arch/arm/cpu/arm926ejs/davinci/da830_pinmux.c
:100644 100644 a851f1f... beaf0d6... M	arch/arm/include/asm/arch-davinci/pinmux_defs.h
:100644 100644 bf014ae... a4e9254... M	board/davinci/da8xxevm/da830evm.c
:100644 100644 28995a0... 00e92a6... M	include/configs/da830evm.h
 arch/arm/cpu/arm926ejs/davinci/Makefile         |    1 +
 arch/arm/cpu/arm926ejs/davinci/da830_pinmux.c   |  151 +++++++++++++++++++++++
 arch/arm/include/asm/arch-davinci/pinmux_defs.h |   15 ++-
 board/davinci/da8xxevm/da830evm.c               |  145 ++--------------------
 include/configs/da830evm.h                      |    1 +
 5 files changed, 181 insertions(+), 132 deletions(-)
Vishwanathrao Badarkhe, Manish - June 4, 2013, 4:56 a.m.
Hi Tom,

On Thu, May 30, 2013 at 13:25:11, Vishwanathrao Badarkhe, Manish wrote:
> Move pinmux configurations for the DA830 SoCs from board file
> to the arch tree so that it can be used for all da830 based devices.
> Also, avoids duplicate pinmuxing in case of NAND.
> 
> Signed-off-by: Vishwanathrao Badarkhe, Manish <manishv.b@ti.com>
> ---
> Depends on:
> http://u-boot.10912.n7.nabble.com/PATCH-da830-add-MMC-support-td155590.html
> 
> :100644 100644 dec7bfb... bba4671... M	arch/arm/cpu/arm926ejs/davinci/Makefile
> :000000 100644 0000000... d0c964a... A	arch/arm/cpu/arm926ejs/davinci/da830_pinmux.c
> :100644 100644 a851f1f... beaf0d6... M	arch/arm/include/asm/arch-davinci/pinmux_defs.h
> :100644 100644 bf014ae... a4e9254... M	board/davinci/da8xxevm/da830evm.c
> :100644 100644 28995a0... 00e92a6... M	include/configs/da830evm.h
>  arch/arm/cpu/arm926ejs/davinci/Makefile         |    1 +
>  arch/arm/cpu/arm926ejs/davinci/da830_pinmux.c   |  151 +++++++++++++++++++++++
>  arch/arm/include/asm/arch-davinci/pinmux_defs.h |   15 ++-
>  board/davinci/da8xxevm/da830evm.c               |  145 ++--------------------
>  include/configs/da830evm.h                      |    1 +
>  5 files changed, 181 insertions(+), 132 deletions(-)
> 

Please let me know, are there any review comments on this patch? 

> diff --git a/arch/arm/cpu/arm926ejs/davinci/Makefile b/arch/arm/cpu/arm926ejs/davinci/Makefile
> index dec7bfb..bba4671 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 0000000..d0c964a
> --- /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 a851f1f..beaf0d6 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 bf014ae..a4e9254 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 28995a0..00e92a6 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
> -- 
> 1.7.4.1
> 
> 


Regards, 
Manish
Tom Rini - June 5, 2013, 1:17 p.m.
On Thu, May 30, 2013 at 01:25:11PM +0530, Vishwanathrao Badarkhe, Manish wrote:

> Move pinmux configurations for the DA830 SoCs from board file
> to the arch tree so that it can be used for all da830 based devices.
> Also, avoids duplicate pinmuxing in case of NAND.
> 
> Signed-off-by: Vishwanathrao Badarkhe, Manish <manishv.b@ti.com>

Reviewed-by: Tom Rini <trini@ti.com>
Christian Riesch - June 5, 2013, 1:57 p.m.
On 2013-05-30 09:55, Vishwanathrao Badarkhe, Manish wrote:
> Move pinmux configurations for the DA830 SoCs from board file
> to the arch tree so that it can be used for all da830 based devices.
> Also, avoids duplicate pinmuxing in case of NAND.
>
> Signed-off-by: Vishwanathrao Badarkhe, Manish <manishv.b@ti.com>

Acked-by: Christian Riesch <christian.riesch@omicron.at>

Regards, Christian

Patch

diff --git a/arch/arm/cpu/arm926ejs/davinci/Makefile b/arch/arm/cpu/arm926ejs/davinci/Makefile
index dec7bfb..bba4671 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 0000000..d0c964a
--- /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 a851f1f..beaf0d6 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 bf014ae..a4e9254 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 28995a0..00e92a6 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