mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH v2] Add support for Baltos systems
@ 2016-05-30 14:43 yegorslists
  2016-06-01  7:08 ` Sascha Hauer
  0 siblings, 1 reply; 6+ messages in thread
From: yegorslists @ 2016-05-30 14:43 UTC (permalink / raw)
  To: barebox

From: Yegor Yefremov <yegorslists@googlemail.com>

OnRISC Baltos devices are based on a am335x SoC and can be booted
either from MMC or NAND.

Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
---
Changes:
        v2: - remove typedef
            - rework invalid EEPROM content handling
            - add mmc0 as boot device for MMC boot source

 arch/arm/boards/Makefile                |   1 +
 arch/arm/boards/vscom-baltos/Makefile   |   2 +
 arch/arm/boards/vscom-baltos/board.c    | 148 +++++++++++
 arch/arm/boards/vscom-baltos/lowlevel.c | 116 +++++++++
 arch/arm/dts/Makefile                   |   1 +
 arch/arm/dts/am335x-baltos-minimal.dts  | 439 ++++++++++++++++++++++++++++++++
 arch/arm/mach-omap/Kconfig              |   7 +
 images/Makefile.am33xx                  |   8 +
 8 files changed, 722 insertions(+)
 create mode 100644 arch/arm/boards/vscom-baltos/Makefile
 create mode 100644 arch/arm/boards/vscom-baltos/board.c
 create mode 100644 arch/arm/boards/vscom-baltos/lowlevel.c
 create mode 100644 arch/arm/dts/am335x-baltos-minimal.dts

diff --git a/arch/arm/boards/Makefile b/arch/arm/boards/Makefile
index 9241b66..9bf3154 100644
--- a/arch/arm/boards/Makefile
+++ b/arch/arm/boards/Makefile
@@ -135,3 +135,4 @@ obj-$(CONFIG_MACH_VIRT2REAL)			+= virt2real/
 obj-$(CONFIG_MACH_ZEDBOARD)			+= avnet-zedboard/
 obj-$(CONFIG_MACH_ZYLONITE)			+= zylonite/
 obj-$(CONFIG_MACH_VARISCITE_MX6)		+= variscite-mx6/
+obj-$(CONFIG_MACH_VSCOM_BALTOS)			+= vscom-baltos/
diff --git a/arch/arm/boards/vscom-baltos/Makefile b/arch/arm/boards/vscom-baltos/Makefile
new file mode 100644
index 0000000..092c31d
--- /dev/null
+++ b/arch/arm/boards/vscom-baltos/Makefile
@@ -0,0 +1,2 @@
+lwl-y += lowlevel.o
+obj-y += board.o
diff --git a/arch/arm/boards/vscom-baltos/board.c b/arch/arm/boards/vscom-baltos/board.c
new file mode 100644
index 0000000..1b7022e
--- /dev/null
+++ b/arch/arm/boards/vscom-baltos/board.c
@@ -0,0 +1,148 @@
+/*
+ * (C) Copyright 2008
+ * Texas Instruments, <www.ti.com>
+ * Raghavendra KH <r-khandenahally@ti.com>
+ *
+ * Copyright (C) 2012 Jan Luebbe <j.luebbe@pengutronix.de>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+/**
+ * @file
+ * @brief OnRISC Baltos Specific Board Initialization routines
+ */
+
+#include <common.h>
+#include <init.h>
+#include <driver.h>
+#include <envfs.h>
+#include <environment.h>
+#include <globalvar.h>
+#include <linux/sizes.h>
+#include <net.h>
+#include <envfs.h>
+#include <bootsource.h>
+#include <asm/armlinux.h>
+#include <generated/mach-types.h>
+#include <mach/am33xx-generic.h>
+#include <mach/am33xx-silicon.h>
+#include <mach/sys_info.h>
+#include <mach/syslib.h>
+#include <mach/gpmc.h>
+#include <linux/err.h>
+#include <mach/bbu.h>
+#include <libfile.h>
+
+static struct omap_barebox_part baltos_barebox_part = {
+	.nand_offset = SZ_512K,
+	.nand_size = 0x1e0000,
+};
+
+struct bsp_vs_hwparam {
+	uint32_t Magic;
+	uint32_t HwRev;
+	uint32_t SerialNumber;
+	char PrdDate[11];
+	uint16_t SystemId;
+	uint8_t MAC1[6];
+	uint8_t MAC2[6];
+	uint8_t MAC3[6];
+} __attribute__ ((packed));
+
+struct bsp_vs_hwparam hw_param;
+
+static int baltos_read_eeprom(void)
+{
+	size_t size;
+	char *buf, var_buf[32];
+	int rc;
+	unsigned char mac_addr[6];
+
+	rc = read_file_2("/dev/eeprom0",
+			 &size,
+			 (void *)&buf,
+			 sizeof(hw_param));
+	if (rc && rc != -EFBIG)
+		return rc;
+
+	memcpy(&hw_param, buf, sizeof(hw_param));
+
+	free(buf);
+
+	if (hw_param.Magic == 0xDEADBEEF) {
+		/* setup MAC1 */
+		mac_addr[0] = hw_param.MAC1[0];
+		mac_addr[1] = hw_param.MAC1[1];
+		mac_addr[2] = hw_param.MAC1[2];
+		mac_addr[3] = hw_param.MAC1[3];
+		mac_addr[4] = hw_param.MAC1[4];
+		mac_addr[5] = hw_param.MAC1[5];
+
+		eth_register_ethaddr(0, mac_addr);
+
+		/* setup MAC2 */
+		mac_addr[0] = hw_param.MAC2[0];
+		mac_addr[1] = hw_param.MAC2[1];
+		mac_addr[2] = hw_param.MAC2[2];
+		mac_addr[3] = hw_param.MAC2[3];
+		mac_addr[4] = hw_param.MAC2[4];
+		mac_addr[5] = hw_param.MAC2[5];
+
+		eth_register_ethaddr(1, mac_addr);
+	} else {
+		printf("Baltos: incorrect magic number (0x%x) "
+		       "in EEPROM\n",
+		       hw_param.Magic);
+
+		hw_param.SystemId = 0;
+	}
+
+	sprintf(var_buf, "%d", hw_param.SystemId);
+	globalvar_add_simple("board.id", var_buf);
+
+	return 0;
+}
+environment_initcall(baltos_read_eeprom);
+
+static int baltos_mem_init(void)
+{
+	uint32_t sdram_size;
+
+	if (!of_machine_is_compatible("vscom,onrisc"))
+		return 0;
+
+	sdram_size = SZ_256M;
+
+	arm_add_mem_device("ram0", 0x80000000, sdram_size);
+
+	return 0;
+}
+mem_initcall(baltos_mem_init);
+
+static int baltos_devices_init(void)
+{
+	if (!of_machine_is_compatible("vscom,onrisc"))
+		return 0;
+
+	globalvar_add_simple("board.variant", "baltos");
+
+	if (bootsource_get() == BOOTSOURCE_MMC)
+		omap_set_bootmmc_devname("mmc0");
+
+	omap_set_barebox_part(&baltos_barebox_part);
+
+	if (IS_ENABLED(CONFIG_SHELL_NONE))
+		return am33xx_of_register_bootdevice();
+
+	return 0;
+}
+coredevice_initcall(baltos_devices_init);
diff --git a/arch/arm/boards/vscom-baltos/lowlevel.c b/arch/arm/boards/vscom-baltos/lowlevel.c
new file mode 100644
index 0000000..0b5231e
--- /dev/null
+++ b/arch/arm/boards/vscom-baltos/lowlevel.c
@@ -0,0 +1,116 @@
+#include <init.h>
+#include <linux/sizes.h>
+#include <io.h>
+#include <linux/string.h>
+#include <debug_ll.h>
+#include <asm/barebox-arm-head.h>
+#include <asm/barebox-arm.h>
+#include <mach/am33xx-silicon.h>
+#include <mach/am33xx-clock.h>
+#include <mach/generic.h>
+#include <mach/sdrc.h>
+#include <mach/sys_info.h>
+#include <mach/syslib.h>
+#include <mach/am33xx-mux.h>
+#include <mach/am33xx-generic.h>
+#include <mach/wdt.h>
+
+static const struct am33xx_ddr_data ddr3_data = {
+	.rd_slave_ratio0        = 0x38,
+	.wr_dqs_slave_ratio0    = 0x44,
+	.fifo_we_slave_ratio0	= 0x94,
+	.wr_slave_ratio0        = 0x7D,
+	.use_rank0_delay	= 0x01,
+	.dll_lock_diff0		= 0x0,
+};
+
+static const struct am33xx_cmd_control ddr3_cmd_ctrl = {
+	.slave_ratio0	= 0x80,
+	.dll_lock_diff0	= 0x1,
+	.invert_clkout0	= 0x0,
+	.slave_ratio1	= 0x80,
+	.dll_lock_diff1	= 0x1,
+	.invert_clkout1	= 0x0,
+	.slave_ratio2	= 0x80,
+	.dll_lock_diff2	= 0x1,
+	.invert_clkout2	= 0x0,
+};
+
+static const struct am33xx_emif_regs ddr3_regs = {
+	.emif_read_latency	= 0x100007,
+	.emif_tim1		= 0x0AAAD4DB,
+	.emif_tim2		= 0x266B7FDA,
+	.emif_tim3		= 0x501F867F,
+	.zq_config		= 0x50074BE4,
+	.sdram_config		= 0x61C05332,
+	.sdram_config2		= 0x0,
+	.sdram_ref_ctrl		= 0xC30,
+};
+
+extern char __dtb_am335x_baltos_minimal_start[];
+
+/**
+ * @brief The basic entry point for board initialization.
+ *
+ * This is called as part of machine init (after arch init).
+ * This is again called with stack in SRAM, so not too many
+ * constructs possible here.
+ *
+ * @return void
+ */
+static noinline int baltos_sram_init(void)
+{
+	uint32_t sdram_size;
+	void *fdt;
+
+	fdt = __dtb_am335x_baltos_minimal_start;
+
+	sdram_size = SZ_256M;
+
+	/* WDT1 is already running when the bootloader gets control
+	 * Disable it to avoid "random" resets
+	 */
+	__raw_writel(WDT_DISABLE_CODE1, AM33XX_WDT_REG(WSPR));
+	while (__raw_readl(AM33XX_WDT_REG(WWPS)) != 0x0);
+	__raw_writel(WDT_DISABLE_CODE2, AM33XX_WDT_REG(WSPR));
+	while (__raw_readl(AM33XX_WDT_REG(WWPS)) != 0x0);
+
+	/* Setup the PLLs and the clocks for the peripherals */
+	am33xx_pll_init(MPUPLL_M_500, DDRPLL_M_400);
+	am335x_sdram_init(0x18B, &ddr3_cmd_ctrl, &ddr3_regs,
+			&ddr3_data);
+
+	am33xx_uart_soft_reset((void *)AM33XX_UART0_BASE);
+	am33xx_enable_uart0_pin_mux();
+	omap_uart_lowlevel_init((void *)AM33XX_UART0_BASE);
+	putc_ll('>');
+
+	barebox_arm_entry(0x80000000, sdram_size, fdt);
+}
+
+ENTRY_FUNCTION(start_am33xx_baltos_sram, bootinfo, r1, r2)
+{
+	am33xx_save_bootinfo((void *)bootinfo);
+
+	/*
+	 * Setup C environment, the board init code uses global variables.
+	 * Stackpointer has already been initialized by the ROM code.
+	 */
+	relocate_to_current_adr();
+	setup_c();
+
+	baltos_sram_init();
+}
+
+ENTRY_FUNCTION(start_am33xx_baltos_sdram, r0, r1, r2)
+{
+	uint32_t sdram_size;
+	void *fdt;
+
+	sdram_size = SZ_256M;
+	fdt = __dtb_am335x_baltos_minimal_start;
+
+	fdt -= get_runtime_offset();
+
+	barebox_arm_entry(0x80000000, sdram_size, fdt);
+}
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
index 813e098..0bfd17d 100644
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -75,5 +75,6 @@ pbl-dtb-$(CONFIG_MACH_TX6X) += imx6q-tx6q.dtb.o
 pbl-dtb-$(CONFIG_MACH_UDOO) += imx6q-udoo.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
 
 clean-files := *.dtb *.dtb.S .*.dtc .*.pre .*.dts *.dtb.lzo
diff --git a/arch/arm/dts/am335x-baltos-minimal.dts b/arch/arm/dts/am335x-baltos-minimal.dts
new file mode 100644
index 0000000..13eb91c
--- /dev/null
+++ b/arch/arm/dts/am335x-baltos-minimal.dts
@@ -0,0 +1,439 @@
+/*
+ * Copyright (C) 2012 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 version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/*
+ * VScom OnRISC
+ * http://www.vscom.de
+ */
+
+/dts-v1/;
+
+#include "am33xx.dtsi"
+#include <dt-bindings/pwm/pwm.h>
+
+/ {
+	model = "OnRISC Baltos";
+	compatible = "vscom,onrisc", "ti,am33xx";
+
+	chosen {
+		linux,stdout-path = &uart0;
+	};
+
+	cpus {
+		cpu@0 {
+			cpu0-supply = <&vdd1_reg>;
+		};
+	};
+
+	vbat: fixedregulator@0 {
+		compatible = "regulator-fixed";
+		regulator-name = "vbat";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		regulator-boot-on;
+	};
+};
+
+&am33xx_pinmux {
+	mmc1_pins: pinmux_mmc1_pins {
+		pinctrl-single,pins = <
+			0xf0 (MUX_MODE0 | INPUT_EN | PULL_UP)	/* mmc0_dat3.mmc0_dat3 */
+			0xf4 (MUX_MODE0 | INPUT_EN | PULL_UP)	/* mmc0_dat2.mmc0_dat2 */
+			0xf8 (MUX_MODE0 | INPUT_EN | PULL_UP)	/* mmc0_dat1.mmc0_dat1 */
+			0xfc (MUX_MODE0 | INPUT_EN | PULL_UP)	/* mmc0_dat0.mmc0_dat0 */
+			0x100 (MUX_MODE0 | INPUT_EN | PULL_UP)	/* mmc0_clk.mmc0_clk */
+			0x104 (MUX_MODE0 | INPUT_EN | PULL_UP)	/* mmc0_cmd.mmc0_cmd */
+		>;
+	};
+
+	i2c1_pins: pinmux_i2c1_pins {
+		pinctrl-single,pins = <
+			0x158 0x2a      /* spi0_d1.i2c1_sda_mux3, INPUT | MODE2 */
+			0x15c 0x2a      /* spi0_cs0.i2c1_scl_mux3, INPUT | MODE2 */
+		>;
+	};
+
+	tps65910_pins: pinmux_tps65910_pins {
+		pinctrl-single,pins = <
+			0x078 (PIN_INPUT_PULLUP | MUX_MODE7)      /* gpmc_ben1.gpio1[28] */
+		>;
+
+	};
+	tca6416_pins: pinmux_tca6416_pins {
+		pinctrl-single,pins = <
+			AM33XX_IOPAD(0x9b4, PIN_INPUT_PULLUP | MUX_MODE7)      /* xdma_event_intr1.gpio0[20] tca6416 stuff */
+		>;
+	};
+
+	uart0_pins: pinmux_uart0_pins {
+		pinctrl-single,pins = <
+			0x170 (PIN_INPUT_PULLUP | MUX_MODE0)	/* uart0_rxd.uart0_rxd */
+			0x174 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)		/* uart0_txd.uart0_txd */
+		>;
+	};
+
+	cpsw_default: cpsw_default {
+		pinctrl-single,pins = <
+			/* Slave 1 */
+			0x10c (PIN_INPUT_PULLDOWN | MUX_MODE1)       /* mii1_crs.rmii1_crs_dv */
+			0x114 (PIN_OUTPUT_PULLDOWN | MUX_MODE1)      /* mii1_tx_en.rmii1_txen */
+			0x124 (PIN_OUTPUT_PULLDOWN | MUX_MODE1)      /* mii1_txd1.rmii1_txd1 */
+			0x128 (PIN_OUTPUT_PULLDOWN | MUX_MODE1)      /* mii1_txd0.rmii1_txd0 */
+			0x13c (PIN_INPUT_PULLDOWN | MUX_MODE1)      /* mii1_rxd1.rmii1_rxd1 */
+			0x140 (PIN_INPUT_PULLDOWN | MUX_MODE1)      /* mii1_rxd0.rmii1_rxd0 */
+			0x144 (PIN_INPUT_PULLDOWN | MUX_MODE0)      /* rmii1_ref_clk.rmii1_refclk */
+
+
+			/* Slave 2 */
+			0x40 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)	/* gpmc_a0.rgmii2_tctl */
+			0x44 (PIN_INPUT_PULLDOWN | MUX_MODE2)	/* gpmc_a1.rgmii2_rctl */
+			0x48 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)	/* gpmc_a2.rgmii2_td3 */
+			0x4c (PIN_OUTPUT_PULLDOWN | MUX_MODE2)	/* gpmc_a3.rgmii2_td2 */
+			0x50 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)	/* gpmc_a4.rgmii2_td1 */
+			0x54 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)	/* gpmc_a5.rgmii2_td0 */
+			0x58 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)	/* gpmc_a6.rgmii2_tclk */
+			0x5c (PIN_INPUT_PULLDOWN | MUX_MODE2)	/* gpmc_a7.rgmii2_rclk */
+			0x60 (PIN_INPUT_PULLDOWN | MUX_MODE2)	/* gpmc_a8.rgmii2_rd3 */
+			0x64 (PIN_INPUT_PULLDOWN | MUX_MODE2)	/* gpmc_a9.rgmii2_rd2 */
+			0x68 (PIN_INPUT_PULLDOWN | MUX_MODE2)	/* gpmc_a10.rgmii2_rd1 */
+			0x6c (PIN_INPUT_PULLDOWN | MUX_MODE2)	/* gpmc_a11.rgmii2_rd0 */
+		>;
+	};
+
+	cpsw_sleep: cpsw_sleep {
+		pinctrl-single,pins = <
+			/* Slave 1 reset value */
+			0x10c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+			0x114 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+			0x124 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+			0x128 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+			0x13c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+			0x140 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+			0x144 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+
+			/* Slave 2 reset value*/
+			0x40 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+			0x44 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+			0x48 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+			0x4c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+			0x50 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+			0x54 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+			0x58 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+			0x5c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+			0x60 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+			0x64 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+			0x68 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+			0x6c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+		>;
+	};
+
+	davinci_mdio_default: davinci_mdio_default {
+		pinctrl-single,pins = <
+			/* MDIO */
+			0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)	/* mdio_data.mdio_data */
+			0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0)			/* mdio_clk.mdio_clk */
+		>;
+	};
+
+	davinci_mdio_sleep: davinci_mdio_sleep {
+		pinctrl-single,pins = <
+			/* MDIO reset value */
+			0x148 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+			0x14c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+		>;
+	};
+
+	nandflash_pins_s0: nandflash_pins_s0 {
+		pinctrl-single,pins = <
+			0x0 (PIN_INPUT_PULLUP | MUX_MODE0)	/* gpmc_ad0.gpmc_ad0 */
+			0x4 (PIN_INPUT_PULLUP | MUX_MODE0)	/* gpmc_ad1.gpmc_ad1 */
+			0x8 (PIN_INPUT_PULLUP | MUX_MODE0)	/* gpmc_ad2.gpmc_ad2 */
+			0xc (PIN_INPUT_PULLUP | MUX_MODE0)	/* gpmc_ad3.gpmc_ad3 */
+			0x10 (PIN_INPUT_PULLUP | MUX_MODE0)	/* gpmc_ad4.gpmc_ad4 */
+			0x14 (PIN_INPUT_PULLUP | MUX_MODE0)	/* gpmc_ad5.gpmc_ad5 */
+			0x18 (PIN_INPUT_PULLUP | MUX_MODE0)	/* gpmc_ad6.gpmc_ad6 */
+			0x1c (PIN_INPUT_PULLUP | MUX_MODE0)	/* gpmc_ad7.gpmc_ad7 */
+			0x70 (PIN_INPUT_PULLUP | MUX_MODE0)	/* gpmc_wait0.gpmc_wait0 */
+			0x74 (PIN_INPUT_PULLUP | MUX_MODE7)	/* gpmc_wpn.gpio0_30 */
+			0x7c (PIN_OUTPUT | MUX_MODE0)		/* gpmc_csn0.gpmc_csn0  */
+			0x90 (PIN_OUTPUT | MUX_MODE0)		/* gpmc_advn_ale.gpmc_advn_ale */
+			0x94 (PIN_OUTPUT | MUX_MODE0)		/* gpmc_oen_ren.gpmc_oen_ren */
+			0x98 (PIN_OUTPUT | MUX_MODE0)		/* gpmc_wen.gpmc_wen */
+			0x9c (PIN_OUTPUT | MUX_MODE0)		/* gpmc_be0n_cle.gpmc_be0n_cle */
+		>;
+	};
+};
+
+&elm {
+	status = "okay";
+};
+
+&gpmc {
+	pinctrl-names = "default";
+	pinctrl-0 = <&nandflash_pins_s0>;
+	ranges = <0 0 0x08000000 0x10000000>;	/* CS0: NAND */
+	status = "okay";
+
+	nand@0,0 {
+		reg = <0 0 0>; /* CS0, offset 0 */
+		nand-bus-width = <8>;
+		ti,nand-ecc-opt = "bch8";
+		ti,nand-xfer-type = "polled";
+
+		gpmc,device-nand = "true";
+		gpmc,device-width = <1>;
+		gpmc,sync-clk-ps = <0>;
+		gpmc,cs-on-ns = <0>;
+		gpmc,cs-rd-off-ns = <44>;
+		gpmc,cs-wr-off-ns = <44>;
+		gpmc,adv-on-ns = <6>;
+		gpmc,adv-rd-off-ns = <34>;
+		gpmc,adv-wr-off-ns = <44>;
+		gpmc,we-on-ns = <0>;
+		gpmc,we-off-ns = <40>;
+		gpmc,oe-on-ns = <0>;
+		gpmc,oe-off-ns = <54>;
+		gpmc,access-ns = <64>;
+		gpmc,rd-cycle-ns = <82>;
+		gpmc,wr-cycle-ns = <82>;
+		gpmc,wait-on-read = "true";
+		gpmc,wait-on-write = "true";
+		gpmc,bus-turnaround-ns = <0>;
+		gpmc,cycle2cycle-delay-ns = <0>;
+		gpmc,clk-activation-ns = <0>;
+		gpmc,wait-monitoring-ns = <0>;
+		gpmc,wr-access-ns = <40>;
+		gpmc,wr-data-mux-bus-ns = <0>;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+		elm_id = <&elm>;
+
+		boot@0 {
+		       label = "SPL";
+		       reg = <0x0 0x20000>;
+		};
+		boot@20000{
+		       label = "SPL.backup1";
+		       reg = <0x20000 0x20000>;
+		};
+		boot@40000 {
+		       label = "SPL.backup2";
+		       reg = <0x40000 0x20000>;
+		};
+		boot@60000 {
+		       label = "SPL.backup3";
+		       reg = <0x60000 0x20000>;
+		};
+		boot@80000 {
+		       label = "u-boot";
+		       reg = <0x80000 0x1e0000>;
+		};
+		boot@260000 {
+		       label = "UBI";
+		       reg = <0x260000 0xfda0000>;
+		};
+	};
+};
+
+&uart0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart0_pins>;
+
+	status = "okay";
+};
+
+&i2c1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c1_pins>;
+
+	status = "okay";
+	clock-frequency = <1000>;
+
+	tps: tps@2d {
+		reg = <0x2d>;
+		gpio-controller;
+		#gpio-cells = <2>;
+		interrupt-parent = <&gpio1>;
+		interrupts = <28 GPIO_ACTIVE_LOW>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&tps65910_pins>;
+	};
+
+	at24@50 {
+		compatible = "at24,24c02";
+		pagesize = <8>;
+		reg = <0x50>;
+	};
+
+	tca6416: gpio@20 {
+		compatible = "ti,tca6416";
+		reg = <0x20>;
+		gpio-controller;
+		#gpio-cells = <2>;
+		interrupt-parent = <&gpio0>;
+		interrupts = <20 GPIO_ACTIVE_LOW>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&tca6416_pins>;
+	};
+};
+
+&usb {
+	status = "okay";
+};
+
+&usb_ctrl_mod {
+	status = "okay";
+};
+
+&usb0_phy {
+	status = "okay";
+};
+
+&usb1_phy {
+	status = "okay";
+};
+
+&usb0 {
+	status = "okay";
+	dr_mode = "host";
+};
+
+&usb1 {
+	status = "okay";
+	dr_mode = "host";
+};
+
+&cppi41dma  {
+	status = "okay";
+};
+
+/include/ "tps65910.dtsi"
+
+&tps {
+	vcc1-supply = <&vbat>;
+	vcc2-supply = <&vbat>;
+	vcc3-supply = <&vbat>;
+	vcc4-supply = <&vbat>;
+	vcc5-supply = <&vbat>;
+	vcc6-supply = <&vbat>;
+	vcc7-supply = <&vbat>;
+	vccio-supply = <&vbat>;
+
+	ti,en-ck32k-xtal = <1>;
+
+	regulators {
+		vrtc_reg: regulator@0 {
+			regulator-always-on;
+		};
+
+		vio_reg: regulator@1 {
+			regulator-always-on;
+		};
+
+		vdd1_reg: regulator@2 {
+			/* VDD_MPU voltage limits 0.95V - 1.26V with +/-4% tolerance */
+			regulator-name = "vdd_mpu";
+			regulator-min-microvolt = <912500>;
+			regulator-max-microvolt = <1312500>;
+			regulator-boot-on;
+			regulator-always-on;
+		};
+
+		vdd2_reg: regulator@3 {
+			/* VDD_CORE voltage limits 0.95V - 1.1V with +/-4% tolerance */
+			regulator-name = "vdd_core";
+			regulator-min-microvolt = <912500>;
+			regulator-max-microvolt = <1150000>;
+			regulator-boot-on;
+			regulator-always-on;
+		};
+
+		vdd3_reg: regulator@4 {
+			regulator-always-on;
+		};
+
+		vdig1_reg: regulator@5 {
+			regulator-always-on;
+		};
+
+		vdig2_reg: regulator@6 {
+			regulator-always-on;
+		};
+
+		vpll_reg: regulator@7 {
+			regulator-always-on;
+		};
+
+		vdac_reg: regulator@8 {
+			regulator-always-on;
+		};
+
+		vaux1_reg: regulator@9 {
+			regulator-always-on;
+		};
+
+		vaux2_reg: regulator@10 {
+			regulator-always-on;
+		};
+
+		vaux33_reg: regulator@11 {
+			regulator-always-on;
+		};
+
+		vmmc_reg: regulator@12 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <3300000>;
+			regulator-always-on;
+		};
+	};
+};
+
+&mac {
+	pinctrl-names = "default", "sleep";
+	pinctrl-0 = <&cpsw_default>;
+	pinctrl-1 = <&cpsw_sleep>;
+	dual_emac = <1>;
+
+	status = "okay";
+};
+
+&davinci_mdio {
+	pinctrl-names = "default", "sleep";
+	pinctrl-0 = <&davinci_mdio_default>;
+	pinctrl-1 = <&davinci_mdio_sleep>;
+
+	status = "okay";
+};
+
+&cpsw_emac0 {
+	phy_id = <&davinci_mdio>, <0>;
+	phy-mode = "rmii";
+	dual_emac_res_vlan = <1>;
+};
+
+&cpsw_emac1 {
+	phy_id = <&davinci_mdio>, <7>;
+	phy-mode = "rgmii-txid";
+	dual_emac_res_vlan = <2>;
+};
+
+&phy_sel {
+	rmii-clock-ext = <1>;
+};
+
+&mmc1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&mmc1_pins>;
+	vmmc-supply = <&vmmc_reg>;
+	status = "okay";
+};
+
+&gpio0 {
+	ti,no-reset-on-init;
+};
diff --git a/arch/arm/mach-omap/Kconfig b/arch/arm/mach-omap/Kconfig
index d7c863c..a1bb8f0 100644
--- a/arch/arm/mach-omap/Kconfig
+++ b/arch/arm/mach-omap/Kconfig
@@ -184,6 +184,13 @@ config MACH_PHYTEC_SOM_AM335X
 	select ARCH_AM33XX
 	help
 	  Say Y here if you are using a am335x based Phytecs SOM
+
+config MACH_VSCOM_BALTOS
+	bool "VScom Baltos Devices"
+	select ARCH_AM33XX
+	help
+	  Say Y here if you are using a am335x based VScom Baltos devices
+
 endif
 
 choice
diff --git a/images/Makefile.am33xx b/images/Makefile.am33xx
index 8be78ef..8168fe4 100644
--- a/images/Makefile.am33xx
+++ b/images/Makefile.am33xx
@@ -135,6 +135,14 @@ pblx-$(CONFIG_MACH_BEAGLEBONE) += start_am33xx_beaglebone_sram
 FILE_barebox-am33xx-beaglebone-mlo.img = start_am33xx_beaglebone_sram.pblx.mlo
 am33xx-mlo-$(CONFIG_MACH_BEAGLEBONE) += barebox-am33xx-beaglebone-mlo.img
 
+pblx-$(CONFIG_MACH_VSCOM_BALTOS) += start_am33xx_baltos_sdram
+FILE_barebox-am33xx-baltos.img = start_am33xx_baltos_sdram.pblx
+am33xx-barebox-$(CONFIG_MACH_VSCOM_BALTOS) += barebox-am33xx-baltos.img
+
+pblx-$(CONFIG_MACH_VSCOM_BALTOS) += start_am33xx_baltos_sram
+FILE_barebox-am33xx-baltos-mlo.img = start_am33xx_baltos_sram.pblx.mlo
+am33xx-mlo-$(CONFIG_MACH_VSCOM_BALTOS) += barebox-am33xx-baltos-mlo.img
+
 ifdef CONFIG_OMAP_BUILD_IFT
 image-y += $(am33xx-mlo-y)
 else
-- 
2.1.4


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

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

* Re: [PATCH v2] Add support for Baltos systems
  2016-05-30 14:43 [PATCH v2] Add support for Baltos systems yegorslists
@ 2016-06-01  7:08 ` Sascha Hauer
  2016-06-13  7:44   ` Yegor Yefremov
  0 siblings, 1 reply; 6+ messages in thread
From: Sascha Hauer @ 2016-06-01  7:08 UTC (permalink / raw)
  To: yegorslists; +Cc: barebox

On Mon, May 30, 2016 at 04:43:50PM +0200, yegorslists@googlemail.com wrote:
> From: Yegor Yefremov <yegorslists@googlemail.com>
> 
> OnRISC Baltos devices are based on a am335x SoC and can be booted
> either from MMC or NAND.
> 
> Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
> ---
> Changes:
>         v2: - remove typedef
>             - rework invalid EEPROM content handling
>             - add mmc0 as boot device for MMC boot source
> 
> +static int baltos_mem_init(void)
> +{
> +	uint32_t sdram_size;
> +
> +	if (!of_machine_is_compatible("vscom,onrisc"))
> +		return 0;
> +
> +	sdram_size = SZ_256M;
> +
> +	arm_add_mem_device("ram0", 0x80000000, sdram_size);
> +
> +	return 0;
> +}
> +mem_initcall(baltos_mem_init);

This shouldn't be necessary. See arch/arm/mach-omap/am33xx_scrm.c, here
the correct amount of memory should be registered.


> +ENTRY_FUNCTION(start_am33xx_baltos_sdram, r0, r1, r2)
> +{
> +	uint32_t sdram_size;
> +	void *fdt;
> +
> +	sdram_size = SZ_256M;
> +	fdt = __dtb_am335x_baltos_minimal_start;
> +
> +	fdt -= get_runtime_offset();
> +
> +	barebox_arm_entry(0x80000000, sdram_size, fdt);

am335x_barebox_entry() calculates the SDRAM size automatically for you.

Doing this has the advantage that you can configure your SDRAM as you
like without having to bother that all other locations where the SDRAM
size is needed are correct.

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] 6+ messages in thread

* Re: [PATCH v2] Add support for Baltos systems
  2016-06-01  7:08 ` Sascha Hauer
@ 2016-06-13  7:44   ` Yegor Yefremov
  2016-06-13  8:55     ` Sascha Hauer
  0 siblings, 1 reply; 6+ messages in thread
From: Yegor Yefremov @ 2016-06-13  7:44 UTC (permalink / raw)
  To: Sascha Hauer; +Cc: barebox

On Wed, Jun 1, 2016 at 9:08 AM, Sascha Hauer <s.hauer@pengutronix.de> wrote:
> On Mon, May 30, 2016 at 04:43:50PM +0200, yegorslists@googlemail.com wrote:
>> From: Yegor Yefremov <yegorslists@googlemail.com>
>>
>> OnRISC Baltos devices are based on a am335x SoC and can be booted
>> either from MMC or NAND.
>>
>> Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
>> ---
>> Changes:
>>         v2: - remove typedef
>>             - rework invalid EEPROM content handling
>>             - add mmc0 as boot device for MMC boot source
>>
>> +static int baltos_mem_init(void)
>> +{
>> +     uint32_t sdram_size;
>> +
>> +     if (!of_machine_is_compatible("vscom,onrisc"))
>> +             return 0;
>> +
>> +     sdram_size = SZ_256M;
>> +
>> +     arm_add_mem_device("ram0", 0x80000000, sdram_size);
>> +
>> +     return 0;
>> +}
>> +mem_initcall(baltos_mem_init);
>
> This shouldn't be necessary. See arch/arm/mach-omap/am33xx_scrm.c, here
> the correct amount of memory should be registered.

ACK

>> +ENTRY_FUNCTION(start_am33xx_baltos_sdram, r0, r1, r2)
>> +{
>> +     uint32_t sdram_size;
>> +     void *fdt;
>> +
>> +     sdram_size = SZ_256M;
>> +     fdt = __dtb_am335x_baltos_minimal_start;
>> +
>> +     fdt -= get_runtime_offset();
>> +
>> +     barebox_arm_entry(0x80000000, sdram_size, fdt);
>
> am335x_barebox_entry() calculates the SDRAM size automatically for you.
>
> Doing this has the advantage that you can configure your SDRAM as you
> like without having to bother that all other locations where the SDRAM
> size is needed are correct.

This is not working for me. As soon as barebox.bin starts I can see only

barebox 2016.05.0 #3 Mon Jun 13 09:32:01 CEST 2016

Board: OnRISC Baltos

I don't know why, but am335x_sdram_size() always finds 0x20000000 i.e.
512MB on both 256MB modules and 512MB.

I understand only main railway station :-)

Yegor

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

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

* Re: [PATCH v2] Add support for Baltos systems
  2016-06-13  7:44   ` Yegor Yefremov
@ 2016-06-13  8:55     ` Sascha Hauer
  2016-06-13  8:56       ` Yegor Yefremov
  0 siblings, 1 reply; 6+ messages in thread
From: Sascha Hauer @ 2016-06-13  8:55 UTC (permalink / raw)
  To: Yegor Yefremov; +Cc: barebox

On Mon, Jun 13, 2016 at 09:44:24AM +0200, Yegor Yefremov wrote:
> On Wed, Jun 1, 2016 at 9:08 AM, Sascha Hauer <s.hauer@pengutronix.de> wrote:
> > On Mon, May 30, 2016 at 04:43:50PM +0200, yegorslists@googlemail.com wrote:
> >> From: Yegor Yefremov <yegorslists@googlemail.com>
> >>
> >> OnRISC Baltos devices are based on a am335x SoC and can be booted
> >> either from MMC or NAND.
> >>
> >> Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
> >> ---
> >> Changes:
> >>         v2: - remove typedef
> >>             - rework invalid EEPROM content handling
> >>             - add mmc0 as boot device for MMC boot source
> >>
> >> +static int baltos_mem_init(void)
> >> +{
> >> +     uint32_t sdram_size;
> >> +
> >> +     if (!of_machine_is_compatible("vscom,onrisc"))
> >> +             return 0;
> >> +
> >> +     sdram_size = SZ_256M;
> >> +
> >> +     arm_add_mem_device("ram0", 0x80000000, sdram_size);
> >> +
> >> +     return 0;
> >> +}
> >> +mem_initcall(baltos_mem_init);
> >
> > This shouldn't be necessary. See arch/arm/mach-omap/am33xx_scrm.c, here
> > the correct amount of memory should be registered.
> 
> ACK
> 
> >> +ENTRY_FUNCTION(start_am33xx_baltos_sdram, r0, r1, r2)
> >> +{
> >> +     uint32_t sdram_size;
> >> +     void *fdt;
> >> +
> >> +     sdram_size = SZ_256M;
> >> +     fdt = __dtb_am335x_baltos_minimal_start;
> >> +
> >> +     fdt -= get_runtime_offset();
> >> +
> >> +     barebox_arm_entry(0x80000000, sdram_size, fdt);
> >
> > am335x_barebox_entry() calculates the SDRAM size automatically for you.
> >
> > Doing this has the advantage that you can configure your SDRAM as you
> > like without having to bother that all other locations where the SDRAM
> > size is needed are correct.
> 
> This is not working for me. As soon as barebox.bin starts I can see only
> 
> barebox 2016.05.0 #3 Mon Jun 13 09:32:01 CEST 2016
> 
> Board: OnRISC Baltos
> 
> I don't know why, but am335x_sdram_size() always finds 0x20000000 i.e.
> 512MB on both 256MB modules and 512MB.

Could it be that you use the 512MB settings for both variants and in the
256MB case you simply only use half of it? In this case
am335x_sdram_size() cannot work properly. You either have to fix the
settings in the controller after you detected that you have 256MB or you
have to stick to the current static setup. There's also get_ram_size()
that tests the given address space for mirrors and returns the real ram
size.

> I understand only main railway station :-)

;)

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] 6+ messages in thread

* Re: [PATCH v2] Add support for Baltos systems
  2016-06-13  8:55     ` Sascha Hauer
@ 2016-06-13  8:56       ` Yegor Yefremov
  2016-06-13  9:22         ` Yegor Yefremov
  0 siblings, 1 reply; 6+ messages in thread
From: Yegor Yefremov @ 2016-06-13  8:56 UTC (permalink / raw)
  To: Sascha Hauer; +Cc: barebox

On Mon, Jun 13, 2016 at 10:55 AM, Sascha Hauer <s.hauer@pengutronix.de> wrote:
> On Mon, Jun 13, 2016 at 09:44:24AM +0200, Yegor Yefremov wrote:
>> On Wed, Jun 1, 2016 at 9:08 AM, Sascha Hauer <s.hauer@pengutronix.de> wrote:
>> > On Mon, May 30, 2016 at 04:43:50PM +0200, yegorslists@googlemail.com wrote:
>> >> From: Yegor Yefremov <yegorslists@googlemail.com>
>> >>
>> >> OnRISC Baltos devices are based on a am335x SoC and can be booted
>> >> either from MMC or NAND.
>> >>
>> >> Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
>> >> ---
>> >> Changes:
>> >>         v2: - remove typedef
>> >>             - rework invalid EEPROM content handling
>> >>             - add mmc0 as boot device for MMC boot source
>> >>
>> >> +static int baltos_mem_init(void)
>> >> +{
>> >> +     uint32_t sdram_size;
>> >> +
>> >> +     if (!of_machine_is_compatible("vscom,onrisc"))
>> >> +             return 0;
>> >> +
>> >> +     sdram_size = SZ_256M;
>> >> +
>> >> +     arm_add_mem_device("ram0", 0x80000000, sdram_size);
>> >> +
>> >> +     return 0;
>> >> +}
>> >> +mem_initcall(baltos_mem_init);
>> >
>> > This shouldn't be necessary. See arch/arm/mach-omap/am33xx_scrm.c, here
>> > the correct amount of memory should be registered.
>>
>> ACK
>>
>> >> +ENTRY_FUNCTION(start_am33xx_baltos_sdram, r0, r1, r2)
>> >> +{
>> >> +     uint32_t sdram_size;
>> >> +     void *fdt;
>> >> +
>> >> +     sdram_size = SZ_256M;
>> >> +     fdt = __dtb_am335x_baltos_minimal_start;
>> >> +
>> >> +     fdt -= get_runtime_offset();
>> >> +
>> >> +     barebox_arm_entry(0x80000000, sdram_size, fdt);
>> >
>> > am335x_barebox_entry() calculates the SDRAM size automatically for you.
>> >
>> > Doing this has the advantage that you can configure your SDRAM as you
>> > like without having to bother that all other locations where the SDRAM
>> > size is needed are correct.
>>
>> This is not working for me. As soon as barebox.bin starts I can see only
>>
>> barebox 2016.05.0 #3 Mon Jun 13 09:32:01 CEST 2016
>>
>> Board: OnRISC Baltos
>>
>> I don't know why, but am335x_sdram_size() always finds 0x20000000 i.e.
>> 512MB on both 256MB modules and 512MB.
>
> Could it be that you use the 512MB settings for both variants and in the
> 256MB case you simply only use half of it? In this case
> am335x_sdram_size() cannot work properly. You either have to fix the
> settings in the controller after you detected that you have 256MB or you
> have to stick to the current static setup. There's also get_ram_size()
> that tests the given address space for mirrors and returns the real ram
> size.

OK. Then I'll remove mem_init from board.c and stick to the static setup.

Yegor

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

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

* Re: [PATCH v2] Add support for Baltos systems
  2016-06-13  8:56       ` Yegor Yefremov
@ 2016-06-13  9:22         ` Yegor Yefremov
  0 siblings, 0 replies; 6+ messages in thread
From: Yegor Yefremov @ 2016-06-13  9:22 UTC (permalink / raw)
  To: Sascha Hauer; +Cc: barebox

On Mon, Jun 13, 2016 at 10:56 AM, Yegor Yefremov
<yegorslists@googlemail.com> wrote:
> On Mon, Jun 13, 2016 at 10:55 AM, Sascha Hauer <s.hauer@pengutronix.de> wrote:
>> On Mon, Jun 13, 2016 at 09:44:24AM +0200, Yegor Yefremov wrote:
>>> On Wed, Jun 1, 2016 at 9:08 AM, Sascha Hauer <s.hauer@pengutronix.de> wrote:
>>> > On Mon, May 30, 2016 at 04:43:50PM +0200, yegorslists@googlemail.com wrote:
>>> >> From: Yegor Yefremov <yegorslists@googlemail.com>
>>> >>
>>> >> OnRISC Baltos devices are based on a am335x SoC and can be booted
>>> >> either from MMC or NAND.
>>> >>
>>> >> Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
>>> >> ---
>>> >> Changes:
>>> >>         v2: - remove typedef
>>> >>             - rework invalid EEPROM content handling
>>> >>             - add mmc0 as boot device for MMC boot source
>>> >>
>>> >> +static int baltos_mem_init(void)
>>> >> +{
>>> >> +     uint32_t sdram_size;
>>> >> +
>>> >> +     if (!of_machine_is_compatible("vscom,onrisc"))
>>> >> +             return 0;
>>> >> +
>>> >> +     sdram_size = SZ_256M;
>>> >> +
>>> >> +     arm_add_mem_device("ram0", 0x80000000, sdram_size);
>>> >> +
>>> >> +     return 0;
>>> >> +}
>>> >> +mem_initcall(baltos_mem_init);
>>> >
>>> > This shouldn't be necessary. See arch/arm/mach-omap/am33xx_scrm.c, here
>>> > the correct amount of memory should be registered.
>>>
>>> ACK
>>>
>>> >> +ENTRY_FUNCTION(start_am33xx_baltos_sdram, r0, r1, r2)
>>> >> +{
>>> >> +     uint32_t sdram_size;
>>> >> +     void *fdt;
>>> >> +
>>> >> +     sdram_size = SZ_256M;
>>> >> +     fdt = __dtb_am335x_baltos_minimal_start;
>>> >> +
>>> >> +     fdt -= get_runtime_offset();
>>> >> +
>>> >> +     barebox_arm_entry(0x80000000, sdram_size, fdt);
>>> >
>>> > am335x_barebox_entry() calculates the SDRAM size automatically for you.
>>> >
>>> > Doing this has the advantage that you can configure your SDRAM as you
>>> > like without having to bother that all other locations where the SDRAM
>>> > size is needed are correct.
>>>
>>> This is not working for me. As soon as barebox.bin starts I can see only
>>>
>>> barebox 2016.05.0 #3 Mon Jun 13 09:32:01 CEST 2016
>>>
>>> Board: OnRISC Baltos
>>>
>>> I don't know why, but am335x_sdram_size() always finds 0x20000000 i.e.
>>> 512MB on both 256MB modules and 512MB.
>>
>> Could it be that you use the 512MB settings for both variants and in the
>> 256MB case you simply only use half of it? In this case
>> am335x_sdram_size() cannot work properly. You either have to fix the
>> settings in the controller after you detected that you have 256MB or you
>> have to stick to the current static setup. There's also get_ram_size()
>> that tests the given address space for mirrors and returns the real ram
>> size.
>
> OK. Then I'll remove mem_init from board.c and stick to the static setup.
>
> Yegor

I've checked once more. I do need mem_initcall(baltos_mem_init),
because without it, I'll get 512MB in Linux for both modules. So could
you apply the patch as is? I'll submit a followup patch, when I sort
the things out. Some customers are waiting for barebox support in
order to work with i2c-gpio extender directly from bootloader.

Thanks.

Yegor

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

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

end of thread, other threads:[~2016-06-13  9:23 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-30 14:43 [PATCH v2] Add support for Baltos systems yegorslists
2016-06-01  7:08 ` Sascha Hauer
2016-06-13  7:44   ` Yegor Yefremov
2016-06-13  8:55     ` Sascha Hauer
2016-06-13  8:56       ` Yegor Yefremov
2016-06-13  9:22         ` Yegor Yefremov

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