* [PATCH 0/4] spl: Add UFS boot support for SPL on Qualcomm
@ 2026-04-09 14:43 Balaji Selvanathan
2026-04-09 14:43 ` [PATCH 1/4] spl: ufs: Add partition support and flexible loading Balaji Selvanathan
` (3 more replies)
0 siblings, 4 replies; 13+ messages in thread
From: Balaji Selvanathan @ 2026-04-09 14:43 UTC (permalink / raw)
To: u-boot, Sumit Garg, u-boot-qcom
Cc: Tom Rini, Neil Armstrong, Bhupesh Sharma, Neha Malcom Francis,
Anshul Dalal, Peng Fan, Mattijs Korpershoek, Quentin Schulz,
Hrushikesh Salunke, Alexey Charkov, Dario Binacchi,
Andre Przywara, Ilias Apalodimas, Javier Martinez Canillas,
Jan Kiszka, Javier Tia, Rasmus Villemoes, Varadarajan Narayanan,
João Marcos Costa, Dhruva Gole, Richard Genoud, Marek Vasut,
Simon Glass, Igor Belwon, Shawn Lin, Tuyen Dang, Casey Connolly,
Lukasz Majewski, Patrice Chotard, Patrick Delaunay, Michal Simek,
Yao Zi, Peter Korsgaard, Balaji Selvanathan
This series enables UFS as a boot device in SPL for Qualcomm
platforms. It adds partition-based loading support similar to MMC,
enables the Qualcomm UFS driver and PHY for SPL builds, and adds
necessary clock stub support.
The changes allow flexible boot configurations using partition names
or numbers instead of hardcoded sector offsets, bringing UFS boot
capability on par with MMC/SD boot in SPL.
Signed-off-by: Balaji Selvanathan <balaji.selvanathan@oss.qualcomm.com>
---
Balaji Selvanathan (4):
spl: ufs: Add partition support and flexible loading
drivers: ufs: qcom: Add SPL support
drivers: phy: qcom: Add UFS PHY support for SPL
clk: stub: Add Kconfig option for SPL stub driver
common/spl/Kconfig | 40 +++++++++-
common/spl/spl_ufs.c | 188 +++++++++++++++++++++++++++++++++++++++++-----
drivers/clk/Kconfig | 7 ++
drivers/phy/qcom/Kconfig | 7 ++
drivers/phy/qcom/Makefile | 2 +-
drivers/ufs/Kconfig | 8 ++
drivers/ufs/Makefile | 7 +-
include/part.h | 3 +-
include/spl.h | 4 +
9 files changed, 243 insertions(+), 23 deletions(-)
---
base-commit: 6cd26c192df54db580aaf7fccf601b5dca1f13ce
change-id: 20260409-spl_ufs_only-c90c0b65bff2
Best regards,
--
Balaji Selvanathan <balaji.selvanathan@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 13+ messages in thread* [PATCH 1/4] spl: ufs: Add partition support and flexible loading 2026-04-09 14:43 [PATCH 0/4] spl: Add UFS boot support for SPL on Qualcomm Balaji Selvanathan @ 2026-04-09 14:43 ` Balaji Selvanathan 2026-04-09 15:39 ` Alexey Charkov 2026-04-09 14:43 ` [PATCH 2/4] drivers: ufs: qcom: Add SPL support Balaji Selvanathan ` (2 subsequent siblings) 3 siblings, 1 reply; 13+ messages in thread From: Balaji Selvanathan @ 2026-04-09 14:43 UTC (permalink / raw) To: u-boot, Sumit Garg, u-boot-qcom Cc: Tom Rini, Neil Armstrong, Bhupesh Sharma, Neha Malcom Francis, Anshul Dalal, Peng Fan, Mattijs Korpershoek, Quentin Schulz, Hrushikesh Salunke, Alexey Charkov, Dario Binacchi, Andre Przywara, Ilias Apalodimas, Javier Martinez Canillas, Jan Kiszka, Javier Tia, Rasmus Villemoes, Varadarajan Narayanan, João Marcos Costa, Dhruva Gole, Richard Genoud, Marek Vasut, Simon Glass, Igor Belwon, Shawn Lin, Tuyen Dang, Casey Connolly, Lukasz Majewski, Patrice Chotard, Patrick Delaunay, Michal Simek, Yao Zi, Peter Korsgaard, Balaji Selvanathan Add partition-based loading support to SPL UFS, similar to the existing implementation in spl_mmc.c. This allows loading from named partitions or partition numbers instead of hardcoded sector offsets. The loading strategy tries methods in order: absolute sector if configured, partition by name, partition by number, then filesystem mode (placeholder for future implementation). This brings UFS boot flexibility on par with MMC/SD boot. Signed-off-by: Balaji Selvanathan <balaji.selvanathan@oss.qualcomm.com> --- common/spl/Kconfig | 40 ++++++++++- common/spl/spl_ufs.c | 188 +++++++++++++++++++++++++++++++++++++++++++++------ include/part.h | 3 +- include/spl.h | 4 ++ 4 files changed, 214 insertions(+), 21 deletions(-) diff --git a/common/spl/Kconfig b/common/spl/Kconfig index a21b71ad5d1..b3c7a1d8aa3 100644 --- a/common/spl/Kconfig +++ b/common/spl/Kconfig @@ -1637,9 +1637,47 @@ config SPL_UFS_RAW_U_BOOT_SECTOR depends on SPL_UFS_SUPPORT default 0x800 if ARCH_ROCKCHIP help - Address on the block device to load U-Boot from. + Absolute sector offset on the UFS LUN to load U-Boot from. + This is tried first before partition-based loading. + Set to 0x0 to skip absolute sector loading and use partition mode. Units: UFS sectors (1 sector = 4096 bytes). +config SPL_UFS_RAW_U_BOOT_USE_PARTITION + bool "Enable UFS partition support for raw mode" + depends on SPL_UFS_SUPPORT + select SPL_LIBDISK_SUPPORT + help + Enable support for loading from a specific partition on UFS + in raw mode. When enabled, you can specify either a partition + name or partition number to load from. + +config SPL_UFS_RAW_U_BOOT_PARTITION_NAME + string "Partition name to load U-Boot from" + depends on SPL_UFS_RAW_U_BOOT_USE_PARTITION + help + Name of the partition to load U-Boot from in UFS raw mode. + This is tried before partition number lookup. + Leave empty to skip name-based lookup. + Example: "boot", "uefi", "dtb_a" + +config SPL_UFS_RAW_U_BOOT_PARTITION_NUM + int "Partition number to load U-Boot from" + depends on SPL_UFS_RAW_U_BOOT_USE_PARTITION + help + Partition number to load U-Boot from when using UFS raw mode + with partition support. This is used if partition name is not + specified or not found. + +config SPL_UFS_FS + bool "Enable UFS filesystem boot mode" + depends on SPL_UFS_SUPPORT + help + Enable filesystem-based boot from UFS. This allows loading + U-Boot from FAT or EXT4 filesystems on UFS partitions. + This is tried as a fallback if raw mode loading fails. + + Note: Filesystem support is not yet fully implemented. + config SPL_WATCHDOG bool "Support watchdog drivers" imply SPL_WDT if !HW_WATCHDOG diff --git a/common/spl/spl_ufs.c b/common/spl/spl_ufs.c index cef1843f40f..c4e793bf701 100644 --- a/common/spl/spl_ufs.c +++ b/common/spl/spl_ufs.c @@ -3,15 +3,19 @@ * (C) Copyright 2025 Alexey Charkov <alchark@gmail.com> */ +#include <dm.h> +#include <log.h> #include <spl.h> #include <spl_load.h> #include <scsi.h> -#include <errno.h> -#include <image.h> +#include <part.h> +#include <blk.h> #include <linux/compiler.h> -#include <log.h> +#include <errno.h> -static ulong spl_ufs_load_read(struct spl_load_info *load, ulong off, ulong size, void *buf) +/* Block read callback for spl_load framework */ +static ulong h_spl_ufs_load_read(struct spl_load_info *load, ulong off, + ulong size, void *buf) { struct blk_desc *bd = load->priv; lbaint_t sector = off >> bd->log2blksz; @@ -20,30 +24,176 @@ static ulong spl_ufs_load_read(struct spl_load_info *load, ulong off, ulong size return blk_dread(bd, sector, count, buf) << bd->log2blksz; } -static int spl_ufs_load_image(struct spl_image_info *spl_image, - struct spl_boot_device *bootdev) +/* Load image from raw sector */ +static int ufs_load_image_raw_sector(struct spl_image_info *spl_image, + struct spl_boot_device *bootdev, + struct blk_desc *bd, + unsigned long sector) { - unsigned long sector = CONFIG_SPL_UFS_RAW_U_BOOT_SECTOR; - int devnum = CONFIG_SPL_UFS_RAW_U_BOOT_DEVNUM; struct spl_load_info load; + int ret; + + debug("spl: ufs loading from sector 0x%lx\n", sector); + + spl_load_init(&load, h_spl_ufs_load_read, bd, bd->blksz); + ret = spl_load(spl_image, bootdev, &load, 0, sector << bd->log2blksz); + + if (ret) { + debug("spl: ufs load failed: %d\n", ret); + return ret; + } + + debug("spl: ufs load successful\n"); + return 0; +} + +u32 __weak spl_ufs_boot_mode(const u32 boot_device) +{ + return UFS_MODE_RAW; +} + +int spl_ufs_load(struct spl_image_info *spl_image, + struct spl_boot_device *bootdev, + const char *filename) +{ + u32 boot_mode; + int ret = 0; + int devnum = CONFIG_SPL_UFS_RAW_U_BOOT_DEVNUM; struct blk_desc *bd; - int err; + unsigned long sector = 0; + + log_debug("spl: ufs devnum=%d\n", devnum); + + ret = scsi_scan(false); + if (ret) { + printf("spl: scsi scan failed: %d\n", ret); + return ret; + } - /* try to recognize storage devices immediately */ - scsi_scan(false); bd = blk_get_devnum_by_uclass_id(UCLASS_SCSI, devnum); - if (!bd) + if (!bd) { + printf("spl: could not get UFS device %d\n", devnum); return -ENODEV; + } - spl_load_init(&load, spl_ufs_load_read, bd, bd->blksz); - err = spl_load(spl_image, bootdev, &load, 0, sector << bd->log2blksz); - if (err) { - puts("spl_ufs_load_image: ufs block read error\n"); - log_debug("(error=%d)\n", err); - return err; + boot_mode = spl_ufs_boot_mode(bootdev->boot_device); + + switch (boot_mode) { + case UFS_MODE_RAW: + debug("spl: ufs raw mode\n"); + + /* Step 1: Try absolute sector (if configured and non-zero) */ +#ifdef CONFIG_SPL_UFS_RAW_U_BOOT_SECTOR + if (CONFIG_SPL_UFS_RAW_U_BOOT_SECTOR != 0) { + debug("spl: trying absolute sector 0x%x\n", + CONFIG_SPL_UFS_RAW_U_BOOT_SECTOR); + + ret = ufs_load_image_raw_sector(spl_image, bootdev, bd, + CONFIG_SPL_UFS_RAW_U_BOOT_SECTOR); + + if (!ret) { + debug("spl: loaded from absolute sector\n"); + return 0; + } + debug("spl: absolute sector failed: %d\n", ret); + } +#endif + + /* Step 2-4: Try partition-based loading */ +#ifdef CONFIG_SPL_UFS_RAW_U_BOOT_USE_PARTITION + { + struct disk_partition part_info; + int part_found = 0; + + /* Step 2: Try partition name (if configured) */ +#ifdef CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NAME + if (strlen(CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NAME) > 0) { + debug("spl: trying partition name '%s'\n", + CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NAME); + + ret = part_get_info_by_name(bd, + CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NAME, + &part_info); + + if (ret >= 0) { + debug("spl: found partition '%s' at 0x%lx\n", + CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NAME, + (ulong)part_info.start); + sector = part_info.start; + part_found = 1; + } else { + debug("spl: partition name not found: %d\n", ret); + } + } +#endif + + /* Step 3: Try partition number (if name not found) */ +#ifdef CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NUM + if (!part_found) { + debug("spl: trying partition number %d\n", + CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NUM); + + ret = part_get_info(bd, + CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NUM, + &part_info); + + if (ret >= 0) { + debug("spl: found partition %d at 0x%lx\n", + CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NUM, + (ulong)part_info.start); + sector = part_info.start; + part_found = 1; + } else { + debug("spl: partition number not found: %d\n", ret); + } + } +#endif + + /* Load from partition if found */ + if (part_found) { + ret = ufs_load_image_raw_sector(spl_image, bootdev, bd, sector); + + if (!ret) { + debug("spl: loaded from partition\n"); + return 0; + } + debug("spl: partition load failed: %d\n", ret); + } + } +#endif /* CONFIG_SPL_UFS_RAW_U_BOOT_USE_PARTITION */ + + /* Step 4: Fall through to FS mode if enabled */ + debug("spl: raw mode failed, trying fs\n"); + fallthrough; + +#ifdef CONFIG_SPL_UFS_FS + case UFS_MODE_FS: + debug("spl: ufs fs mode\n"); + + /* TODO: Implement filesystem support */ + printf("spl: ufs filesystem boot not implemented\n"); + ret = -ENOSYS; + break; +#endif + + default: + puts("spl: ufs: invalid boot mode\n"); + ret = -EINVAL; } - return 0; + return ret; +} + +/* SPL load image entry point */ +static int spl_ufs_load_image(struct spl_image_info *spl_image, + struct spl_boot_device *bootdev) +{ + return spl_ufs_load(spl_image, bootdev, +#ifdef CONFIG_SPL_FS_LOAD_PAYLOAD_NAME + CONFIG_SPL_FS_LOAD_PAYLOAD_NAME); +#else + NULL); +#endif } SPL_LOAD_IMAGE_METHOD("UFS", 0, BOOT_DEVICE_UFS, spl_ufs_load_image); diff --git a/include/part.h b/include/part.h index 15daacd7faa..47b91e2043c 100644 --- a/include/part.h +++ b/include/part.h @@ -463,7 +463,8 @@ ulong disk_blk_erase(struct udevice *dev, lbaint_t start, lbaint_t blkcnt); # if defined(CONFIG_SPL_FS_EXT4) || defined(CONFIG_SPL_FS_FAT) || \ defined(CONFIG_SPL_FS_SQUASHFS) || \ defined(CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION) || \ - defined(CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE) + defined(CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE) || \ + defined(CONFIG_SPL_UFS_RAW_U_BOOT_USE_PARTITION) # define part_get_info_ptr(x) x # else # define part_get_info_ptr(x) NULL diff --git a/include/spl.h b/include/spl.h index 5078d7525ab..a617bc26c04 100644 --- a/include/spl.h +++ b/include/spl.h @@ -29,6 +29,10 @@ struct legacy_img_hdr; #define MMCSD_MODE_FS 2 #define MMCSD_MODE_EMMCBOOT 3 +/* UFS boot modes */ +#define UFS_MODE_RAW 1 +#define UFS_MODE_FS 2 + struct blk_desc; struct legacy_img_hdr; struct spl_boot_device; -- 2.34.1 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 1/4] spl: ufs: Add partition support and flexible loading 2026-04-09 14:43 ` [PATCH 1/4] spl: ufs: Add partition support and flexible loading Balaji Selvanathan @ 2026-04-09 15:39 ` Alexey Charkov 2026-04-09 16:04 ` Balaji Selvanathan 0 siblings, 1 reply; 13+ messages in thread From: Alexey Charkov @ 2026-04-09 15:39 UTC (permalink / raw) To: Balaji Selvanathan Cc: u-boot, Sumit Garg, u-boot-qcom, Tom Rini, Neil Armstrong, Bhupesh Sharma, Neha Malcom Francis, Anshul Dalal, Peng Fan, Mattijs Korpershoek, Quentin Schulz, Hrushikesh Salunke, Dario Binacchi, Andre Przywara, Ilias Apalodimas, Javier Martinez Canillas, Jan Kiszka, Javier Tia, Rasmus Villemoes, Varadarajan Narayanan, João Marcos Costa, Dhruva Gole, Richard Genoud, Marek Vasut, Simon Glass, Igor Belwon, Shawn Lin, Tuyen Dang, Casey Connolly, Lukasz Majewski, Patrice Chotard, Patrick Delaunay, Michal Simek, Yao Zi, Peter Korsgaard On Thu, Apr 9, 2026 at 6:43 PM Balaji Selvanathan <balaji.selvanathan@oss.qualcomm.com> wrote: > > Add partition-based loading support to SPL UFS, similar to the > existing implementation in spl_mmc.c. This allows loading from > named partitions or partition numbers instead of hardcoded sector > offsets. > > The loading strategy tries methods in order: absolute sector if > configured, partition by name, partition by number, then filesystem > mode (placeholder for future implementation). > > This brings UFS boot flexibility on par with MMC/SD boot. > > Signed-off-by: Balaji Selvanathan <balaji.selvanathan@oss.qualcomm.com> > --- > common/spl/Kconfig | 40 ++++++++++- > common/spl/spl_ufs.c | 188 +++++++++++++++++++++++++++++++++++++++++++++------ > include/part.h | 3 +- > include/spl.h | 4 ++ > 4 files changed, 214 insertions(+), 21 deletions(-) > > diff --git a/common/spl/Kconfig b/common/spl/Kconfig > index a21b71ad5d1..b3c7a1d8aa3 100644 > --- a/common/spl/Kconfig > +++ b/common/spl/Kconfig > @@ -1637,9 +1637,47 @@ config SPL_UFS_RAW_U_BOOT_SECTOR > depends on SPL_UFS_SUPPORT > default 0x800 if ARCH_ROCKCHIP > help > - Address on the block device to load U-Boot from. > + Absolute sector offset on the UFS LUN to load U-Boot from. > + This is tried first before partition-based loading. > + Set to 0x0 to skip absolute sector loading and use partition mode. > Units: UFS sectors (1 sector = 4096 bytes). Hi Balaji, What if I want to load the FIT image from the start of a dedicated LUN? > +config SPL_UFS_RAW_U_BOOT_USE_PARTITION > + bool "Enable UFS partition support for raw mode" > + depends on SPL_UFS_SUPPORT > + select SPL_LIBDISK_SUPPORT > + help > + Enable support for loading from a specific partition on UFS > + in raw mode. When enabled, you can specify either a partition > + name or partition number to load from. > + > +config SPL_UFS_RAW_U_BOOT_PARTITION_NAME > + string "Partition name to load U-Boot from" > + depends on SPL_UFS_RAW_U_BOOT_USE_PARTITION > + help > + Name of the partition to load U-Boot from in UFS raw mode. > + This is tried before partition number lookup. > + Leave empty to skip name-based lookup. > + Example: "boot", "uefi", "dtb_a" > + > +config SPL_UFS_RAW_U_BOOT_PARTITION_NUM > + int "Partition number to load U-Boot from" > + depends on SPL_UFS_RAW_U_BOOT_USE_PARTITION > + help > + Partition number to load U-Boot from when using UFS raw mode > + with partition support. This is used if partition name is not > + specified or not found. > + > +config SPL_UFS_FS > + bool "Enable UFS filesystem boot mode" > + depends on SPL_UFS_SUPPORT > + help > + Enable filesystem-based boot from UFS. This allows loading > + U-Boot from FAT or EXT4 filesystems on UFS partitions. > + This is tried as a fallback if raw mode loading fails. > + > + Note: Filesystem support is not yet fully implemented. Maybe split those into separate commits for easier review? > config SPL_WATCHDOG > bool "Support watchdog drivers" > imply SPL_WDT if !HW_WATCHDOG > diff --git a/common/spl/spl_ufs.c b/common/spl/spl_ufs.c > index cef1843f40f..c4e793bf701 100644 > --- a/common/spl/spl_ufs.c > +++ b/common/spl/spl_ufs.c > @@ -3,15 +3,19 @@ > * (C) Copyright 2025 Alexey Charkov <alchark@gmail.com> > */ > > +#include <dm.h> > +#include <log.h> > #include <spl.h> > #include <spl_load.h> > #include <scsi.h> > -#include <errno.h> > -#include <image.h> > +#include <part.h> > +#include <blk.h> > #include <linux/compiler.h> > -#include <log.h> > +#include <errno.h> > > -static ulong spl_ufs_load_read(struct spl_load_info *load, ulong off, ulong size, void *buf) > +/* Block read callback for spl_load framework */ > +static ulong h_spl_ufs_load_read(struct spl_load_info *load, ulong off, > + ulong size, void *buf) > { > struct blk_desc *bd = load->priv; > lbaint_t sector = off >> bd->log2blksz; > @@ -20,30 +24,176 @@ static ulong spl_ufs_load_read(struct spl_load_info *load, ulong off, ulong size > return blk_dread(bd, sector, count, buf) << bd->log2blksz; > } > > -static int spl_ufs_load_image(struct spl_image_info *spl_image, > - struct spl_boot_device *bootdev) > +/* Load image from raw sector */ > +static int ufs_load_image_raw_sector(struct spl_image_info *spl_image, > + struct spl_boot_device *bootdev, > + struct blk_desc *bd, > + unsigned long sector) > { > - unsigned long sector = CONFIG_SPL_UFS_RAW_U_BOOT_SECTOR; > - int devnum = CONFIG_SPL_UFS_RAW_U_BOOT_DEVNUM; > struct spl_load_info load; > + int ret; > + > + debug("spl: ufs loading from sector 0x%lx\n", sector); > + > + spl_load_init(&load, h_spl_ufs_load_read, bd, bd->blksz); > + ret = spl_load(spl_image, bootdev, &load, 0, sector << bd->log2blksz); > + > + if (ret) { > + debug("spl: ufs load failed: %d\n", ret); > + return ret; > + } > + > + debug("spl: ufs load successful\n"); > + return 0; > +} > + > +u32 __weak spl_ufs_boot_mode(const u32 boot_device) > +{ > + return UFS_MODE_RAW; > +} > + > +int spl_ufs_load(struct spl_image_info *spl_image, > + struct spl_boot_device *bootdev, > + const char *filename) > +{ > + u32 boot_mode; > + int ret = 0; > + int devnum = CONFIG_SPL_UFS_RAW_U_BOOT_DEVNUM; > struct blk_desc *bd; > - int err; > + unsigned long sector = 0; > + > + log_debug("spl: ufs devnum=%d\n", devnum); > + > + ret = scsi_scan(false); > + if (ret) { > + printf("spl: scsi scan failed: %d\n", ret); > + return ret; > + } > > - /* try to recognize storage devices immediately */ > - scsi_scan(false); > bd = blk_get_devnum_by_uclass_id(UCLASS_SCSI, devnum); > - if (!bd) > + if (!bd) { > + printf("spl: could not get UFS device %d\n", devnum); > return -ENODEV; > + } > > - spl_load_init(&load, spl_ufs_load_read, bd, bd->blksz); > - err = spl_load(spl_image, bootdev, &load, 0, sector << bd->log2blksz); > - if (err) { > - puts("spl_ufs_load_image: ufs block read error\n"); > - log_debug("(error=%d)\n", err); > - return err; > + boot_mode = spl_ufs_boot_mode(bootdev->boot_device); > + > + switch (boot_mode) { > + case UFS_MODE_RAW: > + debug("spl: ufs raw mode\n"); > + > + /* Step 1: Try absolute sector (if configured and non-zero) */ > +#ifdef CONFIG_SPL_UFS_RAW_U_BOOT_SECTOR Perhaps if this and the below blocks are split out into helper functions which compile to a no-op when the respective Kconfig option is not set the code would be prettier :) Preprocessor defines really break the flow visually by going across the indentation of the surrounding code. > + if (CONFIG_SPL_UFS_RAW_U_BOOT_SECTOR != 0) { > + debug("spl: trying absolute sector 0x%x\n", > + CONFIG_SPL_UFS_RAW_U_BOOT_SECTOR); > + > + ret = ufs_load_image_raw_sector(spl_image, bootdev, bd, > + CONFIG_SPL_UFS_RAW_U_BOOT_SECTOR); > + > + if (!ret) { > + debug("spl: loaded from absolute sector\n"); > + return 0; > + } > + debug("spl: absolute sector failed: %d\n", ret); > + } > +#endif > + > + /* Step 2-4: Try partition-based loading */ > +#ifdef CONFIG_SPL_UFS_RAW_U_BOOT_USE_PARTITION > + { > + struct disk_partition part_info; > + int part_found = 0; ... especially since you want to use scoped blocks with local variables. These really ask to go into a helper function instead. > + /* Step 2: Try partition name (if configured) */ > +#ifdef CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NAME > + if (strlen(CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NAME) > 0) { > + debug("spl: trying partition name '%s'\n", > + CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NAME); > + > + ret = part_get_info_by_name(bd, > + CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NAME, > + &part_info); > + > + if (ret >= 0) { > + debug("spl: found partition '%s' at 0x%lx\n", > + CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NAME, > + (ulong)part_info.start); > + sector = part_info.start; > + part_found = 1; > + } else { > + debug("spl: partition name not found: %d\n", ret); > + } > + } > +#endif > + > + /* Step 3: Try partition number (if name not found) */ > +#ifdef CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NUM > + if (!part_found) { > + debug("spl: trying partition number %d\n", > + CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NUM); > + > + ret = part_get_info(bd, > + CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NUM, > + &part_info); > + > + if (ret >= 0) { > + debug("spl: found partition %d at 0x%lx\n", > + CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NUM, > + (ulong)part_info.start); > + sector = part_info.start; > + part_found = 1; > + } else { > + debug("spl: partition number not found: %d\n", ret); > + } > + } > +#endif > + > + /* Load from partition if found */ > + if (part_found) { > + ret = ufs_load_image_raw_sector(spl_image, bootdev, bd, sector); > + > + if (!ret) { > + debug("spl: loaded from partition\n"); > + return 0; > + } > + debug("spl: partition load failed: %d\n", ret); > + } > + } > +#endif /* CONFIG_SPL_UFS_RAW_U_BOOT_USE_PARTITION */ > + > + /* Step 4: Fall through to FS mode if enabled */ Wouldn't a raw offset be a more natural fallback, given that it has fewest dependencies out of all these options? > + debug("spl: raw mode failed, trying fs\n"); > + fallthrough; > + > +#ifdef CONFIG_SPL_UFS_FS > + case UFS_MODE_FS: > + debug("spl: ufs fs mode\n"); > + > + /* TODO: Implement filesystem support */ > + printf("spl: ufs filesystem boot not implemented\n"); > + ret = -ENOSYS; > + break; > +#endif > + > + default: > + puts("spl: ufs: invalid boot mode\n"); > + ret = -EINVAL; > } > > - return 0; > + return ret; > +} > + > +/* SPL load image entry point */ > +static int spl_ufs_load_image(struct spl_image_info *spl_image, > + struct spl_boot_device *bootdev) > +{ > + return spl_ufs_load(spl_image, bootdev, > +#ifdef CONFIG_SPL_FS_LOAD_PAYLOAD_NAME > + CONFIG_SPL_FS_LOAD_PAYLOAD_NAME); > +#else > + NULL); > +#endif How about config_enabled(...) instead? Gives fewer repetitions of the same symbol. Best regards, Alexey ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/4] spl: ufs: Add partition support and flexible loading 2026-04-09 15:39 ` Alexey Charkov @ 2026-04-09 16:04 ` Balaji Selvanathan 0 siblings, 0 replies; 13+ messages in thread From: Balaji Selvanathan @ 2026-04-09 16:04 UTC (permalink / raw) To: Alexey Charkov Cc: u-boot, Sumit Garg, u-boot-qcom, Tom Rini, Neil Armstrong, Bhupesh Sharma, Neha Malcom Francis, Anshul Dalal, Peng Fan, Mattijs Korpershoek, Quentin Schulz, Hrushikesh Salunke, Dario Binacchi, Andre Przywara, Ilias Apalodimas, Javier Martinez Canillas, Jan Kiszka, Javier Tia, Rasmus Villemoes, Varadarajan Narayanan, João Marcos Costa, Dhruva Gole, Richard Genoud, Marek Vasut, Simon Glass, Igor Belwon, Shawn Lin, Tuyen Dang, Casey Connolly, Lukasz Majewski, Patrice Chotard, Patrick Delaunay, Michal Simek, Yao Zi, Peter Korsgaard Hi Alexey, Thanks for the feedbacks. Pls find replies below: On 4/9/2026 9:09 PM, Alexey Charkov wrote: > On Thu, Apr 9, 2026 at 6:43 PM Balaji Selvanathan > <balaji.selvanathan@oss.qualcomm.com> wrote: >> Add partition-based loading support to SPL UFS, similar to the >> existing implementation in spl_mmc.c. This allows loading from >> named partitions or partition numbers instead of hardcoded sector >> offsets. >> >> The loading strategy tries methods in order: absolute sector if >> configured, partition by name, partition by number, then filesystem >> mode (placeholder for future implementation). >> >> This brings UFS boot flexibility on par with MMC/SD boot. >> >> Signed-off-by: Balaji Selvanathan <balaji.selvanathan@oss.qualcomm.com> >> --- >> common/spl/Kconfig | 40 ++++++++++- >> common/spl/spl_ufs.c | 188 +++++++++++++++++++++++++++++++++++++++++++++------ >> include/part.h | 3 +- >> include/spl.h | 4 ++ >> 4 files changed, 214 insertions(+), 21 deletions(-) >> >> diff --git a/common/spl/Kconfig b/common/spl/Kconfig >> index a21b71ad5d1..b3c7a1d8aa3 100644 >> --- a/common/spl/Kconfig >> +++ b/common/spl/Kconfig >> @@ -1637,9 +1637,47 @@ config SPL_UFS_RAW_U_BOOT_SECTOR >> depends on SPL_UFS_SUPPORT >> default 0x800 if ARCH_ROCKCHIP >> help >> - Address on the block device to load U-Boot from. >> + Absolute sector offset on the UFS LUN to load U-Boot from. >> + This is tried first before partition-based loading. >> + Set to 0x0 to skip absolute sector loading and use partition mode. >> Units: UFS sectors (1 sector = 4096 bytes). > Hi Balaji, > > What if I want to load the FIT image from the start of a dedicated LUN? Yes, thats an issue, we can have sector as last step if partition name or number is not provided. > >> +config SPL_UFS_RAW_U_BOOT_USE_PARTITION >> + bool "Enable UFS partition support for raw mode" >> + depends on SPL_UFS_SUPPORT >> + select SPL_LIBDISK_SUPPORT >> + help >> + Enable support for loading from a specific partition on UFS >> + in raw mode. When enabled, you can specify either a partition >> + name or partition number to load from. >> + >> +config SPL_UFS_RAW_U_BOOT_PARTITION_NAME >> + string "Partition name to load U-Boot from" >> + depends on SPL_UFS_RAW_U_BOOT_USE_PARTITION >> + help >> + Name of the partition to load U-Boot from in UFS raw mode. >> + This is tried before partition number lookup. >> + Leave empty to skip name-based lookup. >> + Example: "boot", "uefi", "dtb_a" >> + >> +config SPL_UFS_RAW_U_BOOT_PARTITION_NUM >> + int "Partition number to load U-Boot from" >> + depends on SPL_UFS_RAW_U_BOOT_USE_PARTITION >> + help >> + Partition number to load U-Boot from when using UFS raw mode >> + with partition support. This is used if partition name is not >> + specified or not found. >> + >> +config SPL_UFS_FS >> + bool "Enable UFS filesystem boot mode" >> + depends on SPL_UFS_SUPPORT >> + help >> + Enable filesystem-based boot from UFS. This allows loading >> + U-Boot from FAT or EXT4 filesystems on UFS partitions. >> + This is tried as a fallback if raw mode loading fails. >> + >> + Note: Filesystem support is not yet fully implemented. > Maybe split those into separate commits for easier review? Okay. > >> config SPL_WATCHDOG >> bool "Support watchdog drivers" >> imply SPL_WDT if !HW_WATCHDOG >> diff --git a/common/spl/spl_ufs.c b/common/spl/spl_ufs.c >> index cef1843f40f..c4e793bf701 100644 >> --- a/common/spl/spl_ufs.c >> +++ b/common/spl/spl_ufs.c >> @@ -3,15 +3,19 @@ >> * (C) Copyright 2025 Alexey Charkov <alchark@gmail.com> >> */ >> >> +#include <dm.h> >> +#include <log.h> >> #include <spl.h> >> #include <spl_load.h> >> #include <scsi.h> >> -#include <errno.h> >> -#include <image.h> >> +#include <part.h> >> +#include <blk.h> >> #include <linux/compiler.h> >> -#include <log.h> >> +#include <errno.h> >> >> -static ulong spl_ufs_load_read(struct spl_load_info *load, ulong off, ulong size, void *buf) >> +/* Block read callback for spl_load framework */ >> +static ulong h_spl_ufs_load_read(struct spl_load_info *load, ulong off, >> + ulong size, void *buf) >> { >> struct blk_desc *bd = load->priv; >> lbaint_t sector = off >> bd->log2blksz; >> @@ -20,30 +24,176 @@ static ulong spl_ufs_load_read(struct spl_load_info *load, ulong off, ulong size >> return blk_dread(bd, sector, count, buf) << bd->log2blksz; >> } >> >> -static int spl_ufs_load_image(struct spl_image_info *spl_image, >> - struct spl_boot_device *bootdev) >> +/* Load image from raw sector */ >> +static int ufs_load_image_raw_sector(struct spl_image_info *spl_image, >> + struct spl_boot_device *bootdev, >> + struct blk_desc *bd, >> + unsigned long sector) >> { >> - unsigned long sector = CONFIG_SPL_UFS_RAW_U_BOOT_SECTOR; >> - int devnum = CONFIG_SPL_UFS_RAW_U_BOOT_DEVNUM; >> struct spl_load_info load; >> + int ret; >> + >> + debug("spl: ufs loading from sector 0x%lx\n", sector); >> + >> + spl_load_init(&load, h_spl_ufs_load_read, bd, bd->blksz); >> + ret = spl_load(spl_image, bootdev, &load, 0, sector << bd->log2blksz); >> + >> + if (ret) { >> + debug("spl: ufs load failed: %d\n", ret); >> + return ret; >> + } >> + >> + debug("spl: ufs load successful\n"); >> + return 0; >> +} >> + >> +u32 __weak spl_ufs_boot_mode(const u32 boot_device) >> +{ >> + return UFS_MODE_RAW; >> +} >> + >> +int spl_ufs_load(struct spl_image_info *spl_image, >> + struct spl_boot_device *bootdev, >> + const char *filename) >> +{ >> + u32 boot_mode; >> + int ret = 0; >> + int devnum = CONFIG_SPL_UFS_RAW_U_BOOT_DEVNUM; >> struct blk_desc *bd; >> - int err; >> + unsigned long sector = 0; >> + >> + log_debug("spl: ufs devnum=%d\n", devnum); >> + >> + ret = scsi_scan(false); >> + if (ret) { >> + printf("spl: scsi scan failed: %d\n", ret); >> + return ret; >> + } >> >> - /* try to recognize storage devices immediately */ >> - scsi_scan(false); >> bd = blk_get_devnum_by_uclass_id(UCLASS_SCSI, devnum); >> - if (!bd) >> + if (!bd) { >> + printf("spl: could not get UFS device %d\n", devnum); >> return -ENODEV; >> + } >> >> - spl_load_init(&load, spl_ufs_load_read, bd, bd->blksz); >> - err = spl_load(spl_image, bootdev, &load, 0, sector << bd->log2blksz); >> - if (err) { >> - puts("spl_ufs_load_image: ufs block read error\n"); >> - log_debug("(error=%d)\n", err); >> - return err; >> + boot_mode = spl_ufs_boot_mode(bootdev->boot_device); >> + >> + switch (boot_mode) { >> + case UFS_MODE_RAW: >> + debug("spl: ufs raw mode\n"); >> + >> + /* Step 1: Try absolute sector (if configured and non-zero) */ >> +#ifdef CONFIG_SPL_UFS_RAW_U_BOOT_SECTOR > Perhaps if this and the below blocks are split out into helper > functions which compile to a no-op when the respective Kconfig option > is not set the code would be prettier :) > > Preprocessor defines really break the flow visually by going across > the indentation of the surrounding code. Got it, will implement this. > >> + if (CONFIG_SPL_UFS_RAW_U_BOOT_SECTOR != 0) { >> + debug("spl: trying absolute sector 0x%x\n", >> + CONFIG_SPL_UFS_RAW_U_BOOT_SECTOR); >> + >> + ret = ufs_load_image_raw_sector(spl_image, bootdev, bd, >> + CONFIG_SPL_UFS_RAW_U_BOOT_SECTOR); >> + >> + if (!ret) { >> + debug("spl: loaded from absolute sector\n"); >> + return 0; >> + } >> + debug("spl: absolute sector failed: %d\n", ret); >> + } >> +#endif >> + >> + /* Step 2-4: Try partition-based loading */ >> +#ifdef CONFIG_SPL_UFS_RAW_U_BOOT_USE_PARTITION >> + { >> + struct disk_partition part_info; >> + int part_found = 0; > ... especially since you want to use scoped blocks with local > variables. These really ask to go into a helper function instead. Okay. > >> + /* Step 2: Try partition name (if configured) */ >> +#ifdef CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NAME >> + if (strlen(CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NAME) > 0) { >> + debug("spl: trying partition name '%s'\n", >> + CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NAME); >> + >> + ret = part_get_info_by_name(bd, >> + CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NAME, >> + &part_info); >> + >> + if (ret >= 0) { >> + debug("spl: found partition '%s' at 0x%lx\n", >> + CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NAME, >> + (ulong)part_info.start); >> + sector = part_info.start; >> + part_found = 1; >> + } else { >> + debug("spl: partition name not found: %d\n", ret); >> + } >> + } >> +#endif >> + >> + /* Step 3: Try partition number (if name not found) */ >> +#ifdef CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NUM >> + if (!part_found) { >> + debug("spl: trying partition number %d\n", >> + CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NUM); >> + >> + ret = part_get_info(bd, >> + CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NUM, >> + &part_info); >> + >> + if (ret >= 0) { >> + debug("spl: found partition %d at 0x%lx\n", >> + CONFIG_SPL_UFS_RAW_U_BOOT_PARTITION_NUM, >> + (ulong)part_info.start); >> + sector = part_info.start; >> + part_found = 1; >> + } else { >> + debug("spl: partition number not found: %d\n", ret); >> + } >> + } >> +#endif >> + >> + /* Load from partition if found */ >> + if (part_found) { >> + ret = ufs_load_image_raw_sector(spl_image, bootdev, bd, sector); >> + >> + if (!ret) { >> + debug("spl: loaded from partition\n"); >> + return 0; >> + } >> + debug("spl: partition load failed: %d\n", ret); >> + } >> + } >> +#endif /* CONFIG_SPL_UFS_RAW_U_BOOT_USE_PARTITION */ >> + >> + /* Step 4: Fall through to FS mode if enabled */ > Wouldn't a raw offset be a more natural fallback, given that it has > fewest dependencies out of all these options? Yes, will do this. > >> + debug("spl: raw mode failed, trying fs\n"); >> + fallthrough; >> + >> +#ifdef CONFIG_SPL_UFS_FS >> + case UFS_MODE_FS: >> + debug("spl: ufs fs mode\n"); >> + >> + /* TODO: Implement filesystem support */ >> + printf("spl: ufs filesystem boot not implemented\n"); >> + ret = -ENOSYS; >> + break; >> +#endif >> + >> + default: >> + puts("spl: ufs: invalid boot mode\n"); >> + ret = -EINVAL; >> } >> >> - return 0; >> + return ret; >> +} >> + >> +/* SPL load image entry point */ >> +static int spl_ufs_load_image(struct spl_image_info *spl_image, >> + struct spl_boot_device *bootdev) >> +{ >> + return spl_ufs_load(spl_image, bootdev, >> +#ifdef CONFIG_SPL_FS_LOAD_PAYLOAD_NAME >> + CONFIG_SPL_FS_LOAD_PAYLOAD_NAME); >> +#else >> + NULL); >> +#endif > How about config_enabled(...) instead? Gives fewer repetitions of the > same symbol. Okay. > > Best regards, > Alexey ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 2/4] drivers: ufs: qcom: Add SPL support 2026-04-09 14:43 [PATCH 0/4] spl: Add UFS boot support for SPL on Qualcomm Balaji Selvanathan 2026-04-09 14:43 ` [PATCH 1/4] spl: ufs: Add partition support and flexible loading Balaji Selvanathan @ 2026-04-09 14:43 ` Balaji Selvanathan 2026-04-09 17:38 ` Ferass El Hafidi 2026-04-13 12:37 ` Sumit Garg 2026-04-09 14:43 ` [PATCH 3/4] drivers: phy: qcom: Add UFS PHY support for SPL Balaji Selvanathan 2026-04-09 14:43 ` [PATCH 4/4] clk: stub: Add Kconfig option for SPL stub driver Balaji Selvanathan 3 siblings, 2 replies; 13+ messages in thread From: Balaji Selvanathan @ 2026-04-09 14:43 UTC (permalink / raw) To: u-boot, Sumit Garg, u-boot-qcom Cc: Tom Rini, Neil Armstrong, Bhupesh Sharma, Neha Malcom Francis, Anshul Dalal, Peng Fan, Mattijs Korpershoek, Quentin Schulz, Hrushikesh Salunke, Alexey Charkov, Dario Binacchi, Andre Przywara, Ilias Apalodimas, Javier Martinez Canillas, Jan Kiszka, Javier Tia, Rasmus Villemoes, Varadarajan Narayanan, João Marcos Costa, Dhruva Gole, Richard Genoud, Marek Vasut, Simon Glass, Igor Belwon, Shawn Lin, Tuyen Dang, Casey Connolly, Lukasz Majewski, Patrice Chotard, Patrick Delaunay, Michal Simek, Yao Zi, Peter Korsgaard, Balaji Selvanathan Enable Qualcomm UFS driver to be built for SPL. The ufs-uclass is also built conditionally based on whether SPL or U-Boot proper is being compiled. Signed-off-by: Balaji Selvanathan <balaji.selvanathan@oss.qualcomm.com> --- drivers/ufs/Kconfig | 8 ++++++++ drivers/ufs/Makefile | 7 ++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/ufs/Kconfig b/drivers/ufs/Kconfig index 49472933de3..a32d51cae1d 100644 --- a/drivers/ufs/Kconfig +++ b/drivers/ufs/Kconfig @@ -55,6 +55,14 @@ config UFS_QCOM This selects the platform driver for the UFS host controller present on Qualcomm Snapdragon SoCs. +config SPL_UFS_QCOM + bool "Qualcomm Host Controller driver for UFS in SPL" + depends on SPL_UFS_SUPPORT && ARCH_SNAPDRAGON + help + This selects the platform driver for the UFS host + controller present on Qualcomm Snapdragon SoCs for use in SPL. + Enable this to use UFS as a boot device in SPL on Qualcomm platforms. + config UFS_RENESAS bool "Renesas R-Car S4 UFS Controller support" depends on UFS diff --git a/drivers/ufs/Makefile b/drivers/ufs/Makefile index e7f3c1d30c4..7056066ce25 100644 --- a/drivers/ufs/Makefile +++ b/drivers/ufs/Makefile @@ -3,13 +3,18 @@ # Copyright (C) 2019 Texas Instruments Incorporated - https://www.ti.com # +ifdef CONFIG_SPL_BUILD +obj-$(CONFIG_SPL_UFS_SUPPORT) += ufs-uclass.o +else obj-$(CONFIG_UFS) += ufs-uclass.o +endif obj-$(CONFIG_UFS_AMD_VERSAL2) += ufs-amd-versal2.o ufshcd-dwc.o obj-$(CONFIG_UFS_CADENCE) += cdns-platform.o obj-$(CONFIG_UFS_MEDIATEK) += ufs-mediatek.o obj-$(CONFIG_UFS_PCI) += ufs-pci.o -obj-$(CONFIG_UFS_QCOM) += ufs-qcom.o +obj-$(CONFIG_$(PHASE_)UFS_QCOM) += ufs-qcom.o obj-$(CONFIG_UFS_RENESAS) += ufs-renesas.o obj-$(CONFIG_UFS_RENESAS_GEN5) += ufs-renesas-rcar-gen5.o obj-$(CONFIG_UFS_ROCKCHIP) += ufs-rockchip.o obj-$(CONFIG_UFS_TI_J721E) += ti-j721e-ufs.o + -- 2.34.1 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 2/4] drivers: ufs: qcom: Add SPL support 2026-04-09 14:43 ` [PATCH 2/4] drivers: ufs: qcom: Add SPL support Balaji Selvanathan @ 2026-04-09 17:38 ` Ferass El Hafidi 2026-04-09 17:45 ` Ferass El Hafidi 2026-04-13 12:37 ` Sumit Garg 1 sibling, 1 reply; 13+ messages in thread From: Ferass El Hafidi @ 2026-04-09 17:38 UTC (permalink / raw) To: u-boot-qcom, u-boot, Sumit Garg Cc: Tom Rini, Neil Armstrong, Bhupesh Sharma, Neha Malcom Francis, Anshul Dalal, Peng Fan, Mattijs Korpershoek, Quentin Schulz, Hrushikesh Salunke, Alexey Charkov, Dario Binacchi, Andre Przywara, Ilias Apalodimas, Javier Martinez Canillas, Jan Kiszka, Javier Tia, Rasmus Villemoes, Varadarajan Narayanan, João Marcos Costa, Dhruva Gole, Richard Genoud, Marek Vasut, Simon Glass, Igor Belwon, Shawn Lin, Tuyen Dang, Casey Connolly, Lukasz Majewski, Patrice Chotard, Patrick Delaunay, Michal Simek, Yao Zi, Peter Korsgaard, Balaji Selvanathan Hi, some drive-by feedback: On Thu, 09 Apr 2026 14:43, "Balaji Selvanathan via groups.io" <balaji.selvanathan=oss.qualcomm.com@groups.io> wrote: >Enable Qualcomm UFS driver to be built for SPL. The ufs-uclass is >also built conditionally based on whether SPL or >U-Boot proper is being compiled. > >Signed-off-by: Balaji Selvanathan <balaji.selvanathan@oss.qualcomm.com> >--- > drivers/ufs/Kconfig | 8 ++++++++ > drivers/ufs/Makefile | 7 ++++++- > 2 files changed, 14 insertions(+), 1 deletion(-) > >diff --git a/drivers/ufs/Kconfig b/drivers/ufs/Kconfig >index 49472933de3..a32d51cae1d 100644 >--- a/drivers/ufs/Kconfig >+++ b/drivers/ufs/Kconfig >@@ -55,6 +55,14 @@ config UFS_QCOM > This selects the platform driver for the UFS host > controller present on Qualcomm Snapdragon SoCs. > >+config SPL_UFS_QCOM >+ bool "Qualcomm Host Controller driver for UFS in SPL" >+ depends on SPL_UFS_SUPPORT && ARCH_SNAPDRAGON >+ help >+ This selects the platform driver for the UFS host >+ controller present on Qualcomm Snapdragon SoCs for use in SPL. >+ Enable this to use UFS as a boot device in SPL on Qualcomm platforms. >+ > config UFS_RENESAS > bool "Renesas R-Car S4 UFS Controller support" > depends on UFS >diff --git a/drivers/ufs/Makefile b/drivers/ufs/Makefile >index e7f3c1d30c4..7056066ce25 100644 >--- a/drivers/ufs/Makefile >+++ b/drivers/ufs/Makefile >@@ -3,13 +3,18 @@ > # Copyright (C) 2019 Texas Instruments Incorporated - https://www.ti.com > # > >+ifdef CONFIG_SPL_BUILD >+obj-$(CONFIG_SPL_UFS_SUPPORT) += ufs-uclass.o >+else > obj-$(CONFIG_UFS) += ufs-uclass.o >+endif CONFIG_SPL_UFS_SUPPORT depends on CONFIG_UFS being enabled, so from my understanding, don't think this change is needed, is it? > obj-$(CONFIG_UFS_AMD_VERSAL2) += ufs-amd-versal2.o ufshcd-dwc.o > obj-$(CONFIG_UFS_CADENCE) += cdns-platform.o > obj-$(CONFIG_UFS_MEDIATEK) += ufs-mediatek.o > obj-$(CONFIG_UFS_PCI) += ufs-pci.o >-obj-$(CONFIG_UFS_QCOM) += ufs-qcom.o >+obj-$(CONFIG_$(PHASE_)UFS_QCOM) += ufs-qcom.o > obj-$(CONFIG_UFS_RENESAS) += ufs-renesas.o > obj-$(CONFIG_UFS_RENESAS_GEN5) += ufs-renesas-rcar-gen5.o > obj-$(CONFIG_UFS_ROCKCHIP) += ufs-rockchip.o > obj-$(CONFIG_UFS_TI_J721E) += ti-j721e-ufs.o >+ > Best regards, Ferass ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/4] drivers: ufs: qcom: Add SPL support 2026-04-09 17:38 ` Ferass El Hafidi @ 2026-04-09 17:45 ` Ferass El Hafidi 0 siblings, 0 replies; 13+ messages in thread From: Ferass El Hafidi @ 2026-04-09 17:45 UTC (permalink / raw) To: u-boot-qcom, u-boot, Sumit Garg Cc: Tom Rini, Neil Armstrong, Bhupesh Sharma, Neha Malcom Francis, Anshul Dalal, Peng Fan, Mattijs Korpershoek, Quentin Schulz, Hrushikesh Salunke, Alexey Charkov, Dario Binacchi, Andre Przywara, Ilias Apalodimas, Javier Martinez Canillas, Jan Kiszka, Javier Tia, Rasmus Villemoes, Varadarajan Narayanan, João Marcos Costa, Dhruva Gole, Richard Genoud, Marek Vasut, Simon Glass, Igor Belwon, Shawn Lin, Tuyen Dang, Casey Connolly, Lukasz Majewski, Patrice Chotard, Patrick Delaunay, Michal Simek, Yao Zi, Peter Korsgaard, Balaji Selvanathan On Thu, 09 Apr 2026 17:38, Ferass El Hafidi <funderscore@postmarketos.org> wrote: >Hi, some drive-by feedback: > >On Thu, 09 Apr 2026 14:43, "Balaji Selvanathan via groups.io" <balaji.selvanathan=oss.qualcomm.com@groups.io> wrote: >>Enable Qualcomm UFS driver to be built for SPL. The ufs-uclass is >>also built conditionally based on whether SPL or >>U-Boot proper is being compiled. >> >>Signed-off-by: Balaji Selvanathan <balaji.selvanathan@oss.qualcomm.com> >>--- >> drivers/ufs/Kconfig | 8 ++++++++ >> drivers/ufs/Makefile | 7 ++++++- >> 2 files changed, 14 insertions(+), 1 deletion(-) >> >>diff --git a/drivers/ufs/Kconfig b/drivers/ufs/Kconfig >>index 49472933de3..a32d51cae1d 100644 >>--- a/drivers/ufs/Kconfig >>+++ b/drivers/ufs/Kconfig >>@@ -55,6 +55,14 @@ config UFS_QCOM >> This selects the platform driver for the UFS host >> controller present on Qualcomm Snapdragon SoCs. >> >>+config SPL_UFS_QCOM >>+ bool "Qualcomm Host Controller driver for UFS in SPL" >>+ depends on SPL_UFS_SUPPORT && ARCH_SNAPDRAGON >>+ help >>+ This selects the platform driver for the UFS host >>+ controller present on Qualcomm Snapdragon SoCs for use in SPL. >>+ Enable this to use UFS as a boot device in SPL on Qualcomm platforms. >>+ >> config UFS_RENESAS >> bool "Renesas R-Car S4 UFS Controller support" >> depends on UFS >>diff --git a/drivers/ufs/Makefile b/drivers/ufs/Makefile >>index e7f3c1d30c4..7056066ce25 100644 >>--- a/drivers/ufs/Makefile >>+++ b/drivers/ufs/Makefile >>@@ -3,13 +3,18 @@ >> # Copyright (C) 2019 Texas Instruments Incorporated - https://www.ti.com >> # >> >>+ifdef CONFIG_SPL_BUILD >>+obj-$(CONFIG_SPL_UFS_SUPPORT) += ufs-uclass.o >>+else >> obj-$(CONFIG_UFS) += ufs-uclass.o >>+endif > >CONFIG_SPL_UFS_SUPPORT depends on CONFIG_UFS being enabled, so from my >understanding, don't think this change is needed, is it? > Oh ignore this, my bad. It is needed for an SPL build. >> obj-$(CONFIG_UFS_AMD_VERSAL2) += ufs-amd-versal2.o ufshcd-dwc.o >> obj-$(CONFIG_UFS_CADENCE) += cdns-platform.o >> obj-$(CONFIG_UFS_MEDIATEK) += ufs-mediatek.o >> obj-$(CONFIG_UFS_PCI) += ufs-pci.o >>-obj-$(CONFIG_UFS_QCOM) += ufs-qcom.o >>+obj-$(CONFIG_$(PHASE_)UFS_QCOM) += ufs-qcom.o >> obj-$(CONFIG_UFS_RENESAS) += ufs-renesas.o >> obj-$(CONFIG_UFS_RENESAS_GEN5) += ufs-renesas-rcar-gen5.o >> obj-$(CONFIG_UFS_ROCKCHIP) += ufs-rockchip.o >> obj-$(CONFIG_UFS_TI_J721E) += ti-j721e-ufs.o >>+ >> > >Best regards, >Ferass ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/4] drivers: ufs: qcom: Add SPL support 2026-04-09 14:43 ` [PATCH 2/4] drivers: ufs: qcom: Add SPL support Balaji Selvanathan 2026-04-09 17:38 ` Ferass El Hafidi @ 2026-04-13 12:37 ` Sumit Garg 1 sibling, 0 replies; 13+ messages in thread From: Sumit Garg @ 2026-04-13 12:37 UTC (permalink / raw) To: Balaji Selvanathan Cc: u-boot, u-boot-qcom, Tom Rini, Neil Armstrong, Bhupesh Sharma, Neha Malcom Francis, Anshul Dalal, Peng Fan, Mattijs Korpershoek, Quentin Schulz, Hrushikesh Salunke, Alexey Charkov, Dario Binacchi, Andre Przywara, Ilias Apalodimas, Javier Martinez Canillas, Jan Kiszka, Javier Tia, Rasmus Villemoes, Varadarajan Narayanan, João Marcos Costa, Dhruva Gole, Richard Genoud, Marek Vasut, Simon Glass, Igor Belwon, Shawn Lin, Tuyen Dang, Casey Connolly, Lukasz Majewski, Patrice Chotard, Patrick Delaunay, Michal Simek, Yao Zi, Peter Korsgaard On Thu, Apr 09, 2026 at 08:13:32PM +0530, Balaji Selvanathan wrote: > Enable Qualcomm UFS driver to be built for SPL. The ufs-uclass is > also built conditionally based on whether SPL or > U-Boot proper is being compiled. > > Signed-off-by: Balaji Selvanathan <balaji.selvanathan@oss.qualcomm.com> > --- > drivers/ufs/Kconfig | 8 ++++++++ > drivers/ufs/Makefile | 7 ++++++- > 2 files changed, 14 insertions(+), 1 deletion(-) > > diff --git a/drivers/ufs/Kconfig b/drivers/ufs/Kconfig > index 49472933de3..a32d51cae1d 100644 > --- a/drivers/ufs/Kconfig > +++ b/drivers/ufs/Kconfig > @@ -55,6 +55,14 @@ config UFS_QCOM > This selects the platform driver for the UFS host > controller present on Qualcomm Snapdragon SoCs. > > +config SPL_UFS_QCOM > + bool "Qualcomm Host Controller driver for UFS in SPL" > + depends on SPL_UFS_SUPPORT && ARCH_SNAPDRAGON Rather than SPL_UFS_SUPPORT, you can just say SPL_UFS which will simplify below.. > + help > + This selects the platform driver for the UFS host > + controller present on Qualcomm Snapdragon SoCs for use in SPL. > + Enable this to use UFS as a boot device in SPL on Qualcomm platforms. > + > config UFS_RENESAS > bool "Renesas R-Car S4 UFS Controller support" > depends on UFS > diff --git a/drivers/ufs/Makefile b/drivers/ufs/Makefile > index e7f3c1d30c4..7056066ce25 100644 > --- a/drivers/ufs/Makefile > +++ b/drivers/ufs/Makefile > @@ -3,13 +3,18 @@ > # Copyright (C) 2019 Texas Instruments Incorporated - https://www.ti.com > # > > +ifdef CONFIG_SPL_BUILD > +obj-$(CONFIG_SPL_UFS_SUPPORT) += ufs-uclass.o > +else > obj-$(CONFIG_UFS) += ufs-uclass.o > +endif ..to: obj-$(CONFIG_$(PHASE_)UFS) += ufs-uclass.o > obj-$(CONFIG_UFS_AMD_VERSAL2) += ufs-amd-versal2.o ufshcd-dwc.o > obj-$(CONFIG_UFS_CADENCE) += cdns-platform.o > obj-$(CONFIG_UFS_MEDIATEK) += ufs-mediatek.o > obj-$(CONFIG_UFS_PCI) += ufs-pci.o > -obj-$(CONFIG_UFS_QCOM) += ufs-qcom.o > +obj-$(CONFIG_$(PHASE_)UFS_QCOM) += ufs-qcom.o > obj-$(CONFIG_UFS_RENESAS) += ufs-renesas.o > obj-$(CONFIG_UFS_RENESAS_GEN5) += ufs-renesas-rcar-gen5.o > obj-$(CONFIG_UFS_ROCKCHIP) += ufs-rockchip.o > obj-$(CONFIG_UFS_TI_J721E) += ti-j721e-ufs.o > + Drop un-necessary blank line added here. -Sumit ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 3/4] drivers: phy: qcom: Add UFS PHY support for SPL 2026-04-09 14:43 [PATCH 0/4] spl: Add UFS boot support for SPL on Qualcomm Balaji Selvanathan 2026-04-09 14:43 ` [PATCH 1/4] spl: ufs: Add partition support and flexible loading Balaji Selvanathan 2026-04-09 14:43 ` [PATCH 2/4] drivers: ufs: qcom: Add SPL support Balaji Selvanathan @ 2026-04-09 14:43 ` Balaji Selvanathan 2026-04-13 12:39 ` Sumit Garg 2026-04-09 14:43 ` [PATCH 4/4] clk: stub: Add Kconfig option for SPL stub driver Balaji Selvanathan 3 siblings, 1 reply; 13+ messages in thread From: Balaji Selvanathan @ 2026-04-09 14:43 UTC (permalink / raw) To: u-boot, Sumit Garg, u-boot-qcom Cc: Tom Rini, Neil Armstrong, Bhupesh Sharma, Neha Malcom Francis, Anshul Dalal, Peng Fan, Mattijs Korpershoek, Quentin Schulz, Hrushikesh Salunke, Alexey Charkov, Dario Binacchi, Andre Przywara, Ilias Apalodimas, Javier Martinez Canillas, Jan Kiszka, Javier Tia, Rasmus Villemoes, Varadarajan Narayanan, João Marcos Costa, Dhruva Gole, Richard Genoud, Marek Vasut, Simon Glass, Igor Belwon, Shawn Lin, Tuyen Dang, Casey Connolly, Lukasz Majewski, Patrice Chotard, Patrick Delaunay, Michal Simek, Yao Zi, Peter Korsgaard, Balaji Selvanathan Enable Qualcomm QMP UFS PHY driver for SPL. This is required for UFS boot support in SPL on Qualcomm platforms. Signed-off-by: Balaji Selvanathan <balaji.selvanathan@oss.qualcomm.com> --- drivers/phy/qcom/Kconfig | 7 +++++++ drivers/phy/qcom/Makefile | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/phy/qcom/Kconfig b/drivers/phy/qcom/Kconfig index 0dd69f7ffd0..e5541fd3edc 100644 --- a/drivers/phy/qcom/Kconfig +++ b/drivers/phy/qcom/Kconfig @@ -24,6 +24,13 @@ config PHY_QCOM_QMP_UFS help Enable this to support the UFS QMP PHY on various Qualcomm chipsets. +config SPL_PHY_QCOM_QMP_UFS + bool "Qualcomm QMP UFS PHY driver in SPL" + depends on SPL_PHY && ARCH_SNAPDRAGON + help + Enable this to support the UFS QMP PHY in SPL on various Qualcomm chipsets. + This is required for UFS boot support in SPL. + config PHY_QCOM_QUSB2 tristate "Qualcomm USB QUSB2 PHY driver" depends on PHY && ARCH_SNAPDRAGON diff --git a/drivers/phy/qcom/Makefile b/drivers/phy/qcom/Makefile index 1c4e7d8d391..a91c5377ac4 100644 --- a/drivers/phy/qcom/Makefile +++ b/drivers/phy/qcom/Makefile @@ -1,7 +1,7 @@ obj-$(CONFIG_PHY_QCOM_IPQ4019_USB) += phy-qcom-ipq4019-usb.o obj-$(CONFIG_MSM8916_USB_PHY) += msm8916-usbh-phy.o obj-$(CONFIG_PHY_QCOM_QMP_PCIE) += phy-qcom-qmp-pcie.o -obj-$(CONFIG_PHY_QCOM_QMP_UFS) += phy-qcom-qmp-ufs.o +obj-$(CONFIG_$(PHASE_)PHY_QCOM_QMP_UFS) += phy-qcom-qmp-ufs.o obj-$(CONFIG_PHY_QCOM_QUSB2) += phy-qcom-qusb2.o obj-$(CONFIG_PHY_QCOM_USB_SNPS_FEMTO_V2) += phy-qcom-snps-femto-v2.o obj-$(CONFIG_PHY_QCOM_SNPS_EUSB2) += phy-qcom-snps-eusb2.o -- 2.34.1 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 3/4] drivers: phy: qcom: Add UFS PHY support for SPL 2026-04-09 14:43 ` [PATCH 3/4] drivers: phy: qcom: Add UFS PHY support for SPL Balaji Selvanathan @ 2026-04-13 12:39 ` Sumit Garg 0 siblings, 0 replies; 13+ messages in thread From: Sumit Garg @ 2026-04-13 12:39 UTC (permalink / raw) To: Balaji Selvanathan Cc: u-boot, u-boot-qcom, Tom Rini, Neil Armstrong, Bhupesh Sharma, Neha Malcom Francis, Anshul Dalal, Peng Fan, Mattijs Korpershoek, Quentin Schulz, Hrushikesh Salunke, Alexey Charkov, Dario Binacchi, Andre Przywara, Ilias Apalodimas, Javier Martinez Canillas, Jan Kiszka, Javier Tia, Rasmus Villemoes, Varadarajan Narayanan, João Marcos Costa, Dhruva Gole, Richard Genoud, Marek Vasut, Simon Glass, Igor Belwon, Shawn Lin, Tuyen Dang, Casey Connolly, Lukasz Majewski, Patrice Chotard, Patrick Delaunay, Michal Simek, Yao Zi, Peter Korsgaard On Thu, Apr 09, 2026 at 08:13:33PM +0530, Balaji Selvanathan wrote: > Enable Qualcomm QMP UFS PHY driver for SPL. This is required for > UFS boot support in SPL on Qualcomm platforms. > > Signed-off-by: Balaji Selvanathan <balaji.selvanathan@oss.qualcomm.com> > --- > drivers/phy/qcom/Kconfig | 7 +++++++ > drivers/phy/qcom/Makefile | 2 +- > 2 files changed, 8 insertions(+), 1 deletion(-) Reviewed-by: Sumit Garg <sumit.garg@oss.qualcomm.com> -Sumit > > diff --git a/drivers/phy/qcom/Kconfig b/drivers/phy/qcom/Kconfig > index 0dd69f7ffd0..e5541fd3edc 100644 > --- a/drivers/phy/qcom/Kconfig > +++ b/drivers/phy/qcom/Kconfig > @@ -24,6 +24,13 @@ config PHY_QCOM_QMP_UFS > help > Enable this to support the UFS QMP PHY on various Qualcomm chipsets. > > +config SPL_PHY_QCOM_QMP_UFS > + bool "Qualcomm QMP UFS PHY driver in SPL" > + depends on SPL_PHY && ARCH_SNAPDRAGON > + help > + Enable this to support the UFS QMP PHY in SPL on various Qualcomm chipsets. > + This is required for UFS boot support in SPL. > + > config PHY_QCOM_QUSB2 > tristate "Qualcomm USB QUSB2 PHY driver" > depends on PHY && ARCH_SNAPDRAGON > diff --git a/drivers/phy/qcom/Makefile b/drivers/phy/qcom/Makefile > index 1c4e7d8d391..a91c5377ac4 100644 > --- a/drivers/phy/qcom/Makefile > +++ b/drivers/phy/qcom/Makefile > @@ -1,7 +1,7 @@ > obj-$(CONFIG_PHY_QCOM_IPQ4019_USB) += phy-qcom-ipq4019-usb.o > obj-$(CONFIG_MSM8916_USB_PHY) += msm8916-usbh-phy.o > obj-$(CONFIG_PHY_QCOM_QMP_PCIE) += phy-qcom-qmp-pcie.o > -obj-$(CONFIG_PHY_QCOM_QMP_UFS) += phy-qcom-qmp-ufs.o > +obj-$(CONFIG_$(PHASE_)PHY_QCOM_QMP_UFS) += phy-qcom-qmp-ufs.o > obj-$(CONFIG_PHY_QCOM_QUSB2) += phy-qcom-qusb2.o > obj-$(CONFIG_PHY_QCOM_USB_SNPS_FEMTO_V2) += phy-qcom-snps-femto-v2.o > obj-$(CONFIG_PHY_QCOM_SNPS_EUSB2) += phy-qcom-snps-eusb2.o > > -- > 2.34.1 > ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 4/4] clk: stub: Add Kconfig option for SPL stub driver 2026-04-09 14:43 [PATCH 0/4] spl: Add UFS boot support for SPL on Qualcomm Balaji Selvanathan ` (2 preceding siblings ...) 2026-04-09 14:43 ` [PATCH 3/4] drivers: phy: qcom: Add UFS PHY support for SPL Balaji Selvanathan @ 2026-04-09 14:43 ` Balaji Selvanathan 2026-04-09 15:45 ` Alexey Charkov 3 siblings, 1 reply; 13+ messages in thread From: Balaji Selvanathan @ 2026-04-09 14:43 UTC (permalink / raw) To: u-boot, Sumit Garg, u-boot-qcom Cc: Tom Rini, Neil Armstrong, Bhupesh Sharma, Neha Malcom Francis, Anshul Dalal, Peng Fan, Mattijs Korpershoek, Quentin Schulz, Hrushikesh Salunke, Alexey Charkov, Dario Binacchi, Andre Przywara, Ilias Apalodimas, Javier Martinez Canillas, Jan Kiszka, Javier Tia, Rasmus Villemoes, Varadarajan Narayanan, João Marcos Costa, Dhruva Gole, Richard Genoud, Marek Vasut, Simon Glass, Igor Belwon, Shawn Lin, Tuyen Dang, Casey Connolly, Lukasz Majewski, Patrice Chotard, Patrick Delaunay, Michal Simek, Yao Zi, Peter Korsgaard, Balaji Selvanathan Add SPL_CLK_STUB configuration option to enable the stub clock driver in U-Boot SPL builds. Signed-off-by: Balaji Selvanathan <balaji.selvanathan@oss.qualcomm.com> --- drivers/clk/Kconfig | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig index c2da7b3938b..ca69577c060 100644 --- a/drivers/clk/Kconfig +++ b/drivers/clk/Kconfig @@ -114,6 +114,13 @@ config CLK_STUB Enable this to provide a stub clock driver for non-essential clock controllers. +config SPL_CLK_STUB + bool "Stub clock driver in SPL" + depends on SPL_CLK + help + Enable this to provide a stub clock driver for non-essential clock + controllers in U-Boot SPL. + config CLK_BCM6345 bool "Clock controller driver for BCM6345" depends on CLK && ARCH_BMIPS -- 2.34.1 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 4/4] clk: stub: Add Kconfig option for SPL stub driver 2026-04-09 14:43 ` [PATCH 4/4] clk: stub: Add Kconfig option for SPL stub driver Balaji Selvanathan @ 2026-04-09 15:45 ` Alexey Charkov 2026-04-09 16:05 ` Balaji Selvanathan 0 siblings, 1 reply; 13+ messages in thread From: Alexey Charkov @ 2026-04-09 15:45 UTC (permalink / raw) To: Balaji Selvanathan Cc: u-boot, Sumit Garg, u-boot-qcom, Tom Rini, Neil Armstrong, Bhupesh Sharma, Neha Malcom Francis, Anshul Dalal, Peng Fan, Mattijs Korpershoek, Quentin Schulz, Hrushikesh Salunke, Dario Binacchi, Andre Przywara, Ilias Apalodimas, Javier Martinez Canillas, Jan Kiszka, Javier Tia, Rasmus Villemoes, Varadarajan Narayanan, João Marcos Costa, Dhruva Gole, Richard Genoud, Marek Vasut, Simon Glass, Igor Belwon, Shawn Lin, Tuyen Dang, Casey Connolly, Lukasz Majewski, Patrice Chotard, Patrick Delaunay, Michal Simek, Yao Zi, Peter Korsgaard On Thu, Apr 9, 2026 at 6:44 PM Balaji Selvanathan <balaji.selvanathan@oss.qualcomm.com> wrote: > > Add SPL_CLK_STUB configuration option to enable the stub clock > driver in U-Boot SPL builds. Perhaps mention that the respective Makefile already had obj-$(CONFIG_$(PHASE_)CLK_STUB) in it and only the Kconfig option was missing. Otherwise it raises questions why a newly introduced Kconfig option doesn't propagate anywhere else in the codebase. Best regards, Alexey ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 4/4] clk: stub: Add Kconfig option for SPL stub driver 2026-04-09 15:45 ` Alexey Charkov @ 2026-04-09 16:05 ` Balaji Selvanathan 0 siblings, 0 replies; 13+ messages in thread From: Balaji Selvanathan @ 2026-04-09 16:05 UTC (permalink / raw) To: Alexey Charkov Cc: u-boot, Sumit Garg, u-boot-qcom, Tom Rini, Neil Armstrong, Bhupesh Sharma, Neha Malcom Francis, Anshul Dalal, Peng Fan, Mattijs Korpershoek, Quentin Schulz, Hrushikesh Salunke, Dario Binacchi, Andre Przywara, Ilias Apalodimas, Javier Martinez Canillas, Jan Kiszka, Javier Tia, Rasmus Villemoes, Varadarajan Narayanan, João Marcos Costa, Dhruva Gole, Richard Genoud, Marek Vasut, Simon Glass, Igor Belwon, Shawn Lin, Tuyen Dang, Casey Connolly, Lukasz Majewski, Patrice Chotard, Patrick Delaunay, Michal Simek, Yao Zi, Peter Korsgaard Hi Alexey, On 4/9/2026 9:15 PM, Alexey Charkov wrote: > On Thu, Apr 9, 2026 at 6:44 PM Balaji Selvanathan > <balaji.selvanathan@oss.qualcomm.com> wrote: >> Add SPL_CLK_STUB configuration option to enable the stub clock >> driver in U-Boot SPL builds. > Perhaps mention that the respective Makefile already had > obj-$(CONFIG_$(PHASE_)CLK_STUB) in it and only the Kconfig option was > missing. Otherwise it raises questions why a newly introduced Kconfig > option doesn't propagate anywhere else in the codebase. Okay, will mention. Regards, Balaji > > Best regards, > Alexey ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2026-04-13 13:49 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-04-09 14:43 [PATCH 0/4] spl: Add UFS boot support for SPL on Qualcomm Balaji Selvanathan 2026-04-09 14:43 ` [PATCH 1/4] spl: ufs: Add partition support and flexible loading Balaji Selvanathan 2026-04-09 15:39 ` Alexey Charkov 2026-04-09 16:04 ` Balaji Selvanathan 2026-04-09 14:43 ` [PATCH 2/4] drivers: ufs: qcom: Add SPL support Balaji Selvanathan 2026-04-09 17:38 ` Ferass El Hafidi 2026-04-09 17:45 ` Ferass El Hafidi 2026-04-13 12:37 ` Sumit Garg 2026-04-09 14:43 ` [PATCH 3/4] drivers: phy: qcom: Add UFS PHY support for SPL Balaji Selvanathan 2026-04-13 12:39 ` Sumit Garg 2026-04-09 14:43 ` [PATCH 4/4] clk: stub: Add Kconfig option for SPL stub driver Balaji Selvanathan 2026-04-09 15:45 ` Alexey Charkov 2026-04-09 16:05 ` Balaji Selvanathan
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox