Skip to content

Rebased Nord changes on top of qcom-next - #139

Merged
Gopinath Sekar (g-sekar) merged 24 commits into
qualcomm-linux:nord-staging-qcom-nextfrom
aswinm94:nord-0907
Sep 7, 2026
Merged

Gopinath Sekar (g-sekar) merged 24 commits into
qualcomm-linux:nord-staging-qcom-nextfrom
aswinm94:nord-0907

Conversation

@aswinm94

@aswinm94 aswinm94 commented Sep 7, 2026

Copy link
Copy Markdown

Rebased Nord changes on top of latest qcom-next changes

Add a local copy of the nord SoC and board device tree sources
(nord.dtsi, nord-ride.dts, nord-rrd.dts, nord-embedded.dtsi and
nord-gearvm.dtsi) along with the required clock and interconnect
dt-bindings headers.

Wire nord-ride.dtb into the build to enable early nord platform
bring-up in U-Boot until the DTS files are available upstream.

Signed-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
Add support for the nord Global Clock Controller (GCC).

Implement the qcom,nord-gcc driver to provide clocks, resets and
power domains required by nord peripherals.

Signed-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
Add support for the nord NE Global Clock Controller (NEGCC).

Implement the qcom,nord-negcc driver to provide clocks, resets and
power domains required by nord peripherals during initialization.

Signed-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
Add support for the nord SE Global Clock Controller (SEGCC).

Implement the qcom,nord-segcc driver to provide clocks, resets and
power domains required by nord peripherals during boot.

Signed-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
Add support for the nord NW Global Clock Controller (NWGCC).

Implement the qcom,nord-nwgcc driver to provide clocks, resets and
power domains required by nord peripherals.

Signed-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
Add support for the nord TCSR Clock Controller (TCSRCC).

Implement the qcom,nord-tcsrcc driver to provide the clocks and
resets required by nord platform peripherals.

Signed-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
Enable the GCC, NEGCC, SEGCC, NWGCC and TCSRCC clock controller
drivers in qcom_defconfig so support for the nord platform is built
as part of the shared Qualcomm target configuration.

Signed-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
Add a dedicated defconfig for the nord platform.

Enable the drivers and board configuration options required to boot
nord-based targets in U-Boot.

Signed-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
Add support for the nord Top Level Mode Multiplexer (TLMM).

Implement the qcom,nord-tlmm pinctrl driver to provide pin
configuration support required by nord peripherals.

Signed-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
Add nord-ride-u-boot.dtsi to describe the UFS PHY clocks and
ufs_mem_phy node required by U-Boot's UFS driver.

This allows the UFS controller to probe successfully on the
nord-ride platform.

Signed-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
…ate clocks on nord

Several NEGCC/GCC gate clocks incorrectly used enable_mask = BIT(0)
instead of their actual bit position in a shared multi-bit vote
register. Fix enable_reg/enable_mask for 14 GCC and 2 NEGCC clocks
to match the kernel driver.

Signed-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
CONFIG_REMAKE_ELF's u-boot.elf link step used the toolchain's
default page-size flags, and its .lds carried no 4K alignment
padding, so TME's IMGAUTH rejected the image for misaligned
segments.

Add a REMAKE_ELF_LDSCRIPT default for ARCH_SNAPDRAGON pointing at a
Snapdragon-specific .lds that pads .data to a 4K boundary, so this
applies to any Snapdragon board using CONFIG_REMAKE_ELF, not just
nord.

Signed-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
CONFIG_REMAKE_ELF_LDSCRIPT alone leaves u-boot.elf linked with the
toolchain's default page-size flags. Set LDFLAGS_u-boot-elf to the
same 4K granule flags used for u-boot.bin, for any ARCH_SNAPDRAGON
board, not just nord.

Signed-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
ufs_mem_hc's phys property references ufs_mem_phy, but it is added
disabled and nothing else enables it, so UFS never probes.

Signed-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
…gion

nord.dtsi's reserved-memory has no SMEM carveout, and nord has no
qcom,smem node (the kernel doesn't need one here). U-Boot's SMEM
driver needs both to locate the region, so add them mirroring
EDK2's own SMEM reservation.

Signed-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
nord's partition table references host IDs higher than the
existing SMEM_HOST_COUNT=30, causing partition enumeration to fail
with 'bad host'. Raise SMEM_HOST_COUNT to 256 and report the
offending value when it is still too small.

Signed-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
…gion cap

configure_reserved_memory() passed raw reg values straight to
mmu_change_region_attr_nobreak(), which works at 4K granularity and
spins forever on sub-page regions (nord has 0x80-byte SCMI shmem
mailboxes two-to-a-page). Page-align every region instead.

Also raise N_RESERVED_REGIONS as nord's reserved-memory node has
more entries than previously supported boards, and add a guard in
set_regions() so an unmappable granule is reported instead of
hanging.

Signed-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
…entry

build_mem_map() only emitted entries for the reported DRAM banks,
leaving gaps between banks with no page-table entry at all. On
nord, firmware carves out sub-regions from the SMEM usable-RAM
table, leaving such gaps, and configure_reserved_memory() panics
if a DT reserved-memory node ever falls inside one ('PTE ... should
be a table').

Emit a separate MT_DEVICE_NGNRNE entry for each gap, matching the
attrs already used for the pre-DRAM peripheral block, plus
PTE_BLOCK_RO since nothing should ever legitimately write to an
unlisted, firmware-carved gap. This keeps gaps un-cacheable,
non-executable and read-only while still giving them a mapped,
splittable block entry. Any DT reserved-memory node that falls
inside a gap still gets its own explicit attrs from
configure_reserved_memory() (which overwrites the whole attrs mask,
RO bit included), so this only affects the parts of a gap with no
DT node. Bump rbx_mem_map[] so there's room for a gap entry between
every bank.

Signed-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
nord-gearvm.dtsi overrides qupv3_0/1/2, uart4, uart15 and ufs_mem_hc
to only the SoC-specific compatible strings, dropping the generic
qcom,geni-se-qup/geni-uart/geni-debug-uart/ufshc fallback that
upstream convention keeps as the last entry.

serial_msm_geni.c's geni_set_oversampling() checks for the generic
string directly rather than walking the whole compatible list, so
without the fallback no UART driver ever binds ('UART node must be
a child of geniqup node').

Signed-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
qcom_geni_fw_initialise() was unconditionally registered on
EVT_LAST_STAGE_INIT for non-SPL builds. Add CONFIG_QCOM_GENI_FW_LOAD
to make this optional, and disable it by default in qcom_defconfig
for boards that don't need GENI firmware loading.

Signed-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
Add the qcom,hwinfo U-Boot overlay node to nord-ride-u-boot.dtsi so
that the qcom_hwinfo driver can read the IMEM boot cookie and the TCSR
SOC_HW_VERSION register at boot.

Signed-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
scsi_scan() removes existing SCSI block devices before rescanning,
which can invalidate existing references and requires callers to
avoid redundant scans.

Add scsi_scan_new() to scan only controllers without bound block
devices, making repeated scans safe and eliminating the need for
scan guards at individual call sites.

Signed-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
Capsule update may miss newly attached SCSI storage when SCSI has
already been scanned earlier in boot.

Use scsi_scan_new() to detect newly added devices while avoiding
rescanning controllers that already have enumerated block devices.

Signed-off-by: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
@g-sekar
Gopinath Sekar (g-sekar) merged commit 40dda17 into qualcomm-linux:nord-staging-qcom-next Sep 7, 2026
0 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants