From 06f5839fe052488b8f5e25bca22f807890bdeaec Mon Sep 17 00:00:00 2001 From: Henrik Grimler Date: Sat, 26 Jul 2025 19:59:49 +0200 Subject: [PATCH] testing/u-boot-samsung-i9100: add package Close-to-mainline fork (also kept at https://gitlab.com/exynos4-mainline/u-boot/) where i9100 can use trats_defconfig, since exynos4210-trats is very similar to i9100. Part-of: --- ...onfigs-trats-update-values-for-i9100.patch | 68 +++ ...t-most-of-board-samsung-trats-remove.patch | 408 ++++++++++++++++++ ...RGE-board-samsung-trats-enable-ldo17.patch | 26 ++ ...4210-trats-i9100-fix-eMMC-and-sdcard.patch | 34 ++ ...d-some-variables-necessary-for-extli.patch | 48 +++ ...sable-BOOTCOMMAND-so-that-autoboot-c.patch | 35 ++ ...0007-configs-trats-increase-env_size.patch | 27 ++ ...ts-clk-enable-most-of-CLK_GATE_BLOCK.patch | 41 ++ device/testing/u-boot-samsung-i9100/APKBUILD | 64 +++ 9 files changed, 751 insertions(+) create mode 100644 device/testing/u-boot-samsung-i9100/0001-DONOTMERGE-configs-trats-update-values-for-i9100.patch create mode 100644 device/testing/u-boot-samsung-i9100/0002-DONOTMERGE-Revert-most-of-board-samsung-trats-remove.patch create mode 100644 device/testing/u-boot-samsung-i9100/0003-DONOTMERGE-board-samsung-trats-enable-ldo17.patch create mode 100644 device/testing/u-boot-samsung-i9100/0004-ARM-dts-exynos4210-trats-i9100-fix-eMMC-and-sdcard.patch create mode 100644 device/testing/u-boot-samsung-i9100/0005-configs-trats-add-some-variables-necessary-for-extli.patch create mode 100644 device/testing/u-boot-samsung-i9100/0006-configs-trats-disable-BOOTCOMMAND-so-that-autoboot-c.patch create mode 100644 device/testing/u-boot-samsung-i9100/0007-configs-trats-increase-env_size.patch create mode 100644 device/testing/u-boot-samsung-i9100/0008-trats-clk-enable-most-of-CLK_GATE_BLOCK.patch create mode 100644 device/testing/u-boot-samsung-i9100/APKBUILD diff --git a/device/testing/u-boot-samsung-i9100/0001-DONOTMERGE-configs-trats-update-values-for-i9100.patch b/device/testing/u-boot-samsung-i9100/0001-DONOTMERGE-configs-trats-update-values-for-i9100.patch new file mode 100644 index 000000000..3d6d5940f --- /dev/null +++ b/device/testing/u-boot-samsung-i9100/0001-DONOTMERGE-configs-trats-update-values-for-i9100.patch @@ -0,0 +1,68 @@ +From 2543814609a0d9efb607809292e59e12fd05955b Mon Sep 17 00:00:00 2001 +From: Henrik Grimler +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 + diff --git a/device/testing/u-boot-samsung-i9100/0002-DONOTMERGE-Revert-most-of-board-samsung-trats-remove.patch b/device/testing/u-boot-samsung-i9100/0002-DONOTMERGE-Revert-most-of-board-samsung-trats-remove.patch new file mode 100644 index 000000000..e9539e34a --- /dev/null +++ b/device/testing/u-boot-samsung-i9100/0002-DONOTMERGE-Revert-most-of-board-samsung-trats-remove.patch @@ -0,0 +1,408 @@ +From 06e3b3e24dc1b68ac7e988d0dd28cd0967b31fce Mon Sep 17 00:00:00 2001 +From: Henrik Grimler +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 + diff --git a/device/testing/u-boot-samsung-i9100/0003-DONOTMERGE-board-samsung-trats-enable-ldo17.patch b/device/testing/u-boot-samsung-i9100/0003-DONOTMERGE-board-samsung-trats-enable-ldo17.patch new file mode 100644 index 000000000..d8bd1ce00 --- /dev/null +++ b/device/testing/u-boot-samsung-i9100/0003-DONOTMERGE-board-samsung-trats-enable-ldo17.patch @@ -0,0 +1,26 @@ +From 394d82bf51c8856f80071c1ba45fb97d9e0270f9 Mon Sep 17 00:00:00 2001 +From: Henrik Grimler +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 + diff --git a/device/testing/u-boot-samsung-i9100/0004-ARM-dts-exynos4210-trats-i9100-fix-eMMC-and-sdcard.patch b/device/testing/u-boot-samsung-i9100/0004-ARM-dts-exynos4210-trats-i9100-fix-eMMC-and-sdcard.patch new file mode 100644 index 000000000..20d0cf092 --- /dev/null +++ b/device/testing/u-boot-samsung-i9100/0004-ARM-dts-exynos4210-trats-i9100-fix-eMMC-and-sdcard.patch @@ -0,0 +1,34 @@ +From 44dac4d2cbaadc2e03e825a223fef741e95b33f2 Mon Sep 17 00:00:00 2001 +From: Henrik Grimler +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 + diff --git a/device/testing/u-boot-samsung-i9100/0005-configs-trats-add-some-variables-necessary-for-extli.patch b/device/testing/u-boot-samsung-i9100/0005-configs-trats-add-some-variables-necessary-for-extli.patch new file mode 100644 index 000000000..3cf21b760 --- /dev/null +++ b/device/testing/u-boot-samsung-i9100/0005-configs-trats-add-some-variables-necessary-for-extli.patch @@ -0,0 +1,48 @@ +From b13641ae44d93c7dc2dd658ab3a81a1beba1fe35 Mon Sep 17 00:00:00 2001 +From: Henrik Grimler +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 ++#define BOOT_TARGET_DEVICES(func) \ ++ func(MMC, mmc, 1) \ ++ func(MMC, mmc, 0) ++#include + + #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 + diff --git a/device/testing/u-boot-samsung-i9100/0006-configs-trats-disable-BOOTCOMMAND-so-that-autoboot-c.patch b/device/testing/u-boot-samsung-i9100/0006-configs-trats-disable-BOOTCOMMAND-so-that-autoboot-c.patch new file mode 100644 index 000000000..18d0303ec --- /dev/null +++ b/device/testing/u-boot-samsung-i9100/0006-configs-trats-disable-BOOTCOMMAND-so-that-autoboot-c.patch @@ -0,0 +1,35 @@ +From 33fe50f03c35fe49a4564a7772aab62a82d95d4f Mon Sep 17 00:00:00 2001 +From: Henrik Grimler +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 + diff --git a/device/testing/u-boot-samsung-i9100/0007-configs-trats-increase-env_size.patch b/device/testing/u-boot-samsung-i9100/0007-configs-trats-increase-env_size.patch new file mode 100644 index 000000000..2fd01a7e8 --- /dev/null +++ b/device/testing/u-boot-samsung-i9100/0007-configs-trats-increase-env_size.patch @@ -0,0 +1,27 @@ +From 8004f0f13eb584a41e0e6b63f97cde84d22d74e5 Mon Sep 17 00:00:00 2001 +From: Henrik Grimler +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 + diff --git a/device/testing/u-boot-samsung-i9100/0008-trats-clk-enable-most-of-CLK_GATE_BLOCK.patch b/device/testing/u-boot-samsung-i9100/0008-trats-clk-enable-most-of-CLK_GATE_BLOCK.patch new file mode 100644 index 000000000..ba3763bd1 --- /dev/null +++ b/device/testing/u-boot-samsung-i9100/0008-trats-clk-enable-most-of-CLK_GATE_BLOCK.patch @@ -0,0 +1,41 @@ +From 0edf0a40522c7918724db6bc777f35999c013be1 Mon Sep 17 00:00:00 2001 +From: Henrik Grimler +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 + diff --git a/device/testing/u-boot-samsung-i9100/APKBUILD b/device/testing/u-boot-samsung-i9100/APKBUILD new file mode 100644 index 000000000..5c53a7c16 --- /dev/null +++ b/device/testing/u-boot-samsung-i9100/APKBUILD @@ -0,0 +1,64 @@ +pkgname=u-boot-samsung-i9100 +pkgver=2025.10_rc2 +pkgrel=0 +pkgdesc="u-boot bootloader for i9100 (close to mainline)" +url="https://www.denx.de/wiki/U-Boot/" +arch="armv7" +license="GPL-2.0-or-later OFL-1.1 BSD-2-Clause BSD-3-Clause WITH eCos-exception-2.0 IBM-pibs + ISC LGPL-2.0-only LGPL-2.1-only X11" +options="!check !strip !tracedeps pmb:cross-native" # no tests +makedepends=" + bc + bison + dtc + flex + gawk + gnutls-dev + linux-headers + ncurses-dev + openssl-dev + py3-elftools + py3-setuptools + python3-dev + swig + util-linux-dev + " +_tag="v${pkgver//_/-}" +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 +" +builddir="$srcdir/u-boot-$_tag" + +build() { + touch include/config.h + LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"' > include/timestamp_autogenerated.h + LC_ALL=C date +'#define U_BOOT_TIME "%T"' >> include/timestamp_autogenerated.h + + make O="$builddir/build" trats_config + make O="$builddir/build" all +} + +package() { + install -D -m644 build/u-boot.bin \ + "$pkgdir"/usr/share/u-boot/trats/u-boot.bin +} + +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 +"