[U-Boot] [PATCH 5/6] am335x_evm:Add support for the NOR module on the memory cape

Peter Korsgaard
2013-05-12T21:19:47Z

>>>>> "Tom" == Tom Rini <trini@ti.com> writes:

Space missing after ':' in subject.

Tom> From: Steve Kipisz <s-kipisz2@ti.com>
Tom> This patch adds support for the NOR module that attaches
Tom> to the memory cape for a Beaglebone board. This does not
Tom> add booting support; only support so that you can boot from
Tom> SD/MMC and see the NOR module so that it can be programmed.

Tom> Signed-off-by: Steve Kipisz <s-kipisz2@ti.com>
Tom> [trini: Clean up config changes slightly]
Tom> Signed-off-by: Tom Rini <trini@ti.com>
Tom> ---
Tom> arch/arm/cpu/armv7/am33xx/mem.c | 30 +++++++++++++++++-
Tom> arch/arm/include/asm/arch-am33xx/mem.h | 9 ++++++
Tom> board/ti/am335x/mux.c | 53 ++++++++++++++++++++++++++++++++
Tom> boards.cfg | 1 +
Tom> include/configs/am335x_evm.h | 28 +++++++++++++++++
Tom> 5 files changed, 120 insertions(+), 1 deletion(-)

Tom> diff --git a/arch/arm/cpu/armv7/am33xx/mem.c b/arch/arm/cpu/armv7/am33xx/mem.c
Tom> index b86b0de..e46201a 100644
Tom> --- a/arch/arm/cpu/armv7/am33xx/mem.c
Tom> +++ b/arch/arm/cpu/armv7/am33xx/mem.c
Tom> @@ -46,6 +46,19 @@ static const u32 gpmc_m_nand[GPMC_MAX_REG] = {
Tom> };
Tom> #endif

Tom> +#if defined(CONFIG_CMD_FLASH)
Tom> +static const u32 gpmc_nor[GPMC_MAX_REG] = {
Tom> + STNOR_GPMC_CONFIG1,
Tom> + STNOR_GPMC_CONFIG2,
Tom> + STNOR_GPMC_CONFIG3,
Tom> + STNOR_GPMC_CONFIG4,
Tom> + STNOR_GPMC_CONFIG5,
Tom> + STNOR_GPMC_CONFIG6,
Tom> + STNOR_GPMC_CONFIG7
Tom> +};

These values (and the gmpc_m_nand ones) are platform specific, right? It
would be nicer to have them in the board file than here, similar to how
I did for the ddr settings some time ago.

Tom> +
Tom> +#define GPMC_CS 0
Tom> +#endif

Tom> void enable_gpmc_cs_config(const u32 *gpmc_config, struct gpmc_cs *cs, u32 base,
Tom> u32 size)
Tom> @@ -75,16 +88,22 @@ void gpmc_init(void)
Tom> /* putting a blanket check on GPMC based on ZeBu for now */
Tom> gpmc_cfg = (struct gpmc *)GPMC_BASE;

Tom> -#ifdef CONFIG_CMD_NAND
Tom> +#if defined(CONFIG_CMD_NAND) || defined(CONFIG_NOR)
Tom> const u32 *gpmc_config = NULL;
Tom> u32 base = 0;
Tom> u32 size = 0;
Tom> #endif
Tom> /* global settings */
Tom> writel(0x00000008, &gpmc_cfg->sysconfig);
Tom> +#ifdef CONFIG_NOR
Tom> + writel(0x00000000, &gpmc_cfg->irqstatus);
Tom> + writel(0x00000000, &gpmc_cfg->irqenable);
Tom> + writel(0x00000A00, &gpmc_cfg->config);
Tom> +#else
Tom> writel(0x00000100, &gpmc_cfg->irqstatus);
Tom> writel(0x00000100, &gpmc_cfg->irqenable);
Tom> writel(0x00000012, &gpmc_cfg->config);
Tom> +#endif

So now you cannot E.G. have a single binary working on both the nand
flash of the evm and beaglebone? That's not really nice.

--
Bye, Peter Korsgaard