mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH] ARM: imx: add support for Udoo Neo full
@ 2017-06-27 19:03 Uwe Kleine-König
  2017-06-27 19:40 ` Stefan Lengfeld
  2017-06-30 19:46 ` Andrey Smirnov
  0 siblings, 2 replies; 7+ messages in thread
From: Uwe Kleine-König @ 2017-06-27 19:03 UTC (permalink / raw)
  To: barebox; +Cc: Uwe Kleine-König

From: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
---
Hello,

note that this patch only makes the machine work if you don't choose
CONSOLE_ACTIVATE_NONE or apply these patches:

	of_device_is_stdout_path: simplify
	of_device_is_stdout_path: split off options and support aliases

that currently sit in next as 0e193b668479 and 23522645b3b3. That's
because the (upstream) dts has:

	stdout-path = "serial0:115200n8";

in /chosen that of_device_is_stdout_path doesn't understand without
these.

Best regards
Uwe

 arch/arm/boards/Makefile                           |   1 +
 arch/arm/boards/udoo-neo/Makefile                  |   2 +
 arch/arm/boards/udoo-neo/board.c                   |  27 +++++
 .../flash-header-mx6sx-udoo-neo_full.imxcfg        | 124 +++++++++++++++++++++
 arch/arm/boards/udoo-neo/lowlevel.c                |  39 +++++++
 arch/arm/dts/Makefile                              |   1 +
 arch/arm/dts/imx6sx-udoo-neo-full.dts              |   4 +
 arch/arm/mach-imx/Kconfig                          |   4 +
 arch/arm/mach-imx/include/mach/esdctl.h            |   1 +
 images/Makefile.imx                                |   5 +
 10 files changed, 208 insertions(+)
 create mode 100644 arch/arm/boards/udoo-neo/Makefile
 create mode 100644 arch/arm/boards/udoo-neo/board.c
 create mode 100644 arch/arm/boards/udoo-neo/flash-header-mx6sx-udoo-neo_full.imxcfg
 create mode 100644 arch/arm/boards/udoo-neo/lowlevel.c
 create mode 100644 arch/arm/dts/imx6sx-udoo-neo-full.dts

diff --git a/arch/arm/boards/Makefile b/arch/arm/boards/Makefile
index 0ecfb3e4b398..98f923a134a0 100644
--- a/arch/arm/boards/Makefile
+++ b/arch/arm/boards/Makefile
@@ -130,6 +130,7 @@ obj-$(CONFIG_MACH_TX51)				+= karo-tx51/
 obj-$(CONFIG_MACH_TX53)				+= karo-tx53/
 obj-$(CONFIG_MACH_TX6X)				+= karo-tx6x/
 obj-$(CONFIG_MACH_UDOO)				+= udoo/
+obj-$(CONFIG_MACH_UDOO_NEO)			+= udoo-neo/
 obj-$(CONFIG_MACH_USB_A9260)			+= usb-a926x/
 obj-$(CONFIG_MACH_USB_A9263)			+= usb-a926x/
 obj-$(CONFIG_MACH_USB_A9G20)			+= usb-a926x/
diff --git a/arch/arm/boards/udoo-neo/Makefile b/arch/arm/boards/udoo-neo/Makefile
new file mode 100644
index 000000000000..01c7a259e9a5
--- /dev/null
+++ b/arch/arm/boards/udoo-neo/Makefile
@@ -0,0 +1,2 @@
+obj-y += board.o
+lwl-y += lowlevel.o
diff --git a/arch/arm/boards/udoo-neo/board.c b/arch/arm/boards/udoo-neo/board.c
new file mode 100644
index 000000000000..9bf480305d70
--- /dev/null
+++ b/arch/arm/boards/udoo-neo/board.c
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2014 Pengutronix, Sascha Hauer
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2, as published by the Free Software Foundation.
+ *
+ * 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.
+ */
+
+#include <common.h>
+#include <init.h>
+#include <linux/clk.h>
+
+static int imx6sx_udoneo_coredevices_init(void)
+{
+	if (!of_machine_is_compatible("fsl,imx6sx-udoo-neo"))
+		return 0;
+
+	barebox_set_hostname("mx6sx-udooneo");
+
+	return 0;
+}
+coredevice_initcall(imx6sx_udoneo_coredevices_init);
diff --git a/arch/arm/boards/udoo-neo/flash-header-mx6sx-udoo-neo_full.imxcfg b/arch/arm/boards/udoo-neo/flash-header-mx6sx-udoo-neo_full.imxcfg
new file mode 100644
index 000000000000..176aff49b3ec
--- /dev/null
+++ b/arch/arm/boards/udoo-neo/flash-header-mx6sx-udoo-neo_full.imxcfg
@@ -0,0 +1,124 @@
+loadaddr 0x80000000
+soc imx6
+dcdofs 0x400
+
+/* Enable all clocks */
+wm 32 0x020c4068 0xffffffff
+wm 32 0x020c406c 0xffffffff
+wm 32 0x020c4070 0xffffffff
+wm 32 0x020c4074 0xffffffff
+wm 32 0x020c4078 0xffffffff
+wm 32 0x020c407c 0xffffffff
+wm 32 0x020c4080 0xffffffff
+wm 32 0x020c4084 0xffffffff
+/********************************************/
+
+/* IOMUX */
+/* DDR IO TYPE */
+wm 32 0x020e0618 0x000c0000
+wm 32 0x020e05fc 0x00000000
+/********************************************/
+
+/* CLOCK */
+wm 32 0x020e032c 0x00000030
+/********************************************/
+
+/* ADDRESS */
+wm 32 0x020e0300 0x00000020
+wm 32 0x020e02fc 0x00000020
+wm 32 0x020e05f4 0x00000020
+/********************************************/
+
+/* CONTROL */
+wm 32 0x020e0340 0x00000020
+
+wm 32 0x020e0320 0x00000000
+wm 32 0x020e0310 0x00000020
+wm 32 0x020e0314 0x00000020
+wm 32 0x020e0614 0x00000020
+/********************************************/
+
+/* DATA STROBE */
+wm 32 0x020e05f8 0x00020000
+wm 32 0x020e0330 0x00000028
+wm 32 0x020e0334 0x00000028
+wm 32 0x020e0338 0x00000028
+wm 32 0x020e033c 0x00000028
+/********************************************/
+
+/* DATA */
+wm 32 0x020e0608 0x00020000
+wm 32 0x020e060c 0x00000028
+wm 32 0x020e0610 0x00000028
+wm 32 0x020e061c 0x00000028
+wm 32 0x020e0620 0x00000028
+wm 32 0x020e02ec 0x00000028
+wm 32 0x020e02f0 0x00000028
+wm 32 0x020e02f4 0x00000028
+wm 32 0x020e02f8 0x00000028
+/********************************************/
+
+/* Calibrations */
+/* ZQ */
+wm 32 0x021b0800 0xa1390003
+/********************************************/
+
+/* write leveling */
+wm 32 0x021b080c 0x001E0022
+wm 32 0x021b0810 0x001C0019
+/********************************************/
+
+/* DQS Read Gate */
+wm 32 0x021b083c 0x41540150
+wm 32 0x021b0840 0x01440138
+/********************************************/
+
+/* Read/Write Delay */
+wm 32 0x021b0848 0x403E4644
+wm 32 0x021b0850 0x3C3A4038
+/********************************************/
+
+/* read data bit delay */
+wm 32 0x021b081c 0x33333333
+wm 32 0x021b0820 0x33333333
+wm 32 0x021b0824 0x33333333
+wm 32 0x021b0828 0x33333333
+/********************************************/
+
+/* Complete calibration by forced measurment */
+wm 32 0x021b08b8 0x00000800
+/********************************************/
+
+/* MMDC init */
+/* in DDR3, 64-bit mode, only MMDC0 is initiated */
+wm 32 0x021b0004 0x0002002d
+wm 32 0x021b0008 0x00333030
+wm 32 0x021b000c 0x676b52f3
+wm 32 0x021b0010 0xb66d8b63
+wm 32 0x021b0014 0x01ff00db
+wm 32 0x021b0018 0x00011740
+wm 32 0x021b001c 0x00008000
+wm 32 0x021b002c 0x000026d2
+wm 32 0x021b0030 0x006b1023
+wm 32 0x021b0040 0x0000005f
+wm 32 0x021b0000 0x83190000
+/********************************************/
+
+/* Initialize MT41K256M16HA-125 */
+/* MR2 */
+wm 32 0x021b001c 0x04008032
+/* MR3 */
+wm 32 0x021b001c 0x00008033
+/* MR1 */
+wm 32 0x021b001c 0x00048031
+/* MR0 */
+wm 32 0x021b001c 0x05208030
+/* DDR device ZQ calibration */
+wm 32 0x021b001c 0x04008040
+/********************************************/
+
+/* final DDR setup, before operation start */
+wm 32 0x021b0020 0x00000800
+wm 32 0x021b0818 0x00011117
+wm 32 0x021b001c 0x00000000
+/********************************************/
diff --git a/arch/arm/boards/udoo-neo/lowlevel.c b/arch/arm/boards/udoo-neo/lowlevel.c
new file mode 100644
index 000000000000..e78c2685fd78
--- /dev/null
+++ b/arch/arm/boards/udoo-neo/lowlevel.c
@@ -0,0 +1,39 @@
+#include <debug_ll.h>
+#include <common.h>
+#include <linux/sizes.h>
+#include <mach/generic.h>
+#include <asm/barebox-arm-head.h>
+#include <asm/barebox-arm.h>
+#include <mach/esdctl.h>
+
+static inline void setup_uart(void)
+{
+	void __iomem *iomuxbase = (void *)MX6_IOMUXC_BASE_ADDR;
+
+	imx6_ungate_all_peripherals();
+
+	writel(0x0, iomuxbase + 0x24);
+	writel(0x1b0b1, iomuxbase + 0x036C);
+	writel(0x0, iomuxbase + 0x28);
+	writel(0x1b0b1, iomuxbase + 0x0370);
+
+	imx6_uart_setup_ll();
+
+	putc_ll('>');
+}
+
+extern char __dtb_imx6sx_udoo_neo_full_start[];
+
+ENTRY_FUNCTION(start_imx6sx_udoo_neo, r0, r1, r2)
+{
+	void *fdt;
+
+	imx6_cpu_lowlevel_init();
+
+	if (IS_ENABLED(CONFIG_DEBUG_LL))
+		setup_uart();
+
+	fdt = __dtb_imx6sx_udoo_neo_full_start - get_runtime_offset();
+
+	imx6sx_barebox_entry(fdt);
+}
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
index 2342d35a4bd1..3129a7dfbce1 100644
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -82,6 +82,7 @@ pbl-dtb-$(CONFIG_MACH_TX25) += imx25-karo-tx25.dtb.o
 pbl-dtb-$(CONFIG_MACH_TX6X) += imx6dl-tx6u.dtb.o
 pbl-dtb-$(CONFIG_MACH_TX6X) += imx6q-tx6q.dtb.o
 pbl-dtb-$(CONFIG_MACH_UDOO) += imx6q-udoo.dtb.o
+pbl-dtb-$(CONFIG_MACH_UDOO_NEO) += imx6sx-udoo-neo-full.dtb.o
 pbl-dtb-$(CONFIG_MACH_USI_TOPKICK) += kirkwood-topkick-bb.dtb.o
 pbl-dtb-$(CONFIG_MACH_VARISCITE_MX6) += imx6q-var-custom.dtb.o
 pbl-dtb-$(CONFIG_MACH_VSCOM_BALTOS) += am335x-baltos-minimal.dtb.o
diff --git a/arch/arm/dts/imx6sx-udoo-neo-full.dts b/arch/arm/dts/imx6sx-udoo-neo-full.dts
new file mode 100644
index 000000000000..9203d40207c5
--- /dev/null
+++ b/arch/arm/dts/imx6sx-udoo-neo-full.dts
@@ -0,0 +1,4 @@
+#include <arm/imx6sx-udoo-neo-full.dts>
+
+/{
+};
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index 80f53ce124c1..c0aa74c93a33 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -356,6 +356,10 @@ config MACH_UDOO
 	bool "Freescale i.MX6 UDOO Board"
 	select ARCH_IMX6
 
+config MACH_UDOO_NEO
+	bool "i.MX6 UDOO Neo Board (full variant)"
+	select ARCH_IMX6SX
+
 config MACH_VARISCITE_MX6
 	bool "Variscite i.MX6 Quad SOM"
 	select ARCH_IMX6
diff --git a/arch/arm/mach-imx/include/mach/esdctl.h b/arch/arm/mach-imx/include/mach/esdctl.h
index 66dcc8974cfb..bd6092febca4 100644
--- a/arch/arm/mach-imx/include/mach/esdctl.h
+++ b/arch/arm/mach-imx/include/mach/esdctl.h
@@ -137,6 +137,7 @@ void __noreturn imx51_barebox_entry(void *boarddata);
 void __noreturn imx53_barebox_entry(void *boarddata);
 void __noreturn imx6q_barebox_entry(void *boarddata);
 void __noreturn imx6ul_barebox_entry(void *boarddata);
+#define imx6sx_barebox_entry(boarddata) imx6ul_barebox_entry(boarddata)
 void imx_esdctl_disable(void);
 #endif
 
diff --git a/images/Makefile.imx b/images/Makefile.imx
index cdad2e0b8826..867ff5f6a564 100644
--- a/images/Makefile.imx
+++ b/images/Makefile.imx
@@ -260,6 +260,11 @@ CFG_start_imx6q_sabresd.pblx.imximg = $(board)/freescale-mx6-sabresd/flash-heade
 FILE_barebox-freescale-imx6q-sabresd.img = start_imx6q_sabresd.pblx.imximg
 image-$(CONFIG_MACH_SABRESD) += barebox-freescale-imx6q-sabresd.img
 
+pblx-$(CONFIG_MACH_UDOO_NEO) += start_imx6sx_udoo_neo
+CFG_start_imx6sx_udoo_neo.pblx.imximg = $(board)/udoo-neo/flash-header-mx6sx-udoo-neo_full.imxcfg
+FILE_barebox-udoo-neo.img = start_imx6sx_udoo_neo.pblx.imximg
+image-$(CONFIG_MACH_UDOO_NEO) += barebox-udoo-neo.img
+
 pblx-$(CONFIG_MACH_FREESCALE_IMX6SX_SABRESDB) += start_imx6sx_sabresdb
 CFG_start_imx6sx_sabresdb.pblx.imximg = $(board)/freescale-mx6sx-sabresdb/flash-header-mx6sx-sabresdb.imxcfg
 FILE_barebox-freescale-imx6sx-sabresdb.img = start_imx6sx_sabresdb.pblx.imximg
-- 
2.11.0


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] ARM: imx: add support for Udoo Neo full
  2017-06-27 19:03 [PATCH] ARM: imx: add support for Udoo Neo full Uwe Kleine-König
@ 2017-06-27 19:40 ` Stefan Lengfeld
  2017-06-28  8:16   ` Uwe Kleine-König
  2017-06-30  6:35   ` Sascha Hauer
  2017-06-30 19:46 ` Andrey Smirnov
  1 sibling, 2 replies; 7+ messages in thread
From: Stefan Lengfeld @ 2017-06-27 19:40 UTC (permalink / raw)
  To: Uwe Kleine-König; +Cc: barebox

Hi Uwe,

Just my too cents:

On Tue, Jun 27, 2017 at 09:03:17PM +0200, Uwe Kleine-König wrote:
> From: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> 
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> ---
> Hello,
> 
> note that this patch only makes the machine work if you don't choose
> CONSOLE_ACTIVATE_NONE or apply these patches:
> 
> 	of_device_is_stdout_path: simplify
> 	of_device_is_stdout_path: split off options and support aliases
> 
> that currently sit in next as 0e193b668479 and 23522645b3b3. That's
> because the (upstream) dts has:
> 
> 	stdout-path = "serial0:115200n8";
> 
> in /chosen that of_device_is_stdout_path doesn't understand without
> these.
> 
> Best regards
> Uwe
> 
>  arch/arm/boards/Makefile                           |   1 +
>  arch/arm/boards/udoo-neo/Makefile                  |   2 +
>  arch/arm/boards/udoo-neo/board.c                   |  27 +++++
>  .../flash-header-mx6sx-udoo-neo_full.imxcfg        | 124 +++++++++++++++++++++
>  arch/arm/boards/udoo-neo/lowlevel.c                |  39 +++++++
>  arch/arm/dts/Makefile                              |   1 +
>  arch/arm/dts/imx6sx-udoo-neo-full.dts              |   4 +
>  arch/arm/mach-imx/Kconfig                          |   4 +
>  arch/arm/mach-imx/include/mach/esdctl.h            |   1 +
>  images/Makefile.imx                                |   5 +
>  10 files changed, 208 insertions(+)
>  create mode 100644 arch/arm/boards/udoo-neo/Makefile
>  create mode 100644 arch/arm/boards/udoo-neo/board.c
>  create mode 100644 arch/arm/boards/udoo-neo/flash-header-mx6sx-udoo-neo_full.imxcfg
>  create mode 100644 arch/arm/boards/udoo-neo/lowlevel.c
>  create mode 100644 arch/arm/dts/imx6sx-udoo-neo-full.dts
> 
> diff --git a/arch/arm/boards/Makefile b/arch/arm/boards/Makefile
> index 0ecfb3e4b398..98f923a134a0 100644
> --- a/arch/arm/boards/Makefile
> +++ b/arch/arm/boards/Makefile
> @@ -130,6 +130,7 @@ obj-$(CONFIG_MACH_TX51)				+= karo-tx51/
>  obj-$(CONFIG_MACH_TX53)				+= karo-tx53/
>  obj-$(CONFIG_MACH_TX6X)				+= karo-tx6x/
>  obj-$(CONFIG_MACH_UDOO)				+= udoo/
> +obj-$(CONFIG_MACH_UDOO_NEO)			+= udoo-neo/
>  obj-$(CONFIG_MACH_USB_A9260)			+= usb-a926x/
>  obj-$(CONFIG_MACH_USB_A9263)			+= usb-a926x/
>  obj-$(CONFIG_MACH_USB_A9G20)			+= usb-a926x/
> diff --git a/arch/arm/boards/udoo-neo/Makefile b/arch/arm/boards/udoo-neo/Makefile
> new file mode 100644
> index 000000000000..01c7a259e9a5
> --- /dev/null
> +++ b/arch/arm/boards/udoo-neo/Makefile
> @@ -0,0 +1,2 @@
> +obj-y += board.o
> +lwl-y += lowlevel.o
> diff --git a/arch/arm/boards/udoo-neo/board.c b/arch/arm/boards/udoo-neo/board.c
> new file mode 100644
> index 000000000000..9bf480305d70
> --- /dev/null
> +++ b/arch/arm/boards/udoo-neo/board.c
> @@ -0,0 +1,27 @@
> +/*
> + * Copyright (C) 2014 Pengutronix, Sascha Hauer

Maybe add or replace your copyright here. At least you have changed some
strings and function names.

> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * version 2, as published by the Free Software Foundation.
> + *
> + * 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.
> + */
> +
> +#include <common.h>
> +#include <init.h>
> +#include <linux/clk.h>
> +
> +static int imx6sx_udoneo_coredevices_init(void)
> +{
> +	if (!of_machine_is_compatible("fsl,imx6sx-udoo-neo"))
> +		return 0;
> +
> +	barebox_set_hostname("mx6sx-udooneo");
> +
> +	return 0;
> +}
> +coredevice_initcall(imx6sx_udoneo_coredevices_init);
> diff --git a/arch/arm/boards/udoo-neo/flash-header-mx6sx-udoo-neo_full.imxcfg b/arch/arm/boards/udoo-neo/flash-header-mx6sx-udoo-neo_full.imxcfg
> new file mode 100644
> index 000000000000..176aff49b3ec
> --- /dev/null
> +++ b/arch/arm/boards/udoo-neo/flash-header-mx6sx-udoo-neo_full.imxcfg
> @@ -0,0 +1,124 @@
> +loadaddr 0x80000000
> +soc imx6
> +dcdofs 0x400

I'm always wondering where the magic values in the flash headers are
coming from. Whether they are copied from u-boot or another
variant/board or completely self-made or provided by a friendly hardware
engineer in an Excel sheet ;-) Maybe you can add a comment here or in
the commit message. But this would be a new convention, because I have
not seen it in other flash headers yet.

The rest looks good.

Kind regards,
	Stefan Lengfeld

> +
> +/* Enable all clocks */
> +wm 32 0x020c4068 0xffffffff
> +wm 32 0x020c406c 0xffffffff
> +wm 32 0x020c4070 0xffffffff
> +wm 32 0x020c4074 0xffffffff
> +wm 32 0x020c4078 0xffffffff
> +wm 32 0x020c407c 0xffffffff
> +wm 32 0x020c4080 0xffffffff
> +wm 32 0x020c4084 0xffffffff
> +/********************************************/
> +
> +/* IOMUX */
> +/* DDR IO TYPE */
> +wm 32 0x020e0618 0x000c0000
> +wm 32 0x020e05fc 0x00000000
> +/********************************************/
> +
> +/* CLOCK */
> +wm 32 0x020e032c 0x00000030
> +/********************************************/
> +
> +/* ADDRESS */
> +wm 32 0x020e0300 0x00000020
> +wm 32 0x020e02fc 0x00000020
> +wm 32 0x020e05f4 0x00000020
> +/********************************************/
> +
> +/* CONTROL */
> +wm 32 0x020e0340 0x00000020
> +
> +wm 32 0x020e0320 0x00000000
> +wm 32 0x020e0310 0x00000020
> +wm 32 0x020e0314 0x00000020
> +wm 32 0x020e0614 0x00000020
> +/********************************************/
> +
> +/* DATA STROBE */
> +wm 32 0x020e05f8 0x00020000
> +wm 32 0x020e0330 0x00000028
> +wm 32 0x020e0334 0x00000028
> +wm 32 0x020e0338 0x00000028
> +wm 32 0x020e033c 0x00000028
> +/********************************************/
> +
> +/* DATA */
> +wm 32 0x020e0608 0x00020000
> +wm 32 0x020e060c 0x00000028
> +wm 32 0x020e0610 0x00000028
> +wm 32 0x020e061c 0x00000028
> +wm 32 0x020e0620 0x00000028
> +wm 32 0x020e02ec 0x00000028
> +wm 32 0x020e02f0 0x00000028
> +wm 32 0x020e02f4 0x00000028
> +wm 32 0x020e02f8 0x00000028
> +/********************************************/
> +
> +/* Calibrations */
> +/* ZQ */
> +wm 32 0x021b0800 0xa1390003
> +/********************************************/
> +
> +/* write leveling */
> +wm 32 0x021b080c 0x001E0022
> +wm 32 0x021b0810 0x001C0019
> +/********************************************/
> +
> +/* DQS Read Gate */
> +wm 32 0x021b083c 0x41540150
> +wm 32 0x021b0840 0x01440138
> +/********************************************/
> +
> +/* Read/Write Delay */
> +wm 32 0x021b0848 0x403E4644
> +wm 32 0x021b0850 0x3C3A4038
> +/********************************************/
> +
> +/* read data bit delay */
> +wm 32 0x021b081c 0x33333333
> +wm 32 0x021b0820 0x33333333
> +wm 32 0x021b0824 0x33333333
> +wm 32 0x021b0828 0x33333333
> +/********************************************/
> +
> +/* Complete calibration by forced measurment */
> +wm 32 0x021b08b8 0x00000800
> +/********************************************/
> +
> +/* MMDC init */
> +/* in DDR3, 64-bit mode, only MMDC0 is initiated */
> +wm 32 0x021b0004 0x0002002d
> +wm 32 0x021b0008 0x00333030
> +wm 32 0x021b000c 0x676b52f3
> +wm 32 0x021b0010 0xb66d8b63
> +wm 32 0x021b0014 0x01ff00db
> +wm 32 0x021b0018 0x00011740
> +wm 32 0x021b001c 0x00008000
> +wm 32 0x021b002c 0x000026d2
> +wm 32 0x021b0030 0x006b1023
> +wm 32 0x021b0040 0x0000005f
> +wm 32 0x021b0000 0x83190000
> +/********************************************/
> +
> +/* Initialize MT41K256M16HA-125 */
> +/* MR2 */
> +wm 32 0x021b001c 0x04008032
> +/* MR3 */
> +wm 32 0x021b001c 0x00008033
> +/* MR1 */
> +wm 32 0x021b001c 0x00048031
> +/* MR0 */
> +wm 32 0x021b001c 0x05208030
> +/* DDR device ZQ calibration */
> +wm 32 0x021b001c 0x04008040
> +/********************************************/
> +
> +/* final DDR setup, before operation start */
> +wm 32 0x021b0020 0x00000800
> +wm 32 0x021b0818 0x00011117
> +wm 32 0x021b001c 0x00000000
> +/********************************************/
> diff --git a/arch/arm/boards/udoo-neo/lowlevel.c b/arch/arm/boards/udoo-neo/lowlevel.c
> new file mode 100644
> index 000000000000..e78c2685fd78
> --- /dev/null
> +++ b/arch/arm/boards/udoo-neo/lowlevel.c
> @@ -0,0 +1,39 @@
> +#include <debug_ll.h>
> +#include <common.h>
> +#include <linux/sizes.h>
> +#include <mach/generic.h>
> +#include <asm/barebox-arm-head.h>
> +#include <asm/barebox-arm.h>
> +#include <mach/esdctl.h>
> +
> +static inline void setup_uart(void)
> +{
> +	void __iomem *iomuxbase = (void *)MX6_IOMUXC_BASE_ADDR;
> +
> +	imx6_ungate_all_peripherals();
> +
> +	writel(0x0, iomuxbase + 0x24);
> +	writel(0x1b0b1, iomuxbase + 0x036C);
> +	writel(0x0, iomuxbase + 0x28);
> +	writel(0x1b0b1, iomuxbase + 0x0370);
> +
> +	imx6_uart_setup_ll();
> +
> +	putc_ll('>');
> +}
> +
> +extern char __dtb_imx6sx_udoo_neo_full_start[];
> +
> +ENTRY_FUNCTION(start_imx6sx_udoo_neo, r0, r1, r2)
> +{
> +	void *fdt;
> +
> +	imx6_cpu_lowlevel_init();
> +
> +	if (IS_ENABLED(CONFIG_DEBUG_LL))
> +		setup_uart();
> +
> +	fdt = __dtb_imx6sx_udoo_neo_full_start - get_runtime_offset();
> +
> +	imx6sx_barebox_entry(fdt);
> +}
> diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
> index 2342d35a4bd1..3129a7dfbce1 100644
> --- a/arch/arm/dts/Makefile
> +++ b/arch/arm/dts/Makefile
> @@ -82,6 +82,7 @@ pbl-dtb-$(CONFIG_MACH_TX25) += imx25-karo-tx25.dtb.o
>  pbl-dtb-$(CONFIG_MACH_TX6X) += imx6dl-tx6u.dtb.o
>  pbl-dtb-$(CONFIG_MACH_TX6X) += imx6q-tx6q.dtb.o
>  pbl-dtb-$(CONFIG_MACH_UDOO) += imx6q-udoo.dtb.o
> +pbl-dtb-$(CONFIG_MACH_UDOO_NEO) += imx6sx-udoo-neo-full.dtb.o
>  pbl-dtb-$(CONFIG_MACH_USI_TOPKICK) += kirkwood-topkick-bb.dtb.o
>  pbl-dtb-$(CONFIG_MACH_VARISCITE_MX6) += imx6q-var-custom.dtb.o
>  pbl-dtb-$(CONFIG_MACH_VSCOM_BALTOS) += am335x-baltos-minimal.dtb.o
> diff --git a/arch/arm/dts/imx6sx-udoo-neo-full.dts b/arch/arm/dts/imx6sx-udoo-neo-full.dts
> new file mode 100644
> index 000000000000..9203d40207c5
> --- /dev/null
> +++ b/arch/arm/dts/imx6sx-udoo-neo-full.dts
> @@ -0,0 +1,4 @@
> +#include <arm/imx6sx-udoo-neo-full.dts>
> +
> +/{
> +};
> diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
> index 80f53ce124c1..c0aa74c93a33 100644
> --- a/arch/arm/mach-imx/Kconfig
> +++ b/arch/arm/mach-imx/Kconfig
> @@ -356,6 +356,10 @@ config MACH_UDOO
>  	bool "Freescale i.MX6 UDOO Board"
>  	select ARCH_IMX6
>  
> +config MACH_UDOO_NEO
> +	bool "i.MX6 UDOO Neo Board (full variant)"
> +	select ARCH_IMX6SX
> +
>  config MACH_VARISCITE_MX6
>  	bool "Variscite i.MX6 Quad SOM"
>  	select ARCH_IMX6
> diff --git a/arch/arm/mach-imx/include/mach/esdctl.h b/arch/arm/mach-imx/include/mach/esdctl.h
> index 66dcc8974cfb..bd6092febca4 100644
> --- a/arch/arm/mach-imx/include/mach/esdctl.h
> +++ b/arch/arm/mach-imx/include/mach/esdctl.h
> @@ -137,6 +137,7 @@ void __noreturn imx51_barebox_entry(void *boarddata);
>  void __noreturn imx53_barebox_entry(void *boarddata);
>  void __noreturn imx6q_barebox_entry(void *boarddata);
>  void __noreturn imx6ul_barebox_entry(void *boarddata);
> +#define imx6sx_barebox_entry(boarddata) imx6ul_barebox_entry(boarddata)
>  void imx_esdctl_disable(void);
>  #endif
>  
> diff --git a/images/Makefile.imx b/images/Makefile.imx
> index cdad2e0b8826..867ff5f6a564 100644
> --- a/images/Makefile.imx
> +++ b/images/Makefile.imx
> @@ -260,6 +260,11 @@ CFG_start_imx6q_sabresd.pblx.imximg = $(board)/freescale-mx6-sabresd/flash-heade
>  FILE_barebox-freescale-imx6q-sabresd.img = start_imx6q_sabresd.pblx.imximg
>  image-$(CONFIG_MACH_SABRESD) += barebox-freescale-imx6q-sabresd.img
>  
> +pblx-$(CONFIG_MACH_UDOO_NEO) += start_imx6sx_udoo_neo
> +CFG_start_imx6sx_udoo_neo.pblx.imximg = $(board)/udoo-neo/flash-header-mx6sx-udoo-neo_full.imxcfg
> +FILE_barebox-udoo-neo.img = start_imx6sx_udoo_neo.pblx.imximg
> +image-$(CONFIG_MACH_UDOO_NEO) += barebox-udoo-neo.img
> +
>  pblx-$(CONFIG_MACH_FREESCALE_IMX6SX_SABRESDB) += start_imx6sx_sabresdb
>  CFG_start_imx6sx_sabresdb.pblx.imximg = $(board)/freescale-mx6sx-sabresdb/flash-header-mx6sx-sabresdb.imxcfg
>  FILE_barebox-freescale-imx6sx-sabresdb.img = start_imx6sx_sabresdb.pblx.imximg
> -- 
> 2.11.0
> 
> 
> _______________________________________________
> barebox mailing list
> barebox@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] ARM: imx: add support for Udoo Neo full
  2017-06-27 19:40 ` Stefan Lengfeld
@ 2017-06-28  8:16   ` Uwe Kleine-König
  2017-06-30  6:35   ` Sascha Hauer
  1 sibling, 0 replies; 7+ messages in thread
From: Uwe Kleine-König @ 2017-06-28  8:16 UTC (permalink / raw)
  To: Stefan Lengfeld; +Cc: barebox

Hello Stefan,

On Tue, Jun 27, 2017 at 09:40:02PM +0200, Stefan Lengfeld wrote:
> > new file mode 100644
> > index 000000000000..9bf480305d70
> > --- /dev/null
> > +++ b/arch/arm/boards/udoo-neo/board.c
> > @@ -0,0 +1,27 @@
> > +/*
> > + * Copyright (C) 2014 Pengutronix, Sascha Hauer
> 
> Maybe add or replace your copyright here. At least you have changed some
> strings and function names.

I wonder if a board.c like this is copyrightable at all and don't feel
an urge to eternalize my name there.
 
> > + * This program is free software; you can redistribute it and/or
> > + * modify it under the terms of the GNU General Public License
> > + * version 2, as published by the Free Software Foundation.
> > + *
> > + * 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.
> > + */
> > +
> > +#include <common.h>
> > +#include <init.h>
> > +#include <linux/clk.h>
> > +
> > +static int imx6sx_udoneo_coredevices_init(void)
> > +{
> > +	if (!of_machine_is_compatible("fsl,imx6sx-udoo-neo"))
> > +		return 0;
> > +
> > +	barebox_set_hostname("mx6sx-udooneo");
> > +
> > +	return 0;
> > +}
> > +coredevice_initcall(imx6sx_udoneo_coredevices_init);
> > diff --git a/arch/arm/boards/udoo-neo/flash-header-mx6sx-udoo-neo_full.imxcfg b/arch/arm/boards/udoo-neo/flash-header-mx6sx-udoo-neo_full.imxcfg
> > new file mode 100644
> > index 000000000000..176aff49b3ec
> > --- /dev/null
> > +++ b/arch/arm/boards/udoo-neo/flash-header-mx6sx-udoo-neo_full.imxcfg
> > @@ -0,0 +1,124 @@
> > +loadaddr 0x80000000
> > +soc imx6
> > +dcdofs 0x400
> 
> I'm always wondering where the magic values in the flash headers are
> coming from. Whether they are copied from u-boot or another
> variant/board or completely self-made or provided by a friendly hardware
> engineer in an Excel sheet ;-) Maybe you can add a comment here or in
> the commit message. But this would be a new convention, because I have
> not seen it in other flash headers yet.

I got it in a patch from Sascha, don't know where he got it from. I
guess it's a mixure of copy-and-paste from other imxcfgs and the RAMs
datasheet.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] ARM: imx: add support for Udoo Neo full
  2017-06-27 19:40 ` Stefan Lengfeld
  2017-06-28  8:16   ` Uwe Kleine-König
@ 2017-06-30  6:35   ` Sascha Hauer
  2017-06-30  9:06     ` Uwe Kleine-König
  1 sibling, 1 reply; 7+ messages in thread
From: Sascha Hauer @ 2017-06-30  6:35 UTC (permalink / raw)
  To: Stefan Lengfeld; +Cc: barebox, Uwe Kleine-König

On Tue, Jun 27, 2017 at 09:40:02PM +0200, Stefan Lengfeld wrote:
> Hi Uwe,
> 
> Just my too cents:
> 
> On Tue, Jun 27, 2017 at 09:03:17PM +0200, Uwe Kleine-König wrote:
> > From: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> > 
> > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> > +++ b/arch/arm/boards/udoo-neo/flash-header-mx6sx-udoo-neo_full.imxcfg
> > @@ -0,0 +1,124 @@
> > +loadaddr 0x80000000
> > +soc imx6
> > +dcdofs 0x400
> 
> I'm always wondering where the magic values in the flash headers are
> coming from. Whether they are copied from u-boot or another
> variant/board or completely self-made or provided by a friendly hardware
> engineer in an Excel sheet ;-) Maybe you can add a comment here or in
> the commit message. But this would be a new convention, because I have
> not seen it in other flash headers yet.

Adding this information is a good idea. In this case the values come
from:

/*
 * These values are taken from:
 * repository: https://github.com/UDOOboard/uboot-imx
 * branch: udoo/2015.04.imx
 * file: board/udoo/udoo_neo/udoo_neo_basic.cfg
 */

I was about to apply Uwes patch along with this comment, but I just
realized that the values are from udoo_neo_basic whereas the patch
seems to support the udoo_neo_full. The udoo neo full has slightly
different calibration values in the branch above, but probably they
work on both boards. Uwe, do you know which hardware we actually have
and support?

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] ARM: imx: add support for Udoo Neo full
  2017-06-30  6:35   ` Sascha Hauer
@ 2017-06-30  9:06     ` Uwe Kleine-König
  2017-06-30  9:28       ` Sascha Hauer
  0 siblings, 1 reply; 7+ messages in thread
From: Uwe Kleine-König @ 2017-06-30  9:06 UTC (permalink / raw)
  To: Sascha Hauer, Stefan Lengfeld; +Cc: barebox


[-- Attachment #1.1.1: Type: text/plain, Size: 827 bytes --]

Hello Sascha,

On 06/30/2017 08:35 AM, Sascha Hauer wrote:
> Adding this information is a good idea. In this case the values come
> from:
> 
> /*
>  * These values are taken from:
>  * repository: https://github.com/UDOOboard/uboot-imx
>  * branch: udoo/2015.04.imx
>  * file: board/udoo/udoo_neo/udoo_neo_basic.cfg
>  */
> 
> I was about to apply Uwes patch along with this comment, but I just
> realized that the values are from udoo_neo_basic whereas the patch
> seems to support the udoo_neo_full. The udoo neo full has slightly
> different calibration values in the branch above, but probably they
> work on both boards. Uwe, do you know which hardware we actually have
> and support?

The patch I submitted is tested only on a udoo neo full. Does this
answer your question?

Best regards
Uwe



[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 149 bytes --]

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] ARM: imx: add support for Udoo Neo full
  2017-06-30  9:06     ` Uwe Kleine-König
@ 2017-06-30  9:28       ` Sascha Hauer
  0 siblings, 0 replies; 7+ messages in thread
From: Sascha Hauer @ 2017-06-30  9:28 UTC (permalink / raw)
  To: Uwe Kleine-König; +Cc: Stefan Lengfeld, barebox

On Fri, Jun 30, 2017 at 11:06:11AM +0200, Uwe Kleine-König wrote:
> Hello Sascha,
> 
> On 06/30/2017 08:35 AM, Sascha Hauer wrote:
> > Adding this information is a good idea. In this case the values come
> > from:
> > 
> > /*
> >  * These values are taken from:
> >  * repository: https://github.com/UDOOboard/uboot-imx
> >  * branch: udoo/2015.04.imx
> >  * file: board/udoo/udoo_neo/udoo_neo_basic.cfg
> >  */
> > 
> > I was about to apply Uwes patch along with this comment, but I just
> > realized that the values are from udoo_neo_basic whereas the patch
> > seems to support the udoo_neo_full. The udoo neo full has slightly
> > different calibration values in the branch above, but probably they
> > work on both boards. Uwe, do you know which hardware we actually have
> > and support?
> 
> The patch I submitted is tested only on a udoo neo full. Does this
> answer your question?

Then we should probably use the register values for the udoo neo full,
not for the udoo neo basic.

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] ARM: imx: add support for Udoo Neo full
  2017-06-27 19:03 [PATCH] ARM: imx: add support for Udoo Neo full Uwe Kleine-König
  2017-06-27 19:40 ` Stefan Lengfeld
@ 2017-06-30 19:46 ` Andrey Smirnov
  1 sibling, 0 replies; 7+ messages in thread
From: Andrey Smirnov @ 2017-06-30 19:46 UTC (permalink / raw)
  To: Uwe Kleine-König; +Cc: barebox, Uwe Kleine-König

On Tue, Jun 27, 2017 at 12:03 PM, Uwe Kleine-König
<uwe@kleine-koenig.org> wrote:
> From: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
>
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> ---
> Hello,
>
> note that this patch only makes the machine work if you don't choose
> CONSOLE_ACTIVATE_NONE or apply these patches:
>
>         of_device_is_stdout_path: simplify
>         of_device_is_stdout_path: split off options and support aliases
>
> that currently sit in next as 0e193b668479 and 23522645b3b3. That's
> because the (upstream) dts has:
>
>         stdout-path = "serial0:115200n8";
>
> in /chosen that of_device_is_stdout_path doesn't understand without
> these.
>
> Best regards
> Uwe
>
>  arch/arm/boards/Makefile                           |   1 +
>  arch/arm/boards/udoo-neo/Makefile                  |   2 +
>  arch/arm/boards/udoo-neo/board.c                   |  27 +++++
>  .../flash-header-mx6sx-udoo-neo_full.imxcfg        | 124 +++++++++++++++++++++
>  arch/arm/boards/udoo-neo/lowlevel.c                |  39 +++++++
>  arch/arm/dts/Makefile                              |   1 +
>  arch/arm/dts/imx6sx-udoo-neo-full.dts              |   4 +
>  arch/arm/mach-imx/Kconfig                          |   4 +
>  arch/arm/mach-imx/include/mach/esdctl.h            |   1 +
>  images/Makefile.imx                                |   5 +
>  10 files changed, 208 insertions(+)
>  create mode 100644 arch/arm/boards/udoo-neo/Makefile
>  create mode 100644 arch/arm/boards/udoo-neo/board.c
>  create mode 100644 arch/arm/boards/udoo-neo/flash-header-mx6sx-udoo-neo_full.imxcfg
>  create mode 100644 arch/arm/boards/udoo-neo/lowlevel.c
>  create mode 100644 arch/arm/dts/imx6sx-udoo-neo-full.dts
>
> diff --git a/arch/arm/boards/Makefile b/arch/arm/boards/Makefile
> index 0ecfb3e4b398..98f923a134a0 100644
> --- a/arch/arm/boards/Makefile
> +++ b/arch/arm/boards/Makefile
> @@ -130,6 +130,7 @@ obj-$(CONFIG_MACH_TX51)                             += karo-tx51/
>  obj-$(CONFIG_MACH_TX53)                                += karo-tx53/
>  obj-$(CONFIG_MACH_TX6X)                                += karo-tx6x/
>  obj-$(CONFIG_MACH_UDOO)                                += udoo/
> +obj-$(CONFIG_MACH_UDOO_NEO)                    += udoo-neo/
>  obj-$(CONFIG_MACH_USB_A9260)                   += usb-a926x/
>  obj-$(CONFIG_MACH_USB_A9263)                   += usb-a926x/
>  obj-$(CONFIG_MACH_USB_A9G20)                   += usb-a926x/
> diff --git a/arch/arm/boards/udoo-neo/Makefile b/arch/arm/boards/udoo-neo/Makefile
> new file mode 100644
> index 000000000000..01c7a259e9a5
> --- /dev/null
> +++ b/arch/arm/boards/udoo-neo/Makefile
> @@ -0,0 +1,2 @@
> +obj-y += board.o
> +lwl-y += lowlevel.o
> diff --git a/arch/arm/boards/udoo-neo/board.c b/arch/arm/boards/udoo-neo/board.c
> new file mode 100644
> index 000000000000..9bf480305d70
> --- /dev/null
> +++ b/arch/arm/boards/udoo-neo/board.c
> @@ -0,0 +1,27 @@
> +/*
> + * Copyright (C) 2014 Pengutronix, Sascha Hauer
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * version 2, as published by the Free Software Foundation.
> + *
> + * 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.
> + */
> +
> +#include <common.h>
> +#include <init.h>
> +#include <linux/clk.h>
> +
> +static int imx6sx_udoneo_coredevices_init(void)
> +{
> +       if (!of_machine_is_compatible("fsl,imx6sx-udoo-neo"))
> +               return 0;
> +
> +       barebox_set_hostname("mx6sx-udooneo");
> +
> +       return 0;
> +}
> +coredevice_initcall(imx6sx_udoneo_coredevices_init);
> diff --git a/arch/arm/boards/udoo-neo/flash-header-mx6sx-udoo-neo_full.imxcfg b/arch/arm/boards/udoo-neo/flash-header-mx6sx-udoo-neo_full.imxcfg
> new file mode 100644
> index 000000000000..176aff49b3ec
> --- /dev/null
> +++ b/arch/arm/boards/udoo-neo/flash-header-mx6sx-udoo-neo_full.imxcfg
> @@ -0,0 +1,124 @@
> +loadaddr 0x80000000
> +soc imx6
> +dcdofs 0x400
> +
> +/* Enable all clocks */
> +wm 32 0x020c4068 0xffffffff
> +wm 32 0x020c406c 0xffffffff
> +wm 32 0x020c4070 0xffffffff
> +wm 32 0x020c4074 0xffffffff
> +wm 32 0x020c4078 0xffffffff
> +wm 32 0x020c407c 0xffffffff
> +wm 32 0x020c4080 0xffffffff
> +wm 32 0x020c4084 0xffffffff
> +/********************************************/
> +
> +/* IOMUX */
> +/* DDR IO TYPE */
> +wm 32 0x020e0618 0x000c0000
> +wm 32 0x020e05fc 0x00000000
> +/********************************************/
> +
> +/* CLOCK */
> +wm 32 0x020e032c 0x00000030
> +/********************************************/
> +
> +/* ADDRESS */
> +wm 32 0x020e0300 0x00000020
> +wm 32 0x020e02fc 0x00000020
> +wm 32 0x020e05f4 0x00000020
> +/********************************************/
> +
> +/* CONTROL */
> +wm 32 0x020e0340 0x00000020
> +
> +wm 32 0x020e0320 0x00000000
> +wm 32 0x020e0310 0x00000020
> +wm 32 0x020e0314 0x00000020
> +wm 32 0x020e0614 0x00000020
> +/********************************************/
> +
> +/* DATA STROBE */
> +wm 32 0x020e05f8 0x00020000
> +wm 32 0x020e0330 0x00000028
> +wm 32 0x020e0334 0x00000028
> +wm 32 0x020e0338 0x00000028
> +wm 32 0x020e033c 0x00000028
> +/********************************************/
> +
> +/* DATA */
> +wm 32 0x020e0608 0x00020000
> +wm 32 0x020e060c 0x00000028
> +wm 32 0x020e0610 0x00000028
> +wm 32 0x020e061c 0x00000028
> +wm 32 0x020e0620 0x00000028
> +wm 32 0x020e02ec 0x00000028
> +wm 32 0x020e02f0 0x00000028
> +wm 32 0x020e02f4 0x00000028
> +wm 32 0x020e02f8 0x00000028
> +/********************************************/
> +
> +/* Calibrations */
> +/* ZQ */
> +wm 32 0x021b0800 0xa1390003
> +/********************************************/
> +
> +/* write leveling */
> +wm 32 0x021b080c 0x001E0022
> +wm 32 0x021b0810 0x001C0019
> +/********************************************/
> +
> +/* DQS Read Gate */
> +wm 32 0x021b083c 0x41540150
> +wm 32 0x021b0840 0x01440138
> +/********************************************/
> +
> +/* Read/Write Delay */
> +wm 32 0x021b0848 0x403E4644
> +wm 32 0x021b0850 0x3C3A4038
> +/********************************************/
> +
> +/* read data bit delay */
> +wm 32 0x021b081c 0x33333333
> +wm 32 0x021b0820 0x33333333
> +wm 32 0x021b0824 0x33333333
> +wm 32 0x021b0828 0x33333333
> +/********************************************/
> +
> +/* Complete calibration by forced measurment */
> +wm 32 0x021b08b8 0x00000800
> +/********************************************/
> +
> +/* MMDC init */
> +/* in DDR3, 64-bit mode, only MMDC0 is initiated */
> +wm 32 0x021b0004 0x0002002d
> +wm 32 0x021b0008 0x00333030
> +wm 32 0x021b000c 0x676b52f3
> +wm 32 0x021b0010 0xb66d8b63
> +wm 32 0x021b0014 0x01ff00db
> +wm 32 0x021b0018 0x00011740
> +wm 32 0x021b001c 0x00008000
> +wm 32 0x021b002c 0x000026d2
> +wm 32 0x021b0030 0x006b1023
> +wm 32 0x021b0040 0x0000005f
> +wm 32 0x021b0000 0x83190000
> +/********************************************/
> +
> +/* Initialize MT41K256M16HA-125 */
> +/* MR2 */
> +wm 32 0x021b001c 0x04008032
> +/* MR3 */
> +wm 32 0x021b001c 0x00008033
> +/* MR1 */
> +wm 32 0x021b001c 0x00048031
> +/* MR0 */
> +wm 32 0x021b001c 0x05208030
> +/* DDR device ZQ calibration */
> +wm 32 0x021b001c 0x04008040
> +/********************************************/
> +
> +/* final DDR setup, before operation start */
> +wm 32 0x021b0020 0x00000800
> +wm 32 0x021b0818 0x00011117
> +wm 32 0x021b001c 0x00000000
> +/********************************************/
> diff --git a/arch/arm/boards/udoo-neo/lowlevel.c b/arch/arm/boards/udoo-neo/lowlevel.c
> new file mode 100644
> index 000000000000..e78c2685fd78
> --- /dev/null
> +++ b/arch/arm/boards/udoo-neo/lowlevel.c
> @@ -0,0 +1,39 @@
> +#include <debug_ll.h>
> +#include <common.h>
> +#include <linux/sizes.h>
> +#include <mach/generic.h>
> +#include <asm/barebox-arm-head.h>
> +#include <asm/barebox-arm.h>
> +#include <mach/esdctl.h>
> +
> +static inline void setup_uart(void)
> +{
> +       void __iomem *iomuxbase = (void *)MX6_IOMUXC_BASE_ADDR;
> +
> +       imx6_ungate_all_peripherals();
> +
> +       writel(0x0, iomuxbase + 0x24);
> +       writel(0x1b0b1, iomuxbase + 0x036C);
> +       writel(0x0, iomuxbase + 0x28);
> +       writel(0x1b0b1, iomuxbase + 0x0370);

You can use "imx_setup_pad()" from <mach/iomux-v3.h> and avoid having
to use those magic numbers. See
arch/arm/boards/freescale-mx6-sabresd/lowlevel.c for example.

Thanks,
Andrey Smirnov

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2017-06-30 19:46 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-27 19:03 [PATCH] ARM: imx: add support for Udoo Neo full Uwe Kleine-König
2017-06-27 19:40 ` Stefan Lengfeld
2017-06-28  8:16   ` Uwe Kleine-König
2017-06-30  6:35   ` Sascha Hauer
2017-06-30  9:06     ` Uwe Kleine-König
2017-06-30  9:28       ` Sascha Hauer
2017-06-30 19:46 ` Andrey Smirnov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox