[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