While porting barebox onto a new old MX28 board, I had to extend the low-level code to set up SDRAM and PMIC. Most of those changes are probably also applicable to MX23 boards since the code paths are the same, and are only wrapped in mx28_*/mx23_*-specific wrapper functions. (Also, if anyone wants to port these changes back to U-Boot, feel free to do so, it's the same code ☺) Changes in v2 -> v3: (see diff below) - 07/14 "ARM: MXS: refactor mx2*_power_init source configuration": refactor power_config & __POWER_USE_MASK statments into new inline function mxs_power_config_get_use(), as proposed by Andrey Smirnov Changes in v1 -> v2: - include cleaner memory size detection by Sascha, also for i.MX23 - call mxs_mem_init_clock() explicitely from board code instead of passing the clock dividers through mx*_mem_init() - add parameter documentation for mxs_mem_init_clock() - Documentation: back-pedal on the statment that all boards are ported to barebox bootlets, there are still some i.MX23 boards that need Freescale bootlet code Roland Hieber (11): images: MXS: allow generation of unencrypted bootstreams ARM: MXS: i.MX28: allow setup of low-voltage SDRAM ARM: MXS: allow configuration of EMI clock prescaler ARM: MXS: refactor mx2*_power_init source configuration ARM: MXS: allow starting from battery input without 4P2 source enabled ARM: MXS: make power levels configurable in mx2*_power_init ARM: MXS: fix VDDx brownout setup logic ARM: MXS: make VDDx brownout setup more understandable ARM: MXS: mxs_power_status: use less magic values ARM: MXS: mxs_power_status: align output Documentation: MXS: general update and improvements Sascha Hauer (3): scripts: mxsimage: Allow unencrypted images ARM: i.MX28: Add memory size detection ARM: i.MX23: Add memory size detection Documentation/boards/mxs.rst | 97 ++++++----- .../arm/boards/chumby_falconwing/falconwing.c | 8 - .../boards/crystalfontz-cfa10036/cfa10036.c | 24 --- arch/arm/boards/duckbill/lowlevel.c | 7 +- arch/arm/boards/freescale-mx23-evk/mx23-evk.c | 8 - arch/arm/boards/freescale-mx28-evk/lowlevel.c | 8 +- arch/arm/boards/freescale-mx28-evk/mx28-evk.c | 8 - .../boards/imx233-olinuxino/imx23-olinuxino.c | 8 - arch/arm/boards/imx233-olinuxino/lowlevel.c | 4 +- arch/arm/boards/karo-tx28/lowlevel.c | 8 +- arch/arm/boards/karo-tx28/tx28.c | 8 - arch/arm/mach-mxs/include/mach/imx23.h | 29 ++++ arch/arm/mach-mxs/include/mach/imx28.h | 30 ++++ arch/arm/mach-mxs/include/mach/init.h | 53 +++++- arch/arm/mach-mxs/mem-init.c | 28 ++- arch/arm/mach-mxs/power-init.c | 162 +++++++++++------- arch/arm/mach-mxs/soc-imx23.c | 4 + arch/arm/mach-mxs/soc-imx28.c | 4 + images/Makefile.mxs | 8 + scripts/mxsimage.c | 53 +++--- 20 files changed, 336 insertions(+), 223 deletions(-) create mode 100644 arch/arm/mach-mxs/include/mach/imx23.h create mode 100644 arch/arm/mach-mxs/include/mach/imx28.h -- Diff v2 -> v3: diff --git a/arch/arm/mach-mxs/include/mach/init.h b/arch/arm/mach-mxs/include/mach/init.h index 281e458d97..53c1e05634 100644 --- a/arch/arm/mach-mxs/include/mach/init.h +++ b/arch/arm/mach-mxs/include/mach/init.h @@ -24,9 +24,13 @@ enum mxs_power_config { POWER_USE_5V = 0b00000000, POWER_USE_BATTERY = 0b00000001, POWER_USE_BATTERY_INPUT = 0b00000010, - __POWER_USE_MASK = 0b00000011, POWER_ENABLE_4P2 = 0b00000100, }; +extern int power_config; +static inline enum mxs_power_config mxs_power_config_get_use(void) { + return (power_config & 0b00000011); +} + struct mxs_power_ctrl { uint32_t target; /*< target voltage */ diff --git a/arch/arm/mach-mxs/power-init.c b/arch/arm/mach-mxs/power-init.c index 796d3ae259..ca7c349d7f 100644 --- a/arch/arm/mach-mxs/power-init.c +++ b/arch/arm/mach-mxs/power-init.c @@ -24,7 +24,7 @@ #include <mach/regs-rtc.h> #include <mach/regs-lradc.h> -static int power_config; +int power_config; static void mxs_power_status(void) { @@ -503,8 +503,8 @@ static void mxs_power_enable_4p2(void) POWER_5VCTRL_HEADROOM_ADJ_MASK, 0x4 << POWER_5VCTRL_HEADROOM_ADJ_OFFSET); - if ((power_config & __POWER_USE_MASK) == POWER_USE_BATTERY || - (power_config & __POWER_USE_MASK) == POWER_USE_BATTERY_INPUT) + if (mxs_power_config_get_use() == POWER_USE_BATTERY || + mxs_power_config_get_use() == POWER_USE_BATTERY_INPUT) dropout_ctrl = POWER_DCDC4P2_DROPOUT_CTRL_SRC_SEL; else dropout_ctrl = POWER_DCDC4P2_DROPOUT_CTRL_SRC_4P2; @@ -1210,11 +1210,11 @@ void mx23_power_init(const int config, struct mxs_power_ctrls *ctrls) mxs_src_power_init(); - if ((power_config & __POWER_USE_MASK) == POWER_USE_BATTERY) + if (mxs_power_config_get_use() == POWER_USE_BATTERY) mxs_power_configure_power_source(); - else if ((power_config & __POWER_USE_MASK) == POWER_USE_BATTERY_INPUT) + else if (mxs_power_config_get_use() == POWER_USE_BATTERY_INPUT) mxs_enable_battery_input(); - else if ((power_config & __POWER_USE_MASK) == POWER_USE_5V) + else if (mxs_power_config_get_use() == POWER_USE_5V) mxs_boot_valid_5v(); mxs_power_clock2pll(); @@ -1285,11 +1285,11 @@ void mx28_power_init(const int config, struct mxs_power_ctrls *ctrls) mxs_src_power_init(); - if ((power_config & __POWER_USE_MASK) == POWER_USE_BATTERY) + if (mxs_power_config_get_use() == POWER_USE_BATTERY) mxs_power_configure_power_source(); - else if ((power_config & __POWER_USE_MASK) == POWER_USE_BATTERY_INPUT) + else if (mxs_power_config_get_use() == POWER_USE_BATTERY_INPUT) mxs_enable_battery_input(); - else if ((power_config & __POWER_USE_MASK) == POWER_USE_5V) + else if (mxs_power_config_get_use() == POWER_USE_5V) mxs_boot_valid_5v(); mxs_power_clock2pll(); -- 2.18.0 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox