From 54eecdabe0cdfdc47d77b3e182fda5899702ded7 Mon Sep 17 00:00:00 2001 From: Tudor Florea Date: Thu, 16 Oct 2014 02:06:17 +0200 Subject: initial commit for Enea Linux 4.0-140929 Migrated from the internal git server on the daisy-enea-point-release branch Signed-off-by: Tudor Florea --- .../imx-bootlets/cfa10036-support.patch | 271 +++++++++++++++++++++ 1 file changed, 271 insertions(+) create mode 100644 recipes-bsp/imx-bootlets/imx-bootlets/cfa10036-support.patch (limited to 'recipes-bsp/imx-bootlets/imx-bootlets/cfa10036-support.patch') diff --git a/recipes-bsp/imx-bootlets/imx-bootlets/cfa10036-support.patch b/recipes-bsp/imx-bootlets/imx-bootlets/cfa10036-support.patch new file mode 100644 index 0000000..9483af4 --- /dev/null +++ b/recipes-bsp/imx-bootlets/imx-bootlets/cfa10036-support.patch @@ -0,0 +1,271 @@ +Add cfa10036 support + +Signed-off-by: Alexandre Belloni + +diff --git a/Makefile b/Makefile +index 367738c..a9c5d21 100644 +--- a/Makefile ++++ b/Makefile +@@ -16,6 +16,9 @@ endif + ifeq ($(BOARD), iMX28_EVK) + ARCH = mx28 + endif ++ifeq ($(BOARD), cfa10036) ++ARCH = mx28 ++endif + + all: build_prep gen_bootstream + +diff --git a/boot_prep/Makefile b/boot_prep/Makefile +index 0267ede..86570fc 100644 +--- a/boot_prep/Makefile ++++ b/boot_prep/Makefile +@@ -23,6 +23,30 @@ MEM_TYPE ?= MEM_DDR1 + CFLAGS = -g -Wall -I$(INCLUDEDIR) -I$(INCLUDEDIR)/mach -I./ -O -D$(MEM_TYPE) + LDFLAGS = -static -nostdlib -T $(BOOT_LAYOUT) + ++# The board defines STMP CPU family and peripherial components ++# So, set ARCH and HW_OBJS variables for each supported board ++# separately. ++ifeq ($(BOARD), stmp37xx_dev) ++ARCH = 37xx ++HW_OBJS = $(LRADC_OBJS) ++CFLAGS += -DSTMP37XX -DBOARD_STMP37XX_DEV ++endif ++ifeq ($(BOARD), stmp378x_dev) ++ARCH = mx23 ++HW_OBJS = $(LRADC_OBJS) ++CFLAGS += -DSTMP378X -DBOARD_STMP378X_DEV ++endif ++ifeq ($(BOARD), iMX28_EVK) ++ARCH = mx28 ++HW_OBJS = $(LRADC_OBJS) ++CFLAGS += -DMX28 -DBOARD_MX28_EVK ++endif ++ifeq ($(BOARD), cfa10036) ++ARCH = mx28 ++HW_OBJS = $(LRADC_OBJS) ++CFLAGS += -DMX28 -DBOARD_CFA10036 ++endif ++ + # Generic code + CORE_OBJS = init-$(ARCH).o debug.o + +diff --git a/boot_prep/init-mx28.c b/boot_prep/init-mx28.c +index a1e4752..480a1c2 100644 +--- a/boot_prep/init-mx28.c ++++ b/boot_prep/init-mx28.c +@@ -752,17 +752,17 @@ void DDR2EmiController_EDE1116_200MHz(void) + DRAM_REG[24] = 0x00000000; + DRAM_REG[25] = 0x00000000; + DRAM_REG[26] = 0x00010101; +- DRAM_REG[27] = 0x01010101; ++ DRAM_REG[27] = 0x01010101; // 0000000 1 0000000 1 0000000 1 0000000 1 + DRAM_REG[28] = 0x000f0f01; +- DRAM_REG[29] = 0x0f02020a; ++ DRAM_REG[29] = 0x0f02010a; // 0000 1111 00000 010 00000 001 0000 1010 + DRAM_REG[30] = 0x00000000; +- DRAM_REG[31] = 0x00010101; +- DRAM_REG[32] = 0x00000100; ++ DRAM_REG[31] = 0x00010101; // 000000000000000 1(8 banks) 0000000 1 0000000 1 ++ DRAM_REG[32] = 0x00000100; // 0000000000000000 0000000 1(REDUC) 0000000 0(REG_DIMM_ENABLE) + DRAM_REG[33] = 0x00000100; + DRAM_REG[34] = 0x00000000; +- DRAM_REG[35] = 0x00000002; ++ DRAM_REG[35] = 0x00000002; // 000000000000000 0 0000000 0 0000 0010 + DRAM_REG[36] = 0x01010000; +- DRAM_REG[37] = 0x07080403; ++ DRAM_REG[37] = 0x07080503; // 0000 0111 0000 1000 00000 101(CAS5) 0000 0011 + DRAM_REG[38] = 0x06005003; + DRAM_REG[39] = 0x0a0000c8; + DRAM_REG[40] = 0x02009c40; +@@ -1300,12 +1300,54 @@ void poweron_vdda() + HW_POWER_VDDACTRL_WR( BF_POWER_VDDACTRL_TRG(0xC) | BF_POWER_VDDACTRL_BO_OFFSET(7) + | BF_POWER_VDDACTRL_LINREG_OFFSET(2) ); + } ++ ++/* ++ * Check memory range for valid RAM. A simple memory test determines ++ * the actually available RAM size between addresses `base' and ++ * `base + maxsize'. ++ * Copied and pasted from barebox common/memsize.c file ++ */ ++long get_ram_size(long *base, long maxsize) ++{ ++ volatile long *addr; ++ long cnt; ++ long val; ++ long size; ++ int i = 0; ++ ++ for (cnt = (maxsize / sizeof (long)) >> 1; cnt > 0; cnt >>= 1) { ++ addr = base + cnt; /* pointer arith! */ ++ *addr = ~cnt; ++ } ++ ++ addr = base; ++ *addr = 0; ++ ++ for (cnt = 1; cnt < maxsize / sizeof (long); cnt <<= 1) { ++ addr = base + cnt; /* pointer arith! */ ++ val = *addr; ++ if (val != ~cnt) { ++ size = cnt * sizeof (long); ++ return (size); ++ } ++ } ++ ++ return (maxsize); ++} ++ + int _start(int arg) + { + unsigned int value; +- volatile int *pTest = 0x40000000; +- int i; +- ++ int memsize; ++ ++#ifdef BOARD_CFA10036 ++ /* Remove all the previous DUART muxing */ ++ HW_PINCTRL_MUXSEL6_CLR((3 << 4) | (3 << 6)); ++ HW_PINCTRL_MUXSEL7_CLR((3 << 0) | (3 << 2)); ++ HW_PINCTRL_MUXSEL7_CLR((3 << 16) | (3 << 18)); ++ /* Mux only the DUART to pins actually used for this function */ ++ HW_PINCTRL_MUXSEL6_SET((2 << 4) | (2 << 6)); ++#else + //boot rom wrong use debug uart port. + //If fuse burned, the below two line can be removed. + HW_PINCTRL_MUXSEL7_CLR(0xF); +@@ -1315,6 +1357,7 @@ int _start(int arg) + * which cause uboot can't input + */ + HW_PINCTRL_MUXSEL7_SET(0x30000); ++#endif + + #ifdef MEM_MDDR + /* set to mddr mode*/ +@@ -1374,28 +1417,8 @@ int _start(int arg) + + change_cpu_freq(); + +-#if 0 +- for (i = 0; i <= 40; i++) { +- printf("mem %x - 0x%x\r\n", +- i, *(volatile int*)(0x800E0000 + i * 4)); +- } +-#endif +- +- /*Test Memory;*/ +- printf("start test memory accress\r\n"); +- printf("ddr2 0x%x\r\n", pTest); +- for (i = 0; i < 1000; i++) +- *pTest++ = i; +- +- pTest = (volatile int *)0x40000000; +- +- for (i = 0; i < 1000; i++) { +- if (*pTest != (i)) { +- printf("0x%x error value 0x%x\r\n", i, *pTest); +- } +- pTest++; +- } +- printf("finish simple test\r\n"); ++ memsize = get_ram_size((long *)0x40000000, 0x10000000); ++ printf("finish simple test memory size = 0x%xMB\r\n", memsize >> 20); + return 0; + } + +diff --git a/linux_prep/Makefile b/linux_prep/Makefile +index 19b02a9..b33e4c1 100644 +--- a/linux_prep/Makefile ++++ b/linux_prep/Makefile +@@ -69,6 +69,11 @@ ARCH = mx28 + HW_OBJS = $(LRADC_OBJS) + CFLAGS += -DMX28 -DBOARD_MX28_EVK + endif ++ifeq ($(BOARD), cfa10036) ++ARCH = mx28 ++HW_OBJS = $(LRADC_OBJS) ++CFLAGS += -DMX28 -DBOARD_CFA10036 ++endif + + # Generic code + CORE_OBJS = entry.o resume.o cmdlines.o setup.o keys.o +diff --git a/linux_prep/board/cfa10036.c b/linux_prep/board/cfa10036.c +new file mode 100644 +index 0000000..b084ed4 +--- /dev/null ++++ b/linux_prep/board/cfa10036.c +@@ -0,0 +1,51 @@ ++/* ++ * Platform specific data for the STMP37XX development board ++ * ++ * Vladislav Buzov ++ * ++ * Copyright 2008 SigmaTel, Inc ++ * Copyright 2008 Embedded Alley Solutions, Inc ++ * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved. ++ * ++ * This file is licensed under the terms of the GNU General Public License ++ * version 2. This program is licensed "as is" without any warranty of any ++ * kind, whether express or implied. ++ */ ++#include ++#include ++#include ++ ++/************************************************ ++ * LRADC keyboard data * ++ ************************************************/ ++int lradc_keypad_ch = LRADC_CH1; ++int lradc_vddio_ch = LRADC_CH10; ++ ++struct lradc_keycode lradc_keycodes[] = { ++ { 100, KEY4 }, ++ { 306, KEY5 }, ++ { 626, KEY6 }, ++ { 932, KEY7 }, ++ { 1260, KEY8 }, ++ { 1584, KEY9 }, ++ { 1757, KEY10 }, ++ { 2207, KEY11 }, ++ { 2525, KEY12 }, ++ { 2831, KEY13 }, ++ { 3134, KEY14 }, ++ { -1, 0 }, ++}; ++ ++/************************************************ ++ * Magic key combinations for Armadillo * ++ ************************************************/ ++u32 magic_keys[MAGIC_KEY_NR] = { ++ [MAGIC_KEY1] = KEY4, ++ [MAGIC_KEY2] = KEY6, ++ [MAGIC_KEY3] = KEY10, ++}; ++ ++/************************************************ ++ * Default command line * ++ ************************************************/ ++char cmdline_def[] = "console=ttyAMA0,115200"; +diff --git a/linux_prep/cmdlines/cfa10036.txt b/linux_prep/cmdlines/cfa10036.txt +new file mode 100644 +index 0000000..486ffe8 +--- /dev/null ++++ b/linux_prep/cmdlines/cfa10036.txt +@@ -0,0 +1 @@ ++console=ttyAMA0,115200 root=/dev/mmcblk0p3 rw rootwait +diff --git a/linux_prep/include/mx28/platform.h b/linux_prep/include/mx28/platform.h +index d4063f8..3d1f1d7 100644 +--- a/linux_prep/include/mx28/platform.h ++++ b/linux_prep/include/mx28/platform.h +@@ -19,6 +19,8 @@ + + #if defined (BOARD_MX28_EVK) + #define MACHINE_ID 2531 ++#elif defined (BOARD_CFA10036) ++#define MACHINE_ID 4142 + #else + #error "Allocate a machine ID for your board" + #endif -- cgit v1.2.3-54-g00ecf