On 2025-10-17 20:19, Henrik Grimler wrote:
Hi Kaustabh,

Nice work on all of the linked patches!

On Fri, Oct 17, 2025 at 10:07:35PM +0530, Kaustabh Chakraborty wrote:
Add support for a generic platform which intends to support multiple
boards powerid by Samsung Exynos SoCs. This patch also includes initial
support for three boards:
* Samsung Galaxy A2 Core
* Samsung Galaxy J6
* Samsung Galaxy J7 Prime

I think it would be easier to review this if you split the patch in two
parts: first adding docs and common parts, and then the specific parts
for exynos7870 and these devices.

Signed-off-by: Kaustabh Chakraborty <[email protected]>
---
This patch has the following dependencies:
(NOTE: `x` indicates applied)

armv8-broken-cntfrq - https://patch.msgid.link/[email protected] clk-exynos7870 - https://patch.msgid.link/[email protected] gpio-s5p-bank-fix - https://patch.msgid.link/[email protected] i2c-hs-exynos7 - https://patch.msgid.link/[email protected] mmc-dw-exynos7870 - https://patch.msgid.link/[email protected] phy-usb-exynos7870 - https://patch.msgid.link/[email protected] pinctrl-exynos7870 - https://patch.msgid.link/[email protected] power-pmic-regulator-s2mpu05 - https://patch.msgid.link/20251017-power-pmic-regulator-s2mpu05-v1-0-91cadc0f4...@disroot.org serial-s5p-exynos8895 - https://patch.msgid.link/[email protected] soc-pmu-exynos7 - https://patch.msgid.link/[email protected] usb-dwc3-exynos7870 - https://patch.msgid.link/[email protected]
---
 arch/arm/mach-exynos/Kconfig                       |  11 +-
 board/samsung/exynos-mobile/Kconfig                |  18 +
 board/samsung/exynos-mobile/MAINTAINERS            |   6 +
 board/samsung/exynos-mobile/Makefile               |   5 +
 .../samsung/exynos-mobile/debug-exynos7870.config  |   7 +
board/samsung/exynos-mobile/exynos-mobile.c | 372 +++++++++++++++++++++
 board/samsung/exynos-mobile/exynos-mobile.env      |  18 +
 configs/exynos-mobile_defconfig                    |  71 ++++
 doc/board/samsung/exynos-mobile.rst                | 112 +++++++
 doc/board/samsung/index.rst                        |   1 +
 include/configs/exynos-mobile.h                    |  14 +
 11 files changed, 634 insertions(+), 1 deletion(-)

[ skipping to docs for now ]

diff --git a/doc/board/samsung/exynos-mobile.rst b/doc/board/samsung/exynos-mobile.rst
new file mode 100644
index 0000000000000000000000000000000000000000..6390c66ffc38a41f01cb51c7406397cfc5a3d223
--- /dev/null
+++ b/doc/board/samsung/exynos-mobile.rst
@@ -0,0 +1,112 @@
+.. SPDX-License-Identifier: GPL-2.0+
+.. sectionauthor:: Kaustabh Chakraborty <[email protected]>
+
+Samsung Exynos Generic Boards (for mobile devices)
+==================================================
+
+Overview
+--------
+This document describes how to build and run U-Boot for Samsung Exynos generic +boards. Boards are expected to boot with a primary bootloader, such as S-BOOT or +S-LK, which hands off control to U-Boot, disguised as an Android boot image.

In my opinion exynos-mobile is a bit too generic. From the docs here
it seems plan is to support devices that support android boot images
with dt in Samsung's qcdt format. The oldest Exynos mobile device do
not even support boot images though, and dt images has only been
around since something like 2015. If I am not mistaken the newest
devices also does not use dt images.

Well no, any Exynos would be supported by this variant, the only
factor is that U-Boot is used as a *secondary* boot loader. QCDT is
specific to the packaging of the u-boot binary (that too, is
located under a 7870-specific section), and if there are any other
packing methods, they can be documented here as well.

That being said, I've found 'exynos-mobile' to be most appropriate
(This is for mobile devices like phones and tablets, where we have
a proprietary primary boot loader). But if you have suggestions for
better names, let me know. :)


+U-Boot is packed with multiple FDTs since it targets multiple boards. The +appropriate FDT is selected during boot. Additionally, a DTB is also required +for embedding in the Android boot image. The previous bootloader can apply +useful overlays on it. Both DTBs are consulted for figuring out the memory
+layout.

+Installation
+------------
+Building
+^^^^^^^^
+To buiid U-Boot, run the following commands

Typo, buiid -> build

+.. prompt:: bash $
+
+ make CROSS_COMPILE=aarch64-linux-gnu- O=.output exynos-mobile_defconfig
+       make CROSS_COMPILE=aarch64-linux-gnu- O=.output -j$(nproc)

I think CROSS_COMPILE=aarch64-linux-gnu- can be dropped from the example, or are only
aarch64 devices supported?

Plans were for aarch64. But if its possible to add armv7 support, then
that would be great! Is multiple arch-es for the same board possible?


+If succcessful, the U-Boot binary will be present in ``.output/u-boot.bin``.

Typo, succcessful -> successful.

+
+Preparation
+^^^^^^^^^^^
+The U-Boot binary is not flashable as-is, it needs to be encapsulated in an +Android boot image. Since it supports multiple boards, and devices have +different requirements (thanks to the lack of standards), this step varies

I think `(thanks to the lack of standards)` is a bit opinionated, and
does not really add anything here, could you please remove it?

I agree. Will remove it.


+depending on your target.
+
+Exynos 7870 Boards
+""""""""""""""""""
+Create the following devicetree (named ``stub.dts``)
+
+.. code-block:: devicetree
+
+       /dts-v1/;
+
+       / {
+               compatible = "samsung,exynos7870";
+               #address-cells = <2>;
+               #size-cells = <1>;
+
+               model_info-chip = <7870>;
+               model_info-hw_rev = <0>;
+               model_info-hw_rev_end = <255>;
+
+               chosen {
+               };
+
+               memory@80000000 {
+                       device_type = "memory";
+                       reg = <0x0 0x80000000 0x0>;
+               };
+
+               memory@100000000 {
+                       device_type = "memory";
+                       reg = <0x1 0x00000000 0x0>;
+               };
+       };
+
+The chosen node and memory ranges are populated by S-BOOT.
+
+Compile it to a devicetree blob, then use ``dtbTool-exynos`` in order to pack it
+in the QCDT format [1]_, using the following commands:
+
+.. prompt:: bash $
+
+       dtc -I dts -O dtb -o stub.dtb stub.dts
+       dtbTool-exynos -o stub.dt.img stub.dtb
+
+Finally, use mkbootimg by osm0sis [2]_ to generate the boot image:
+
+.. prompt:: bash $
+
+       mkbootimg -o u-boot.img \
+               --kernel        .output/u-boot.bin \
+               --dt            stub.dt.img
+
+Offsets are not provided to ``mkbootimg`` as S-BOOT ignores them.
+
+Flashing
+^^^^^^^^
+If flashing for the first time, it must be done via Samsung's Download (Odin)
+mode. Heimdall can be used for flashing, like so:

Maybe it would be useful to link to Heimdall in references as well.

Best regards,
Henrik Grimler

+.. prompt:: bash $
+
+       heimdall flash --BOOT u-boot.img
+
+However, if U-Boot is already installed, you may also use its fastboot interface +for flashing. Boot into the boot menu by holding the volume down key. Enable
+fastboot mode from there, connect the device to your host, then run:
+
+.. prompt:: bash $
+
+       fastboot flash boot u-boot.img
+
+To flash an OS image in internal storage, fastboot is a reliable option.
+
+References
+----------
+.. [1] https://wiki.postmarketos.org/wiki/QCDT
+.. [2] https://github.com/osm0sis/mkbootimg
diff --git a/doc/board/samsung/index.rst b/doc/board/samsung/index.rst
index 1b92c9518a57df102c2b64ff934b460548ce3d53..1fbe88130c049e1a33d22ae9230fb60ddccea131 100644
--- a/doc/board/samsung/index.rst
+++ b/doc/board/samsung/index.rst
@@ -8,4 +8,5 @@ Samsung

    axy17lte
    e850-96
+   exynos-mobile
    n1
diff --git a/include/configs/exynos-mobile.h b/include/configs/exynos-mobile.h
new file mode 100644
index 0000000000000000000000000000000000000000..862db5779ef4c9ff7f53bef78d7cee5107b7226e
--- /dev/null
+++ b/include/configs/exynos-mobile.h
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Samsung Exynos Generic Board Configuration (for mobile devices)
+ *
+ * Copyright (C) 2025 Kaustabh Chakraborty <[email protected]>
+ */
+
+#ifndef __CONFIG_EXYNOS_MOBILE_H
+#define __CONFIG_EXYNOS_MOBILE_H
+
+#define CPU_RELEASE_ADDR       secondary_boot_addr
+#define CFG_SYS_BAUDRATE_TABLE {9600, 115200}
+
+#endif /* __CONFIG_EXYNOS_MOBILE_H */

---
base-commit: 582a04763aa80738c1c8ac60c47d1a5159a42833
change-id: 20251017-board-exynos-mobile-7c7d43832693

Best regards,
--
Kaustabh Chakraborty <[email protected]>

Reply via email to