Skip to contentSkip to conversation

Added SPL support

PATCH Superseded Chandan Nath 5 participants 13 messages Jan 3, 2012

Subsystems (3)

v3 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

v3 cover Added SPL support

This patch series is submitted to add support for MMC/SD along with SPL support. Also, fixed incorrect register offset of ddr and timer registers.

The patches have been compile tested and run on AM335X EVM.

The patches depends on previous patch series which was submitted for supporting AM33xx platform.

The patches are applies on uboot master branch.

Changes since v2:
- Added missing omap.h file in "Add SPL support for AM335X EVM" patch

Changes since v1:
- Removed unwanted code from omap_hsmmc.c file
- Changed CONFIG_AM335X to CONFIG_AM33XX
- Rebased to master branch
- Replaced am33xx lowleve_init.S with omap-common lowlevel_init.S in order to use common code for omap_bootmode.

Chandan Nath (3):
ARM:AM33XX: Fix ddr and timer register offset
ARM:AM33XX: Add mmc/sd support
ARM:AM33XX: Add SPL support for AM335X EVM

 Makefile                                        |    2 +-
 arch/arm/cpu/armv7/am33xx/Makefile              |    2 -
 arch/arm/cpu/armv7/am33xx/board.c               |   80 ++++++++++-
 arch/arm/cpu/armv7/am33xx/clock.c               |    8 +
 arch/arm/cpu/armv7/am33xx/config.mk             |   18 +++
 arch/arm/cpu/armv7/am33xx/emif4.c               |    2 +-
 arch/arm/cpu/armv7/am33xx/lowlevel_init.S       |   72 ----------
 arch/arm/cpu/armv7/omap-common/Makefile         |    3 +
 arch/arm/include/asm/arch-am33xx/common_def.h   |   22 +++
 arch/arm/include/asm/arch-am33xx/cpu.h          |   44 +++---
 arch/arm/include/asm/arch-am33xx/ddr_defs.h     |    6 +-
 arch/arm/include/asm/arch-am33xx/mmc_host_def.h |  164 +++++++++++++++++++++++
 arch/arm/include/asm/arch-am33xx/omap.h         |   59 ++++++++
 arch/arm/include/asm/arch-am33xx/sys_proto.h    |    1 +
 arch/arm/include/asm/omap_common.h              |    5 +
 board/ti/am335x/common_def.h                    |   24 ----
 board/ti/am335x/evm.c                           |    2 +-
 board/ti/am335x/mux.c                           |   22 +++-
 include/configs/am335x_evm.h                    |   61 +++++++--
 spl/Makefile                                    |   13 +-
 20 files changed, 457 insertions(+), 153 deletions(-)
 create mode 100644 arch/arm/cpu/armv7/am33xx/config.mk
 delete mode 100644 arch/arm/cpu/armv7/am33xx/lowlevel_init.S
 create mode 100644 arch/arm/include/asm/arch-am33xx/common_def.h
 create mode 100644 arch/arm/include/asm/arch-am33xx/mmc_host_def.h
 create mode 100644 arch/arm/include/asm/arch-am33xx/omap.h
 delete mode 100644 board/ti/am335x/common_def.h
#1 lore raw

PATCH v3 1/3 ARM:AM33XX: Fix ddr and timer register offset

This patch is added to update incorrect ddr, pll and timer register offset along with some additional cleanup like removing unused code. Also, generic CONFIG_AM33XX symbol is added for AM33XX platform.

---
Changes since v2:
- No change

Changes since v1:
- Changed CONFIG_AM335X to CONFIG_AM33XX
- Rebased to master branch

 Makefile                                    |    2 +-
 arch/arm/cpu/armv7/am33xx/board.c           |    8 ++--
 arch/arm/cpu/armv7/am33xx/clock.c           |    3 ++
 arch/arm/include/asm/arch-am33xx/cpu.h      |   44 ++++++++++++++-------------
 arch/arm/include/asm/arch-am33xx/ddr_defs.h |    6 ++--
 include/configs/am335x_evm.h                |   13 ++-----
 6 files changed, 38 insertions(+), 38 deletions(-)
Makefile +1 -1
index 0438f1e..1f90afa 100644
@@ -294,7 +294,7 @@ LIBS += lib/libfdt/libfdt.o
 LIBS += api/libapi.o
 LIBS += post/libpost.o
 
-ifneq ($(CONFIG_AM335X)$(CONFIG_OMAP34XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX),)
+ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP34XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX),)
 LIBS += $(CPUDIR)/omap-common/libomap-common.o
 endif
 
arch/arm/cpu/armv7/am33xx/board.c +4 -4
index 2d6d359..78db3a5 100644
@@ -26,7 +26,7 @@
 DECLARE_GLOBAL_DATA_PTR;
 
 struct wd_timer *wdtimer = (struct wd_timer *)WDT_BASE;
-struct timer_reg *timerreg = (struct timer_reg *)DM_TIMER2_BASE;
+struct gptimer *timer_base = (struct gptimer *)CONFIG_SYS_TIMERBASE;
 
 /*
  * early system init of muxing and clocks.
@@ -55,12 +55,12 @@ void s_init(u32 in_ddr)
 void init_timer(void)
 {
 	/* Reset the Timer */
-	writel(0x2, (&timerreg->tsicrreg));
+	writel(0x2, (&timer_base->tscir));
 
 	/* Wait until the reset is done */
-	while (readl(&timerreg->tiocpcfgreg) & 1)
+	while (readl(&timer_base->tiocp_cfg) & 1)
 		;
 
 	/* Start the Timer */
-	writel(0x1, (&timerreg->tclrreg));
+	writel(0x1, (&timer_base->tclr));
 }
arch/arm/cpu/armv7/am33xx/clock.c +3 -0
index 4ca6c45..7070e7d 100644
@@ -101,6 +101,9 @@ static void enable_per_clocks(void)
 	while (readl(&cmper->timer2clkctrl) != PRCM_MOD_EN)
 		;
 
+	/* Select the Master osc 24 MHZ as Timer2 clock source */
+	writel(0x1, &cmdpll->clktimer2clk);
+
 	/* UART0 */
 	writel(PRCM_MOD_EN, &cmwkup->wkup_uart0ctrl);
 	while (readl(&cmwkup->wkup_uart0ctrl) != PRCM_MOD_EN)
arch/arm/include/asm/arch-am33xx/cpu.h +23 -21

76 lines not on this page · raw message

arch/arm/include/asm/arch-am33xx/ddr_defs.h +3 -3
index 9638b4c..ba6b59b 100644
@@ -76,7 +76,7 @@ struct emif_regs {
 	unsigned int sdrmcsr;		/* offset 0x3C */
 	unsigned int res2[8];
 	unsigned int sdritr;		/* offset 0x60 */
-	unsigned int res3[20];
+	unsigned int res3[32];
 	unsigned int ddrphycr;		/* offset 0xE4 */
 	unsigned int ddrphycsr;		/* offset 0xE8 */
 	unsigned int ddrphycr2;		/* offset 0xEC */
@@ -161,10 +161,10 @@ struct ddr_regs {
 	unsigned int dt0wiratio1;	/* offset 0x0F4 */
 	unsigned int dt0giratio0;	/* offset 0x0FC */
 	unsigned int dt0giratio1;	/* offset 0x100 */
-	unsigned int resv6[2];
+	unsigned int resv6[1];
 	unsigned int dt0fwsratio0;	/* offset 0x108 */
 	unsigned int dt0fwsratio1;	/* offset 0x10C */
-	unsigned int resv7[5];
+	unsigned int resv7[4];
 	unsigned int dt0wrsratio0;	/* offset 0x120 */
 	unsigned int dt0wrsratio1;	/* offset 0x124 */
 	unsigned int resv8[3];
include/configs/am335x_evm.h +4 -9
index 26a3c96..c189031 100644
@@ -16,7 +16,7 @@
 #ifndef __CONFIG_AM335X_EVM_H
 #define __CONFIG_AM335X_EVM_H
 
-#define CONFIG_AM335X
+#define CONFIG_AM33XX
 #define CONFIG_CMD_MEMORY	/* for mtest */
 #undef CONFIG_GZIP
 #undef CONFIG_ZLIB
@@ -30,7 +30,7 @@
 #define CONFIG_AM335X_CONFIG_DDR
 #define CONFIG_ENV_SIZE			0x400
 #define CONFIG_SYS_MALLOC_LEN		(CONFIG_ENV_SIZE + (8 * 1024))
-#define CONFIG_SYS_PROMPT		"AM335X# "
+#define CONFIG_SYS_PROMPT		"U-Boot# "
 #define CONFIG_SYS_NO_FLASH
 #define MACH_TYPE_TIAM335EVM		3589	/* Until the next sync */
 #define CONFIG_MACH_TYPE		MACH_TYPE_TIAM335EVM
@@ -48,14 +48,12 @@
 
 /* Clock Defines */
 #define V_OSCK				24000000  /* Clock output from T2 */
-#define V_SCLK				(V_OSCK >> 1)
+#define V_SCLK				(V_OSCK)
 
-#define CONFIG_SYS_GBL_DATA_SIZE	128	/* size in bytes reserved for
-						   initial data */
 #define CONFIG_CMD_ECHO
 
 /* max number of command args */
-#define CONFIG_SYS_MAXARGS		32
+#define CONFIG_SYS_MAXARGS		16
 
 /* Console I/O Buffer Size */
 #define CONFIG_SYS_CBSIZE		512
@@ -75,7 +73,6 @@
 #define CONFIG_SYS_MEMTEST_END		(CONFIG_SYS_MEMTEST_START \
 					+ (8 * 1024 * 1024))
 
-#undef  CONFIG_SYS_CLKS_IN_HZ		/* everything, incl board info, in Hz */
 #define CONFIG_SYS_LOAD_ADDR		0x81000000 /* Default load address */
 #define CONFIG_SYS_HZ			1000 /* 1ms clock */
 
@@ -89,7 +86,6 @@
 #define CONFIG_SYS_INIT_SP_ADDR         (CONFIG_SYS_SDRAM_BASE + 0x1000 - \
 						GENERATED_GBL_DATA_SIZE)
  /* Platform/Board specific defs */
-#define CONFIG_SYS_CLK_FREQ		24000000
 #define CONFIG_SYS_TIMERBASE		0x48040000	/* Use Timer2 */
 #define CONFIG_SYS_PTV			2	/* Divisor: 2^(PTV+1) => 8 */
 #define CONFIG_SYS_HZ			1000
@@ -100,7 +96,6 @@
 #define CONFIG_SYS_NS16550_REG_SIZE	(-4)
 #define CONFIG_SYS_NS16550_CLK		(48000000)
 #define CONFIG_SYS_NS16550_COM1		0x44e09000	/* Base EVM has UART0 */
-#define CONFIG_SYS_NS16550_COM4		0x481A6000	/* UART3 on IA BOard */
 
 #define CONFIG_BAUDRATE		115200
 #define CONFIG_SYS_BAUDRATE_TABLE	{ 110, 300, 600, 1200, 2400, \
Signature · 1 line
1.7.1
#2 lore raw

PATCH v3 2/3 ARM:AM33XX: Add mmc/sd support

In reply to Chandan Nath

This patch add supports for mmc/sd driver on AM335X platform. PLL and pinmux configurations for mmc/sd are configured in this patch.

---
Changes since v2:
- No change

Changes since v1:
- Removed unwanted code from omap_hsmmc.c file
- Rebased to master branch

 arch/arm/cpu/armv7/am33xx/board.c               |    7 +
 arch/arm/cpu/armv7/am33xx/clock.c               |    5 +
 arch/arm/include/asm/arch-am33xx/mmc_host_def.h |  164 +++++++++++++++++++++++
 board/ti/am335x/mux.c                           |   20 +++
 include/configs/am335x_evm.h                    |    9 ++
 5 files changed, 205 insertions(+), 0 deletions(-)
 create mode 100644 arch/arm/include/asm/arch-am33xx/mmc_host_def.h
arch/arm/cpu/armv7/am33xx/board.c +7 -0
index 78db3a5..312643c 100644
@@ -64,3 +64,10 @@ void init_timer(void)
 	/* Start the Timer */
 	writel(0x1, (&timer_base->tclr));
 }
+
+#if defined(CONFIG_OMAP_HSMMC) && !defined(CONFIG_SPL_BUILD)
+int board_mmc_init(bd_t *bis)
+{
+	return omap_mmc_init(0);
+}
+#endif
arch/arm/cpu/armv7/am33xx/clock.c +5 -0
index 7070e7d..98cfd93 100644
@@ -108,6 +108,11 @@ static void enable_per_clocks(void)
 	writel(PRCM_MOD_EN, &cmwkup->wkup_uart0ctrl);
 	while (readl(&cmwkup->wkup_uart0ctrl) != PRCM_MOD_EN)
 		;
+
+	/* MMC0*/
+	writel(PRCM_MOD_EN, &cmper->mmc0clkctrl);
+	while (readl(&cmper->mmc0clkctrl) != PRCM_MOD_EN)
+		;
 }
 
 static void mpu_pll_config(void)
arch/arm/include/asm/arch-am33xx/mmc_host_def.h new file +164 -0

164 lines not on this page · raw message

board/ti/am335x/mux.c +20 -0
index 8f27409..df11752 100644
@@ -258,6 +258,20 @@ static struct module_pin_mux uart0_pin_mux[] = {
 	{-1},
 };
 
+#ifdef CONFIG_MMC
+static struct module_pin_mux mmc0_pin_mux[] = {
+	{OFFSET(mmc0_dat3), (MODE(0) | RXACTIVE | PULLUP_EN)},	/* MMC0_DAT3 */
+	{OFFSET(mmc0_dat2), (MODE(0) | RXACTIVE | PULLUP_EN)},	/* MMC0_DAT2 */
+	{OFFSET(mmc0_dat1), (MODE(0) | RXACTIVE | PULLUP_EN)},	/* MMC0_DAT1 */
+	{OFFSET(mmc0_dat0), (MODE(0) | RXACTIVE | PULLUP_EN)},	/* MMC0_DAT0 */
+	{OFFSET(mmc0_clk), (MODE(0) | RXACTIVE | PULLUP_EN)},	/* MMC0_CLK */
+	{OFFSET(mmc0_cmd), (MODE(0) | RXACTIVE | PULLUP_EN)},	/* MMC0_CMD */
+	{OFFSET(mcasp0_aclkr), (MODE(4) | RXACTIVE)},		/* MMC0_WP */
+	{OFFSET(spi0_cs1), (MODE(5) | RXACTIVE | PULLUP_EN)},	/* MMC0_CD */
+	{-1},
+};
+#endif
+
 /*
  * Configure the pin mux for the module
  */
@@ -276,3 +290,9 @@ void enable_uart0_pin_mux(void)
 {
 	configure_module_pin_mux(uart0_pin_mux);
 }
+
+
+void enable_mmc0_pin_mux(void)
+{
+	configure_module_pin_mux(mmc0_pin_mux);
+}
include/configs/am335x_evm.h +9 -0
index c189031..bd68e9a 100644
@@ -76,6 +76,15 @@
 #define CONFIG_SYS_LOAD_ADDR		0x81000000 /* Default load address */
 #define CONFIG_SYS_HZ			1000 /* 1ms clock */
 
+#define CONFIG_MMC
+#define CONFIG_AM335X_HSMMC_BASE	0x48060100
+#define CONFIG_GENERIC_MMC
+#define CONFIG_OMAP_HSMMC
+#define CONFIG_CMD_MMC
+#define CONFIG_DOS_PARTITION
+#define CONFIG_CMD_FAT
+#define CONFIG_CMD_EXT2
+
  /* Physical Memory Map */
 #define CONFIG_NR_DRAM_BANKS		1		/*  1 bank of DRAM */
 #define PHYS_DRAM_1			0x80000000	/* DRAM Bank #1 */
Signature · 1 line
1.7.1
#3 lore raw

PATCH v3 2/3 ARM:AM33XX: Add mmc/sd support

Hi Chandan, Tom,

Quoted 27 lines · Chandan Nath

This patch add supports for mmc/sd driver on AM335X platform. PLL and pinmux configurations for mmc/sd are configured in this patch.

---
Changes since v2:
- No change

Changes since v1:
- Removed unwanted code from omap_hsmmc.c file
- Rebased to master branch

 arch/arm/cpu/armv7/am33xx/board.c               |    7 +
 arch/arm/cpu/armv7/am33xx/clock.c               |    5 +
 arch/arm/include/asm/arch-am33xx/mmc_host_def.h |  164 +++++++++++++++++++++++
 board/ti/am335x/mux.c                           |   20 +++
 include/configs/am335x_evm.h                    |    9 ++
 5 files changed, 205 insertions(+), 0 deletions(-)
 create mode 100644 arch/arm/include/asm/arch-am33xx/mmc_host_def.h
arch/arm/cpu/armv7/am33xx/board.c +0 -0
index 78db3a5..312643c 100644

arch/arm/cpu/armv7/am33xx/board.c void init_timer(void) · line 72

Quoted 9 lines
arch/arm/cpu/armv7/am33xx/board.c +6 -0
@@ -64,3 +64,10 @@ void init_timer(void)
 	/* Start the Timer */
 	writel(0x1, (&timer_base->tclr));
 }
+
+#if defined(CONFIG_OMAP_HSMMC) && !defined(CONFIG_SPL_BUILD)
+int board_mmc_init(bd_t *bis)
+{
+	return omap_mmc_init(0);
+}

I would suggest to make this definition "weak", so it can be overridden if needed by the board code.

Quoted 70 lines
arch/arm/cpu/armv7/am33xx/board.c +1 -0
+#endif
arch/arm/cpu/armv7/am33xx/clock.c +5 -0
index 7070e7d..98cfd93 100644
@@ -108,6 +108,11 @@ static void enable_per_clocks(void)
 	writel(PRCM_MOD_EN, &cmwkup->wkup_uart0ctrl);
 	while (readl(&cmwkup->wkup_uart0ctrl) != PRCM_MOD_EN)
 		;
+
+	/* MMC0*/
+	writel(PRCM_MOD_EN, &cmper->mmc0clkctrl);
+	while (readl(&cmper->mmc0clkctrl) != PRCM_MOD_EN)
+		;
 }
 
 static void mpu_pll_config(void)
arch/arm/include/asm/arch-am33xx/mmc_host_def.h new file +47 -0
new file mode 100644
index 0000000..e56c018
@@ -0,0 +1,164 @@
+/*
+ * mmc_host_def.h
+ *
+ * Copyright (C) 2011 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 version 2.
+ *
+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
+ * kind, whether express or implied; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef MMC_HOST_DEF_H
+#define MMC_HOST_DEF_H
+
+/*
+ * OMAP HSMMC register definitions
+ */
+#define OMAP_HSMMC1_BASE		0x48060100
+#define OMAP_HSMMC2_BASE		0x481D8000
+#define OMAP_HSMMC3_BASE		0x47C24000
+
+typedef struct hsmmc {
+	unsigned char res1[0x10];
+	unsigned int sysconfig;		/* 0x10 */
+	unsigned int sysstatus;		/* 0x14 */
+	unsigned char res2[0x14];
+	unsigned int con;		/* 0x2C */
+	unsigned char res3[0xD4];
+	unsigned int blk;		/* 0x104 */
+	unsigned int arg;		/* 0x108 */
+	unsigned int cmd;		/* 0x10C */
+	unsigned int rsp10;		/* 0x110 */
+	unsigned int rsp32;		/* 0x114 */
+	unsigned int rsp54;		/* 0x118 */
+	unsigned int rsp76;		/* 0x11C */
+	unsigned int data;		/* 0x120 */
+	unsigned int pstate;		/* 0x124 */
+	unsigned int hctl;		/* 0x128 */
+	unsigned int sysctl;		/* 0x12C */
+	unsigned int stat;		/* 0x130 */
+	unsigned int ie;		/* 0x134 */
+	unsigned char res4[0x8];
+	unsigned int capa;		/* 0x140 */

arch/arm/include/asm/arch-am33xx/mmc_host_def.h line 57

Quoted 10 lines
arch/arm/include/asm/arch-am33xx/mmc_host_def.h new file +10 -0
+} hsmmc_t;
+
+/*
+ * OMAP HS MMC Bit definitions
+ */
+#define MMC_SOFTRESET			(0x1 << 1)
+#define RESETDONE			(0x1 << 0)
+#define NOOPENDRAIN			(0x0 << 0)
+#define OPENDRAIN			(0x1 << 0)
+#define OD				(0x1 << 0)

Most of the names here are too generic,
but the above one is just...
OD - what does it stand for? Open Drain?
Then why do you have two of them (with the same value)?

Quoted 71 lines
arch/arm/include/asm/arch-am33xx/mmc_host_def.h new file +71 -0
+#define INIT_NOINIT			(0x0 << 1)
+#define INIT_INITSTREAM			(0x1 << 1)
+#define HR_NOHOSTRESP			(0x0 << 2)
+#define STR_BLOCK			(0x0 << 3)
+#define MODE_FUNC			(0x0 << 4)
+#define DW8_1_4BITMODE			(0x0 << 5)
+#define MIT_CTO				(0x0 << 6)
+#define CDP_ACTIVEHIGH			(0x0 << 7)
+#define WPP_ACTIVEHIGH			(0x0 << 8)
+#define RESERVED_MASK			(0x3 << 9)
+#define CTPL_MMC_SD			(0x0 << 11)
+#define BLEN_512BYTESLEN		(0x200 << 0)
+#define NBLK_STPCNT			(0x0 << 16)
+#define DE_DISABLE			(0x0 << 0)
+#define BCE_DISABLE			(0x0 << 1)
+#define BCE_ENABLE			(0x1 << 1)
+#define ACEN_DISABLE			(0x0 << 2)
+#define DDIR_OFFSET			(4)
+#define DDIR_MASK			(0x1 << 4)
+#define DDIR_WRITE			(0x0 << 4)
+#define DDIR_READ			(0x1 << 4)
+#define MSBS_SGLEBLK			(0x0 << 5)
+#define MSBS_MULTIBLK			(0x1 << 5)
+#define RSP_TYPE_OFFSET			(16)
+#define RSP_TYPE_MASK			(0x3 << 16)
+#define RSP_TYPE_NORSP			(0x0 << 16)
+#define RSP_TYPE_LGHT136		(0x1 << 16)
+#define RSP_TYPE_LGHT48			(0x2 << 16)
+#define RSP_TYPE_LGHT48B		(0x3 << 16)
+#define CCCE_NOCHECK			(0x0 << 19)
+#define CCCE_CHECK			(0x1 << 19)
+#define CICE_NOCHECK			(0x0 << 20)
+#define CICE_CHECK			(0x1 << 20)
+#define DP_OFFSET			(21)
+#define DP_MASK				(0x1 << 21)
+#define DP_NO_DATA			(0x0 << 21)
+#define DP_DATA				(0x1 << 21)
+#define CMD_TYPE_NORMAL			(0x0 << 22)
+#define INDEX_OFFSET			(24)
+#define INDEX_MASK			(0x3f << 24)
+#define INDEX(i)			(i << 24)
+#define DATI_MASK			(0x1 << 1)
+#define DATI_CMDDIS			(0x1 << 1)
+#define DTW_1_BITMODE			(0x0 << 1)
+#define DTW_4_BITMODE			(0x1 << 1)
+#define DTW_8_BITMODE                   (0x1 << 5) /* CON[DW8]*/
+#define SDBP_PWROFF			(0x0 << 8)
+#define SDBP_PWRON			(0x1 << 8)
+#define SDVS_1V8			(0x5 << 9)
+#define SDVS_3V0			(0x6 << 9)
+#define ICE_MASK			(0x1 << 0)
+#define ICE_STOP			(0x0 << 0)
+#define ICS_MASK			(0x1 << 1)
+#define ICS_NOTREADY			(0x0 << 1)
+#define ICE_OSCILLATE			(0x1 << 0)
+#define CEN_MASK			(0x1 << 2)
+#define CEN_DISABLE			(0x0 << 2)
+#define CEN_ENABLE			(0x1 << 2)
+#define CLKD_OFFSET			(6)
+#define CLKD_MASK			(0x3FF << 6)
+#define DTO_MASK			(0xF << 16)
+#define DTO_15THDTO			(0xE << 16)
+#define SOFTRESETALL			(0x1 << 24)
+#define CC_MASK				(0x1 << 0)
+#define TC_MASK				(0x1 << 1)
+#define BWR_MASK			(0x1 << 4)
+#define BRR_MASK			(0x1 << 5)
+#define ERRI_MASK			(0x1 << 15)
+#define IE_CC				(0x01 << 0)
+#define IE_TC				(0x01 << 1)
+#define IE_BWR				(0x01 << 4)

arch/arm/include/asm/arch-am33xx/mmc_host_def.h line 138

Quoted 10 lines
arch/arm/include/asm/arch-am33xx/mmc_host_def.h new file +10 -0
+#define IE_BRR				(0x01 << 5)
+#define IE_CTO				(0x01 << 16)
+#define IE_CCRC				(0x01 << 17)
+#define IE_CEB				(0x01 << 18)
+#define IE_CIE				(0x01 << 19)
+#define IE_DTO				(0x01 << 20)
+#define IE_DCRC				(0x01 << 21)
+#define IE_DEB				(0x01 << 22)
+#define IE_CERR				(0x01 << 28)
+#define IE_BADA				(0x01 << 29)

I would@least separate all the above crappy defines into register related sets and give a prefix which will make it clear what register is this bit related to...

Also, why all this defines are in the header file? Are they used in the driver?

Ahh, I see... most of it is just a copy/paste of the same data in:
arch/arm/include/asm/arch-omap3/mmc_host_def.h

So, may be just create a common file in a common location, instead of copying? And use it with all supported platforms?

(Also, would be nice to clean it up, but it is another story)

Quoted 6 lines
arch/arm/include/asm/arch-am33xx/mmc_host_def.h new file +6 -0
+
+#define VS30_3V0SUP			(1 << 25)
+#define VS18_1V8SUP			(1 << 26)
+
+/* Driver definitions */
+#define MMCSD_SECTOR_SIZE		512

arch/arm/include/asm/arch-am33xx/mmc_host_def.h line 154

Quoted 10 lines
arch/arm/include/asm/arch-am33xx/mmc_host_def.h new file +10 -0
+#define MMC_CARD			0
+#define SD_CARD				1
+#define BYTE_MODE			0
+#define SECTOR_MODE			1
+#define CLK_INITSEQ			0
+#define CLK_400KHZ			1
+#define CLK_MISC			2
+
+#define RSP_TYPE_NONE	(RSP_TYPE_NORSP   | CCCE_NOCHECK | CICE_NOCHECK)
+#define MMC_CMD0	(INDEX(0)  | RSP_TYPE_NONE | DP_NO_DATA | DDIR_WRITE)

Multiple spaces inside the mask?
If you want to align, align with tabs.

Quoted 36 lines
arch/arm/include/asm/arch-am33xx/mmc_host_def.h new file +10 -0
+
+/* Clock Configurations and Macros */
+#define MMC_CLOCK_REFERENCE	96 /* MHz */
+
+#define mmc_reg_out(addr, mask, val)\
+	writel((readl(addr) & (~(mask))) | ((val) & (mask)), (addr))
+
+int omap_mmc_init(int dev_index);
+
+#endif /* MMC_HOST_DEF_H */
board/ti/am335x/mux.c +14 -0
index 8f27409..df11752 100644
@@ -258,6 +258,20 @@ static struct module_pin_mux uart0_pin_mux[] = {
 	{-1},
 };
 
+#ifdef CONFIG_MMC
+static struct module_pin_mux mmc0_pin_mux[] = {
+	{OFFSET(mmc0_dat3), (MODE(0) | RXACTIVE | PULLUP_EN)},	/* MMC0_DAT3 */
+	{OFFSET(mmc0_dat2), (MODE(0) | RXACTIVE | PULLUP_EN)},	/* MMC0_DAT2 */
+	{OFFSET(mmc0_dat1), (MODE(0) | RXACTIVE | PULLUP_EN)},	/* MMC0_DAT1 */
+	{OFFSET(mmc0_dat0), (MODE(0) | RXACTIVE | PULLUP_EN)},	/* MMC0_DAT0 */
+	{OFFSET(mmc0_clk), (MODE(0) | RXACTIVE | PULLUP_EN)},	/* MMC0_CLK */
+	{OFFSET(mmc0_cmd), (MODE(0) | RXACTIVE | PULLUP_EN)},	/* MMC0_CMD */
+	{OFFSET(mcasp0_aclkr), (MODE(4) | RXACTIVE)},		/* MMC0_WP */
+	{OFFSET(spi0_cs1), (MODE(5) | RXACTIVE | PULLUP_EN)},	/* MMC0_CD */
+	{-1},
+};
+#endif
+
 /*
  * Configure the pin mux for the module
  */

board/ti/am335x/mux.c void enable_uart0_pin_mux(void) · line 294

Quoted 5 lines
board/ti/am335x/mux.c +2 -0
@@ -276,3 +290,9 @@ void enable_uart0_pin_mux(void)
 {
 	configure_module_pin_mux(uart0_pin_mux);
 }
+
+

Why two empty lines?

Quoted 24 lines
board/ti/am335x/mux.c +4 -0
+void enable_mmc0_pin_mux(void)
+{
+	configure_module_pin_mux(mmc0_pin_mux);
+}
include/configs/am335x_evm.h +9 -0
index c189031..bd68e9a 100644
@@ -76,6 +76,15 @@
 #define CONFIG_SYS_LOAD_ADDR		0x81000000 /* Default load address */
 #define CONFIG_SYS_HZ			1000 /* 1ms clock */
 
+#define CONFIG_MMC
+#define CONFIG_AM335X_HSMMC_BASE	0x48060100
+#define CONFIG_GENERIC_MMC
+#define CONFIG_OMAP_HSMMC
+#define CONFIG_CMD_MMC
+#define CONFIG_DOS_PARTITION
+#define CONFIG_CMD_FAT
+#define CONFIG_CMD_EXT2
+
  /* Physical Memory Map */
 #define CONFIG_NR_DRAM_BANKS		1		/*  1 bank of DRAM */
 #define PHYS_DRAM_1			0x80000000	/* DRAM Bank #1 */
Signature · 2 lines
Regards,
Igor.
#4 lore raw

PATCH v3 2/3 ARM:AM33XX: Add mmc/sd support

Quoted 9 lines · Igor Grinberg

Hi Chandan, Tom,

Quoted 6 lines · Chandan Nath

This patch add supports for mmc/sd driver on AM335X platform. PLL and pinmux configurations for mmc/sd are configured in this patch.

[snip]

Quoted 5 lines
Quoted 5 lines
arch/arm/include/asm/arch-am33xx/mmc_host_def.h new file +0 -0
new file mode 100644
index 0000000..e56c018

[snip]

Quoted 2 lines

Ahh, I see... most of it is just a copy/paste of the same data in:
arch/arm/include/asm/arch-omap3/mmc_host_def.h

And arch-omap4 and arch-omap5, except for the base locations. I've talked a little with Wolfgang about this and on my cleanup list is making then posting something to give us <plat/> for includes (name like the kernel, extra deep directory structure to create it, hopefully not).

Signature · 1 line
Tom
#5 lore raw

PATCH v3 2/3 ARM:AM33XX: Add mmc/sd support

Hi Tom,

Quoted 17 lines · Tom Rini
Quoted 9 lines · Igor Grinberg

Hi Chandan, Tom,

Quoted 6 lines · Chandan Nath

This patch add supports for mmc/sd driver on AM335X platform. PLL and pinmux configurations for mmc/sd are configured in this patch.

[snip]

Quoted 5 lines
Quoted 5 lines
arch/arm/include/asm/arch-am33xx/mmc_host_def.h new file +0 -0
new file mode 100644
index 0000000..e56c018

[snip]

Quoted 7 lines
Quoted 2 lines

Ahh, I see... most of it is just a copy/paste of the same data in:
arch/arm/include/asm/arch-omap3/mmc_host_def.h

And arch-omap4 and arch-omap5, except for the base locations. I've talked a little with Wolfgang about this and on my cleanup list is making then posting something to give us <plat/> for includes (name like the kernel, extra deep directory structure to create it, hopefully not).

While this sounds promising, but I don't think
this is the right thing to do...
The reason why I think so, is that you are one person with that cleanup list, while many others work on the current code and probably don't have that (or any other) cleanup list. So they just add new code (in many cases copy/pasted) and you accept it while pushing another task to your cleanup list?
Well, I don't care, you can keep doing it,
but that does not sound right... and the your cleanup list will never get empty...

Signature · 2 lines
Regards,
Igor.
#6 lore raw

PATCH v3 2/3 ARM:AM33XX: Add mmc/sd support

Quoted 28 lines · Igor Grinberg

Hi Tom,

Quoted 17 lines · Tom Rini
Quoted 9 lines · Igor Grinberg

Hi Chandan, Tom,

Quoted 6 lines · Chandan Nath

This patch add supports for mmc/sd driver on AM335X platform. PLL and pinmux configurations for mmc/sd are configured in this patch.

[snip]

Quoted 5 lines
Quoted 5 lines
arch/arm/include/asm/arch-am33xx/mmc_host_def.h new file +0 -0
new file mode 100644
index 0000000..e56c018

[snip]

Quoted 7 lines
Quoted 2 lines

Ahh, I see... most of it is just a copy/paste of the same data in:
arch/arm/include/asm/arch-omap3/mmc_host_def.h

And arch-omap4 and arch-omap5, except for the base locations. I've talked a little with Wolfgang about this and on my cleanup list is making then posting something to give us <plat/> for includes (name like the kernel, extra deep directory structure to create it, hopefully not).

Quoted 10 lines

While this sounds promising, but I don't think
this is the right thing to do...
The reason why I think so, is that you are one person with that cleanup list, while many others work on the current code and probably don't have that (or any other) cleanup list. So they just add new code (in many cases copy/pasted) and you accept it while pushing another task to your cleanup list?
Well, I don't care, you can keep doing it,
but that does not sound right... and the your cleanup list will never get empty...

I will put my TODO list up soon, but in this case, there's not going to be another new 'arch' added that copy/pastes this file too soon. The flip side is that I know that Chandan has a lot of hard work in front of him to get the rest of the drivers for am33xx into submittable shape that I don't want to delay that for this.

Signature · 1 line
Tom
#7 lore raw

PATCH v3 3/3 ARM:AM33XX: Add SPL support for AM335X EVM

In reply to Chandan Nath

This patch is added to support SPL feature on AM335X platform. In this patch, MMC1 is configured as boot device for SPL and support for other devices will be added in the next patch series.

---
Changes since v2:
- Added missing omap.h file

Changes since v1:
- Rebased to master branch
- Replaced am33xx lowleve_init.S with omap-common lowlevel_init.S in order to use common code for omap_bootmode.

 arch/arm/cpu/armv7/am33xx/Makefile            |    2 -
 arch/arm/cpu/armv7/am33xx/board.c             |   65 +++++++++++++++++++++--
 arch/arm/cpu/armv7/am33xx/config.mk           |   18 ++++++
 arch/arm/cpu/armv7/am33xx/emif4.c             |    2 +-
 arch/arm/cpu/armv7/am33xx/lowlevel_init.S     |   72 -------------------------
 arch/arm/cpu/armv7/omap-common/Makefile       |    3 +
 arch/arm/include/asm/arch-am33xx/common_def.h |   22 ++++++++
 arch/arm/include/asm/arch-am33xx/omap.h       |   59 ++++++++++++++++++++
 arch/arm/include/asm/arch-am33xx/sys_proto.h  |    1 +
 arch/arm/include/asm/omap_common.h            |    5 ++
 board/ti/am335x/common_def.h                  |   24 --------
 board/ti/am335x/evm.c                         |    2 +-
 board/ti/am335x/mux.c                         |    2 +-
 include/configs/am335x_evm.h                  |   39 ++++++++++++-
 spl/Makefile                                  |   13 ++---
 15 files changed, 214 insertions(+), 115 deletions(-)
 create mode 100644 arch/arm/cpu/armv7/am33xx/config.mk
 delete mode 100644 arch/arm/cpu/armv7/am33xx/lowlevel_init.S
 create mode 100644 arch/arm/include/asm/arch-am33xx/common_def.h
 create mode 100644 arch/arm/include/asm/arch-am33xx/omap.h
 delete mode 100644 board/ti/am335x/common_def.h
arch/arm/cpu/armv7/am33xx/Makefile +0 -2
index 6beafbb..7768912 100644
@@ -16,8 +16,6 @@ include $(TOPDIR)/config.mk
 
 LIB	= $(obj)lib$(SOC).o
 
-SOBJS	:= lowlevel_init.o
-
 COBJS	+= clock.o
 COBJS	+= sys_info.o
 COBJS	+= ddr.o
arch/arm/cpu/armv7/am33xx/board.c +61 -4

95 lines not on this page · raw message

arch/arm/cpu/armv7/am33xx/config.mk new file +18 -0
new file mode 100644
index 0000000..5750bbd
@@ -0,0 +1,18 @@
+#
+# Copyright (C) 2011, 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 "as is" WITHOUT ANY WARRANTY of any
+# kind, whether express or implied; without even the implied warranty
+# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+ifdef CONFIG_SPL_BUILD
+ALL-y	+= $(OBJTREE)/MLO
+else
+ALL-y	+= $(obj)u-boot.img
+endif
arch/arm/cpu/armv7/am33xx/emif4.c +1 -1
index 1318365..2f4164d 100644
@@ -46,7 +46,7 @@ void dram_init_banksize(void)
 }
 
 
-#ifdef CONFIG_AM335X_CONFIG_DDR
+#ifdef CONFIG_SPL_BUILD
 static void data_macro_config(int dataMacroNum)
 {
 	struct ddr_data data;
arch/arm/cpu/armv7/am33xx/lowlevel_init.S deleted +0 -72

72 lines not on this page · raw message

arch/arm/cpu/armv7/omap-common/Makefile +3 -0
index a684611..517f7b1 100644
@@ -37,6 +37,9 @@ ifneq ($(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX),)
 COBJS	+= hwinit-common.o
 COBJS	+= clocks-common.o
 COBJS	+= emif-common.o
+endif
+
+ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX),)
 SOBJS	+= lowlevel_init.o
 endif
 
arch/arm/include/asm/arch-am33xx/common_def.h new file +22 -0
new file mode 100644
index 0000000..767932d
@@ -0,0 +1,22 @@
+/*
+ * common_def.h
+ *
+ * Copyright (C) 2011 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 version 2.
+ *
+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
+ * kind, whether express or implied; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef __COMMON_DEF_H__
+#define __COMMON_DEF_H__
+
+extern void enable_uart0_pin_mux(void);
+extern void enable_mmc0_pin_mux(void);
+
+#endif/*__COMMON_DEF_H__ */
arch/arm/include/asm/arch-am33xx/omap.h new file +59 -0

59 lines not on this page · raw message

arch/arm/include/asm/arch-am33xx/sys_proto.h +1 -0
index 09ed650..6c58f1b 100644
@@ -29,4 +29,5 @@ int print_cpuinfo(void);
 #endif
 
 u32 get_device_type(void);
+void setup_clocks_for_console(void);
 #endif
arch/arm/include/asm/omap_common.h +5 -0
index 1ec651b..6b4c010 100644
@@ -62,6 +62,11 @@ void preloader_console_init(void);
 #define BOOT_DEVICE_MMC2	5 /*emmc*/
 #define BOOT_DEVICE_MMC1	6
 #define BOOT_DEVICE_XIPWAIT	7
+#elif defined(CONFIG_AM33XX)	/* AM33XX */
+#define BOOT_DEVICE_NAND	5
+#define BOOT_DEVICE_MMC1	8
+#define BOOT_DEVICE_MMC2	0 /* eMMC, TODO */
+#define BOOT_DEVICE_UART	65
 #endif
 
 /* Boot type */
board/ti/am335x/common_def.h deleted +0 -24
deleted file mode 100644
index 1696d60..0000000
@@ -1,24 +0,0 @@
-/*
- * common_def.h
- *
- * Copyright (C) 2011 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 version 2.
- *
- * This program is distributed "as is" WITHOUT ANY WARRANTY of any
- * kind, whether express or implied; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
-
-#ifndef __COMMON_DEF_H__
-#define __COMMON_DEF_H__
-
-extern void enable_uart0_pin_mux(void);
-extern void configure_evm_pin_mux(unsigned char daughter_board_id,
-					unsigned short daughter_board_profile,
-					unsigned char daughter_board_flag);
-
-#endif/*__COMMON_DEF_H__ */
board/ti/am335x/evm.c +1 -1
index b4eddd8..6a9f788 100644
@@ -16,7 +16,7 @@
 #include <common.h>
 #include <asm/arch/cpu.h>
 #include <asm/arch/hardware.h>
-#include "common_def.h"
+#include <asm/arch/common_def.h>
 #include <serial.h>
 
 DECLARE_GLOBAL_DATA_PTR;
board/ti/am335x/mux.c +1 -1
index df11752..c2a61bd 100644
@@ -14,7 +14,7 @@
  */
 
 #include <config.h>
-#include "common_def.h"
+#include <asm/arch/common_def.h>
 #include <asm/arch/hardware.h>
 #include <asm/io.h>
 
include/configs/am335x_evm.h +36 -3
index bd68e9a..049347c 100644
@@ -26,8 +26,6 @@
 #include <asm/arch/cpu.h>
 #include <asm/arch/hardware.h>
 
-#define CONFIG_SETUP_PLL
-#define CONFIG_AM335X_CONFIG_DDR
 #define CONFIG_ENV_SIZE			0x400
 #define CONFIG_SYS_MALLOC_LEN		(CONFIG_ENV_SIZE + (8 * 1024))
 #define CONFIG_SYS_PROMPT		"U-Boot# "
@@ -119,7 +117,42 @@
 
 #define CONFIG_ENV_IS_NOWHERE
 
-#define CONFIG_SYS_TEXT_BASE		0x402f0400
+/* Defines for SPL */
+#define CONFIG_SPL
+#define CONFIG_SPL_TEXT_BASE		0x402F0400
+#define CONFIG_SPL_MAX_SIZE		(46 * 1024)
+#define CONFIG_SPL_STACK		LOW_LEVEL_SRAM_STACK
+
+#define CONFIG_SPL_BSS_START_ADDR	0x80000000
+#define CONFIG_SPL_BSS_MAX_SIZE		0x80000		/* 512 KB */
+
+#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR	0x300 /* address 0x60000 */
+#define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS	0x200 /* 256 KB */
+#define CONFIG_SYS_MMC_SD_FAT_BOOT_PARTITION	1
+#define CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME	"u-boot.img"
+#define CONFIG_SPL_MMC_SUPPORT
+#define CONFIG_SPL_FAT_SUPPORT
+
+#define CONFIG_SPL_LIBCOMMON_SUPPORT
+#define CONFIG_SPL_LIBDISK_SUPPORT
+#define CONFIG_SPL_LIBGENERIC_SUPPORT
+#define CONFIG_SPL_SERIAL_SUPPORT
+#define CONFIG_SPL_LDSCRIPT		"$(CPUDIR)/omap-common/u-boot-spl.lds"
+
+/*
+ * 1MB into the SDRAM to allow for SPL's bss at the beginning of SDRAM
+ * 64 bytes before this address should be set aside for u-boot.img's
+ * header. That is 0x800FFFC0--0x80100000 should not be used for any
+ * other needs.
+ */
+#define CONFIG_SYS_TEXT_BASE		0x80800000
+#define CONFIG_SYS_SPL_MALLOC_START	0x80208000
+#define CONFIG_SYS_SPL_MALLOC_SIZE	0x100000
+
+/* Since SPL did all of this for us, we don't need to do it twice. */
+#ifndef CONFIG_SPL_BUILD
+#define CONFIG_SKIP_LOWLEVEL_INIT
+#endif
 
 /* Unsupported features */
 #undef CONFIG_USE_IRQ
spl/Makefile +6 -7
index 6ac42a2..3262e22 100644
@@ -58,13 +58,7 @@ LIBS-$(CONFIG_SPL_ONENAND_SUPPORT) += drivers/mtd/onenand/libonenand.o
 LIBS-$(CONFIG_SPL_DMA_SUPPORT) += drivers/dma/libdma.o
 LIBS-$(CONFIG_SPL_POST_MEM_SUPPORT) += post/drivers/memory.o
 
-ifeq ($(SOC),omap3)
-LIBS-y += $(CPUDIR)/omap-common/libomap-common.o
-endif
-ifeq ($(SOC),omap4)
-LIBS-y += $(CPUDIR)/omap-common/libomap-common.o
-endif
-ifeq ($(SOC),omap5)
+ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP34XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX),)
 LIBS-y += $(CPUDIR)/omap-common/libomap-common.o
 endif
 
@@ -104,6 +98,11 @@ $(OBJTREE)/MLO:	$(obj)u-boot-spl.bin
 	$(OBJTREE)/tools/mkimage -T omapimage \
 		-a $(CONFIG_SPL_TEXT_BASE) -d $< $@
 endif
+ifdef CONFIG_AM33XX
+$(OBJTREE)/MLO:	$(obj)u-boot-spl.bin
+	$(OBJTREE)/tools/mkimage -T omapimage \
+		-a $(CONFIG_SPL_TEXT_BASE) -d $< $@
+endif
 
 ALL-y	+= $(obj)u-boot-spl.bin
 
Signature · 1 line
1.7.1
#8 lore raw

PATCH v3 3/3 ARM:AM33XX: Add SPL support for AM335X EVM

Quoted 78 lines · Chandan Nath

This patch is added to support SPL feature on AM335X platform. In this patch, MMC1 is configured as boot device for SPL and support for other devices will be added in the next patch series.

---
Changes since v2:
- Added missing omap.h file

Changes since v1:
- Rebased to master branch
- Replaced am33xx lowleve_init.S with omap-common lowlevel_init.S in order to use common code for omap_bootmode.

 arch/arm/cpu/armv7/am33xx/Makefile            |    2 -
 arch/arm/cpu/armv7/am33xx/board.c             |   65 +++++++++++++++++++++--
 arch/arm/cpu/armv7/am33xx/config.mk           |   18 ++++++
 arch/arm/cpu/armv7/am33xx/emif4.c             |    2 +-
 arch/arm/cpu/armv7/am33xx/lowlevel_init.S     |   72 -------------------------
 arch/arm/cpu/armv7/omap-common/Makefile       |    3 +
 arch/arm/include/asm/arch-am33xx/common_def.h |   22 ++++++++
 arch/arm/include/asm/arch-am33xx/omap.h       |   59 ++++++++++++++++++++
 arch/arm/include/asm/arch-am33xx/sys_proto.h  |    1 +
 arch/arm/include/asm/omap_common.h            |    5 ++
 board/ti/am335x/common_def.h                  |   24 --------
 board/ti/am335x/evm.c                         |    2 +-
 board/ti/am335x/mux.c                         |    2 +-
 include/configs/am335x_evm.h                  |   39 ++++++++++++-
 spl/Makefile                                  |   13 ++---
 15 files changed, 214 insertions(+), 115 deletions(-)
 create mode 100644 arch/arm/cpu/armv7/am33xx/config.mk
 delete mode 100644 arch/arm/cpu/armv7/am33xx/lowlevel_init.S
 create mode 100644 arch/arm/include/asm/arch-am33xx/common_def.h
 create mode 100644 arch/arm/include/asm/arch-am33xx/omap.h
 delete mode 100644 board/ti/am335x/common_def.h
arch/arm/cpu/armv7/am33xx/Makefile +0 -2
index 6beafbb..7768912 100644
@@ -16,8 +16,6 @@ include $(TOPDIR)/config.mk
 
 LIB	= $(obj)lib$(SOC).o
 
-SOBJS	:= lowlevel_init.o
-
 COBJS	+= clock.o
 COBJS	+= sys_info.o
 COBJS	+= ddr.o
arch/arm/cpu/armv7/am33xx/board.c +11 -0
index 312643c..2a45933 100644
@@ -19,19 +19,45 @@
 #include <common.h>
 #include <asm/arch/cpu.h>
 #include <asm/arch/hardware.h>
+#include <asm/arch/omap.h>
 #include <asm/arch/ddr_defs.h>
 #include <asm/arch/clock.h>
+#include <asm/arch/mmc_host_def.h>
+#include <asm/arch/common_def.h>
 #include <asm/io.h>
+#include <asm/omap_common.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
 struct wd_timer *wdtimer = (struct wd_timer *)WDT_BASE;
 struct gptimer *timer_base = (struct gptimer *)CONFIG_SYS_TIMERBASE;
+struct uart_sys *uart_base = (struct uart_sys *)DEFAULT_UART_BASE;
+
+struct omap_boot_parameters boot_params __attribute__ ((section(".data")));
+
+#ifdef CONFIG_SPL_BUILD
+u32 omap_bootmode = MMCSD_MODE_FAT;
+

arch/arm/cpu/armv7/am33xx/board.c line 50

Quoted 10 lines
arch/arm/cpu/armv7/am33xx/board.c +10 -0
+u32 omap_boot_device(void)
+{
+	return (u32) (boot_params.omap_bootdevice);
+}
+
+u32 omap_boot_mode(void)
+{
+	return omap_bootmode;
+}
+

can't arch/arm/cpu/armv7/omap-common/hwinit-common.c be used for this?

[...]

Signature · 2 lines
Regards,
Igor.
#9 lore raw

PATCH v3 3/3 ARM:AM33XX: Add SPL support for AM335X EVM

Quoted 90 lines

-----Original Message-----
From: Igor Grinberg [mailto:grinberg at compulab.co.il]
Sent: Tuesday, January 03, 2012 1:44 PM
To: Kumar Nath, Chandan
Cc: u-boot at lists.denx.de; Rini, Tom
Subject: Re: [U-Boot] [PATCH v3 3/3] ARM:AM33XX: Add SPL support for AM335X EVM

Quoted 11 lines · Chandan Nath

This patch is added to support SPL feature on AM335X platform. In this patch, MMC1 is configured as boot device for SPL and support for other devices will be added in the next patch series.

---
Changes since v2:
- Added missing omap.h file

Quoted 7 lines

Changes since v1:
- Rebased to master branch
- Replaced am33xx lowleve_init.S with omap-common lowlevel_init.S in order to use common code for omap_bootmode.

 arch/arm/cpu/armv7/am33xx/Makefile            |    2 -
 arch/arm/cpu/armv7/am33xx/board.c             |   65

+++++++++++++++++++++--

Quoted 3 lines
 arch/arm/cpu/armv7/am33xx/config.mk           |   18 ++++++
 arch/arm/cpu/armv7/am33xx/emif4.c             |    2 +-
 arch/arm/cpu/armv7/am33xx/lowlevel_init.S     |   72 ---------------

----------

Quoted 3 lines
 arch/arm/cpu/armv7/omap-common/Makefile       |    3 +
 arch/arm/include/asm/arch-am33xx/common_def.h |   22 ++++++++
 arch/arm/include/asm/arch-am33xx/omap.h       |   59

++++++++++++++++++++

Quoted 14 lines
 arch/arm/include/asm/arch-am33xx/sys_proto.h  |    1 +
 arch/arm/include/asm/omap_common.h            |    5 ++
 board/ti/am335x/common_def.h                  |   24 --------
 board/ti/am335x/evm.c                         |    2 +-
 board/ti/am335x/mux.c                         |    2 +-
 include/configs/am335x_evm.h                  |   39 ++++++++++++-
 spl/Makefile                                  |   13 ++---
 15 files changed, 214 insertions(+), 115 deletions(-)
 create mode 100644 arch/arm/cpu/armv7/am33xx/config.mk
 delete mode 100644 arch/arm/cpu/armv7/am33xx/lowlevel_init.S
 create mode 100644 arch/arm/include/asm/arch-am33xx/common_def.h
 create mode 100644 arch/arm/include/asm/arch-am33xx/omap.h
 delete mode 100644 board/ti/am335x/common_def.h

Review

Quoted 1 line
(quoted diff) +0 -0

b/arch/arm/cpu/armv7/am33xx/Makefile

Review

Quoted 13 lines

index 6beafbb..7768912 100644

arch/arm/cpu/armv7/am33xx/Makefile +0 -2
@@ -16,8 +16,6 @@ include $(TOPDIR)/config.mk
 
 LIB	= $(obj)lib$(SOC).o
 
-SOBJS	:= lowlevel_init.o
-
 COBJS	+= clock.o
 COBJS	+= sys_info.o
 COBJS	+= ddr.o
(quoted diff) +0 -0

b/arch/arm/cpu/armv7/am33xx/board.c

Quoted 12 lines

index 312643c..2a45933 100644

arch/arm/cpu/armv7/am33xx/board.c +3 -0
@@ -19,19 +19,45 @@
 #include <common.h>
 #include <asm/arch/cpu.h>
 #include <asm/arch/hardware.h>
+#include <asm/arch/omap.h>
 #include <asm/arch/ddr_defs.h>
 #include <asm/arch/clock.h>
+#include <asm/arch/mmc_host_def.h>
+#include <asm/arch/common_def.h>

arch/arm/cpu/armv7/am33xx/board.c line 36

Quoted 10 lines
arch/arm/cpu/armv7/am33xx/board.c +4 -0
 #include <asm/io.h>
+#include <asm/omap_common.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
 struct wd_timer *wdtimer = (struct wd_timer *)WDT_BASE;
 struct gptimer *timer_base = (struct gptimer *)CONFIG_SYS_TIMERBASE;
+struct uart_sys *uart_base = (struct uart_sys *)DEFAULT_UART_BASE;
+
+struct omap_boot_parameters boot_params __attribute__

((section(".data")));

Quoted 16 lines
Quoted 4 lines
arch/arm/cpu/armv7/am33xx/board.c +4 -0
+
+#ifdef CONFIG_SPL_BUILD
+u32 omap_bootmode = MMCSD_MODE_FAT;
+

arch/arm/cpu/armv7/am33xx/board.c line 50

Quoted 10 lines
arch/arm/cpu/armv7/am33xx/board.c +10 -0
+u32 omap_boot_device(void)
+{
+	return (u32) (boot_params.omap_bootdevice);
+}
+
+u32 omap_boot_mode(void)
+{
+	return omap_bootmode;
+}
+

can't arch/arm/cpu/armv7/omap-common/hwinit-common.c be used for this?

I tried using hwinit-common.c file, but there are some other functions defined which are not required. Could you tell me if there is any method to use only Above functions from hwinit-common.c file.

Quoted 7 lines

[...]

--
Regards,
Igor.

#10 lore raw

PATCH v3 3/3 ARM:AM33XX: Add SPL support for AM335X EVM

Hi Chandan,

Quoted 17 lines · Chandan
Quoted 17 lines · Chandan Nath
Quoted 15 lines

This patch is added to support SPL feature on AM335X platform. In this patch, MMC1 is configured as boot device for SPL and support for other devices will be added in the next patch series.

---
Changes since v2:
- Added missing omap.h file

Changes since v1:
- Rebased to master branch
- Replaced am33xx lowleve_init.S with omap-common lowlevel_init.S in order to use common code for omap_bootmode.

[...]

Quoted 42 lines
Quoted 25 lines

Review

Quoted 1 line
(quoted diff) +0 -0

b/arch/arm/cpu/armv7/am33xx/board.c

Quoted 12 lines

index 312643c..2a45933 100644

arch/arm/cpu/armv7/am33xx/board.c +3 -0
@@ -19,19 +19,45 @@
 #include <common.h>
 #include <asm/arch/cpu.h>
 #include <asm/arch/hardware.h>
+#include <asm/arch/omap.h>
 #include <asm/arch/ddr_defs.h>
 #include <asm/arch/clock.h>
+#include <asm/arch/mmc_host_def.h>
+#include <asm/arch/common_def.h>

arch/arm/cpu/armv7/am33xx/board.c line 36

Quoted 10 lines
arch/arm/cpu/armv7/am33xx/board.c +4 -0
 #include <asm/io.h>
+#include <asm/omap_common.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
 struct wd_timer *wdtimer = (struct wd_timer *)WDT_BASE;
 struct gptimer *timer_base = (struct gptimer *)CONFIG_SYS_TIMERBASE;
+struct uart_sys *uart_base = (struct uart_sys *)DEFAULT_UART_BASE;
+
+struct omap_boot_parameters boot_params __attribute__

((section(".data")));

Quoted 16 lines
Quoted 4 lines
arch/arm/cpu/armv7/am33xx/board.c +4 -0
+
+#ifdef CONFIG_SPL_BUILD
+u32 omap_bootmode = MMCSD_MODE_FAT;
+

arch/arm/cpu/armv7/am33xx/board.c line 50

Quoted 10 lines
arch/arm/cpu/armv7/am33xx/board.c +10 -0
+u32 omap_boot_device(void)
+{
+	return (u32) (boot_params.omap_bootdevice);
+}
+
+u32 omap_boot_mode(void)
+{
+	return omap_bootmode;
+}
+

can't arch/arm/cpu/armv7/omap-common/hwinit-common.c be used for this?

Quoted 3 lines

I tried using hwinit-common.c file, but there are some other functions defined which are not required. Could you tell me if there is any method to use only Above functions from hwinit-common.c file.

At least two ways, I can think of:
The less pretty, is introduce ifdefs in that file. Another and IMO better option is split the file into common and "less" common content and then reuse the right one. With the later, you prevent the needless ifdeffery, but need to be careful not to break any existing platforms.

Signature · 2 lines
Regards,
Igor.
#11 lore raw

PATCH v3 3/3 ARM:AM33XX: Add SPL support for AM335X EVM

In reply to Kumar Nath

Dear "Kumar Nath, Chandan",

Quoted 6 lines · In message <[email protected]> you wrote:
Quoted 2 lines

can't arch/arm/cpu/armv7/omap-common/hwinit-common.c be used for this?

I tried using hwinit-common.c file, but there are some other functions defined which are not required. Could you tell me if there is any method to use only Above functions from hwinit-common.c file.

Does not -ffunction-sections in combination with -gc-sections take care of that?

Best regards,

Wolfgang Denk

Signature · 6 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
That said, there may be good reasons for what you did beyond obsequi-
ous sycophantic parody. Perhaps you might be so kind as to elucidate.
         -- Tom Christiansen in <[email protected]>
#12 lore raw

PATCH v3 3/3 ARM:AM33XX: Add SPL support for AM335X EVM

In reply to Kumar Nath
Quoted 107 lines · Chandan
Quoted 90 lines

-----Original Message-----
From: Igor Grinberg [mailto:grinberg at compulab.co.il]
Sent: Tuesday, January 03, 2012 1:44 PM
To: Kumar Nath, Chandan
Cc: u-boot at lists.denx.de; Rini, Tom
Subject: Re: [U-Boot] [PATCH v3 3/3] ARM:AM33XX: Add SPL support for AM335X EVM

Quoted 11 lines · Chandan Nath

This patch is added to support SPL feature on AM335X platform. In this patch, MMC1 is configured as boot device for SPL and support for other devices will be added in the next patch series.

---
Changes since v2:
- Added missing omap.h file

Quoted 7 lines

Changes since v1:
- Rebased to master branch
- Replaced am33xx lowleve_init.S with omap-common lowlevel_init.S in order to use common code for omap_bootmode.

 arch/arm/cpu/armv7/am33xx/Makefile            |    2 -
 arch/arm/cpu/armv7/am33xx/board.c             |   65

+++++++++++++++++++++--

Quoted 3 lines
 arch/arm/cpu/armv7/am33xx/config.mk           |   18 ++++++
 arch/arm/cpu/armv7/am33xx/emif4.c             |    2 +-
 arch/arm/cpu/armv7/am33xx/lowlevel_init.S     |   72 ---------------

----------

Quoted 3 lines
 arch/arm/cpu/armv7/omap-common/Makefile       |    3 +
 arch/arm/include/asm/arch-am33xx/common_def.h |   22 ++++++++
 arch/arm/include/asm/arch-am33xx/omap.h       |   59

++++++++++++++++++++

Quoted 14 lines
 arch/arm/include/asm/arch-am33xx/sys_proto.h  |    1 +
 arch/arm/include/asm/omap_common.h            |    5 ++
 board/ti/am335x/common_def.h                  |   24 --------
 board/ti/am335x/evm.c                         |    2 +-
 board/ti/am335x/mux.c                         |    2 +-
 include/configs/am335x_evm.h                  |   39 ++++++++++++-
 spl/Makefile                                  |   13 ++---
 15 files changed, 214 insertions(+), 115 deletions(-)
 create mode 100644 arch/arm/cpu/armv7/am33xx/config.mk
 delete mode 100644 arch/arm/cpu/armv7/am33xx/lowlevel_init.S
 create mode 100644 arch/arm/include/asm/arch-am33xx/common_def.h
 create mode 100644 arch/arm/include/asm/arch-am33xx/omap.h
 delete mode 100644 board/ti/am335x/common_def.h

Review

Quoted 1 line
(quoted diff) +0 -0

b/arch/arm/cpu/armv7/am33xx/Makefile

Review

Quoted 13 lines

index 6beafbb..7768912 100644

arch/arm/cpu/armv7/am33xx/Makefile +0 -2
@@ -16,8 +16,6 @@ include $(TOPDIR)/config.mk
 
 LIB	= $(obj)lib$(SOC).o
 
-SOBJS	:= lowlevel_init.o
-
 COBJS	+= clock.o
 COBJS	+= sys_info.o
 COBJS	+= ddr.o
(quoted diff) +0 -0

b/arch/arm/cpu/armv7/am33xx/board.c

Quoted 12 lines

index 312643c..2a45933 100644

arch/arm/cpu/armv7/am33xx/board.c +3 -0
@@ -19,19 +19,45 @@
 #include <common.h>
 #include <asm/arch/cpu.h>
 #include <asm/arch/hardware.h>
+#include <asm/arch/omap.h>
 #include <asm/arch/ddr_defs.h>
 #include <asm/arch/clock.h>
+#include <asm/arch/mmc_host_def.h>
+#include <asm/arch/common_def.h>

arch/arm/cpu/armv7/am33xx/board.c line 36

Quoted 10 lines
arch/arm/cpu/armv7/am33xx/board.c +4 -0
 #include <asm/io.h>
+#include <asm/omap_common.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
 struct wd_timer *wdtimer = (struct wd_timer *)WDT_BASE;
 struct gptimer *timer_base = (struct gptimer *)CONFIG_SYS_TIMERBASE;
+struct uart_sys *uart_base = (struct uart_sys *)DEFAULT_UART_BASE;
+
+struct omap_boot_parameters boot_params __attribute__

((section(".data")));

Quoted 16 lines
Quoted 4 lines
arch/arm/cpu/armv7/am33xx/board.c +4 -0
+
+#ifdef CONFIG_SPL_BUILD
+u32 omap_bootmode = MMCSD_MODE_FAT;
+

arch/arm/cpu/armv7/am33xx/board.c line 50

Quoted 10 lines
arch/arm/cpu/armv7/am33xx/board.c +10 -0
+u32 omap_boot_device(void)
+{
+	return (u32) (boot_params.omap_bootdevice);
+}
+
+u32 omap_boot_mode(void)
+{
+	return omap_bootmode;
+}
+

can't arch/arm/cpu/armv7/omap-common/hwinit-common.c be used for this?

Quoted 3 lines

I tried using hwinit-common.c file, but there are some other functions defined which are not required. Could you tell me if there is any method to use only Above functions from hwinit-common.c file.

This probably just means there's further common code that am33xx needs to be moved over to use from the omap4/5 family. For example, the emif code.

Signature · 1 line
Tom