u-boot-samsung-i9100: update to 2026.07-rc4

And build from tag in exynos4-mainline/u-boot repo instead of carrying
all the patches in pmaports.

In this tag booting from emmc is supported, i.e. https://gitlab.postmarketos.org/postmarketOS/pmaports/-/work_items/3993 is
fixed. As in previous tag i9100 is supported by modifying the board
files for exynos4210-trats, quality is not good enough for sending
upstream.

Fixes: https://gitlab.postmarketos.org/postmarketOS/pmaports/-/work_items/3993
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8877>
This commit is contained in:
Henrik Grimler 2026-06-21 14:32:58 +02:00 committed by The Friendly Meow (merge) Bot
parent 595c276a22
commit 2840ed1a64
No known key found for this signature in database
9 changed files with 15 additions and 709 deletions

View file

@ -1,68 +0,0 @@
From 2543814609a0d9efb607809292e59e12fd05955b Mon Sep 17 00:00:00 2001
From: Henrik Grimler <henrik@grimler.se>
Date: Sun, 29 Sep 2024 13:44:10 +0200
Subject: [PATCH] DONOTMERGE: configs: trats: update values for i9100
i9100 is similar to trats, but needs a different load address. Also
add some convenient commands while we are at it, and
disable (non-working) usb stuff.
---
configs/trats_defconfig | 17 ++++++-----------
1 file changed, 6 insertions(+), 11 deletions(-)
diff --git a/configs/trats_defconfig b/configs/trats_defconfig
index 70f7e06ba9c8..486b91137615 100644
--- a/configs/trats_defconfig
+++ b/configs/trats_defconfig
@@ -3,7 +3,7 @@ CONFIG_SKIP_LOWLEVEL_INIT=y
CONFIG_ARCH_CPU_INIT=y
CONFIG_SYS_L2CACHE_OFF=y
CONFIG_ARCH_EXYNOS=y
-CONFIG_TEXT_BASE=0x63300000
+CONFIG_TEXT_BASE=0x40008000
CONFIG_SYS_MALLOC_LEN=0x5001000
CONFIG_SYS_MALLOC_F_LEN=0x400
CONFIG_ARCH_EXYNOS4=y
@@ -15,7 +15,7 @@ CONFIG_ENV_SIZE=0x1000
CONFIG_ENV_OFFSET=0x7000
CONFIG_DEFAULT_DEVICE_TREE="exynos4210-trats"
CONFIG_SYS_MONITOR_LEN=262144
-CONFIG_SYS_LOAD_ADDR=0x44800000
+CONFIG_SYS_LOAD_ADDR=0x4ee00000
CONFIG_SYS_MEM_TOP_HIDE=0x100000
CONFIG_FIT=y
CONFIG_FIT_VERBOSE=y
@@ -29,14 +29,16 @@ CONFIG_SYS_CONSOLE_INFO_QUIET=y
CONFIG_MISC_INIT_R=y
CONFIG_SYS_PROMPT="Trats # "
# CONFIG_CMD_XIMG is not set
-CONFIG_CMD_THOR_DOWNLOAD=y
+CONFIG_CMD_BIND=y
+CONFIG_CMD_CLK=y
CONFIG_CMD_DFU=y
+CONFIG_CMD_GPIO=y
CONFIG_CMD_GPT=y
CONFIG_CMD_I2C=y
CONFIG_CMD_MMC=y
-CONFIG_CMD_USB_MASS_STORAGE=y
CONFIG_CMD_CACHE=y
# CONFIG_CMD_SLEEP is not set
+CONFIG_CMD_PMIC=y
CONFIG_CMD_EXT4_WRITE=y
CONFIG_OF_CONTROL=y
CONFIG_ENV_OVERWRITE=y
@@ -54,11 +56,4 @@ CONFIG_MMC_SDHCI_S5P=y
CONFIG_DM_PMIC=y
CONFIG_PMIC_MAX8997=y
CONFIG_USB=y
-CONFIG_USB_GADGET=y
-CONFIG_USB_GADGET_MANUFACTURER="Samsung"
-CONFIG_USB_GADGET_VENDOR_NUM=0x04e8
-CONFIG_USB_GADGET_PRODUCT_NUM=0x6601
-CONFIG_USB_GADGET_DWC2_OTG=y
-CONFIG_USB_GADGET_DWC2_OTG_PHY=y
-CONFIG_USB_GADGET_DOWNLOAD=y
CONFIG_LIB_HW_RAND=y
--
2.50.1

View file

@ -1,408 +0,0 @@
From 06e3b3e24dc1b68ac7e988d0dd28cd0967b31fce Mon Sep 17 00:00:00 2001
From: Henrik Grimler <henrik@grimler.se>
Date: Sun, 29 Sep 2024 13:54:07 +0200
Subject: [PATCH] DONOTMERGE: Revert most of "board: samsung: trats: remove the
unnecessary codes"
This reverts commit 5dfbd7bad8b3db6034e6bdcb449f08ec848e64fd.
All these setup values should be properly handled by a pinctrl driver
instead.
---
board/samsung/trats/trats.c | 314 +++++++++++++++++++++---------------
1 file changed, 182 insertions(+), 132 deletions(-)
diff --git a/board/samsung/trats/trats.c b/board/samsung/trats/trats.c
index 6efc6f3831df..3d4981b7b990 100644
--- a/board/samsung/trats/trats.c
+++ b/board/samsung/trats/trats.c
@@ -41,131 +41,188 @@ u32 get_board_rev(void)
struct dwc2_plat_otg_data s5pc210_otg_data;
-#if !CONFIG_IS_ENABLED(DM_I2C) /* TODO(maintainer): Convert to driver model */
-static void trats_low_power_mode(void)
+unsigned char max8997_reg_ldo(int uV)
{
- struct exynos4_clock *clk =
- (struct exynos4_clock *)samsung_get_base_clock();
- struct exynos4_power *pwr =
- (struct exynos4_power *)samsung_get_base_power();
-
- /* Power down CORE1 */
- /* LOCAL_PWR_CFG [1:0] 0x3 EN, 0x0 DIS */
- writel(0x0, &pwr->arm_core1_configuration);
-
- /* Change the APLL frequency */
- /* ENABLE (1 enable) | LOCKED (1 locked) */
- /* [31] | [29] */
- /* FSEL | MDIV | PDIV | SDIV */
- /* [27] | [25:16] | [13:8] | [2:0] */
- writel(0xa0c80604, &clk->apll_con0);
-
- /* Change CPU0 clock divider */
- /* CORE2_RATIO | APLL_RATIO | PCLK_DBG_RATIO | ATB_RATIO */
- /* [30:28] | [26:24] | [22:20] | [18:16] */
- /* PERIPH_RATIO | COREM1_RATIO | COREM0_RATIO | CORE_RATIO */
- /* [14:12] | [10:8] | [6:4] | [2:0] */
- writel(0x00000100, &clk->div_cpu0);
-
- /* CLK_DIV_STAT_CPU0 - wait until clock gets stable (0 = stable) */
- while (readl(&clk->div_stat_cpu0) & 0x1111111)
- continue;
-
- /* Change clock divider ratio for DMC */
- /* DMCP_RATIO | DMCD_RATIO */
- /* [22:20] | [18:16] */
- /* DMC_RATIO | DPHY_RATIO | ACP_PCLK_RATIO | ACP_RATIO */
- /* [14:12] | [10:8] | [6:4] | [2:0] */
- writel(0x13113117, &clk->div_dmc0);
-
- /* CLK_DIV_STAT_DMC0 - wait until clock gets stable (0 = stable) */
- while (readl(&clk->div_stat_dmc0) & 0x11111111)
- continue;
-
- /* Turn off unnecessary power domains */
- writel(0x0, &pwr->xxti_configuration); /* XXTI */
- writel(0x0, &pwr->cam_configuration); /* CAM */
- writel(0x0, &pwr->tv_configuration); /* TV */
- writel(0x0, &pwr->mfc_configuration); /* MFC */
- writel(0x0, &pwr->g3d_configuration); /* G3D */
- writel(0x0, &pwr->gps_configuration); /* GPS */
- writel(0x0, &pwr->gps_alive_configuration); /* GPS_ALIVE */
-
- /* Turn off unnecessary clocks */
- writel(0x0, &clk->gate_ip_cam); /* CAM */
- writel(0x0, &clk->gate_ip_tv); /* TV */
- writel(0x0, &clk->gate_ip_mfc); /* MFC */
- writel(0x0, &clk->gate_ip_g3d); /* G3D */
- writel(0x0, &clk->gate_ip_image); /* IMAGE */
- writel(0x0, &clk->gate_ip_gps); /* GPS */
+ unsigned char ret;
+ if (uV <= 800000)
+ return 0;
+ if (uV >= 3950000)
+ return MAX8997_LDO_MAX_VAL;
+ ret = (uV - 800000) / 50000;
+ if (ret > MAX8997_LDO_MAX_VAL) {
+ printf("MAX8997 LDO SETTING ERROR (%duV) -> %u\n", uV, ret);
+ ret = MAX8997_LDO_MAX_VAL;
+ }
+
+ return ret;
}
-#endif
-int exynos_power_init(void)
+static int pmic_init_max8997(void)
{
-#if !CONFIG_IS_ENABLED(DM_I2C) /* TODO(maintainer): Convert to driver model */
- int chrg, ret;
- struct power_battery *pb;
- struct pmic *p_fg, *p_chrg, *p_muic, *p_bat;
+ printf("%s\n", __func__);
+ struct udevice *dev;
+ int i = 0, ret = 0;
+ u32 val;
- /*
- * For PMIC/MUIC the I2C bus is named as I2C5, but it is connected
- * to logical I2C adapter 0
- *
- * The FUEL_GAUGE is marked as I2C9 on the schematic, but connected
- * to logical I2C adapter 1
- */
- ret = power_fg_init(I2C_9);
- ret |= power_muic_init(I2C_5);
- ret |= power_bat_init(0);
+ ret = pmic_get("max8997-pmic@66", &dev);
if (ret)
return ret;
- p_fg = pmic_get("MAX17042_FG");
- if (!p_fg) {
- puts("MAX17042_FG: Not found\n");
- return -ENODEV;
- }
+ /* BUCK1 VARM: 1.2V */
+ val = (1200000 - 650000) / 25000;
+ ret |= pmic_reg_write(dev, MAX8997_REG_BUCK1DVS1, val);
+ val = ENBUCK | ACTIVE_DISCHARGE; /* DVS OFF */
+ ret |= pmic_reg_write(dev, MAX8997_REG_BUCK1CTRL, val);
- p_chrg = pmic_get("MAX8997_PMIC");
- if (!p_chrg) {
- puts("MAX8997_PMIC: Not found\n");
- return -ENODEV;
- }
+ /* BUCK2 VINT: 1.1V */
+ val = (1100000 - 650000) / 25000;
+ ret |= pmic_reg_write(dev, MAX8997_REG_BUCK2DVS1, val);
+ val = ENBUCK | ACTIVE_DISCHARGE; /* DVS OFF */
+ ret |= pmic_reg_write(dev, MAX8997_REG_BUCK2CTRL, val);
- p_muic = pmic_get("MAX8997_MUIC");
- if (!p_muic) {
- puts("MAX8997_MUIC: Not found\n");
- return -ENODEV;
- }
- p_bat = pmic_get("BAT_TRATS");
- if (!p_bat) {
- puts("BAT_TRATS: Not found\n");
- return -ENODEV;
- }
+ /* BUCK3 G3D: 1.1V - OFF */
+ val |= pmic_reg_read(dev, MAX8997_REG_BUCK3CTRL);
+ val &= ~ENBUCK;
+ ret |= pmic_reg_write(dev, MAX8997_REG_BUCK3CTRL, val);
- p_fg->parent = p_bat;
- p_chrg->parent = p_bat;
- p_muic->parent = p_bat;
+ val = (1100000 - 750000) / 50000;
+ ret |= pmic_reg_write(dev, MAX8997_REG_BUCK3DVS, val);
- p_bat->low_power_mode = trats_low_power_mode;
- p_bat->pbat->battery_init(p_bat, p_fg, p_chrg, p_muic);
+ /* BUCK4 CAMISP: 1.2V - OFF */
+ val |= pmic_reg_read(dev, MAX8997_REG_BUCK4CTRL);
+ val &= ~ENBUCK;
+ ret |= pmic_reg_write(dev, MAX8997_REG_BUCK4CTRL, val);
- pb = p_bat->pbat;
- chrg = p_muic->chrg->chrg_type(p_muic);
- debug("CHARGER TYPE: %d\n", chrg);
+ val = (1200000 - 650000) / 25000;
+ ret |= pmic_reg_write(dev, MAX8997_REG_BUCK4DVS, val);
- if (!p_chrg->chrg->chrg_bat_present(p_chrg)) {
- puts("No battery detected\n");
- return 0;
+ /* BUCK5 VMEM: 1.2V */
+ val = (1200000 - 650000) / 25000;
+ for (i = 0; i < 8; i++)
+ ret |= pmic_reg_write(dev, MAX8997_REG_BUCK5DVS1 + i, val);
+
+ val = ENBUCK | ACTIVE_DISCHARGE; /* DVS OFF */
+ ret |= pmic_reg_write(dev, MAX8997_REG_BUCK5CTRL, val);
+
+ /* BUCK6 CAM AF: 2.8V */
+ /* No Voltage Setting Register */
+ /* GNSLCT 3.0X */
+ val = GNSLCT;
+ ret |= pmic_reg_write(dev, MAX8997_REG_BUCK6CTRL, val);
+
+ /* BUCK7 VCC_SUB: 2.0V */
+ val = (2000000 - 750000) / 50000;
+ ret |= pmic_reg_write(dev, MAX8997_REG_BUCK7DVS, val);
+
+ /* LDO1 VADC: 3.3V */
+ val = max8997_reg_ldo(3300000) | DIS_LDO; /* OFF */
+ ret |= pmic_reg_write(dev, MAX8997_REG_LDO1CTRL, val);
+
+ /* LDO1 Disable active discharging */
+ val |= pmic_reg_read(dev, MAX8997_REG_LDO1CONFIG);
+ val &= ~LDO_ADE;
+ ret |= pmic_reg_write(dev, MAX8997_REG_LDO1CONFIG, val);
+
+ /* LDO2 VALIVE: 1.1V */
+ val = max8997_reg_ldo(1100000) | EN_LDO;
+ ret |= pmic_reg_write(dev, MAX8997_REG_LDO2CTRL, val);
+
+ /* LDO3 VUSB/MIPI: 1.1V */
+ val = max8997_reg_ldo(1100000) | DIS_LDO; /* OFF */
+ ret |= pmic_reg_write(dev, MAX8997_REG_LDO3CTRL, val);
+
+ /* LDO4 VMIPI: 1.8V */
+ val = max8997_reg_ldo(1800000) | DIS_LDO; /* OFF */
+ ret |= pmic_reg_write(dev, MAX8997_REG_LDO4CTRL, val);
+
+ /* LDO5 VHSIC: 1.2V */
+ val = max8997_reg_ldo(1200000) | DIS_LDO; /* OFF */
+ ret |= pmic_reg_write(dev, MAX8997_REG_LDO5CTRL, val);
+
+ /* LDO6 VCC_1.8V_PDA: 1.8V */
+ val = max8997_reg_ldo(1800000) | EN_LDO;
+ ret |= pmic_reg_write(dev, MAX8997_REG_LDO6CTRL, val);
+
+ /* LDO7 CAM_ISP: 1.8V */
+ val = max8997_reg_ldo(1800000) | DIS_LDO; /* OFF */
+ ret |= pmic_reg_write(dev, MAX8997_REG_LDO7CTRL, val);
+
+ /* LDO8 VDAC/VUSB: 3.3V */
+ val = max8997_reg_ldo(3300000) | DIS_LDO; /* OFF */
+ ret |= pmic_reg_write(dev, MAX8997_REG_LDO8CTRL, val);
+
+ /* LDO9 VCC_2.8V_PDA: 2.8V */
+ val = max8997_reg_ldo(2800000) | EN_LDO;
+ ret |= pmic_reg_write(dev, MAX8997_REG_LDO9CTRL, val);
+
+ /* LDO10 VPLL: 1.1V */
+ val = max8997_reg_ldo(1100000) | EN_LDO;
+ ret |= pmic_reg_write(dev, MAX8997_REG_LDO10CTRL, val);
+
+ /* LDO11 TOUCH: 2.8V */
+ val = max8997_reg_ldo(2800000) | DIS_LDO; /* OFF */
+ ret |= pmic_reg_write(dev, MAX8997_REG_LDO11CTRL, val);
+
+ /* LDO12 VTCAM: 1.8V */
+ val = max8997_reg_ldo(1800000) | DIS_LDO; /* OFF */
+ ret |= pmic_reg_write(dev, MAX8997_REG_LDO12CTRL, val);
+
+ /* LDO13 VCC_3.0_LCD: 3.0V */
+ val = max8997_reg_ldo(3000000) | DIS_LDO; /* OFF */
+ ret |= pmic_reg_write(dev, MAX8997_REG_LDO13CTRL, val);
+
+ /* LDO14 MOTOR: 3.0V */
+ val = max8997_reg_ldo(3000000) | DIS_LDO; /* OFF */
+ ret |= pmic_reg_write(dev, MAX8997_REG_LDO14CTRL, val);
+
+ /* LDO15 LED_A: 2.8V */
+ val = max8997_reg_ldo(2800000) | DIS_LDO; /* OFF */
+ ret |= pmic_reg_write(dev, MAX8997_REG_LDO15CTRL, val);
+
+ /* LDO16 CAM_SENSOR: 1.8V */
+ val = max8997_reg_ldo(1800000) | DIS_LDO; /* OFF */
+ ret |= pmic_reg_write(dev, MAX8997_REG_LDO16CTRL, val);
+
+ /* LDO17 VTF: 2.8V */
+ val = max8997_reg_ldo(2800000) | DIS_LDO; /* OFF */
+ ret |= pmic_reg_write(dev, MAX8997_REG_LDO17CTRL, val);
+
+ /* LDO18 TOUCH_LED 3.3V */
+ val = max8997_reg_ldo(3300000) | DIS_LDO; /* OFF */
+ ret |= pmic_reg_write(dev, MAX8997_REG_LDO18CTRL, val);
+
+ /* LDO21 VDDQ: 1.2V */
+ val = max8997_reg_ldo(1200000) | EN_LDO;
+ ret |= pmic_reg_write(dev, MAX8997_REG_LDO21CTRL, val);
+
+ /* SAFEOUT for both 1 and 2: 4.9V, Active discharge, Enable */
+ val = (SAFEOUT_4_90V << 0) | (SAFEOUT_4_90V << 2) |
+ ACTDISSAFEO1 | ACTDISSAFEO2 | ENSAFEOUT1 | ENSAFEOUT2;
+ ret |= pmic_reg_write(dev, MAX8997_REG_SAFEOUTCTRL, val);
+
+ if (ret) {
+ puts("MAX8997 PMIC setting error!\n");
+ return -1;
}
- p_fg->fg->fg_battery_check(p_fg, p_bat);
+ return 0;
+}
- if (pb->bat->state == CHARGE && chrg == CHARGER_USB)
- puts("CHARGE Battery !\n");
-#endif
+int exynos_power_init(void)
+{
+ int ret;
+
+ /*
+ * For PMIC/MUIC the I2C bus is named as I2C5, but it is connected
+ * to logical I2C adapter 0
+ *
+ * The FUEL_GAUGE is marked as I2C9 on the schematic, but connected
+ * to logical I2C adapter 1
+ */
+ ret = pmic_init_max8997();
+ if (ret)
+ return ret;
return 0;
}
@@ -217,7 +274,7 @@ static int s5pc210_phy_control(int on)
struct udevice *dev;
int reg, ret;
- ret = pmic_get("max8997-pmic", &dev);
+ ret = pmic_get("max8997-pmic@66", &dev);
if (ret)
return ret;
@@ -287,15 +344,14 @@ int board_usb_init(int index, enum usb_init_type init)
int g_dnl_board_usb_cable_connected(void)
{
-#if !CONFIG_IS_ENABLED(DM_I2C) /* TODO(maintainer): Convert to driver model */
- struct pmic *muic = pmic_get("MAX8997_MUIC");
- if (!muic)
+ struct udevice *dev;
+ int ret;
+
+ ret = pmic_get("max8997-pmic@66", &dev);
+ if (ret)
return 0;
return !!muic->chrg->chrg_type(muic);
-#else
- return false;
-#endif
}
#endif
@@ -399,48 +455,42 @@ int exynos_early_init_f(void)
int lcd_power(void)
{
-#if !CONFIG_IS_ENABLED(DM_I2C) /* TODO(maintainer): Convert to driver model */
+ struct udevice *dev;
int ret = 0;
- struct pmic *p = pmic_get("MAX8997_PMIC");
- if (!p)
- return -ENODEV;
- if (pmic_probe(p))
- return 0;
+ ret = pmic_get("max8997-pmic@66", &dev);
+ if (ret)
+ return -ENODEV;
/* LDO15 voltage: 2.2v */
- ret |= pmic_reg_write(p, MAX8997_REG_LDO15CTRL, 0x1c | EN_LDO);
+ ret |= pmic_reg_write(dev, MAX8997_REG_LDO15CTRL, 0x1c | EN_LDO);
/* LDO13 voltage: 3.0v */
- ret |= pmic_reg_write(p, MAX8997_REG_LDO13CTRL, 0x2c | EN_LDO);
+ ret |= pmic_reg_write(dev, MAX8997_REG_LDO13CTRL, 0x2c | EN_LDO);
if (ret) {
puts("MAX8997 LDO setting error!\n");
return -1;
}
-#endif
return 0;
}
int mipi_power(void)
{
-#if !CONFIG_IS_ENABLED(DM_I2C) /* TODO(maintainer): Convert to driver model */
+ struct udevice *dev;
int ret = 0;
- struct pmic *p = pmic_get("MAX8997_PMIC");
- if (!p)
- return -ENODEV;
- if (pmic_probe(p))
- return 0;
+ ret = pmic_get("max8997-pmic@66", &dev);
+ if (ret)
+ return -ENODEV;
/* LDO3 voltage: 1.1v */
- ret |= pmic_reg_write(p, MAX8997_REG_LDO3CTRL, 0x6 | EN_LDO);
+ ret |= pmic_reg_write(dev, MAX8997_REG_LDO3CTRL, 0x6 | EN_LDO);
/* LDO4 voltage: 1.8v */
- ret |= pmic_reg_write(p, MAX8997_REG_LDO4CTRL, 0x14 | EN_LDO);
+ ret |= pmic_reg_write(dev, MAX8997_REG_LDO4CTRL, 0x14 | EN_LDO);
if (ret) {
puts("MAX8997 LDO setting error!\n");
return -1;
}
-#endif
return 0;
}
--
2.50.1

View file

@ -1,26 +0,0 @@
From 394d82bf51c8856f80071c1ba45fb97d9e0270f9 Mon Sep 17 00:00:00 2001
From: Henrik Grimler <henrik@grimler.se>
Date: Sat, 26 Jul 2025 21:28:25 +0200
Subject: [PATCH] DONOTMERGE: board: samsung: trats: enable ldo17
Or else reading from sdcards cannot work on i9100.
---
board/samsung/trats/trats.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/board/samsung/trats/trats.c b/board/samsung/trats/trats.c
index 3d4981b7b990..33bf8be8a0e9 100644
--- a/board/samsung/trats/trats.c
+++ b/board/samsung/trats/trats.c
@@ -185,7 +185,7 @@ static int pmic_init_max8997(void)
ret |= pmic_reg_write(dev, MAX8997_REG_LDO16CTRL, val);
/* LDO17 VTF: 2.8V */
- val = max8997_reg_ldo(2800000) | DIS_LDO; /* OFF */
+ val = max8997_reg_ldo(2800000) | EN_LDO;
ret |= pmic_reg_write(dev, MAX8997_REG_LDO17CTRL, val);
/* LDO18 TOUCH_LED 3.3V */
--
2.50.1

View file

@ -1,34 +0,0 @@
From 44dac4d2cbaadc2e03e825a223fef741e95b33f2 Mon Sep 17 00:00:00 2001
From: Henrik Grimler <henrik@grimler.se>
Date: Sat, 26 Jul 2025 21:33:21 +0200
Subject: [PATCH] ARM: dts: exynos4210-trats (i9100): fix eMMC and sdcard
sdhci0 is non-removable (eMMC) on i9100, and sdhci2 should be
ACTIVE_LOW to match linux kernel.
---
arch/arm/dts/exynos4210-trats.dts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/arm/dts/exynos4210-trats.dts b/arch/arm/dts/exynos4210-trats.dts
index 88e9c0ed2bb0..57fd8ecae3f6 100644
--- a/arch/arm/dts/exynos4210-trats.dts
+++ b/arch/arm/dts/exynos4210-trats.dts
@@ -240,6 +240,7 @@
};
&sdhci0 {
+ non-removable;
bus-width = <8>;
pwr-gpios = <&gpk0 2 0>;
status = "okay";
@@ -247,6 +248,6 @@
&sdhci2 {
bus-width = <4>;
- cd-gpios = <&gpx3 4 0>;
+ cd-gpios = <&gpx3 4 1>;
status = "okay";
};
--
2.50.1

View file

@ -1,48 +0,0 @@
From b13641ae44d93c7dc2dd658ab3a81a1beba1fe35 Mon Sep 17 00:00:00 2001
From: Henrik Grimler <henrik@grimler.se>
Date: Sun, 27 Jul 2025 10:33:30 +0200
Subject: [PATCH] configs: trats: add some variables necessary for extlinux
boot
With these changes we can successfully boot linux through
extlinux. All of the added variables are likely not needed, but I am
too lazy to check each one.
---
include/configs/trats.h | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/include/configs/trats.h b/include/configs/trats.h
index 2067327918a2..c2ff8a71c3be 100644
--- a/include/configs/trats.h
+++ b/include/configs/trats.h
@@ -10,6 +10,10 @@
#define __CONFIG_TRATS_H
#include <configs/exynos4-common.h>
+#define BOOT_TARGET_DEVICES(func) \
+ func(MMC, mmc, 1) \
+ func(MMC, mmc, 0)
+#include <config_distro_bootcmd.h>
#ifndef CONFIG_SYS_L2CACHE_OFF
#define CFG_SYS_PL310_BASE 0x10502000
@@ -55,6 +59,16 @@
"/Image.itb ext4 0 2\0"
#define CFG_EXTRA_ENV_SETTINGS \
+ "kernel_addr_r=0x42000000\0" \
+ "kerneladdr=0x42000000\0" \
+ "fdt_addr_r=0x44000000\0" \
+ "fdtaddr=0x44000000\0" \
+ "scriptaddr=0x43000000\0" \
+ "pxefile_addr_r=0x45000000\0" \
+ "initrd_high=0x46000000\0" \
+ "ramdisk_addr_r=0x46000000\0" \
+ "initrdaddr=0x46000000\0" \
+ BOOTENV \
"bootk=" \
"run loaduimage;" \
"if run loaddtb; then " \
--
2.50.1

View file

@ -1,35 +0,0 @@
From 33fe50f03c35fe49a4564a7772aab62a82d95d4f Mon Sep 17 00:00:00 2001
From: Henrik Grimler <henrik@grimler.se>
Date: Sat, 9 Aug 2025 07:30:48 +0200
Subject: [PATCH] configs: trats: disable BOOTCOMMAND so that autoboot can work
BOOTCOMMAND was set to `run autoboot`, which does not work. Unset the
variable so that it runs `run distro_bootcmd` instead, which does
work. Also re-generate config while at it.
---
configs/trats_defconfig | 2 --
1 file changed, 2 deletions(-)
diff --git a/configs/trats_defconfig b/configs/trats_defconfig
index 486b91137615..f2d3908f6bc4 100644
--- a/configs/trats_defconfig
+++ b/configs/trats_defconfig
@@ -22,7 +22,6 @@ CONFIG_FIT_VERBOSE=y
CONFIG_DISTRO_DEFAULTS=y
CONFIG_USE_BOOTARGS=y
CONFIG_BOOTARGS="Please use defined boot"
-CONFIG_BOOTCOMMAND="run autoboot"
CONFIG_SYS_PBSIZE=1024
CONFIG_SYS_CONSOLE_IS_IN_ENV=y
CONFIG_SYS_CONSOLE_INFO_QUIET=y
@@ -30,7 +29,6 @@ CONFIG_MISC_INIT_R=y
CONFIG_SYS_PROMPT="Trats # "
# CONFIG_CMD_XIMG is not set
CONFIG_CMD_BIND=y
-CONFIG_CMD_CLK=y
CONFIG_CMD_DFU=y
CONFIG_CMD_GPIO=y
CONFIG_CMD_GPT=y
--
2.50.1

View file

@ -1,27 +0,0 @@
From 8004f0f13eb584a41e0e6b63f97cde84d22d74e5 Mon Sep 17 00:00:00 2001
From: Henrik Grimler <henrik@grimler.se>
Date: Sat, 9 Aug 2025 07:35:47 +0200
Subject: [PATCH] configs: trats: increase env_size
With 0x1000 it is too small after we pull in config_distro_bootcmd.h
and its environment.
---
configs/trats_defconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configs/trats_defconfig b/configs/trats_defconfig
index f2d3908f6bc4..5f240b49dbc2 100644
--- a/configs/trats_defconfig
+++ b/configs/trats_defconfig
@@ -11,7 +11,7 @@ CONFIG_TARGET_TRATS=y
CONFIG_EXYNOS_ACE_SHA=y
CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x447fff10
-CONFIG_ENV_SIZE=0x1000
+CONFIG_ENV_SIZE=0x2000
CONFIG_ENV_OFFSET=0x7000
CONFIG_DEFAULT_DEVICE_TREE="exynos4210-trats"
CONFIG_SYS_MONITOR_LEN=262144
--
2.50.1

View file

@ -1,41 +0,0 @@
From 0edf0a40522c7918724db6bc777f35999c013be1 Mon Sep 17 00:00:00 2001
From: Henrik Grimler <henrik@grimler.se>
Date: Sun, 10 Aug 2025 08:30:07 +0200
Subject: [PATCH] trats: clk: enable most of CLK_GATE_BLOCK
Without these individual bits linux hangs when initialising different
nodes, specifically when reading clk values.
BIT_BLOCK_CLK_LCD0 is needed for mdma1 (dma-controller@12850000).
BIT_BLOCK_CLK_MFC is needed for mfc_l (sysmmu@13620000).
BIT_BLOCK_CLK_TV is needed for sysmmu_tv (sysmmu@12e20000).
BIT_BLOCK_CLK_CAM is needed for sysmmu_fimc0 (sysmmu@11a20000).
BIT_BLOCK_CLK_LCD1 is needed for sysmmu_fimd1 (sysmmu@12220000).
BIT_BLOCK_CLK_G3D is needed by touchscreen, without it linux hangs
after ~35 s when setting up touchscreen.
---
board/samsung/trats/setup.h | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/board/samsung/trats/setup.h b/board/samsung/trats/setup.h
index 739bdf95f8c6..744c4b900e60 100644
--- a/board/samsung/trats/setup.h
+++ b/board/samsung/trats/setup.h
@@ -609,7 +609,13 @@
| (CLK_EN << BIT_PERIL_CLK_SLIMBUS)))
#define CLK_GATE_IP_PERIR_VAL (CLK_GATE_IP_PERIR_ALL_DIS \
| ~((CLK_EN << BIT_PERIR_CLK_KEYIF)))
-#define CLK_GATE_BLOCK_VAL CLK_GATE_BLOCK_ALL_DIS
+#define CLK_GATE_BLOCK_VAL (CLK_GATE_BLOCK_ALL_DIS \
+ | (CLK_EN << BIT_BLOCK_CLK_LCD0)\
+ | (CLK_EN << BIT_BLOCK_CLK_MFC)\
+ | (CLK_EN << BIT_BLOCK_CLK_TV)\
+ | (CLK_EN << BIT_BLOCK_CLK_CAM)\
+ | (CLK_EN << BIT_BLOCK_CLK_LCD1)\
+ | (CLK_EN << BIT_BLOCK_CLK_G3D))
/* PS_HOLD: Data Hight, Output En */
#define BIT_DAT 8
--
2.50.1

View file

@ -1,7 +1,7 @@
maintainer="Henrik Grimler <henrik@grimler.se>"
pkgname=u-boot-samsung-i9100
pkgver=2025.10_rc2
pkgrel=1
pkgver=2026.07_rc4
pkgrel=0
pkgdesc="u-boot bootloader for i9100 (close to mainline)"
url="https://www.denx.de/wiki/U-Boot/"
arch="armv7"
@ -9,6 +9,7 @@ license="GPL-2.0-or-later OFL-1.1 BSD-2-Clause BSD-3-Clause WITH eCos-exception-
ISC LGPL-2.0-only LGPL-2.1-only X11"
options="!check !strip !tracedeps pmb:cross-native" # no tests
makedepends="
bash
bc
bison
dtc
@ -24,19 +25,19 @@ makedepends="
swig
util-linux-dev
"
_tag="v${pkgver//_/-}"
_tag="v${pkgver//_/-}-exynos4-i9100_(trats-mod)"
source="
https://gitlab.com/u-boot/u-boot/-/archive/${_tag}/u-boot-${_tag}.tar.bz2
0001-DONOTMERGE-configs-trats-update-values-for-i9100.patch
0002-DONOTMERGE-Revert-most-of-board-samsung-trats-remove.patch
0003-DONOTMERGE-board-samsung-trats-enable-ldo17.patch
0004-ARM-dts-exynos4210-trats-i9100-fix-eMMC-and-sdcard.patch
0005-configs-trats-add-some-variables-necessary-for-extli.patch
0006-configs-trats-disable-BOOTCOMMAND-so-that-autoboot-c.patch
0007-configs-trats-increase-env_size.patch
0008-trats-clk-enable-most-of-CLK_GATE_BLOCK.patch
https://gitlab.com/exynos4-mainline/u-boot/-/archive/$_tag/u-boot-$_tag.tar.bz2
"
builddir="$srcdir/u-boot-$_tag"
builddir="$srcdir/u-boot-$pkgver"
prepare() {
# Avoid having a folder with ( ) in filename, which u-boot
# does not handle well
mv "$srcdir/u-boot-$_tag" "$srcdir/u-boot-$pkgver"
default_prepare
}
build() {
touch include/config.h
@ -53,13 +54,5 @@ package() {
}
sha512sums="
2b06e462f77131bdb303a23e92d1086d0b8ffd4fd98ead1e3700d3b5eea5857478f63c98dc4760f2d9199750ac549cb5367cd6162d20c26333b92dbb5eab2361 u-boot-v2025.10-rc2.tar.bz2
b85b61b5c83adb11fc4ed91092dd73cdf7f8a92558071856b6c3491ee293a3000736bc0bf6c0164a56098754cda49431c023e5adc344ca7df098069da2e1e5a5 0001-DONOTMERGE-configs-trats-update-values-for-i9100.patch
0d54643ce6670116bc130bca71c500e0e3af956f917544e6574878091e7ddfb96753eea34686a8c81d297cdf75a3beba67a26735cfb601bfb5e3cdceb3a97e0c 0002-DONOTMERGE-Revert-most-of-board-samsung-trats-remove.patch
68ac00258f05b0e266b35c5406571dfde69a5aae37468e659f5cd1430ea3af5a92b527592b46d90af7cc704782f9ced570fbb76dafa2e83d2a6429b4fee9862b 0003-DONOTMERGE-board-samsung-trats-enable-ldo17.patch
9960e08783dc35acfc25374c5f2e2a8b3a091e42474de505d860335c8ac90d05ceae746bac3abe6a2a6d3f8dcac5242c95f2aea14412cdfda0d1dcd874f52744 0004-ARM-dts-exynos4210-trats-i9100-fix-eMMC-and-sdcard.patch
5e334ed2378688f85e6634bcddbe22ac5a2c2eb463e86965a84daececb8ddc0a3eef75bf1700de210c433e65087707c864ff2d1829e99f1baeee6a42ad6071f8 0005-configs-trats-add-some-variables-necessary-for-extli.patch
52f1c15fc74d574613823380d41ba635f5e806470956eca0e08724af182788d8545011946599bf8306ce99136c55be7e291c606a10bf75a58b3a857eee8f0c05 0006-configs-trats-disable-BOOTCOMMAND-so-that-autoboot-c.patch
6f5a0a3e068ba60ca557cdf1b449c769f7ca3763cf32cc13e05ec06d7f56c732e4073e87a79fabf73300b5d541b6046d30e355bc07039dedba5a5bc8a6726ffa 0007-configs-trats-increase-env_size.patch
6d28220ddb972fc9bc14cd9396feaf9a7a15e7b87c81af02f739f621f07e37b24e3e8da2015bec1f4557f49c43670e367618a39abd686fb18e1433c3a6be918d 0008-trats-clk-enable-most-of-CLK_GATE_BLOCK.patch
5045f7dbfb8db6ba07080959940378e18aaa6ce39c56d8fccff4580045d03bafd5705bf9fbb49ab2df441ac36c1deb243b1cf9be7d0ff253f27c118db3daa48a u-boot-v2026.07-rc4-exynos4-i9100_(trats-mod).tar.bz2
"