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

Vishwanathrao Badarkhe, Manish manishv.b at ti.com
Tue Jun 4 06:56:48 CEST 2013


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 at 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


More information about the U-Boot mailing list