Skip to content

Rebase NI nilrt/master/6.12 commits onto nilrt/master/6.18#275

Open
gratian wants to merge 100 commits into
ni:nilrt/master/6.18from
gratian:dev/nilrt/master/6.18
Open

Rebase NI nilrt/master/6.12 commits onto nilrt/master/6.18#275
gratian wants to merge 100 commits into
ni:nilrt/master/6.18from
gratian:dev/nilrt/master/6.18

Conversation

@gratian
Copy link
Copy Markdown

@gratian gratian commented Jun 3, 2026

This PR applies NI specific commits that were floated to the top of nilrt/master/6.12 branch onto the nilt/master/6.18 branch.

WI: AB#3599949

Clean-up

Squashed nati_x86_64_defconfig changes and regenerated

Commits squashed:

  • nati_x86_64_defconfig: enable additional TPM modules
  • nati_x86_64_defconfig: switch kernel compression to xz
  • nati_x86_64_defconfig: Enable TPM2 CONFIGs
  • nati_x86_64_defconfig: Replace CONFIG_NTFS_FS
  • nati_x86_64_defconfig: Enable CONFIG_SCHED_DEBUG
  • nati_x86_64_defconfig: add missing config options
  • nati_x86_64_defconfig: Enable legacy cgroups v1 cpusets

into commit a4b9904 nati_x86_64_defconfig: defconfig for NI x86_64-based targets

Squashed nati_bluefin_defconfig changes and regenerated

Commits squashed:

  • nati_bluefin_defconfig: Enable Marvell 88E6xxx driver
  • nati_bluefin_defconfig: Enable uevent helper

into commit b258796 nati_bluefin_defconfig: defconfig for bluefin targets

Split/Squashed nati_slsc_defconfig related changes and regenerated

Preparation steps:

  • edited SLSC Watchdog: Enable system watchdog for ni-slsc-12001 to split the dts changes from defconfig changes
  • dts changes cherry-picked as b2f495c ARM: dts: ni-slsc-12001: Enable system watchdog

Squashed:

  • ARM: nati_slsc_defconfig: defconfig regeneration
  • nati_slsc_defconfig: Enable system watchdog for ni-slsc-12001 (previously part of commit SLSC Watchdog: Enable system watchdog for ni-slsc-12001)
  • ARM: nati_slsc_defconfig: Add kernel config for SLSC

into commit 8a092c5 nati_slsc_defconfig: defconfig for NI SLSC targets

Squashed fixups and related commits

  • fixup! proc/interrupts: Add polling into proc/interrupts: Add polling
  • tracing: ni: Deprecate trace_ni_ett_marker into ftrace: ni: add raw marker support for trace tool

Dropped reverted commits and commits already upstream

  • Revert "mmc: core: Wait for Vdd to settle on card power off" and original mmc: core: Wait for Vdd to settle on card power off
  • Revert "pl35x-nand-controller: Enable on-die ECC subpage operations" and original pl35x-nand-controller: Enable on-die ECC subpage operations
  • Revert "ARM: pl35x-nand-controller: Fix subpage read performance" and original ARM: pl35x-nand-controller: Fix subpage read performance
  • mmc: sdhci: Disable SD card clock before changing parameters already upstream in 6.18

Grouped related commits.

Cherry-pick onto nilrt/master/6.18

Fixed trivial conflicts

  • 6811ad2 shared: Adding mcopy syscall for x64
  • fbfedc9 kernel: Add config option to specify NI cold boot support
  • 8df2a8e proc/interrupts: Add polling
  • ca8c1b0 ftrace: ni: add raw marker support for trace tool
  • b22a57c i2c-i801.c: Skip SPD initialization on cRIO-903x
  • 817fddd watchdog: nic7018_wdt: Add support for trigger pet and trigger assert
  • 2490a08 serial: core: create anonymous parent device
  • 5aca324 cfg80211: wext: Force scans to occur in AP mode

Resolved non-trivial conflicts

  • commit bcd1f33 Revert "time: Always make sure wall_to_monotonic isn't positive" required reconciliation with:

    • commit bba9898 timekeeping: Rework do_settimeofday64() to use shadow_timekeeper
    • commit 8221475 timekeeping: Rework timekeeping_inject_offset() to use shadow_timekeeper
    • resolved by keeping the upstream code but removing timespec64_compare(&tks->wall_to_monotonic, &ts_delta) > 0 compares like in the original revert commit
  • the 6.12 commit 06c083b serial: 8250: add driver for NI UARTs required special handling and should get a close review:

    • split the 6.12 device-tree specific changes into a separate commit based on chaitu236@907bf3a
    • cherry pick the split commits into 6.18
    • resolved conflicts with upstream commits:
      • 2e48997 serial: 8250_ni: use serial_port_in()/serial_port_out() helpers
      • 753a55f serial: 8250_ni: Tidy up ACPI ID table
      • 515c8e2 serial: 8250_ni: Fix build warning
      • 030df0e serial: 8250_ni: Switch to use dev_err_probe()
      • b4694a7 serial: 8250_ni: Switch to use platform_get_mem_or_io()
      • 57de87b serial: 8250_ni: Switch to use uart_read_port_properties()

Testing

  • Boot tested on: cRIO-9030, cRIO-9049, PXIe-8840
  • Re-versioned NI drivers on cRIO-9049
    • successfully re-versioned: atomicchinchk, nibds, nicartenumk, nicdcck, nicdrk, nichenumk, nicsrk, nidimk, nidmxfk, nifdrk, nifresnelmbdc, nifslk, nikal, nilmsk, nimdbgk, nimru2k, nimsdrk, nimxdfk, ninimbusrk, niorbk, nipalk, nisdigk, nistc3rk, niswdk
    • failed to reversion ni-si514, WI: #AB3902174
  • Verified LabVIEW RT can deploy a VI to the cRIO-9049 running the upgraded 6.18 kernel
  • Verified HW Manager can connect to the cRIO-9049 running the upgraded 6.18 kernel
  • Checked dmesg diffs. No concerning messages logged with 6.18
  • Tested running docker containers. Run into an issue with dockerd not starting due to using legacy iptables. Filled WI: AB#3902287
  • .config changes diff

chaitu236 and others added 30 commits April 15, 2026 18:20
Add GitHub actions to do PR sanity checks.

Signed-off-by: Chaitanya Vadrevu <chaitanya.vadrevu@ni.com>
We need this because pr checks are complaining about missing
ply and git module.

Signed-off-by: deooi <deborah.ooi@emerson.com>
Signed-off-by: Ben Shelton <ben.shelton@ni.com>
Acked-by: Scot Salmon <scot.salmon@ni.com>
Acked-by: Terry Wilcox <terry.wilcox@ni.com>
Natinst-ReviewBoard-ID: 69848
[gratian: convert to new syscall table format for arm]
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[bstreiff: update the number for this painful out-of-tree syscall]
Signed-off-by: Brandon Streiff <brandon.streiff@ni.com>
[gratian: update due to new syscall introduced by ecb8ac8
 ("mm/madvise: introduce process_madvise() syscall: an external memory hinting AP")]
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[gratian: update syscall numbers to account for upstream additions; dropped arm bits]
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[gratian: bump syscall number to account for upstream process_mrelease addition]
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[gratian: bump syscall number to account for upstream 'futex_waitv' and 'set_mempolicy_home_node' additions]
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[mpeterse: bump syscall number to account for upstream 'cachestat', 'fchmodat2', and 'map_shadow_stack' additions]
[mpeterse: remove comments in syscalls.h referring to the function's source file]
Signed-off-by: Mike Petersen <mike.petersen@ni.com>
[cvadrevu: bump syscall number to account for upstream additions]
Signed-off-by: Chaitanya Vadrevu <chaitanya.vadrevu@emerson.com>
[gratian: bump syscall number to account for upstream additions]
Signed-off-by: Gratian Crisan <gratian.crisan@emerson.com>
… warm reboot

Another group is requesting that we provide an API to allow them to signal that the
next reboot should be "cold". They need this to guarantee that the FPGA will not be
running and cause the system to reboot at a bad time. This change creates a RW file at
/sys/kernel/ni_requested_reboot_type. The default value is 0.

- If when we reboot the value is 0 then we do the normal reset behavior.
- If the value is 1 we attempt to do a PCI reboot (using the CF9 register) and fall
back to the normal reboot method if that fails.
- If the value is 2 we attempt to do an ACPI reboot and fall back to the normal reboot
method if that fails.

We selected a reboot using the CF9 register over attempting to do an EFI reboot because
we don't have much time to test this feature and we've found EFI features to be fairly
buggy. For next release the plan is to do an EFI cold reboot, but put it in early enough
to properly test it.

Rebooting using the CF9 register should work on all x64 hardware that we will support for
2014 (smasher and hammerhead).

Signed-off-by: Terry Wilcox <terry.wilcox@ni.com>
Acked-by: Brad Mouring <brad.mouring@ni.com>
Natinst-ReviewBoard-ID: 68018
Currently, we provide NI cold boot support on x64 targets.  However, at
some future point, we may wish to provide this support on other targets
as well.  Adding a config option to specify that a target supports NI
cold boot functionality; this fixes the build for Zynq targets and
doesn't paint us into a corner later.

Signed-off-by: Ben Shelton <ben.shelton@ni.com>
[gratian: fix trivial conflict with ceea991 ("bpf: Move bpf_dispatcher function out of ftrace locations")]
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[gratian: fix trivial conflict with 7bd291a ("sched: Unify the SCHED_{SMT,CLUSTER,MC} Kconfig")]
Signed-off-by: Gratian Crisan <gratian.crisan@emerson.com>
Implement polling on procfs' "interrupts" file which observes changes
to IRQ action handlers. The poll fires each time an action handler is
registered or unregistered.

This change enables daemons to watch for changes and apply certain
system policies relating to IRQ processing. For example, modify
execution priority of dedicated IRQ tasks after they're created.

include/linux/interrupt.h
kernel/irq/manage.c
 Add change counter for handler registrations and a wait queue to notify
 tasks on updates.

fs/proc/interrupts.c
 Add polling callback on aforementioned counter and wait queue.

Signed-off-by: Haris Okanovic <haris.okanovic@ni.com>
Signed-off-by: Ovidiu-Adrian Vancea <ovidiu.vancea@ni.com>
Signed-off-by: Brad Mouring <brad.mouring@ni.com>
Natinst-ReviewBoard-ID: 111860, 163902
[gratian: fixed small rebase conflict]
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[bstreiff: un-trivialize from changes in fddda2b ("proc: introduce
 proc_create_seq{,_data}") and convert file_operations to proc_ops]
Signed-off-by: Brandon Streiff <brandon.streiff@ni.com>
[cvadrevu: include linux/wait.h for wait_queue_head_t]
Signed-off-by: Chaitanya Vadrevu <chaitanya.vadrevu@emerson.com>
[gratian: fix trivial conflict with 827bafd ("genirq: Make a few functions static")]
Signed-off-by: Gratian Crisan <gratian.crisan@emerson.com>
Signed-off-by: Richard Tollerton <rich.tollerton@ni.com>
[gratian: fix conflict with fa32e85 ("tracing: Add new trace_marker_raw"); rename NI specific implementation until we can replace it]
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[bstreiff: fixups due to struct member renames in 1329249 ("tracing: Make struct ring_buffer less ambiguous")]
Signed-off-by: Brandon Streiff <brandon.streiff@ni.com>
[gratian: update for 22c36b1 ("tracing: make tracing_init_dentry() returns an integer instead of a d_entry pointer")]
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[gratian: fixups due to tracing contex introduction in edbaaa1 ("tracing: Merge irqflags + preemt counter, add RT bits")]
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[gratian: fixups due to tracing_gen_ctx_flags() API change in 8cac5db ("tracing: Merge irqflags + preemt counter, add RT bits")]
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[gratian: use always_inlined __trace_buffer_lock_reserve() introduced by 3e9a8aa ("tracing: Create a always_inlined __trace_buffer_lock_reserve()")]
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[cvadrevu: deprecate trace_ni_ett_marker]
Signed-off-by: Chaitanya Vadrevu <chaitanya.vadrevu@emerson.com>
[gratian: squash deprecation commit with original to reduce rebase burden; fix trivial conflict]
Signed-off-by: Gratian Crisan <gratian.crisan@emerson.com>
The clocksource watchdog is used to detect instabilities in the current
clocksource. This is a beneficial feature on new/unknown hardware however it
can create problems by falsely triggering when the watchdog wraps. The
reason is that an interrupt storm and/or high priority (FIFO/RR) tasks can
preempt the timer softirq long enough for the watchdog to wrap if it has a
limited number of bits available by comparison with the main clocksource.

One observed example is on a Intel Baytrail platform where TSC is the main
clocksource, HPET is disabled due to a hardware bug and acpi_pm gets
selected as the watchdog clocksource.

Provide the option to disable the clocksource watchdog for hardware where
the clocksource stability has been validated.

Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[gratian: fix trivial conflict with fc153c1 ("clocksource: Add a Kconfig option for WATCHDOG_MAX_SKEW")]
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[gratian: fix trivial conflict with 7cf8f44 ("x86: fs: kmsan: disable CONFIG_DCACHE_WORD_ACCESS")]
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[cvadrevu: fix trivial conflict with e26cbab ("timekeeping: Always check for negative motion")]
Signed-off-by: Chaitanya Vadrevu <chaitanya.vadrevu@emerson.com>
This reverts commit e1d7ba8.

NI has a use case that involves distributed networked Linux devices
that need to share the same concept of time using a mechanism like
IEEE-1588 or 802.1AS.  The “master” device (ie. the device with the
time all other devices will be synchronized to) is often a device
that boots up set to the Posix Epoch, mainly because it lacks a
battery-backed RTC. (note: the existence of an RTC does not prevent
a device from booting up at or very near the Posix Epoch, it just
greatly reduces the likelihood).

If a slave device attempted to synchronize its CLOCK_REALTIME to
that of the master – and the master’s time was < Epoch+slave uptime,
that slave would not be able to synchronize.

This use case is believed to be very common among embedded devices,
especially those without RTCs.

Long term:
We (NI Timing & Sync) are planning on engaging with the upstream
community to educate them on our use case and hopefully put a
different solution in place which solves the original problem
(preventing a negative boot time representation) while also allowing
our use case to continue working as it did prior to the change we’re
reverting. Once that happens, we can drop this revert.

Signed-off-by: Brad Mouring <brad.mouring@ni.com>
Reported-by: Vineeth Acharya <vineeth.acharya@ni.com>
Tested-by: Rick Ratzel <rick.ratzel@ni.com>
Natinst-CAR-ID: 629499
[bstreiff: reduced control flow in do_settimeofday64 due to unassigned 'ret']
Signed-off-by: Brandon Streiff <brandon.streiff@ni.com>
[gratian: fix conflict with b8ac29b ("timekeeping: contribute wall clock to rng on time change")]
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[gratian: fix conflicts with
  bba9898 ("timekeeping: Rework do_settimeofday64() to use shadow_timekeeper")
  8221475 ("timekeeping: Rework timekeeping_inject_offset() to use shadow_timekeeper")]
Signed-off-by: Gratian Crisan <gratian.crisan@emerson.com>
For consistency with what others use for minors, this change sets
PPS_MAX_SOURCES to MINORMASK.

The PPS_MAX_SOURCES value is currently set to 16. In some cases this
was not sufficient for a system. For example, a system with multiple
(4+) PCIe cards each with 4 PTP-capable ethernet interfaces could run
out of the available PPS major:minors if each interface registers a
PPS source.

Signed-off-by: Charlie Johnston <charlie.johnston@ni.com>
Acked-by: Rodolfo Giometti <giometti@enneenne.com>
The issue is, if core soft reset is issued while Intel Apollo Lake
USB mux is in Host role mode, it takes close to 7 minutes before we
are able to switch USB mux from Host mode to Device mode. This is
due to RTL bug.

The workaround is to let BIOS issue the core soft reset via _DSM
method. It will ensure that USB mux is in Device role mode before
issuing core soft reset, and will inform the driver whether the
reset is success within the timeout value, or the timeout is exceeded.

commit cd78b8067c6e ("usb: dwc3: call _DSM for core soft reset")
originated from http://git.yoctoproject.org/cgit/cgit.cgi/linux-yocto-4.1/

Signed-off-by: Wan Ahmad Zainie <wan.ahmad.zainie.wan.mohamad@intel.com>
[akash.mankar@ni.com: changed the way has_dsm_for_softreset property is
set in dwc3-pci.c and read in core.c]
Signed-off-by: Akash Mankar <akash.mankar@ni.com>
Signed-off-by: Brad Mouring <brad.mouring@ni.com>
Acked-by: Gratian Crisan <gratian.crisan@ni.com>
Acked-by: Brandon Streiff <brandon.streif@ni.com>
Natinst-ReviewBoard-ID: 178124
[gratian: fixed merge conflicts, mainly due to dwc3_soft_reset removal]
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[bstreiff: fixed merge conflicts due to property refactor by 1a7b12f
 ("usb: dwc3: pci: Supply device properties via driver data")]
[gratian: fix merge conflict with f580170
 ("usb: dwc3: Add splitdisable quirk for Hisilicon Kirin Soc")]
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[gratian: fix conflict with 582ab24
 ("usb: dwc3: pci: Set "linux,phy_charger_detect" property on some Bay Trail boards")]
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[cvadrevu: fix trivial conflict with 0471616
 ("usb: dwc3: Add remote wakeup handling")]
[cvadrevu: fix trivial conflict with 4e8ef34
 ("usb: dwc3: fix gadget mode suspend interrupt handler issue")]
[cvadrevu: fix conflict with 8bea147
 ("usb: dwc3: Soft reset phy on probe for host")]
[cvadrevu: fix conflict with 917dc99
 ("usb: dwc3: pci: Change PCI device macros")]
Signed-off-by: Chaitanya Vadrevu <chaitanya.vadrevu@ni.com>
[cvadrevu: fix conflict with 4fad737
 ("usb: dwc3: core: Fix system suspend on TI AM62 platforms")]
[cvadrevu: fix conflict with e8d48c2
 ("Revert "usb: dwc3: Soft reset phy on probe for host"")]
Signed-off-by: Chaitanya Vadrevu <chaitanya.vadrevu@emerson.com>
cRIO-9041, cRIO-9034 and possibly other devices' USBLAN does not work
with this mdelay in place when connected to Windows host.

Signed-off-by: Chaitanya Vadrevu <chaitanya.vadrevu@emerson.com>
(cherry picked from commit 29ff169)
Signed-off-by: Gratian Crisan <gratian.crisan@emerson.com>
Commit d86ff33 ("efivarfs: expose used and total size") introduced the
ability to query the efivars file system size with utilities like 'df'.

Unfortunately this introduces large latency spikes in real-time tasks on
PREEMPT_RT configured kernels. Skip the EFI run-time services query for
EFI_RT_SUPPORTED_QUERY_VARIABLE_INFO if on PREEMPT_RT. The 'df'
functionality is lost but the rest of the efivars run-time services
continue to work.

Upstream status: Inappropriate (configuration)

  - upstream sets EFI_DISABLE_RUNTIME to 'default y if PREEMPT_RT' thus
    avoiding the problem entirely.

  - NILRT sets EFI_DISABLE_RUNTIME to 'n' and uses EFI run-time services to
    access EFI vars at run-time.[1][2]

[1] https://review-board.natinst.com/r/271066
[2] https://review-board.natinst.com/r/303906

Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
The cRIO-903x architecture is sort of special, we do not connect
a dimm to the SPD because we use flash instead, but the SPD is still
present because the processor expects it.  However, enumerating and
registering the SPD i2c bus is causing interrupt storms, so for now
we skip the registration on all 903x devices.

Fixes: 01590f3 ("i2c: i801: Instantiate SPD EEPROMs automatically")
Signed-off-by: Bill Pittman <bill.pittman@ni.com>
Natinst-AZDO-ID: 1573148
(cherry picked from commit 4de019e)
[cvadrevu: fix trivial conflict with d08cac0 ("i2c: i801: reword according to newest specification")]
[cvadrevu: fix minor conflict with 80e56b8 ("i2c: i801: Simplify class-based client device instantiation")]
Signed-off-by: Chaitanya Vadrevu <chaitanya.vadrevu@emerson.com>
[gratian: fix minor conflict with 4d6d35d ("i2c: smbus: introduce Write Disable-aware SPD instantiating functions")]
Signed-off-by: Gratian Crisan <gratian.crisan@emerson.com>
Added an NI RT features driver. This is an ACPI device that exposes LEDs,
switches, and other hardware features of the Smasher controllers.

Not all of the proposed features of the device work as expected, and some
features may be removed in the future. Development work on this device by
the hardware team is currently not a high priority. These issues will be
addressed once the hardware team gets back to this device.

Signed-off-by: Jeff Westfahl <jeff.westfahl@ni.com>
[gratian: fix conflict with 7a6ff4c ("misc: hisi_hikey_usb: Driver to support onboard USB gpio hub on Hikey960")]
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[gratian: fix conflict with bb3b655 ("staging: hikey9xx: split hi6421v600 irq into a separate driver")]
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[gratian: fix conflict with f396ede ("misc: open-dice: Add driver to expose DICE data to userspace")]
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[gratian: fix trivial conflict with 6c93c6f ("misc: Add a mechanism to detect stalls on guest vCPUs")]
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[gratian: fix trivial conflict with 393fc2f ("misc: microchip: pci1xxxx: load auxiliary bus driver for the PIO function in the multi-function endpoint of pci1xxxx device.")]
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[mpeterse: fix trivial conflicts with new config flags]
[mpeterse: change return type of nirtfeatures_acpi_remove due to 6c0eb5b]
Signed-off-by: Mike Petersen <mike.petersen@ni.com>
[cvadrevu: fix trivial conflict with b987375 ("misc: Add Nitro Secure Module driver")]
[cvadrevu: fix trivial conflict with 5f67eef ("misc: mrvl-cn10k-dpi: add Octeon CN10K DPI administrative driver")]
Signed-off-by: Chaitanya Vadrevu <chaitanya.vadrevu@emerson.com>
[gratian: fix trivial conflicts due to upstream additions to Kconfig/Makefile]
Signed-off-by: Gratian Crisan <gratian.crisan@emerson.com>
On our Zynq targets, we expose the power-on reset status of the controller
via a soft_reset sysfs file. The same underlying bit in the CPLD is exposed
as hard_boot on our Smasher targets. In this commit we change the Smasher
implementation to match Zynq.

Signed-off-by: Jeff Westfahl <jeff.westfahl@ni.com>
Changed the strings returned by the reset_source sysfs file to match those
returned on Zynq. Changed the algorithm used to determine the reset source
to match Zynq.

Signed-off-by: Jeff Westfahl <jeff.westfahl@ni.com>
(Note that the Smasher CPLD currently returns incorrect values for the
reset source in some cases. See CARs 458093 and 458094.)
In nirtfeatures_acpi_add, we create several sysfs files. As currently
implemented, there is a window where access to a sysfs file may cause
our spinlock to be used before it's been initialized, or may cause us
to write an incorrect value to an I/O port. We can close this window
by moving the creation of the sysfs files closer to the end of the
function.

Signed-off-by: Jeff Westfahl <jeff.westfahl@ni.com>
[cvadrevu: fixed trivial conflict due to dropping 9cbd2f2
("nirtfeatures: set HARD_BOOT_N if necessary when the driver loads")]
Signed-off-by: Chaitanya Vadrevu <chaitanya.vadrevu@emerson.com>
The Smasher CPLD has recently exposed some new registers. In this commit
we display the values of these registers in the output of the register_dump
sysfs file.

Signed-off-by: Jeff Westfahl <jeff.westfahl@ni.com>
When we built Hammerhead, we used ID 4 instead of 1. We don't want
to rework all of the boards to match the documentation, so we're just
changing the documentation and driver to match what we built.

Signed-off-by: Jeff Westfahl <jeff.westfahl@ni.com>
Signed-off-by: Jeff Westfahl <jeff.westfahl@ni.com>
The existing recovery_mode and no_fpga bits are now read only. A new bit,
no_fpga_sw, exists for software to tell the CPLD to assert NO_FPGA at the
next reset.

Signed-off-by: Jeff Westfahl <jeff.westfahl@ni.com>
The driver currently returns an error from init if it doesn't recognize
the backplane ID. This causes the kernel to hang on boot. Although this
is probably a bug somewhere else in the kernel, there's no real benefit
to returning an error in this case. It's sufficient to print an error
message to the console and return "Unknown" as the backplane ID.

Signed-off-by: Jeff Westfahl <jeff.westfahl@ni.com>
Remove the unused NI_HW_REBOOT config option. We're not going to use this.

Signed-off-by: Jeff Westfahl <jeff.westfahl@ni.com>
Updated registers to match the latest CPLD documentation, removed several
sysfs files that were only used for development debugging, and removed
several now unused constants.

Signed-off-by: Jeff Westfahl <jeff.westfahl@ni.com>
These changes add support for PIEs (physical interface elements), which
are defined as physical elements fixed to a controller/chassis with
which a user can interact (e.g. LEDs and switches) and whose meaning
is user-defined and implementation-specific.

The support for these elements, in terms of enumerating and interacting
with them (i.e. retrieving the list of elements, getting/setting their
current state, enabling notifications, etc.) is embedded within the
BIOS as a set of ACPI methods. The changes to the CPLD driver act as a
bridge between these methods and existing Linux kernel facilities as
described below to expose the elements and any applicable metadata to
user mode. The metadata or knowledge needed for the interpretation
thereof is not a prerequisite to interacting with the elements--it is
there for upper-level value add software to use to improve the user
experience. In other words, Linux users familiar with the class drivers
by which the elements are surfaced should not have any issues
interfacing with them without knowing the meaning of the attached
metadata.

Output elements, which consist currently of LEDs, are surfaced via the
LED class driver. Each LED and color becomes its own LED class device
with the naming convention 'nilrt:{name}:{color}'. Any additional
attributes/metadata intended for upper-level software are appended to
the name, each separated by colons, as suggested by the LED class driver
documentation in the Linux kernel proper, except where there is already
a standard way to communicate a specific piece of metadata (e.g.,
maximum brightness, which is exposed via the /sys/class/leds/.../
max_brightness attribute node).

Input elements as surfaced via the input class driver. As with output
elements, each input element registers its own separate driver whose
name and associated metadata are transmitted via the name attribute
attached to the input device, retrievable via the EVIOCGNAME ioctl,
using the same convention as described above for output elements. The
input class driver model is that events are pushed (i.e. reported) to
indicate state changes, so to facilitate this, the CPLD driver has an
ACPI notify callback that is invoked when an input element changes state
and its BIOS support generates a general purpose event per the ACPI
GPE model. The notify callback checks the instantaneous state of the
input element and reports a keyboard event on its particular device with
a scan code of 256 (BTN_0), where a key down event means that the input
element is in the '1' state (down, engaged, on, pressed, etc.) and a key
up event means that the input element is in the '0' state (off,
disengaged, released, etc.). User mode software can then monitor for
these specific events to determine when the state of the element has
changed, or can use the EVIOCGKEY ioctl on the appropriate input device
to retrieve the instantaneous state of the element.

Signed-off-by: Aaron Rossetto <aaron.rossetto@ni.com>
(joshc: fixed up strnicmp -> strncasecmp for 4.0)
Signed-off-by: Josh Cartwright <joshc@ni.com>
[mpeterse: change return type of nirtfeatures_acpi_remove due to 6c0eb5b]
Signed-off-by: Mike Petersen <mike.petersen@ni.com>
For compatibility with myRIO, don't change the name of the wireless
PIE LEDs.

Signed-off-by: Nathan Sullivan <nathan.sullivan@ni.com>
Reviewed-by: Jaeden Amero <jaeden.amero@ni.com>
Reviewed-by: Josh Cartwright <joshc@ni.com>
Natinst-ReviewBoard-ID: 107067
Natinst-CAR-ID: 540272
The MMC driver will enable/disable external regulators as part of
enabling/disabling the SD Host Controller. The WLAN_PWD_L line
(controlled from the CPLD) must be enabled/disabled at the same
time that the controller is enabled/disabled. Allow the MMC
driver to just control that pin directly via the regulator
framework.

Signed-off-by: James Minor <james.minor@ni.com>
Add the new Fire Eagle backplane ID so we stop complaining on boot.

Signed-off-by: Kyle Roeschley <kyle.roeschley@ni.com>
Signed-off-by: Brad Mouring <brad.mouring@ni.com>
Acked-by: Xander Huff <xander.huff@ni.com>
Natinst-ReviewBoard-ID: 152156
Fix checkpatch warnings:
  Block comments use * on subsequent lines
  Block comments use a trailing */ on a separate line
  Comparisons should place the constant on the right side of the test
  break is not useful after a goto or return

Signed-off-by: Xander Huff <xander.huff@ni.com>
Natinst-ReviewBoard-ID: 157395
bstreiff and others added 28 commits May 29, 2026 16:48
This keeps us for having to scan for it.

Signed-off-by: Brandon Streiff <brandon.streiff@ni.com>
Natinst-ReviewBoard-ID: 168093
(cherry picked from commit 56f25b5)
Signed-off-by: deooi <deborah.ooi@ni.com>
This change is needed to keep up with the latest file directory.

Signed-off-by: deooi <deborah.ooi@ni.com>
Drop device tree bindings which are already declared in zynq-7000.dtsi.
This includes CPU, CAN, FPGA, PL353 SMC, NAND, GPIO, I2C and SPI
bindings.

'fpgaperipheral' node, now 'devcfg' in zynq-7000.dtsi describes the
Xilinx Zynq FPGA Manager.

Signed-off-by: Hatsy Rei <yan.huan.chng@emerson.com>
Enable PL353 SMC and NAND device tree nodes declared in zynq-7000.dtsi.
Indicate via 'nand-on-flash-bbt' property that bad block table is stored
on the nand flash, and 'nand-ecc-mode' property that on-die ECC is used.

Signed-off-by: Hatsy Rei <yan.huan.chng@emerson.com>
Avoid redeclaring these nodes and just extend them via phandles.

Signed-off-by: Hatsy Rei <yan.huan.chng@emerson.com>
zynq-7000.dtsi contains updated AMBA and GPIO device tree node phandles.
Adopt these changes by referencing i2c0 phandle instead of amba node for
overriding i2c bindings, and refer to gpio0 phandle instead of gpio.

Signed-off-by: Hatsy Rei <yan.huan.chng@emerson.com>
Update 'compatible' property to match what is expected by the latest
NI 16550 UART Driver.

Signed-off-by: HatsyRei <yan.huan.chng@emerson.com>
Copied largely from ni-bluefin.dts, but with more DSA ports and USB gone.
Updated port order such that "sw0" lines up with "Port 0" etc.
Updated status LED to be a bicolour blue and yellow LED, not green.

Signed-off-by: Brandon Streiff <brandon.streiff@ni.com>
Acked-by: Kyle Roeschley <kyle.roeschley@ni.com>
Acked-by: Erik Hons <erik.hons@ni.com>
Acked-by: Haris Okanovic <haris.okanovic@ni.com>

Natinst-ReviewBoard-ID: 310589
(cherry picked from commit 3b0fa2e)

Natinst-ReviewBoard-ID: 320599
(cherry picked from commit ff0acb4)

Natinst-ReviewBoard-ID: 325354
(cherry picked from commit 83855f3)

Signed-off-by: deooi <deborah.ooi@ni.com>
(cherry picked from commit dd4b381)
Signed-off-by: Gratian Crisan <gratian.crisan@emerson.com>
Move ni-coralreef.dts to the xilinx folder together with the
other xilinx devices.

Signed-off-by: deooi <deborah.ooi@ni.com>
(cherry picked from commit 4822c16)
Signed-off-by: Gratian Crisan <gratian.crisan@emerson.com>
zynq-7000.dtsi contains updated AMBA and GPIO device tree node phandles.
Adopt these changes by referencing i2c0 phandle instead of amba node for
overriding i2c bindings, and refer to gpio0 phandle instead of gpio.

Signed-off-by: deooi <deborah.ooi@ni.com>
(cherry picked from commit 1e2fe29)
Signed-off-by: Gratian Crisan <gratian.crisan@emerson.com>
Add appropriate device tree bindings to enable probe and configuration
of Marvell 88E6341 'Topaz' ethernet switch on Bluefin hardware.

Signed-off-by: HatsyRei <yan.huan.chng@emerson.com>
(cherry picked from commit 26ab2af)
Signed-off-by: Gratian Crisan <gratian.crisan@emerson.com>
Enable I2C bus 0 by default for NI Zynq-based devices.

Signed-off-by: HatsyRei <yan.huan.chng@emerson.com>
(cherry picked from commit 935ab94)
Signed-off-by: Gratian Crisan <gratian.crisan@emerson.com>
Marvell 88E6341 'Topaz' ethernet switch on Bluefin hardware has 6 ports,
of which port 1 to 4 PHYs are mapped at SMI addresses from 0x11 to 0x14.
Specify and bind them to the exposed ports on Bluefin devices.

Signed-off-by: HatsyRei <yan.huan.chng@emerson.com>
(cherry picked from commit 068c975)
Signed-off-by: Gratian Crisan <gratian.crisan@emerson.com>
Migrated no-slsc-12001.dts related changes from
branch dev/slsc/1.0/4.1 to ni/linux repo branch nilrt/master/6.6.

The commits:
33bb24e nati_slsc_dts: Add device tree for SLSC
bd53913 nati_slsc_dts: Correct SPI settings on device tree
9cf417b nati_slsc_dts: fix IRQ for spi7/8
4a9c9de nati_slsc_dts: Add SLSC FPGA to Device Tree
05d7cb7 nati_slsc_dts: Remove trailing whitespace
85377cb nati_slsc_dts: Correct device info in device tree
489cdc8 nati_slsc_dts: pull in Tecate dts for 4.1 Linux kernel
3dac1d2 nati_slsc_dts: Remove unused devices in dts
4740c70 nati_slsc_dts: Use spidev as compatible type in dts
2972302 nati_slsc_12001_dts: Rename dts file with model name
31600f9 nati_slsc_12001_dts: Fix the format of the dts
e3a89e6 nati_slsc_12001_dts: set SLSC FPGA compatible id to
                                     ni,slscfpga
a5f550a nati_slsc_12001_dts: Add AD7291 ADC to device tree
b662f5d nati_slsc_12001_dts: Enforce level trigger for slscfpga IRQ
5fd9c31 nati_slsc_12001_dts: Reduce SPI max frequency m25p80 device

Additional:
removed execute permissions of ni-slsc-12001.dts file.
added SPDX-License-Identifier on top of the file.

Signed-off-by: Sien <sien.wu@ni.com>
Signed-off-by: George Huang <george.huang@ni.com>
Signed-off-by: Kae Woei Kang <kae.woei.kang@emerson.com>
(cherry picked from commit 844dac4)
Signed-off-by: Gratian Crisan <gratian.crisan@emerson.com>
zynq-700.dtsi contains i2c0 and i2c1 device tree node phandles.
Referencing i2c0 and i2c1 phandle for overriding i2c bindings.

Signed-off-by: Kae Woei Kang <kae.woei.kang@emerson.com>
(cherry picked from commit 2733e42)
Signed-off-by: Gratian Crisan <gratian.crisan@emerson.com>
The mv88e6xxx driver gained support for PHY interrupt handling in newer
kernels (6.12), whereas older kernels (e.g. 4.1) only supported polling
over the MDIO bus.

On ni-bluefin, the PHY interrupt lines have always been physically
connected on the board but were not described or used previously due
to the lack of driver support.

Enabling PHY interrupts in the device tree allows the driver to rely on
interrupt-driven link and status updates instead of frequent MDIO
polling. This significantly reduces MDIO bus traffic and contention.

Reducing MDIO contention is required to free up bus bandwidth, allowing
the system to sustain higher sampling rates without MDIO-related
interference.

Signed-off-by: deooi <deborah.ooi@emerson.com>
Use the phandle reference @watchdog0 to add reset-on-timeout property to
cadence watchdog. This will allow the system to reboot when it hangs for
more than 10 sec.

Signed-off-by: George Huang <george.huang@ni.com>
Acked-by: Brad Mouring <brad.mouring@ni.com>
Acked-by: Brad Keryan <brad.keryan@emerson.com>
Acked-by: Josh Cartwright <josh.cartwright@ni.com>
Acked-by: Gratian Crisan <gratian.crisan@ni.com>
Natinst-ReviewBoard-ID 149067
Signed-off-by: Kae Woei Kang <kae.woei.kang@emerson.com>
(cherry picked from commit b814f58)
Signed-off-by: Gratian Crisan <gratian.crisan@emerson.com>
[gratian: split dts changes from into a separate commit and reword]
Signed-off-by: Gratian Crisan <gratian.crisan@emerson.com>
Device tree for Bluefin LC devices are
for Low-cost Ethernet cDAQ-9183 and cDAQ-9187.
The changes here is to update the model name,
NIDEVCODE and removal of dsa switch port 2 (sw1)
since Bluefin LC devices only have a single ethernet port.
Otherwise, the rest of the device tree
remains the same as Bluefin.

Signed-off-by: deooi <deborah.ooi@emerson.com>
Add a new config parameter CONFIG_MTD_RESERVE_END. This is used with
command line partition parsing to reserve space at the end of a partition
defined with a size of '-', which indicates it should use all remaining
space.

Signed-off-by: Jeff Westfahl <jeff.westfahl@ni.com>
(cherry picked from commit 68ca952)
Signed-off-by: Hatsy Rei <yan.huan.chng@emerson.com>
The Zynq static memory controller is based on ARM PL353. The following commit
[3fa059c nand: pl353: Renamed zynq_nand driver as pl353_nand]
renamed the driver to "pl353-nand" to match the hardware. This creates problems
on shipping hardware due to a mismatch between what u-boot expects
(via bootargs/mtdparts) and the kernel driver name. This commit reverts the
NAND driver name to the old "xilinx_nand" in order to preserve compatibility.

Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
Acked-by: Joseph Hershberger <joseph.hershberger@ni.com>
Acked-by: Terry Wilcox <terry.wilcox@ni.com>
Natinst-ReviewBoard-ID: 79256
(cherry picked from commit df46525)
Signed-off-by: Hatsy Rei <yan.huan.chng@emerson.com>
Upstream commit
a43bdc3 ("mtd: Fix gluebi NULL pointer dereference caused by ftl notifier")
fixed a NULL pointer dereference, which can be caused by FTL notifier
accessing 'gluebi->desc' in gluebi_read, by completely preventing gluebi
from creating mtdblock devices.

This creates a problem as existing systems may expect mtdblocks emulated
on top of UBI to exist. As a workaround, this commit prevents gluebi
mtdblock device creation only if CONFIG_FTL is enabled.

Signed-off-by: HatsyRei <yan.huan.chng@emerson.com>
[gratian: reword to match commit quoting kernel standard]
Signed-off-by: Gratian Crisan <gratian.crisan@emerson.com>
(cherry picked from commit 1d286b1)
Signed-off-by: Chaitanya Vadrevu <chaitanya.vadrevu@emerson.com>
NI Zynq based devices require different clk frequencies to be set at
different timing modes. Enable the memclk rate to be set according
to the specifications in the device tree. If the device tree does
not have this memclk-timing-frequency property specified, the driver
proceeds as usual.

Signed-off-by: deooi <deborah.ooi@ni.com>
(cherry picked from commit ea79ee4)
Signed-off-by: Gratian Crisan <gratian.crisan@emerson.com>
Add `enable_subpage_read` and `enable_subpage_write` load-time options
to toggle subpage read/write operations on pl353 chips. Both options are
enabled by default, and may be toggled in the boot loader.

Signed-off-by: Haris Okanovic <haris.okanovic@ni.com>
Acked-by: Gratian Crisan <gratian.crisan@ni.com>
Acked-by: Jeff Westfahl <jeff.westfahl@ni.com>

Natinst-CAR-ID: 599280
Natinst-ReviewBoard-ID: 151758
(cherry picked from commit 311a5711cfdbfa20e3f4ec2dbd429f96b9f76c2f)
(cherry picked from commit f261b4b)
Signed-off-by: HatsyRei <yan.huan.chng@emerson.com>
(cherry picked from commit 118d09c)
Signed-off-by: HatsyRei <yan.huan.chng@emerson.com>
Existing devices which utilize Micron NAND may contain partitions
formatted with subpages. Support this use case by implementing hooks
for subpage read and write in Micron NAND driver.

Signed-off-by: HatsyRei <yan.huan.chng@emerson.com>
(cherry picked from commit bc5d815)
Signed-off-by: HatsyRei <yan.huan.chng@emerson.com>
[cvadrevu: squash all defconfig commits accumulated up to 6.6.77-rt50 and regenerate for 6.12.16-rt9]
Signed-off-by: Chaitanya Vadrevu <chaitanya.vadrevu@emerson.com>
[gratian: regenerate for 6.18.13-rt4]
Signed-off-by: Gratian Crisan <gratian.crisan@emerson.com>
[cvadrevu: squash all defconfig commits accumulated up to 6.6.77-rt50 and regenerate for 6.12.16-rt9]
Signed-off-by: Chaitanya Vadrevu <chaitanya.vadrevu@emerson.com>
[gratian: squash all defconfig commits accumulated up to 6.12.74-rt16 and regenerate for 6.18.13-rt4]
Signed-off-by: Gratian Crisan <gratian.crisan@emerson.com>
[gratian: squash all defconfig commits accumulated up to 6.12.74-rt16 and regenerate for 6.18.13-rt4]
Signed-off-by: Gratian Crisan <gratian.crisan@emerson.com>
[gratian: squash all defconfig commits accumulated up to 6.0.19-rt14 and regenerate for 6.1.12-rt7]
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
[mpeterse: squash all defconfig commits accumulated up to 6.1.54-rt15 and regenerate for 6.6-rc6-rt10]
Signed-off-by: Mike Petersen <mike.petersen@ni.com>
[cvadrevu: squash all defconfig commits accumulated up to 6.6.77-rt50 and regenerate for 6.12.16-rt9]
Signed-off-by: Chaitanya Vadrevu <chaitanya.vadrevu@emerson.com>
[gratian: squash all defconfig commits accumulated up to 6.12.74-rt16 and regenerate for 6.18.13-rt4]
Signed-off-by: Gratian Crisan <gratian.crisan@emerson.com>
@gratian gratian requested a review from a team June 3, 2026 00:07
Copy link
Copy Markdown

@chaitu236 chaitu236 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

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.