Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
aa8d643
clk: qcom: qcs615: Add SDCC1 and SDCC2 clock support
balajiselvanathan Mar 24, 2026
9be7584
drivers: mmc: uclass: Set removable flag based on device tree property
balajiselvanathan Mar 24, 2026
7cc234d
configs: qcom_defconfig: Limit MMC transfer size to prevent controlle…
balajiselvanathan Apr 21, 2026
9d3d098
misc: Add support for bit fields in NVMEM cells
aswinm94 Feb 13, 2026
14ac7ca
misc: qcom: Add Qualcomm SPMI SDAM NVMEM driver
aswinm94 Feb 13, 2026
2d4183a
reboot-mode: add REBOOT_MODE_ENV_UPDATE option
aswinm94 Apr 15, 2026
f499eb4
mach-snapdragon: enter fastboot on bootloader reboot reason
aswinm94 Apr 15, 2026
e8e46e9
qcom_defconfig: Enable reboot-mode support in qcom_defconfig
aswinm94 Feb 13, 2026
d1bda4c
test: dm: add comprehensive tests for NVMEM bit field operations
aswinm94 Mar 30, 2026
880d0fe
misc: update API documentation for bit field support in NVMEM
aswinm94 Mar 30, 2026
6e4dce0
dts: qcs615-ride-u-boot.dtsi: Add reboot-mode support
aswinm94 Feb 13, 2026
d425569
clk: stub: Sort compatible strings alphabetically
balajiselvanathan Apr 27, 2026
0db23b1
clk: qcom: clk-stub: Add compatibles for QCS615/SA8775P
balajiselvanathan Mar 19, 2026
603853e
clk: qcom: sa8775p: Add UFS clock support
balajiselvanathan Mar 19, 2026
d7a36b5
clk: qcom: qcs615: Add UFS clock support
balajiselvanathan Mar 19, 2026
1414ad3
clk: qcom: sc7280: Add UFS clock support
balajiselvanathan Mar 19, 2026
09777f5
drivers: ufs: qcom: Initialize and enable clocks before hardware access
balajiselvanathan Mar 19, 2026
69c739d
ufs: qcom: Remove redundant POST_CHANGE clock setup call
balajiselvanathan Apr 27, 2026
89cc83c
fastboot: block: Add device selection syntax
balajiselvanathan Apr 24, 2026
6174fba
fastboot: Add GPT/MBR partition table flashing helper functions
balajiselvanathan Apr 24, 2026
2bc685d
fastboot: block: Add GPT/MBR partition table flashing support
balajiselvanathan Apr 24, 2026
523c639
doc: fastboot: Document block device selection syntax
balajiselvanathan Apr 10, 2026
ad1a08d
configs: Rename qcs9100 defconfig to lemans defconfig
aswinm94 Apr 17, 2026
6209bed
qcom_defconfig: Switch Qualcomm fastboot flash from MMC to block
balajiselvanathan Feb 5, 2026
49a82c5
disk: Add partition lookup by type GUID functionality
balajiselvanathan Jan 8, 2026
a15478b
scsi: Add partition lookup by type GUID for SCSI devices
balajiselvanathan Apr 27, 2026
4483383
scsi: Optimize scsi_get_blk_by_uuid() loop iteration
balajiselvanathan Apr 27, 2026
b561ad9
env: scsi: Fix ENV_SCSI_HW_PARTITION default value type
balajiselvanathan Apr 27, 2026
2f376f1
env: scsi: Add partition type GUID support and choice-based selection
balajiselvanathan Apr 27, 2026
dfadcd7
env: scsi: Implement partition type GUID lookup
balajiselvanathan Apr 27, 2026
9110304
configs: Enable partition type GUID for QCS9100/QCM6490/QCS615 boards
balajiselvanathan Jan 8, 2026
7ccdf30
test: dm: Add partition type GUID lookup test
balajiselvanathan Apr 18, 2026
b9b6584
spmi: msm: Allow writes to SDAM02 reboot mode peripheral
aswinm94 Mar 8, 2026
c05bcbd
arm64: dts: qcom: talos: Flatten usb controller nodes
Kriskura176767 Jan 28, 2026
c5a7baf
arm64: dts: qcom: talos/qcs615-ride: Fix inconsistent USB PHY node na…
Mar 31, 2026
423dde7
arm64: dts: qcom: talos-evk: Add support for QCS615 talos evk board
Mar 31, 2026
26fd1e6
dts: talos-evk-u-boot: add override dtsi
aswinm94 Apr 29, 2026
731f069
configs: qcom615: Talos evk enablement
aswinm94 Apr 28, 2026
decdd6b
WORKAROUND: dts: Add reserved memory regions and EFI memory mapping
balajiselvanathan Jan 13, 2026
3dc6a4e
qcom: qcs615: use MMC for fastboot
balajiselvanathan May 1, 2026
001cc7d
qcom: qcs615: store environment in eMMC logfs partition
balajiselvanathan May 1, 2026
d343cf1
armv8: mmu: support unmapping regions with set_one_region()
kcxt May 4, 2026
5435a91
Revert "dm: SMEM (Shared memory) uclass"
kcxt May 4, 2026
b89960b
smem: drop drivers/smem
kcxt May 4, 2026
bbaad87
Revert "test: smem: add basic smem test"
kcxt May 4, 2026
7109625
Revert "drivers: smem: sandbox"
kcxt May 4, 2026
710ca39
mach-snapdragon: fix reserved memory carveout
kcxt May 4, 2026
d8bb6d7
soc: qcom: import smem from Linux 6.11-rc2
kcxt May 4, 2026
0ddccab
soc: qcom: smem: adjust headers for U-Boot
kcxt May 4, 2026
ddad4bd
soc: qcom: smem: adjust for U-Boot
kcxt May 4, 2026
9d41fc1
soc: qcom: smem: get serial number from socinfo
kcxt May 4, 2026
df47f1a
soc: qcom: smem: stub functions
kcxt May 4, 2026
6e66806
soc: qcom: smem: add build infra
kcxt May 4, 2026
ad7399c
mach-snapdragon: move memory parsing to its own file
kcxt May 4, 2026
14afd1f
mach-snapdragon: support parsing memory map from SMEM
kcxt May 4, 2026
b89878b
mach-snapdragon: fetch serial# from SMEM
kcxt May 4, 2026
56904a8
configs: add qcom_sm8650_defconfig and debug fragment
kcxt May 4, 2026
2536d79
dts: qcs6490-rb3gen2-u-boot: drop memory override node
b49020 May 5, 2026
41e88b2
mach-snapdragon: Add FIT multi-DTB selection support
aswinm94 May 5, 2026
9694700
mach-snapdragon: Add FAT loading path as EDK2 workaround
aswinm94 May 5, 2026
60cae35
configs: snapdragon: Enable FIT multi-DTB support
aswinm94 Apr 17, 2026
74031b3
armv8: mmu: Extend mmu_map_region() to allow uncached mappings
b49020 May 7, 2026
c964b94
dts: talos-evk-u-boot: drop memory override node
aswinm94 May 8, 2026
8005ad7
qcom: smem: Use mmu_status() instead of dcache_status()
aswinm94 May 8, 2026
3eb3a60
mach-snapdragon: boot0.h: split out msm8916_boot0.h
Mis012 May 8, 2026
bcdc6f7
mach-snapdragon: Add early EL2 hypervisor switch support
aswinm94 May 11, 2026
d934690
configs: qcom: add EL2 Gunyah exit and boot0 hook support
aswinm94 May 11, 2026
b66c517
tools: efivar: strip auth descriptor for authenticated variables
aswinm94 May 14, 2026
76cd601
board/qualcomm: use bootflow for default boot
ricardosalveti May 14, 2026
fed81a1
arm: dts: talos: Disable SD card controller
balajiselvanathan May 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -688,7 +688,6 @@ F: drivers/phy/msm8916-usbh-phy.c
F: drivers/phy/qcom/
F: drivers/serial/serial_msm.c
F: drivers/serial/serial_msm_geni.c
F: drivers/smem/msm_smem.c
F: drivers/spmi/spmi-msm.c
F: drivers/usb/host/ehci-msm.c
N: qcom
Expand Down
3 changes: 1 addition & 2 deletions arch/arm/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -1140,9 +1140,8 @@ config ARCH_SNAPDRAGON
select DM_RESET
select POWER_DOMAIN
select GPIO_EXTRA_HEADER
select MSM_SMEM
select OF_CONTROL
select SMEM
select QCOM_SMEM
select SPMI
select BOARD_LATE_INIT
select OF_BOARD
Expand Down
29 changes: 25 additions & 4 deletions arch/arm/cpu/armv8/cache_v8.c
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ u64 get_tcr(u64 *pips, u64 *pva_bits)

static int pte_type(u64 *pte)
{
return *pte & PTE_TYPE_MASK;
return *pte & PTE_TYPE_VALID ? *pte & PTE_TYPE_MASK : PTE_TYPE_FAULT;
}

/* Returns the LSB number for a PTE on level <level> */
Expand Down Expand Up @@ -388,13 +388,18 @@ static void map_range(u64 virt, u64 phys, u64 size, int level,
}
}

void mmu_map_region(phys_addr_t addr, u64 size, bool emergency)
void mmu_map_region(phys_addr_t addr, u64 size, bool cached, bool emergency)
{
u64 va_bits;
int level = 0;
u64 attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | PTE_BLOCK_INNER_SHARE;
u64 attrs;

attrs |= PTE_TYPE_BLOCK | PTE_BLOCK_AF;
if (cached)
attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL);
else
attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL_NC);

attrs |= PTE_BLOCK_INNER_SHARE | PTE_TYPE_BLOCK | PTE_BLOCK_AF;

get_tcr(NULL, &va_bits);
if (va_bits < 39)
Expand Down Expand Up @@ -940,6 +945,18 @@ static u64 set_one_region(u64 start, u64 size, u64 attrs, bool flag, int level)
u64 levelsize = 1ULL << levelshift;
u64 *pte = find_pte(start, level);

/*
* If we're trying to unmap a region then check if it's already unmapped or if it's bigger
* then the PTE we're looking at right now, in the first case we can do nothing and in the
* second case we just need to unmap this page/block.
* Otherwise we will needlessly create new tables until we have traversed every single page
* in the region.
*/
if (attrs == PTE_TYPE_FAULT && (pte_type(pte) == PTE_TYPE_FAULT || size >= levelsize)) {
*pte &= ~(PMD_ATTRMASK | PTE_TYPE_MASK);
return levelsize;
}

/* Can we can just modify the current level block PTE? */
if (is_aligned(start, size, levelsize)) {
if (flag) {
Expand Down Expand Up @@ -1082,6 +1099,10 @@ void mmu_change_region_attr(phys_addr_t addr, size_t siz, u64 attrs)
gd->arch.tlb_addr + gd->arch.tlb_size);
__asm_invalidate_tlb_all();

/* If we were unmapping a region then we're done! */
if (attrs == PTE_TYPE_FAULT)
return;

mmu_change_region_attr_nobreak(addr, siz, attrs);
}

Expand Down
26 changes: 26 additions & 0 deletions arch/arm/dts/qcs615-ride-u-boot.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,30 @@
<0x0 0xc0000000 0x0 0xc0000000>,
<0x1 0x80000000 0x1 0x00000000>;
};

reboot-mode {
compatible = "nvmem-reboot-mode";
nvmem-cells = <&reboot_reason>;
nvmem-cell-names = "reboot-mode";

mode-bootloader = <0x02>;
mode-recovery = <0x01>;
};
};

&pm8150_0 {
/* Virtual NVMEM node for PON-based reboot reason storage */
nvram@800 {
compatible = "qcom,spmi-sdam";
reg = <0x800>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x00 0x800 0x100>;

/* Reboot reason cell at PON_SOFT_RB_SPARE (0x88F) */
reboot_reason: reboot-reason@8f {
reg = <0x8f 0x1>;
bits = <1 7>;
};
};
};
40 changes: 24 additions & 16 deletions arch/arm/dts/qcs6490-rb3gen2-u-boot.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,29 @@
* Copyright (c) 2024 Linaro Ltd.
*/
/ {
/* When running as the primary bootloader there is no prior
* stage to populate the memory layout for us. We *should*
* have two nodes here, but ABL does NOT like that.
* sooo we're stuck with this.
*/
memory@80000000 {
device_type = "memory";
reg = <0 0x80000000 0 0x3A800000>,
<0 0xC0000000 0 0x01800000>,
<0 0xC3400000 0 0x3CC00000>,
<1 0x00000000 1 0x00000000>;
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;

axon_dma_mem: axon-dma@80600000 {
reg = <0x0 0x80600000 0x0 0x100000>;
no-map;
};

xbl_dt_mem: xbl-dt@80894000 {
reg = <0x0 0x80894000 0x0 0x40000>;
no-map;
};

pil_reserved_mem: pil-reserved@84300000 {
reg = <0x0 0x84300000 0x0 0x16b00000>;
no-map;
};

display_mem: display@e1000000 {
reg = <0x0 0xe1000000 0x0 0x2400000>;
no-map;
};
};
};

// RAM Entry 0 : Base 0x0080000000 Size 0x003A800000
// RAM Entry 1 : Base 0x00C0000000 Size 0x0001800000
// RAM Entry 2 : Base 0x00C3400000 Size 0x003CC00000
// RAM Entry 3 : Base 0x0100000000 Size 0x0100000000
67 changes: 67 additions & 0 deletions arch/arm/dts/talos-evk-u-boot.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved.
*/

/ {
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;

hyp_mem: hyp@80000000 {
reg = <0x0 0x80000000 0x0 0x600000>;
no-map;
};

xbl_boot_mem: xbl-boot@85d00000 {
reg = <0x0 0x85d00000 0x0 0x200000>;
no-map;
};

aop_mem: aop@85f00000 {
reg = <0x0 0x85f00000 0x0 0x20000>;
no-map;
};

xbl_dt_mem: xbl-dt@85f40000 {
reg = <0x0 0x85f40000 0x0 0x30000>;
no-map;
};

tz_stat_mem: tz-stat@86200000 {
reg = <0x0 0x86200000 0x0 0x100000>;
no-map;
};

tags_mem: tags@86300000 {
reg = <0x0 0x86300000 0x0 0x1200000>;
no-map;
};

tz_mem: tz@87500000 {
reg = <0x0 0x87500000 0x0 0x500000>;
no-map;
};

tzapps_mem: tzapps@87a00000 {
reg = <0x0 0x87a00000 0x0 0x1c00000>;
no-map;
};

pil_mem: pil@8ab00000 {
reg = <0x0 0x8ab00000 0x0 0xcc17000>;
no-map;
};

secure_dsp_mem: secure-dsp@a0000000 {
reg = <0x0 0xa0000000 0x0 0x1600000>;
no-map;
};
};
};

/* Disable SD card controller */
&sdhc_2 {
status = "disabled";
};
3 changes: 2 additions & 1 deletion arch/arm/include/asm/system.h
Original file line number Diff line number Diff line change
Expand Up @@ -306,9 +306,10 @@ void flush_l3_cache(void);
*
* @start: Start address of the region
* @size: Size of the region
* @cached: Map memory as cacheable or not
* @emerg: Also map the region in the emergency table
*/
void mmu_map_region(phys_addr_t start, u64 size, bool emerg);
void mmu_map_region(phys_addr_t start, u64 size, bool cached, bool emerg);

/**
* mmu_change_region_attr() - change a mapped region attributes
Expand Down
31 changes: 31 additions & 0 deletions arch/arm/mach-snapdragon/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,35 @@ config SYS_CONFIG_NAME
Based on this option include/configs/<CONFIG_SYS_CONFIG_NAME>.h header
will be used for board configuration.

config QCOM_FIT_MULTIDTB
bool "Enable FIT multi-DTB selection for Qualcomm platforms"
depends on FIT
help
Enable FIT multi-DTB selection for Qualcomm platforms.
This allows U-Boot to select the appropriate device tree
from a FIT image.

choice
prompt "Qualcomm boot0.h workaround"
optional
help
While U-Boot on Qualcomm platforms doesn't generally need compile-time
adjustments based on the target SoC, workarounds in boot0.h can't
practically detect the SoC at runtime. Enable one of these workarounds
if you know you need it.

config BOOT0_MSM8916_PSCI_WORKAROUND
bool "boot0.h workaround for buggy PSCI on the msm8916 SoC"
help
Select this if you are building U-Boot proper for an msm8916 board that
uses the buggy PSCI implementation.

config QCOM_EL2_GUNYAH_EXIT_SUPPORT
bool "Enable early EL2 switch by exiting Gunyah"
help
Exit Gunyah hypervisor and switch to EL2 during early boot. This must
happen before EL register configuration in start.S so that U-Boot can
run properly at EL2.
endchoice

endif
3 changes: 2 additions & 1 deletion arch/arm/mach-snapdragon/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#
# (C) Copyright 2015 Mateusz Kulikowski <mateusz.kulikowski@gmail.com>

obj-y += board.o
obj-y += board.o dram.o
obj-$(CONFIG_EFI_HAVE_CAPSULE_SUPPORT) += capsule_update.o
obj-$(CONFIG_OF_LIVE) += of_fixup.o
obj-$(CONFIG_QCOM_FIT_MULTIDTB) += qcom_fit_multidtb.o
Loading