arm: da830: moved pinmux configurations to the arch tree

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>
Acked-by: Christian Riesch <christian.riesch@omicron.at>
master
Vishwanathrao Badarkhe, Manish 12 years ago committed by Tom Rini
parent cf32b53b97
commit 68cd4a4c9f
  1. 1
      arch/arm/cpu/arm926ejs/davinci/Makefile
  2. 151
      arch/arm/cpu/arm926ejs/davinci/da830_pinmux.c
  3. 15
      arch/arm/include/asm/arch-davinci/pinmux_defs.h
  4. 145
      board/davinci/da8xxevm/da830evm.c
  5. 1
      include/configs/da830evm.h

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

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

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

@ -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
};

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

Loading…
Cancel
Save