Commit Graph
1311364 Commits
Author SHA1 Message Date
Aaron Kling 06ba67e49f Revert "fbdev: Make registered_fb[] private to fbmem.c"
This reverts commit 5727dcfd84.

Change-Id: I724a29c438f62d504a386795e59685e5b6c1c3a1
2025-11-11 15:15:06 +00:00
David Ng d842dcc46b arm64: Add 32-bit sigcontext definition to uapi signcontext.h
The arm64 uapi sigcontext.h can be included by 32-bit userspace
modules.  Since arm and arm64 sigcontext definition are not
compatible, add arm sigcontext definition to arm64 sigcontext.h.

Signed-off-by: David Ng <dave@codeaurora.org>
Signed-off-by: Divya Sharma <c_shard@codeaurora.org>
Signed-off-by: Anh Nguyen <anguyen@codeaurora.org>
Change-Id: Iaed58045fd345e4ca66e8a6981c6b4f80c4bdfca
2025-11-11 15:15:06 +00:00
Aaron Kling 39ed1555a2 arm64: Disable some cpu feature sanity checks
On t186, these differ between denver and a57

Change-Id: I65b1515ef9f5d42b0da1dfa605e51536eb902ca5
2025-11-11 15:15:06 +00:00
Aaron Kling 97f611dcd2 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>
2025-11-11 15:15:06 +00:00
Aaron Kling 361e8f46a4 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>
2025-11-11 15:15:06 +00:00
Aaron Kling 8c79250f5e 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.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2025-11-11 15:15:06 +00:00
Svyatoslav Ryhel eb6a966d67 ARM: tegra: add device-tree for Xiaomi Mi Pad (A0101)
The Mi Pad is a tablet computer based on Nvidia Tegra K1 SoC which
originally ran the Android operating system. The Mi Pad has a 7.9" IPS
display with 1536 x 2048 (324 ppi) resolution. 2 GB of RAM and 16/64 GB of
internal memory that can be supplemented with a microSDXC card giving up
to 128 GB of additional storage.

Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
2025-11-11 15:15:06 +00:00
Svyatoslav Ryhel afe22b10e3 drm/panel: Add Sharp LQ079L1SX01 support
This panel requires dual-channel mode. The device accepts video-mode data
on 8 lanes and will therefore need a dual-channel DSI controller. The two
interfaces that make up this device need to be instantiated in the
controllers that gang up to provide the dual-channel DSI host.

Change-Id: I5ca26fe0cdcdf40620b8a9e7801962c66b0be2b5
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
2025-11-11 15:15:06 +00:00
Aaron Kling bc31a9092d 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 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 table makes different icc path for
each cluster and helps to make per cluster BW requests.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2025-11-11 15:15:06 +00:00
Aaron Kling 99260f415c 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>
2025-11-11 15:15:06 +00:00
Aaron Kling 2825a74d67 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 is already a provider.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2025-11-11 15:15:06 +00:00
Aaron Kling da694360e3 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 is already a provider.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2025-11-11 15:15:06 +00:00
Aaron Kling 1141b0ace0 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>
2025-11-11 15:15:05 +00:00
Aaron Kling b6c886e75e 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
directy as the CPU frequency table and not do the DRAM frequency
scaling which is same as the current behavior.

Change-Id: I11a37b2bd7d6b7a7ee9d270ecd0430430a407d65
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2025-11-11 15:15:05 +00:00
Aaron Kling 8b4602a837 dt-bindings: tegra: Add ICC IDs for dummy memory clients for Tegra194
Add ICC IDs for dummy software clients representing CCPLEX clusters.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2025-11-11 15:15:05 +00:00
Aaron Kling 13da52bbd1 dt-bindings: tegra: Add ICC IDs for dummy memory clients for Tegra186
Add ICC IDs for dummy software clients representing CCPLEX clusters.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2025-11-11 15:15:05 +00:00
Aaron Kling 25d30a45af arm64: tegra: Add OPP tables on Tegra210
This adds OPP tables for actmon and emc, enabling dynamic frequency
scaling for ram.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2025-11-11 15:15:05 +00:00
Aaron Kling 9401bac24d arm64: tegra: Add interconnect properties to Tegra210 device-tree
Add interconnect properties to the Memory Controller, External Memory
Controller and the Display Controller nodes in order to describe hardware
interconnection.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2025-11-11 15:15:05 +00:00
Aaron Kling 8daf4ee46f arm64: tegra: tegra210: Add actmon
This enables the action monitor to facilitate dynamic frequency scaling.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2025-11-11 15:15:05 +00:00
Aaron Kling 343e60550d 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 sku's. As the emc driver uses the soc speedo to
populate the emc opp tables, add a new speedo id to uniquely identify
this.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2025-11-11 15:15:05 +00:00
Aaron Kling 091bffaf7e 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>
2025-11-11 15:15:05 +00:00
Aaron Kling 50699fa40a 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>
2025-11-11 15:15:05 +00:00
Aaron Kling e95129a161 dt-bindings: memory: tegra210: Add memory client IDs
Each memory client has unique hardware ID, add these IDs.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2025-11-11 15:15:05 +00:00
Aaron Kling b75fae54c9 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>
2025-11-11 15:15:05 +00:00
Aaron Kling 16e7bf68b1 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>
2025-11-11 15:15:05 +00:00
Aaron Kling 06ba4c8e65 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>
2025-11-11 15:15:05 +00:00
Ard Biesheuvel 21164c1535 efistub: Lower default log level
Change-Id: I4d4f6e5a93669ca2a99a79f5f760ced2f000a3c2
2025-11-11 15:15:04 +00:00
Aaron Kling cc70760341 WIP: drm/tegra: Add devfreq support to media engines
TODO: Better limit frequency count

Change-Id: If86527dc4985d9afd9d510430d1f3c137ca7f220
2025-11-11 15:15:04 +00:00
Aaron Kling 1ef6885568 drm/tegra: Support Tegra186+ in NVJPG
Change-Id: I7bf2c200d4ad9690c4f21a004ecc6dea8065f93e
2025-11-11 15:15:04 +00:00
Aaron Kling b66348d05a 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
2025-11-11 15:15:04 +00:00
Aaron Kling 77a33fa2f7 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>
2025-11-11 15:15:04 +00:00
Diogo Ivo 5de5a7b521 arm64: tegra: Add NVJPG node for Tegra210 platforms
The Tegra X1 chip contains a NVJPG accelerator capable of
encoding/decoding JPEG files in hardware. Complete its DT node
and enable it.

Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
Signed-off-by: Diogo Ivo <diogo.ivo@tecnico.ulisboa.pt>
2025-11-11 15:15:04 +00:00
Diogo Ivo bd9ce31a9a arm64: tegra: Add Tegra210 NVJPG power-domain node
Add the NVJPG power-domain node in order to support the NVJPG
accelerator in Tegra210 platforms.

Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
Signed-off-by: Diogo Ivo <diogo.ivo@tecnico.ulisboa.pt>
2025-11-11 15:15:04 +00:00
Diogo Ivo 17c9b0eac7 drm/tegra: Add NVJPG driver
Add support for booting and using NVJPG on Tegra210 to the Host1x
and TegraDRM drivers. This driver only supports the new TegraDRM uAPI.

Acked-by: Mikko Perttunen <mperttunen@nvidia.com>
Signed-off-by: Diogo Ivo <diogo.ivo@tecnico.ulisboa.pt>
2025-11-11 15:15:04 +00:00
Mikko Perttunen 796fc53eb5 gpu: host1x: Add MLOCK recovery for rest of engines
Add class IDs / MLOCKs for MLOCK recovery for rest of engines
present on Tegra234.

Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240425050238.2943404-4-cyndis@kapsi.fi
2025-11-11 15:15:04 +00:00
Mikko Perttunen 9490ce4c50 gpu: host1x: Complete stream ID entry tables
These tables contain fixed values to program the host1x hardware
with, so fill in the missing entries.

Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240425050238.2943404-3-cyndis@kapsi.fi
2025-11-11 15:15:04 +00:00
Aaron Kling 18f020320f 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 is very basic, intended for checking initial Tegra210B01 support.
More complete support for the device will be added later.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2025-11-11 15:15:04 +00:00
Aaron Klingandtmakin 52dedf079c 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-authored-by: Thomas Makin <halorocker89@gmail.com>
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2025-11-11 15:15:04 +00:00
Aaron Kling e8eeb3dd61 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>
2025-11-11 15:15:04 +00:00
tmakin 99c38e06b6 memory: tegra186-emc: support Tegra210B01
Tegra210B01 uses Tegra186 style emc management, as in it is
offloaded to BPMP. This driver already implements this, so no
reason to shoehorn in elsewhere.

Signed-off-by: Thomas Makin <halorocker89@gmail.com>
2025-11-11 15:15:03 +00:00
Aaron Klingandtmakin d5fb30731c 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>
Change-Id: Iadee08494eff823155e228063bee8f7a280cbcef
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2025-11-11 15:15:03 +00:00
Aaron Kling 07ed2fb23b thermal: tegra: Add Tegra210B01 Support
Add Tegra210B01 SOC_THERM configuration

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2025-11-11 15:15:03 +00:00
Aaron Kling 47ce25d2c5 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>
2025-11-11 15:15:03 +00:00
Aaron Kling dff5ed4c9a usb: xhci: tegra: Add Tegra210B01 support
This uses a different firmware, but is otherwise compatible with
Tegra210.
2025-11-11 15:15:03 +00:00
Aaron Kling cce56005b7 phy: tegra: xusb: Add Tegra201B01 Support
It has slightly different lanes compared to the original Tegra210.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2025-11-11 15:15:03 +00:00
azkaliandtmakin 16de65709b soc/tegra: pmc: Add Tegra210B01 support
Co-authored-by: Thomas Makin <halorocker89@gmail.com>
Signed-off-by: Azkali Manad <a.ffcc7@gmail.com>
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2025-11-11 15:15:03 +00:00
Aaron Kling fab2cba2df 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>
2025-11-11 15:15:03 +00:00
Venkat Reddy Talla ec0d70298b regulator: max77812: add max77812 regulator driver
Adding regulator driver for MAX77812 device which is
used in t210b01 based platforms for powering cpu,gpu
and dram io

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
2025-11-11 15:15:03 +00:00
Aaron Kling 412e4e172e power: supply: bq24190_charger: Support usb role switching
Change-Id: Ia1e650f15ae55bb0972612b378d093a20d8a8a98
2025-11-11 15:15:03 +00:00
Aaron Kling e24dd8dceb power: supply: bq24190_charger: Export current regulator
Change-Id: I3958896da66740d503aec5ed93e14a7d743a43ac
2025-11-11 15:15:03 +00:00