Commit Graph
100 Commits
Author SHA1 Message Date
Aaron Kling 81536e184f Bluetooth: btbcm: Add entry for BCM4356A3 UART bluetooth
This patch adds the device ID for the bluetooth chip used in the
Nvidia specific Broadcom BCM4356 PCI-E WiFi / UART BT chip.

Startup log:

  Bluetooth: hci0: BCM: chip id 122
  Bluetooth: hci0: BCM: features 0x0f
  Bluetooth: hci0: BCM4356A3
  Bluetooth: hci0: BCM4356A3 (001.004.009) build 0000
  Bluetooth: hci0: BCM4356A3 'brcm/BCM4356A3.nvidia,p2894-2551-b00.hcd' Patch
  Bluetooth: hci0: BCM: features 0x0f
  Bluetooth: hci0: BCM4356A3 37.4MHz Class 1.5 Nvidia mDarcy-0108
  Bluetooth: hci0: BCM4356A3 (001.004.009) build 0109

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-10-16 18:06:46 -05:00
Aaron Kling 1b168e5b8c ANDROID: GKI: Export Nvidia dts'
Change-Id: I6e882d22300339288fa4f40d07faf0d4e9f413b0
2026-10-16 10:04:46 -05:00
Aaron Kling 2753300b4e arm64: tegra: Add support for NVIDIA Shield TV 2019
Add initial device-tree support for NVIDIA Shield TV 2019 (a.k.a Sif)
based on the Tegra210B01 SoC with 2 GiB of LPDDR4 RAM.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-10-16 10:04:45 -05:00
Aaron Kling ba2c386d76 arm64: tegra: Enable HDA controller on P2894
The HDA controller can be used for audio playback over HDMI.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-10-16 10:04:45 -05:00
Aaron Kling 5af98305bc arm64: tegra: Enable HDMI on P2894
Add regulators and enable the host1x nodes necessary to attain video
output via hdmi.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-10-16 10:04:45 -05:00
Aaron Kling 47176bb1fa arm64: tegra: Enable DFLL clock on P2894
Add pinmux for PWM-based DFLL support.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-10-16 10:04:45 -05:00
Aaron Kling 0e1c162428 arm64: tegra: Enable PWM fan on P2894
This is based on 6f78a94, which enabled added the fan and thermal zones
for the Jetson Nano Devkit. The fan and thermal characteristics of the
two devices are similar, so using the same configuration.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-10-16 10:04:45 -05:00
Aaron Kling bc4ef68f74 arm64: tegra: Add Wifi node for Tegra210B01 P2894
The Tegra210B01 p2894 product has a BCM4356 module with wifi on pcie.
Enable the pcie port it is plugged into add a node for the wifi card,
and add a gpio-hog to enable power to the card. Attempts to tie the gpio
to power sequencing has not worked.

Change-Id: I7236fa1a3eabeb7fbb5b94af05f951b922955a38
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-10-16 10:04:45 -05:00
Aaron Kling 918c526413 arm64: tegra: Add Wifi node for Tegra210 P2894
The Tegra210 p2894 product has a BCM4354 module with wifi on sdio.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-10-16 10:04:44 -05:00
Aaron Kling c508b718dd arm64: tegra: Wire up Bluetooth for P2894
The p2894 product contains a BCM4354 module with bluetooth on uart.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-10-16 10:04:44 -05:00
Aaron Kling 42d74b5aba arm64: tegra: Enable PCIe Ethernet on P2894
The P2894 product has a Realtek r6168 PCIe ethernet adapter. Enable the
pcie port the adapter is attached to.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-10-16 10:04:44 -05:00
Aaron Kling f00ff820f7 arm64: tegra: Enable XUSB controller on P2894
Enable the XUSB controller on P2894. One of the USB 3.0 lanes goes to a
switchable USB-A port, while the second USB 3.0 lane supports the normal
USB-A port.

The padctl layout is different between the Tegra210 and Tegra210B01
variants. The latter is overridden in the device specific dts.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-10-16 10:04:44 -05:00
Aaron Kling 4055e1cac3 arm64: tegra: Enable gpu on P2894
This adds the gpu regulator and enables the gpu node.

Change-Id: I7d9580967edf9af4c31d500608f880eeb9d1e0b5
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-10-16 10:04:44 -05:00
Aaron Kling c3d883fb2a arm64: tegra: Add support for NVIDIA Shield TV Pro 2019
Add initial device-tree support for NVIDIA Shield TV Pro 2019 (a.k.a
MDarcy) based up the Tegra210B01 SoC with 3 GiB of LPDDR4 RAM.

This device is very similar to the Tegra210 p2894 device, so this shares
the p2894 dtsi with a few overrides to the pinmux and power tree.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-10-16 10:04:43 -05:00
Aaron Kling 733af3c200 arm64: tegra: tegra210-p2894: Move arch dtsi include
In preparation for support of the Tegra210B01 p2894 variant, move the
arch dtsi include to the Tegra210 revision specific dts. This will allow
the p2894 dtsi to be shared across archs, as the variants share a
majority of the hardware design.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-10-16 10:04:43 -05:00
Aaron Kling 492f318ca8 arm64: tegra: Add Tegra210B01 support
Also known as Tegra X1+, the Tegra210B01 has higher CPU and GPU clocks
than the original Tegra210.

Add a SoC-level device tree file that describes most of the hardware
available on the SoC. This is derived from the Tegra210 dtsi, as they
share a lot.

Co-developed-by: Thomas Makin <halorocker89@gmail.com>
Signed-off-by: Thomas Makin <halorocker89@gmail.com>
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-10-16 10:04:43 -05:00
Aaron Kling a241deda10 arm64: tegra: Add BPMP node for Tegra210
The Tegra210 soc supports bpmp offload for power management among other
things. This was considered insecure partway through the soc's lifecycle
and support was removed in the bootloader. However, Tegra210B01 returned
to using the bpmp. Plus old bootloaders on the original Tegra210 still
work with the existing driver. So add the node to the common Tegra210
soc dtsi, but disabled by default.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-10-16 10:04:43 -05:00
Aaron Kling 67057dade8 usb: gadget: tegra-xudc: Add Tegra210B01 Support
It doesn't need some of the workarounds that the original Tegra210 does.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-10-16 10:04:43 -05:00
Aaron Kling 58e4c5446f usb: xhci: tegra: Add Tegra210B01 support
This uses a different firmware, but is otherwise compatible with
Tegra210.

Co-developed-by: Thomas Makin <halorocker89@gmail.com>
Signed-off-by: Thomas Makin <halorocker89@gmail.com>
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-10-16 10:04:43 -05:00
Aaron Kling 8cf303ed56 phy: tegra: xusb: Add Tegra201B01 Support
This covers a few differences:
* Lanes compared to the original Tegra210
* The soc has a different clock driver and thus callbacks
* The soc has an extra clock for uphy management

Co-developed-by: Thomas Makin <halorocker89@gmail.com>
Change-Id: I455358267b3a700461caa8f9f9963d33596dd189
Signed-off-by: Thomas Makin <halorocker89@gmail.com>
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-10-16 10:04:42 -05:00
Aaron Kling 7ae0f074ca thermal: tegra: Add Tegra210B01 Support
Add Tegra210B01 SOC_THERM configuration

Change-Id: Ib094bedbe13dd0e3ff750e7c4da025b46e033ddc
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 16:55:15 -05:00
Aaron Kling 24598d43da clk: tegra: dfll: add CVB tables for Tegra210B01
To generate OPP tables for the soc

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 16:55:15 -05:00
Aaron Kling 34e09d4ed5 soc/tegra: fuse: speedo-tegra210: Support revision b01
Tegra210B01 has a separate set of skus and speedo tables

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 16:55:15 -05:00
Aaron Kling cdae45b395 soc/tegra: fuse: Support revision B01
Previously, all supported SoCs only used the A major revision. The
Tegra210B01 SoC incremented the major revision. Add support for this.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 16:55:14 -05:00
Aaron Klingandtmakin 0a63d792ed clk: tegra: Add Tegra210B01 support
This is based on the downstream Nvidia 5.10 kernel. That version was
semi-integrated into the Tegra210 clock driver. Looking at the existing
Tegra210 support, it made more sense to make this a fully independent
driver, so that is implemented here.

Co-authored-by: Thomas Makin <halorocker89@gmail.com>
Signed-off-by: Thomas Makin <halorocker89@gmail.com>
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 16:55:14 -05:00
Aaron Kling e4282a0488 dt-bindings: clock: tegra: Document Tegra210B01
* Add the compatible string for Tegra210B01 clock and reset
* Add Tegra210B01 specific clock bindings

Acked-by: Rob Herring (Arm) <robh@kernel.org>
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 16:55:14 -05:00
Aaron Kling 11710dff52 drm/tegra: Create switch class for primary hdmi
Change-Id: I353b1c5ad98bcd69b4827b0c74327511b4d8222d
2026-08-22 16:55:14 -05:00
Aaron Kling c11c7e2e06 ANDROID: GKI: Add tegra gki hacks
* Enable xz ramdisk for small t210 recovery partitions

Change-Id: I3bb0f7277722305d0498776d4494c8f60a322343
2026-08-22 16:55:14 -05:00
Aaron Kling 2a2508ba6a arm64: Disable some cpu feature sanity checks
On t186, these differ between denver and a57

Change-Id: I65b1515ef9f5d42b0da1dfa605e51536eb902ca5
2026-08-22 16:55:13 -05:00
Aaron Kling ff46377110 ANDROID: gki_defconfig: Normalize Tegra SoC Support
Since commit ece67f4758 ("soc/tegra: Make ARCH_TEGRA_SOC_FOO defaults
for NVIDIA Tegra"), all Tegra arm64 archs are enabled for GKI. Commit
eb5e5c1f62 ("ANDROID: gki_defconfig: Enable Tegra SoCs") disabled
options related to Tegra archs older than Tegra234 since that was the
only one supported at the time. Now that all archs are supported, these
options can be used.

* SERIAL_8250_TEGRA is used by Tegra210 and Tegra186 for UART serial
* TEGRA186_TIMER is used by Tegra186 and newer for watchdog timers
* TEGRA_IOMMU_SMMU is required by Tegra210 for mmu
* TEGRA210_EMC can be a module, but depends on an additional built-in
  config; plus all other Tegra emc support is built-in already
* TEGRA_AHB is used by Tegra210
* ARM_TEGRA20_CPUFREQ and ARM_TEGRA124_CPUFREQ Kconfig changes are reset
  to match mainline. New vendor snippets enabling CPUFREQ_DT can disable
  as needed. The rockpi4 target is updated as an example of this.

Change-Id: I05541c6e1fc1ccd9ab430451a66f0d5cc3c7b0e1
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 16:55:13 -05:00
Aaron Kling 9e066aa60a HACK: Revert "UPSTREAM: drm/nouveau: select FW caching"
This reverts commit cf4c97db94.

Commit knowingly breaks building the nouveau module. As the issue only
affects full gsp devices, revert to keep builds going.
https://patchwork.freedesktop.org/patch/635827/#comment_1165994

Change-Id: I67d544b433f4a2dc047ed07088eda73466594cc6
2026-08-22 16:55:13 -05:00
Aaron Kling 249af64b93 power: supply: bq24190_charger: Support usb role switching
Change-Id: Ia1e650f15ae55bb0972612b378d093a20d8a8a98
2026-08-22 16:55:13 -05:00
Aaron Kling 87a623ba79 power: supply: bq24190_charger: Export current regulator
Change-Id: I3958896da66740d503aec5ed93e14a7d743a43ac
2026-08-22 16:55:13 -05:00
Aaron Kling b4b5ddc195 memory: tegra210-emc: Support Device Tree EMC Tables
These are generated by the Tegra210 Android bootloader. This is similar
to the Tegra124 handling, so the support is based on that and modified
to match Tegra210 by referencing the downstream Nvidia 4.9 kernel.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 16:55:13 -05:00
Aaron Kling 1168324549 arm64: tegra: Add EMC timings to P2180
These entries are imported from the downstream Nvidia Linux4Tegra
kernel. They are expected to be updated with the trained values by the
bootloader. This is done by the Nvidia Android bootloader, which is
different from the handling by the Nvidia Linux bootloader which places
these values in a reserved memory location. P2180 is supported by both
bootloaders, so lets support initializing emc on both.

It should be noted that the bootloader will not create these nodes in
the kernel dtb if they do not exist. It will only set in place existing
properties.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 16:55:13 -05:00
Aaron Kling 17dc25fde0 WIP: drm/tegra: Add devfreq support to media engines
TODO: Better limit frequency count

Change-Id: If86527dc4985d9afd9d510430d1f3c137ca7f220
2026-08-22 16:55:12 -05:00
Aaron Kling 6665fa0e0e drm/tegra: Support Tegra186+ in NVJPG
Change-Id: I7bf2c200d4ad9690c4f21a004ecc6dea8065f93e
2026-08-22 16:55:12 -05:00
Aaron Kling e2b7c0d630 drm/tegra: Add NVENC driver
Add support for booting and using NVENC on Tegra210+ to the Host1x
and TegraDRM drivers. This driver only supports the new TegraDRM uAPI.

Change-Id: I07e1386604d7638ba43381c3f289688d7c5cb12b
2026-08-22 16:55:12 -05:00
Aaron Kling f107dd13fc arm64: tegra: Add tegra210 p2523
Change-Id: I0922c192477436ecb3f509c1cc1ce8b0f3e6f391
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 16:55:12 -05:00
Aaron Kling 5f4c18cff4 arm64: tegra: Add support for NVIDIA Shield TV 2015
Add initial device-tree support for NVIDIA Shield TV (a.k.a. Foster)
based upon Tegra210 SoC with 3 GiB of LPDDR4 RAM. It is based on P2571.

Change-Id: Ideeeb15f835ebf7f7617d3989908d245aff4b316
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:35 -05:00
Aaron Kling 706902a2c8 arm64: tegra: Enable sd card on P2571
Change-Id: I2320654ef9fc15dad901b516bd22379329e5ab88
2026-08-22 11:35:35 -05:00
Aaron Kling 5c071bf1e5 arm64: tegra: Enable HDA controller on P2571
The HDA controller can be used for audio playback over HDMI.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:35 -05:00
Aaron Kling cd3c3cf242 arm64: tegra: Enable HDMI on P2571
Add regulators and enable the host1x nodes necessary to attain video
output via hdmi.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:35 -05:00
Aaron Kling 647f86bba1 arm64: tegra: Enable DFLL clock on P2530
Using pwm regulator

Change-Id: Id41340bcfc4e12df74b579ec34e61ebba857d81c
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:35 -05:00
Aaron Kling 437e4a400b arm64: tegra: Enable XUSB controller on P2571
Enable the XUSB controller on P2571. One of the USB 3.0 lanes goes to an
internal ethernet interface, while two other USB 3.0 lanes support the
the USB-A receptacles on the I/O board.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:35 -05:00
Aaron Kling 7c3cd07474 arm64: tegra: Enable PWM fan on P2571
This is based on 6f78a94, which enabled added the fan and thermal zones
for the Jetson Nano Devkit. The fan and thermal characteristics of the
two devices are similar, so using the same configuration.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:35 -05:00
Aaron Kling bb93b387d4 arm64: tegra: Add power supplies to emmc on P2530
Change-Id: I3ddf282a9a4cf7b407897f8e7af073c1852704b7
2026-08-22 11:35:35 -05:00
Aaron Kling 81d1dce523 arm64: tegra: Add Wifi node for P2530
The p2530 som has a BCM4354 module with wifi on sdio.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:35 -05:00
Aaron Kling f486fc5941 arm64: tegra: Wire up Bluetooth for P2530
The p2530 som contains a BCM4354 module with bluetooth on uart.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:35 -05:00
Aaron Kling 3ab48113d2 arm64: tegra: Enable gpu on P2530
This adds the gpu regulator and enables the gpu node.

Change-Id: I8a0f580fa600d8f37fb3fa497cf657abf2905d5f
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:35 -05:00
Aaron Kling ba6ce716c5 arm64: tegra: Add PMIC support on P2530
Based on the p2180 pmic config, modified to match p2530

Change-Id: Ic7baa787b8e9633da72622a4562258860c05fca6
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:34 -05:00
Aaron Kling a7e6c6791e arm64: tegra: Enable CPU idle support for P2530
Enable CPU idle support for the P2530 module

Change-Id: Ia73f192b3450fe9c143fbaaea03d6a50527927a7
2026-08-22 11:35:34 -05:00
Aaron Kling 2a5e63e580 arm64: tegra: Add P2530 SC7 timings
Same as 106f7a0 and 47b4e12. Without these, the pmc driver locks up
during boot.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:34 -05:00
Aaron Kling 0ac45d0c32 dt-bindings: tegra: Document SHIELD TV 2015
The SHIELD TV 2015 is a consumer media Android device that is based on
P2571

Change-Id: Ib981728d277f7daca812223ec3534d98555d43a1
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:34 -05:00
Aaron Kling 7d1c80a51c arm64: tegra: Enable bluetooth on P3310
The p3310 som contains a BCM4354 module with bluetooth on uart.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:34 -05:00
Aaron Kling b00eb938cb arm64: tegra: Enable wifi on P3310
The p3310 som has a BCM4354 module with wifi on sdio.

Change-Id: Ie4b42165fb81a129a7afe58c1c632261d13eca53
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:34 -05:00
Aaron Kling eb678f0a0d arm64: tegra: Fix ldo5 voltage on P3310
This appears to be a typo. The voltage input to the wireless module is
expected to be 1.8V-3.3V, per the downstream device tree.

Fixes: 02df3f03a8 ("arm64: tegra: Add initial power tree for P3310")
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:34 -05:00
Aaron Kling 04b2767faa arm64: tegra: Add CPU OPP tables for Tegra194
Add OPP table and interconnects property to scale DDR frequency with
CPU frequency for better performance. Each operating point entry of
the OPP table has CPU freq to per MC channel bandwidth mapping.
One table is added for each cluster even though the table data is
same because the bandwidth request is per cluster. This is done
because the OPP framework creates a single icc path and hence single
bandwidth request if the table is marked as 'opp-shared' and shared
among all clusters. For us, the OPP table data is same but the MC
Client ID argument to interconnects property is different for each
cluster. So, having per cluster tables makes different icc paths for
each cluster and helps to make per cluster BW requests.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:34 -05:00
Aaron Kling df06f3327d arm64: tegra: Add CPU OPP tables for Tegra186
Add OPP table and interconnects property to scale DDR frequency with
CPU frequency for better performance. Each operating point entry of
the OPP table has CPU freq to per MC channel bandwidth mapping. One
table is added for each cluster because the different cpu types have
different scaling curves.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:34 -05:00
Aaron Kling 68b9da0d69 memory: tegra194: Support icc scaling
Add Interconnect framework support to dynamically set the DRAM
bandwidth from different clients. The MC driver is added as an ICC
provider and the EMC driver is already a provider.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:34 -05:00
Aaron Kling e1700d2895 memory: tegra186: Support icc scaling
Add Interconnect framework support to dynamically set the DRAM
bandwidth from different clients. The MC driver is added as an ICC
provider and the EMC driver is already a provider.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:34 -05:00
Aaron Kling 979ef9969f memory: tegra186-emc: Support non-bpmp icc scaling
This adds support for dynamic frequency scaling of external memory on
devices with bpmp firmware that does not support bwmgr.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:34 -05:00
Aaron Kling 0b691900f2 memory: tegra186-emc: Register rates with opp
This will be used in the upcoming non-bpmp icc support, which will use
the common tegra emc rate support which uses the opp framework.

Change-Id: If4a3efaae0ad06de029ffd34c2b11faea5044d58
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:33 -05:00
Aaron Kling fd1455c178 dt-bindings: memory: tegra194-mc: Add dummy client IDs for Tegra194
Add ICC IDs for dummy software clients representing CCPLEX clusters.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:33 -05:00
Aaron Kling 4633bb55f6 dt-bindings: memory: tegra186-mc: Add dummy client IDs for Tegra186
Add ICC IDs for dummy software clients representing CCPLEX clusters.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:33 -05:00
Aaron Kling 8fb5c8bd3e arm64: tegra: Fix P2371 pcie lane assignments
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:33 -05:00
Aaron Kling f4efe632f0 arm64: tegra: Enable interconnect for MC and EMC on Tegra210
These are being referenced by actmon, but are not currently enabled.

Fixes: 654427e0b9 ("arm64: tegra: Add OPP tables on Tegra210")
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:33 -05:00
Aaron Kling 99603f7dff memory: tegra210: Support interconnect framework
This makes mc and emc interconnect providers and allows for dynamic
memory clock scaling.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:33 -05:00
Aaron Kling 167dcb6d3d arm64: tegra: Enable mmu on Tegra194 display controllers
These use a separate mmu instance compared to everything else currently
enabled for the soc.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:33 -05:00
Aaron Kling 10be68dc0b Revert "arm64: tegra: Disable ISO SMMU for Tegra194"
This reverts commit ebea268ea5.

Mmu is now being enabled for the display controllers.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2026-08-22 11:35:33 -05:00
Aaron Kling 8364f53f1e drm/tegra: Enable cmu for Tegra186 and Tegra194
Without the cmu, nvdisplay will display colors that are notably darker
than intended. The vendor bootloader and the downstream display driver
enable the cmu and sets a sRGB table. Loading that table here results in
the intended colors.

Co-developed-by: Kurt Kiefer <kekiefer@gmail.com>
Signed-off-by: Kurt Kiefer <kekiefer@gmail.com>
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Tested-by: Jasper Korten <jja2000@gmail.com>
2026-08-22 11:35:33 -05:00
Aaron Kling f469138a77 spi: tegra210-quad: Allocate DMA memory for DMA engine
When the SPI controllers are running in DMA mode, it is the DMA engine
that performs the memory accesses rather than the SPI controller. Pass
the DMA engine's struct device pointer to the DMA API to make sure the
correct DMA operations are used.

Suggested-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Link: https://patch.msgid.link/20260525-tegra194-qspi-iommu-v2-1-a11c53f804b2@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-06-01 15:12:06 +01:00
Aaron Kling e423f1c719 scsi: ufs: core: Disable timestamp for Kioxia THGJFJT0E25BAIP
Kioxia has another product that does not support the qTimestamp
attribute.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Link: https://patch.msgid.link/20260403-thgjfjt0e25baip-no-timestamp-v1-1-1ddb34225133@gmail.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2026-04-08 22:27:16 -04:00
Aaron Kling 453f8a1523 arm64: dts: qcom: sm8550: Add ACD levels for GPU
Update GPU node to include acd level values.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260207-sm8550-acd-v1-1-53d084c58c9a@gmail.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
2026-03-18 07:13:15 -05:00
Aaron Kling fee48405a0 dt-bindings: interconnect: OSM L3: Document sm8550 OSM L3 compatible
Document the OSM L3 found in the Qualcomm SM8550 platform.

Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Link: https://msgid.link/20260219-sm8550-ddr-bw-scaling-v3-1-75c19152e921@gmail.com
Signed-off-by: Georgi Djakov <djakov@kernel.org>
2026-03-06 14:21:58 +02:00
Aaron Kling d6a6c58da3 cpufreq: Add Tegra186 and Tegra194 to cpufreq-dt-platdev blocklist
These have platform specific drivers.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
2026-01-27 11:21:22 +05:30
Aaron Kling aac5ba6acc PCI: tegra: Allow building as a module
Change the module macro back to builtin, which does not define an exit
function. This will prevent the module from being unloaded. There are
concerns with modules not cleaning up IRQs on unload, thus unload must be
specifically disallowed. Drop the remove callback as it is unused.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Link: https://patch.msgid.link/20250731-pci-tegra-module-v7-3-cad4b088b8fb@gmail.com
2025-12-26 10:57:17 -06:00
Aaron Kling eefff3d9f6 cpuidle: tegra: Export tegra_cpuidle_pcie_irqs_in_use()
Export tegra_cpuidle_pcie_irqs_in_use() to allow pci-tegra to be built as a
module.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Link: https://patch.msgid.link/20250731-pci-tegra-module-v7-2-cad4b088b8fb@gmail.com
2025-12-26 10:57:17 -06:00
Aaron Kling 92d661c36f irqdomain: Export irq_domain_free_irqs()
Export irq_domain_free_irqs() to allow PCI/MSI drivers like pci-tegra to be
built as a module.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://patch.msgid.link/20250731-pci-tegra-module-v7-1-cad4b088b8fb@gmail.com
2025-12-26 10:57:17 -06:00
Aaron Kling 0936fa8015 arm64: tegra: Remove OTG ID GPIO from Jetson TX2 NX
The P3509 carrier board does not connect the ID GPIO. Prior to this, the
GPIO role switch driver could not detect the mode of the OTG port.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-11-14 22:55:12 +01:00
Aaron Kling a72c3372ad arm64: tegra: Set USB Micro-B port to OTG mode on P3450
The USB Micro-B port on p3450 is capable of OTG and doesn't need to be
hardcoded to peripheral. No other supported Tegra device is set up like
this, so align for consistency.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-11-14 22:55:12 +01:00
Aaron Kling 3da2ea1933 arm64: tegra: Add reserved-memory node for P2180
The Tegra210 L4T bootloader RAM training will corrupt the in-RAM kernel
DT if no reserved-memory node exists. This prevents said bootloader from
being able to boot a kernel without this node, unless a chainloaded
bootloader loads the DT. Add the node to eliminate the requirement for
extra boot stages.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-11-14 22:55:11 +01:00
Aaron Kling 28f917d1a8 arm64: tegra: Add reserved-memory node for P3450
The Tegra210 L4T bootloader RAM training will corrupt the in-RAM kernel
DT if no reserved-memory node exists. This prevents said bootloader from
being able to boot a kernel without this node, unless a chainloaded
bootloader loads the DT. Add the node to eliminate the requirement for
extra boot stages.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-11-14 22:55:11 +01:00
Aaron Kling 961e69a5dc arm64: tegra: Enable NVDEC and NVENC on Tegra210
The other engines are already enabled, finish filling out the media
engine nodes and power domains.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-11-14 22:55:11 +01:00
Aaron Kling 654427e0b9 arm64: tegra: Add OPP tables on Tegra210
This adds OPP tables for ACTMON and EMC, enabling dynamic frequency
scaling for system memory.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-11-14 22:55:10 +01:00
Aaron Kling 3cad436939 arm64: tegra: Add interconnect properties for Tegra210
Add interconnect properties to the Memory Controller, External Memory
Controller and the Display Controller nodes in order to describe the
hardware interconnection.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-11-14 22:55:10 +01:00
Aaron Kling 60bb55de5d arm64: tegra: Add ACTMON on Tegra210
This enables the action monitor to facilitate dynamic frequency scaling.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-11-14 22:55:10 +01:00
Aaron Kling 22c788aec2 dt-bindings: devfreq: tegra30-actmon: Add Tegra124 fallback for Tegra210
The Tegra210 actmon is compatible with the existing Tegra124 driver.
Describe the compatibles as such.

Acked-by: Chanwoo Choi <cw00c.choi@samsung.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-11-14 18:00:47 +01:00
Aaron Kling 688dfe40b4 soc/tegra: fuse: speedo-tegra210: Add SoC speedo 2
The Jetson Nano series of modules only have 2 EMC table entries,
different from other SoC SKUs. As the EMC driver uses the SoC speedo ID
to populate the EMC OPP tables, add a new speedo ID to uniquely identify
this.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-11-14 17:18:25 +01:00
Aaron Kling ce27c9c212 soc/tegra: fuse: speedo-tegra210: Update speedo IDs
Existing code only sets CPU and GPU speedo IDs 0 and 1. The CPU DVFS
code supports 11 IDs and nouveau supports 5. This aligns with what the
downstream vendor kernel supports. Align SKUs with the downstream list.

The Tegra210 CVB tables were added in the first referenced fixes commit.
Since then, all Tegra210 SoCs have tried to scale to 1.9 GHz, when the
supported devkits are only supposed to scale to 1.5 or 1.7 GHZ.
Overclocking should not be the default state.

Fixes: 2b2dbc2f94 ("clk: tegra: dfll: add CVB tables for Tegra210")
Fixes: 579db6e5d9 ("arm64: tegra: Enable DFLL support on Jetson Nano")
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-11-14 17:17:33 +01:00
Aaron Kling ba97758a63 arm64: tegra: Add NVIDIA Jetson Nano 2GB Developer Kit support
This devkit is very similar to P3450, except it has less RAM, no display
port, and only 3 USB host ports. Derive from P3450 and disable the
hardware that is unavailable.

GPIO PA6 is used to control the HDMI power rail and needs to be on for
hotplug detect to work. This is mapped to the 3.3V USB hub on P3450.
That USB rail is not used here, so delete the regulator to avoid
conflicts.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-10-30 20:32:03 +01:00
Aaron Kling 700c48a438 arm64: tegra: Add Tegra186 pin controllers
Add the device tree nodes for the MAIN and AON pin controllers found on
the Tegra186 family of SoCs.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-10-30 20:31:11 +01:00
Aaron Kling ccec106924 dt-bindings: arm: tegra: Document Jetson Nano Devkits
Add compatibles for the Tegra210 Jetson Nano Developer Kits

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-10-30 20:29:47 +01:00
Aaron Kling 6f37469a93 memory: tegra210: Fix incorrect client ids
The original commit had typos for two of the memory client ids. Fix them
to reference the correct bindings.

Fixes: 3804cef4c5 ("memory: tegra210: Use bindings for client ids")
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Link: https://patch.msgid.link/20251021-t210-mem-clientid-fixup-v1-1-5094946faa31@gmail.com
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
2025-10-23 15:32:21 +02:00
Aaron Kling 85976d3774 cpufreq: tegra186: add OPP support and set bandwidth
Add support to use OPP table from DT in Tegra186 cpufreq driver.
Tegra SoC's receive the frequency lookup table (LUT) from BPMP-FW.
Cross check the OPP's present in DT against the LUT from BPMP-FW
and enable only those DT OPP's which are present in LUT also.

The OPP table in DT has CPU Frequency to bandwidth mapping where
the bandwidth value is per MC channel. DRAM bandwidth depends on the
number of MC channels which can vary as per the boot configuration.
This per channel bandwidth from OPP table will be later converted by
MC driver to final bandwidth value by multiplying with number of
channels before being handled in the EMC driver.

If OPP table is not present in DT, then use the LUT from BPMP-FW
directly as the CPU frequency table and not do the DRAM frequency
scaling which is same as the current behavior.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
[ Viresh: Fix _free() definitions ]
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
2025-10-23 12:10:11 +05:30
Aaron Kling ba60189291 cpufreq: tegra186: Initialize all cores to max frequencies
During initialization, the EDVD_COREx_VOLT_FREQ registers for some cores
are still at reset values and not reflecting the actual frequency. This
causes get calls to fail. Set all cores to their respective max
frequency during probe to initialize the registers to working values.

Suggested-by: Mikko Perttunen <mperttunen@nvidia.com>
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
2025-09-29 14:55:50 +05:30
Aaron Kling 0b1bb980fd cpufreq: tegra186: Set target frequency for all cpus in policy
The original commit set all cores in a cluster to a shared policy, but
did not update set_target to apply a frequency change to all cores for
the policy. This caused most cores to remain stuck at their boot
frequency.

Fixes: be4ae8c194 ("cpufreq: tegra186: Share policy per cluster")
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
2025-09-29 14:55:35 +05:30
Aaron Kling 6ca1701cec drm/nouveau: Support devfreq for Tegra
Using pmu counters for usage stats. This enables dynamic frequency
scaling on all of the currently supported Tegra gpus.

The register offsets are valid for gk20a, gm20b, gp10b, and gv11b. If
support is added for ga10b, this will need rearchitected.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
[fixed tab alignment in gk20a_devfreq_target()]
Signed-off-by: Lyude Paul <lyude@redhat.com>
Link: https://lore.kernel.org/r/20250906-gk20a-devfreq-v2-1-0217f53ee355@gmail.com
2025-09-15 14:18:08 -04:00
Aaron Kling d5603737e7 drm/nouveau: Support reclocking on gp10b
Starting with Tegra186, gpu clock handling is done by the bpmp and there
is little to be done by the kernel. The only thing necessary for
reclocking is to set the gpcclk to the desired rate and the bpmp handles
the rest. The pstate list is based on the downstream driver generates.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
[added newline before gp10b_clk macro declaration for checkpatch error]
Signed-off-by: Lyude Paul <lyude@redhat.com>
Link: https://lore.kernel.org/r/20250823-gp10b-reclock-v2-1-90a1974a54e3@gmail.com
2025-09-15 14:15:55 -04:00
Aaron Kling 3804cef4c5 memory: tegra210: Use bindings for client ids
Since the related binding is being added, use that for the client ids
instead of hardcoded magic numbers.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
2025-09-10 11:40:44 +02:00