Commit graph

400 commits

Author SHA1 Message Date
Linus Torvalds
bf4afc53b7 Convert 'alloc_obj' family to use the new default GFP_KERNEL argument
This was done entirely with mindless brute force, using

    git grep -l '\<k[vmz]*alloc_objs*(.*, GFP_KERNEL)' |
        xargs sed -i 's/\(alloc_objs*(.*\), GFP_KERNEL)/\1)/'

to convert the new alloc_obj() users that had a simple GFP_KERNEL
argument to just drop that argument.

Note that due to the extreme simplicity of the scripting, any slightly
more complex cases spread over multiple lines would not be triggered:
they definitely exist, but this covers the vast bulk of the cases, and
the resulting diff is also then easier to check automatically.

For the same reason the 'flex' versions will be done as a separate
conversion.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2026-02-21 17:09:51 -08:00
Kees Cook
69050f8d6d treewide: Replace kmalloc with kmalloc_obj for non-scalar types
This is the result of running the Coccinelle script from
scripts/coccinelle/api/kmalloc_objs.cocci. The script is designed to
avoid scalar types (which need careful case-by-case checking), and
instead replace kmalloc-family calls that allocate struct or union
object instances:

Single allocations:	kmalloc(sizeof(TYPE), ...)
are replaced with:	kmalloc_obj(TYPE, ...)

Array allocations:	kmalloc_array(COUNT, sizeof(TYPE), ...)
are replaced with:	kmalloc_objs(TYPE, COUNT, ...)

Flex array allocations:	kmalloc(struct_size(PTR, FAM, COUNT), ...)
are replaced with:	kmalloc_flex(*PTR, FAM, COUNT, ...)

(where TYPE may also be *VAR)

The resulting allocations no longer return "void *", instead returning
"TYPE *".

Signed-off-by: Kees Cook <kees@kernel.org>
2026-02-21 01:02:28 -08:00
Thierry Reding
70f752ebb0 soc/tegra: pmc: Add PMC contextual functions
Add implementations that take as argument a struct tegra_pmc * for most
public APIs, as well as a function to obtain the PMC for any given
device. This will allow transitioning away users from relying on a
global variable storing the PMC context.

Signed-off-by: Thierry Reding <treding@nvidia.com>
2026-01-18 08:48:30 +01:00
Thierry Reding
e1fd5ad68a soc/tegra: pmc: Do not rely on global variable
The reset action for changing the suspend mode back on failure can take
a context-specific data argument that can be set to the PMC context in
order to avoid relying on a global variable.

Signed-off-by: Thierry Reding <treding@nvidia.com>
2026-01-18 08:48:30 +01:00
Thierry Reding
2e944c51d6 soc/tegra: pmc: Use driver-private data
Instead of relying on a global variable for the PMC context, use the
driver-private data for sysfs attributes.

Signed-off-by: Thierry Reding <treding@nvidia.com>
2026-01-18 08:48:30 +01:00
Thierry Reding
bb946b0e11 soc/tegra: pmc: Use PMC context embedded in powergates
The powergates exposed by the PMC have a pointer to the PMC context
embedded. Use that embedded reference instead of relying on a global
variable.

For the core power domain a new structure needs to be introduced to wrap
the generic PM domain and store the PMC context.

Signed-off-by: Thierry Reding <treding@nvidia.com>
2026-01-18 08:48:29 +01:00
Thierry Reding
b2a3e82000 soc/tegra: pmc: Pass PMC context as debugfs data
Each debugfs file can have private data associated with it. Use this to
pass the PMC context instead of relying on a global variable.

Signed-off-by: Thierry Reding <treding@nvidia.com>
2026-01-18 08:48:29 +01:00
Thierry Reding
a9f822b3ff soc/tegra: pmc: Pass PMC context via sys-off callback data
To avoid relying on global variables, use the sys-off callback data to
store a reference to the PMC context structure.

Signed-off-by: Thierry Reding <treding@nvidia.com>
2026-01-18 08:48:29 +01:00
Thierry Reding
48b7f802fb soc/tegra: pmc: Embed reboot notifier in PMC context
Instead of relying on a global variable to track the PMC context, embed
the reboot notifier into the PMC context so that the latter can be
resolved using container_of().

Signed-off-by: Thierry Reding <treding@nvidia.com>
2026-01-18 08:48:29 +01:00
Thierry Reding
0732dffeb0 soc/tegra: pmc: Store PMC context in clocks
Clocks exposed by the PMC need to reference the PMC context for register
programming. Store a reference to the context in the data structure for
each clock to avoid the need for a global variable.

Signed-off-by: Thierry Reding <treding@nvidia.com>
2026-01-18 08:48:29 +01:00
Thierry Reding
1c672945ce soc/tegra: pmc: Pass struct tegra_pmc to tegra_powergate_state()
By using the generic read_poll_timeout() instead of readx_poll_timeout()
we can pass additional parameters, which allows us to pass an additional
PMC context structure and avoid relying on a global variable for this.

Signed-off-by: Thierry Reding <treding@nvidia.com>
2026-01-18 08:48:29 +01:00
Thierry Reding
f59dbd0c93 soc/tegra: pmc: Use contextual data instead of global variable
Pass the driver-specific data via the syscore struct and use it in the
syscore ops.

Signed-off-by: Thierry Reding <treding@nvidia.com>
2026-01-18 08:48:28 +01:00
Prathamesh Shete
e6d96073af soc/tegra: pmc: Fix unsafe generic_handle_irq() call
Currently, when resuming from system suspend on Tegra platforms,
the following warning is observed:

WARNING: CPU: 0 PID: 14459 at kernel/irq/irqdesc.c:666
Call trace:
 handle_irq_desc+0x20/0x58 (P)
 tegra186_pmc_wake_syscore_resume+0xe4/0x15c
 syscore_resume+0x3c/0xb8
 suspend_devices_and_enter+0x510/0x540
 pm_suspend+0x16c/0x1d8

The warning occurs because generic_handle_irq() is being called from
a non-interrupt context which is considered as unsafe.

Fix this warning by deferring generic_handle_irq() call to an IRQ work
which gets executed in hard IRQ context where generic_handle_irq()
can be called safely.

When PREEMPT_RT kernels are used, regular IRQ work (initialized with
init_irq_work) is deferred to run in per-CPU kthreads in preemptible
context rather than hard IRQ context. Hence, use the IRQ_WORK_INIT_HARD
variant so that with PREEMPT_RT kernels, the IRQ work is processed in
hardirq context instead of being deferred to a thread which is required
for calling generic_handle_irq().

On non-PREEMPT_RT kernels, both init_irq_work() and IRQ_WORK_INIT_HARD()
execute in IRQ context, so this change has no functional impact for
standard kernel configurations.

Signed-off-by: Petlozu Pravareshwar <petlozup@nvidia.com>
Signed-off-by: Prathamesh Shete <pshete@nvidia.com>
Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Tested-by: Jon Hunter <jonathanh@nvidia.com>
[treding@nvidia.com: miscellaneous cleanups]
Signed-off-by: Thierry Reding <treding@nvidia.com>
2026-01-18 08:48:21 +01:00
Linus Torvalds
208eed95fc soc: driver updates for 6.19
This is the first half of the driver changes:
 
  - A treewide interface change to the "syscore" operations for
    power management, as a preparation for future Tegra specific
    changes.
 
  - Reset controller updates with added drivers for LAN969x, eic770
    and RZ/G3S SoCs.
 
  - Protection of system controller registers on Renesas and Google SoCs,
    to prevent trivially triggering a system crash from e.g. debugfs
    access.
 
  - soc_device identification updates on Nvidia, Exynos and Mediatek
 
  - debugfs support in the ST STM32 firewall driver
 
  - Minor updates for SoC drivers on AMD/Xilinx, Renesas,  Allwinner, TI
 
  - Cleanups for memory controller support on Nvidia and Renesas
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmky/8gACgkQmmx57+YA
 GNlqohAApPTLM6Q4gf1cIcsTVaP0uxx9CBgupCGuT5ORrOMKBghVWjTOTSxeEAab
 UQF465QwYUUu602GH34UmRaY9CKW2bMIsfmkgmxNB4Y4Qd7yCgQNJ/h/TnN0rBH+
 qTeEsRH/hax4miSNsh0oOZfVkZkg+23VF02d1VL0CcaX7y4oT45RPBQugrNx/gNS
 fHfVwgIq8vJ8WyrmM1h2nv1i1vgSzEy50B3kY674BBw83FcJTafNLvD7N5DSgD1H
 /I/2xeyEpb+oL1VfeHcXZaX/jf04O+cmvSzBi+MOH1tI3MpdxJib1vEYBdggoOWN
 K/FFGgsOY+DNmJPpSnPTTu8UpzksS8SxGBP7M9Q8roKZwA2c9wLotxySvjki5yv8
 2zvabRdzbrSaoYwsH9QnZdQ2hVkJ9W8MESu8PevD3yMNuFUzledPDWW0N1SbGm78
 0ZdB6NPdaBZYHMNMRdFhN8P275/Mx5e0XWN9oYMQqjPooH7YkyT7hJWz6ao2PCJP
 8mDmnW1RzL+LWf7mJ25ZEtS+YjmKA/PVmogRrGurKCadvdxXqCF09KNljICHhmmu
 t0KB4dqw02OXLPvBk21qCi0zL56w1JDgqtS8suFvDYo9sCceeAbAcmpyoUOFj2N+
 Upn976tb4iqFrr9mFswpmCJWPpqJkU+A+KnKsIRPU7N4kSrP35I=
 =HvlN
 -----END PGP SIGNATURE-----

Merge tag 'soc-drivers-6.19' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc

Pull SoC driver updates from Arnd Bergmann:
 "This is the first half of the driver changes:

   - A treewide interface change to the "syscore" operations for power
     management, as a preparation for future Tegra specific changes

   - Reset controller updates with added drivers for LAN969x, eic770 and
     RZ/G3S SoCs

   - Protection of system controller registers on Renesas and Google
     SoCs, to prevent trivially triggering a system crash from e.g.
     debugfs access

   - soc_device identification updates on Nvidia, Exynos and Mediatek

   - debugfs support in the ST STM32 firewall driver

   - Minor updates for SoC drivers on AMD/Xilinx, Renesas, Allwinner, TI

   - Cleanups for memory controller support on Nvidia and Renesas"

* tag 'soc-drivers-6.19' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (114 commits)
  memory: tegra186-emc: Fix missing put_bpmp
  Documentation: reset: Remove reset_controller_add_lookup()
  reset: fix BIT macro reference
  reset: rzg2l-usbphy-ctrl: Fix a NULL vs IS_ERR() bug in probe
  reset: th1520: Support reset controllers in more subsystems
  reset: th1520: Prepare for supporting multiple controllers
  dt-bindings: reset: thead,th1520-reset: Add controllers for more subsys
  dt-bindings: reset: thead,th1520-reset: Remove non-VO-subsystem resets
  reset: remove legacy reset lookup code
  clk: davinci: psc: drop unused reset lookup
  reset: rzg2l-usbphy-ctrl: Add support for RZ/G3S SoC
  reset: rzg2l-usbphy-ctrl: Add support for USB PWRRDY
  dt-bindings: reset: renesas,rzg2l-usbphy-ctrl: Document RZ/G3S support
  reset: eswin: Add eic7700 reset driver
  dt-bindings: reset: eswin: Documentation for eic7700 SoC
  reset: sparx5: add LAN969x support
  dt-bindings: reset: microchip: Add LAN969x support
  soc: rockchip: grf: Add select correct PWM implementation on RK3368
  soc/tegra: pmc: Add USB wake events for Tegra234
  amba: tegra-ahb: Fix device leak on SMMU enable
  ...
2025-12-05 17:29:04 -08:00
Krzysztof Kozlowski
d08989276a soc: tegra: Simplify with of_machine_device_match()
Replace open-coded getting root OF node and matching against it with
new of_machine_device_match() helper.

Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Acked-by: Thierry Reding <treding@nvidia.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://patch.msgid.link/20251112-b4-of-match-matchine-data-v2-11-d46b72003fd6@linaro.org
Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
2025-11-26 19:43:12 -06:00
Arnd Bergmann
aee7ea4681 soc/tegra: Changes for v6.19-rc1
A couple of small fixes across the board: ACPI support on FUSE no longer
 exposes duplicate SoC information, speedo IDs for Tegra210 are updated,
 some comments see typo fixes or kerneldoc additions. Finally, support
 for USB wake events is added on Tegra234, which allow these systems to
 resume from suspend on USB activity.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEiOrDCAFJzPfAjcif3SOs138+s6EFAmkYO7YACgkQ3SOs138+
 s6GjLhAAtZYYBEib28eSySwVdXp7EJj4HZadp0c54h0Q7UUOUkj6Wcvly7H9Tds6
 qaIc+LpakgDbIJXfYS1uEe1L69QqR0BhUrLPxQFxJB/QDJOsqt7LGrCAV9ylQWSM
 K6hD9/+vFpri4hPajM51kuyuZO7a5Df5keooq1/jQyVJ1I6N19m2NR1IygrO/wEt
 gY271o64eFL0gsUX4rjB+N9DrWHVON8f8O9NIEvdKYF5Zkg5/PY+y6KKkZhpf38H
 0J4yo8+EQObObx9RVvcy3wJ9Xq49P+aWMxXeP64VlcRhyXiiTGnIIplAoYvhOzNv
 zqLF7R4YhmV+DLIEgw4MAnVVR59lRZKcNaLbd0Uq9uaeKazvg5hUZdOAU92Bxp0N
 nRNbkeXekE0KSMTQtAd3Chu8Qukbjs+KtT9EUJhtPOLOp7yB7M1IpfGMbQ4bB8+0
 mHmzA2atEcC1e0l7dhhfwyjG5+BnV8wcVvSOSmO+uRyKbuSXM1XiRPBXXfO3dAfY
 wPDqGMhUIonPRt9mmCYVWruBRGC+dwcdzIFURsHFFNjBdzFD4ksTnBBsaDWr0RxH
 Zy5AYssL/DB7ivjzj7OMotKkHS/fnY4CV4E1b/67ecCeLHhnAL2ljE+a7YE1EDuO
 fZKDySQ/pYTAWtT5EV1uauDScOHC6icV+oton4zoq5bkCh3wdew=
 =qeBh
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmklgCIACgkQmmx57+YA
 GNmvEQ//ae9ERAzSzw4iW+HIdYKy3rCZvE6uayruQilYRB9c4PbpcLa3L9c9yj1R
 BFskUE9SBTBOtH+fRteS1Y/DugzC/8AiZ0TnwZ7b/2ynsTOCy/+5WlFYMUGGOauP
 qCrwRwbxVDN0OQD8avfqgAfiahvRz7mfDAmJ4jCqNwwTwJqsOl820WSZlOgUl3cX
 F3wGBKDc2ggcNNYbFarJQRLGV8yPF1o++w4JqUbPhz7wThYp0q12l4uTFm766GpM
 O3JhH8bqeVRrmU0oyOQjXQNFJ/36egcR3yIvrLf97XMAkDPNXuW6+zRLfDF1jZE/
 A6Wr2gHBya2pUxayGYNqitcCYDBUxjG3NluHYDGWBmbh7TGXO8MPWP2Qyw3hDzxi
 Jcv6ObNt3+MVZzQIn5xR+8lxIWCHb51CRywMbNuQGcpu3/+gFBuP2S3kWOI4UhrL
 miMqkKi2OuUi1JoRKxkvC3mKDFmM8Oq2qVxidirAXKfwVj7Uksd9xpRX9reRa8Z0
 SaEQKr+RwWXKTumct8aVaPVtXVLhDaYiNATypyqR3YQ0CI1uRAlAdvMZRX6QLTn0
 lncBmN79svBtawBhZbSZtJHdqVtdKPWjgTiV8UW5CpNUevSNbMwVN3Q5DVnNjzD9
 xV135iOl8GfptFFS4gqO2Loca1tClPDv8qHIXG8KPOE0MCppr9w=
 =Eh4e
 -----END PGP SIGNATURE-----

Merge tag 'tegra-for-6.19-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into soc/drivers

soc/tegra: Changes for v6.19-rc1

A couple of small fixes across the board: ACPI support on FUSE no longer
exposes duplicate SoC information, speedo IDs for Tegra210 are updated,
some comments see typo fixes or kerneldoc additions. Finally, support
for USB wake events is added on Tegra234, which allow these systems to
resume from suspend on USB activity.

* tag 'tegra-for-6.19-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
  soc/tegra: pmc: Add USB wake events for Tegra234
  soc/tegra: pmc: Document tegra_pmc.syscore field
  soc/tegra: pmc: Don't fail if "aotag" is not present
  soc/tegra: fuse: speedo-tegra210: Add SoC speedo 2
  soc/tegra: fuse: speedo-tegra210: Update speedo IDs
  soc/tegra: Resolve a spelling error in the tegra194-cbb.c
  soc/tegra: fuse: Do not register SoC device on ACPI boot

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2025-11-25 10:49:10 +01:00
Haotien Hsu
dd03d34d6d soc/tegra: pmc: Add USB wake events for Tegra234
Add USB wake events for Tegra234 so that system can be woken up from
suspend when USB devices hot-plug/unplug event is detected.

Signed-off-by: Haotien Hsu <haotienh@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-11-14 19:29:50 +01:00
Thierry Reding
aaca2e9933 soc/tegra: pmc: Document tegra_pmc.syscore field
This eliminates a warning from the documentation build targets.

Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-11-14 17:42:08 +01:00
Prathamesh Shete
1c458bbe4b soc/tegra: pmc: Don't fail if "aotag" is not present
The "aotog" is an optional aperture, so if that aperture is not defined
for a given device, then initialise the 'aotag' pointer to NULL instead
of returning an error. Note that the PMC driver will not use 'aotag'
pointer if initialised to NULL.

Co-developed-by: Shardar Mohammed <smohammed@nvidia.com>
Signed-off-by: Shardar Mohammed <smohammed@nvidia.com>
Signed-off-by: Prathamesh Shete <pshete@nvidia.com>
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-11-14 17:35:36 +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
Bruno Sobreira França
e13c1f34aa soc/tegra: Resolve a spelling error in the tegra194-cbb.c
Fix a typo spotted during code reading.

Signed-off-by: Bruno Sobreira França <brunofrancadevsec@gmail.com>
Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Acked-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
Reviewed-by: Herve Codina <herve.codina@bootlin.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-11-14 16:16:20 +01:00
Kartik Rajput
c87f820bc4 soc/tegra: fuse: Do not register SoC device on ACPI boot
On Tegra platforms using ACPI, the SMCCC driver already registers the
SoC device. This makes the registration performed by the Tegra fuse
driver redundant.

When booted via ACPI, skip registering the SoC device and suppress
printing SKU information from the Tegra fuse driver, as this information
is already provided by the SMCCC driver.

Fixes: 972167c690 ("soc/tegra: fuse: Add ACPI support for Tegra194 and Tegra234")
Cc: stable@vger.kernel.org
Signed-off-by: Kartik Rajput <kkartik@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-11-14 16:11:19 +01:00
Thierry Reding
a97fbc3ee3 syscore: Pass context data to callbacks
Several drivers can benefit from registering per-instance data along
with the syscore operations. To achieve this, move the modifiable fields
out of the syscore_ops structure and into a separate struct syscore that
can be registered with the framework. Add a void * driver data field for
drivers to store contextual data that will be passed to the syscore ops.

Acked-by: Rafael J. Wysocki (Intel) <rafael@kernel.org>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-11-14 10:01:52 +01:00
Linus Torvalds
38057e3236 soc: driver updates for 6.18
Lots of platform specific updates for Qualcomm SoCs, including a
 new TEE subsystem driver for the Qualcomm QTEE firmware interface.
 
 Added support for the Apple A11 SoC in drivers that are shared with the
 M1/M2 series, among more updates for those.
 
 Smaller platform specific driver updates for Renesas, ASpeed, Broadcom,
 Nvidia, Mediatek, Amlogic, TI, Allwinner, and Freescale SoCs.
 
 Driver updates in the cache controller, memory controller and reset
 controller subsystems.
 
 SCMI firmware updates to add more features and improve robustness.
 This includes support for having multiple SCMI providers in a single
 system.
 
 TEE subsystem support for protected DMA-bufs, allowing hardware to
 access memory areas that managed by the kernel but remain inaccessible
 from the CPU in EL1/EL0.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmjdpaoACgkQmmx57+YA
 GNnBXA//QgmFXYGG7QfB825mt0orKZxpfpLcwvqO7hkWgbXtl7Gokw2lGYN6bwLu
 zvY4MQ/bVoZ8R5uTVmuaSHBRsttSen8mBf+V0vzsBM/DRRVxvIN/7TESrY3J7Dtx
 J5syHKIBiUtdkDebWWC6jIElczIBItsd03Ln4Xjjt8Vas5YOO4n44zFrPo+FwlN/
 I6D2K86AiNZTtUCDMtB6VfJ6YtjYBWcWnJm7FXw/vE8FAXdZUnNWnZ8hbdQ5GaME
 JZGepUhONaOMUoGNZNaDGw511RdPhYzPjj9rCsIx2qdsRO9/4tJ8ccpW2aUMYh8c
 nA6w8Hj8jCwco6aYYrDUDV9uRtURDrmyJgTJBNLU05e/L+MuJ3IZNlzHFWlsxIAE
 vhyTdmg/P04ClQyixCl67IH/66F/0smX9C+1761LrD7GTdfR92KPl5W6q+DPBg/x
 yf+s2p3+f7ItV5XobKOrbf3w0xazeDb5o/EK8BufMx9vSe9bpzJ0gOf0CmNXEpyZ
 owAhbh6wXX1YwPcyA9LHv6gthyJwc/3fLu49ggMZP2rU01ccKOYn9H0cr7C8NVmy
 wEpJR0lp5aSw2oRkPkxB6sFmUohcpr8/OXGGJuvCXkYsUY1BEup4lewvbIWK4WoE
 c84kbbaHsjgFhe3IRlQw3G4KLYQT3jRtF7fH+gPx556BcI6K+lg=
 =mcZR
 -----END PGP SIGNATURE-----

Merge tag 'soc-drivers-6.18' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc

Pull SoC driver updates from Arnd Bergmann:
 "Lots of platform specific updates for Qualcomm SoCs, including a new
  TEE subsystem driver for the Qualcomm QTEE firmware interface.

  Added support for the Apple A11 SoC in drivers that are shared with
  the M1/M2 series, among more updates for those.

  Smaller platform specific driver updates for Renesas, ASpeed,
  Broadcom, Nvidia, Mediatek, Amlogic, TI, Allwinner, and Freescale
  SoCs.

  Driver updates in the cache controller, memory controller and reset
  controller subsystems.

  SCMI firmware updates to add more features and improve robustness.
  This includes support for having multiple SCMI providers in a single
  system.

  TEE subsystem support for protected DMA-bufs, allowing hardware to
  access memory areas that managed by the kernel but remain inaccessible
  from the CPU in EL1/EL0"

* tag 'soc-drivers-6.18' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (139 commits)
  soc/fsl/qbman: Use for_each_online_cpu() instead of for_each_cpu()
  soc: fsl: qe: Drop legacy-of-mm-gpiochip.h header from GPIO driver
  soc: fsl: qe: Change GPIO driver to a proper platform driver
  tee: fix register_shm_helper()
  pmdomain: apple: Add "apple,t8103-pmgr-pwrstate"
  dt-bindings: spmi: Add Apple A11 and T2 compatible
  serial: qcom-geni: Load UART qup Firmware from linux side
  spi: geni-qcom: Load spi qup Firmware from linux side
  i2c: qcom-geni: Load i2c qup Firmware from linux side
  soc: qcom: geni-se: Add support to load QUP SE Firmware via Linux subsystem
  soc: qcom: geni-se: Cleanup register defines and update copyright
  dt-bindings: qcom: se-common: Add QUP Peripheral-specific properties for I2C, SPI, and SERIAL bus
  Documentation: tee: Add Qualcomm TEE driver
  tee: qcom: enable TEE_IOC_SHM_ALLOC ioctl
  tee: qcom: add primordial object
  tee: add Qualcomm TEE driver
  tee: increase TEE_MAX_ARG_SIZE to 4096
  tee: add TEE_IOCTL_PARAM_ATTR_TYPE_OBJREF
  tee: add TEE_IOCTL_PARAM_ATTR_TYPE_UBUF
  tee: add close_context to TEE driver operation
  ...
2025-10-01 17:32:51 -07:00
Linus Torvalds
5fb0249319 Pin control changes for the v6.18 kernel cycle:
Core changes:
 
 - Allow pins to be identified/marked as GPIO mode with
   a special callback. The pin controller core is now
   "aware" if a pin is in GPIO mode if the callback is
   implemented in the driver, and can thus be marked
   as "strict", i.e. disallowing simultaneous use of a
   line as GPIO and another function such as I2C. This
   is enabled in the Qualcomm TLMM driver and also
   implemeted from day 1 in the new Broadcom STB driver.
 
 - Rename the pin config option PIN_CONFIG_OUTPUT to
   PIN_CONFIG_LEVEL to better describe what the config is
   doing, as well as making it more intuitive what shall
   be returned when reading this property.
 
 New drivers:
 
 - Qualcomm SDM660 LPASS LPI TLMM pin controller subdriver.
 
 - Qualcomm Glymur family pin controller driver.
 
 - Broadcom STB family pin controller driver.
 
 - Tegra186 pin controller driver.
 
 - AAEON UP pin controller support. This is some special
   pin controller that works as an external advanced line
   MUX and amplifier for signals from an Intel SoC.
   A cooperative effort with the GPIO maintainer was
   needed to reach a solution where we reuse code from
   the GPIO aggregator/forwarder driver.
 
 - Renesas RZ/T2H and RZ/N2H pin controller support.
 
 - Axis ARTPEC-8 subdriver for the Samsung pin controller
   driver.
 
 Improvements:
 
 - Output enable (OEN) support in the Renesas RZG2L driver.
 
 - Properly support bias pull up/down in the pinctrl-single
   driver.
 
 - Move over all GPIO portions using generic MMIO GPIO to
   the new generic GPIO chip management which has a nice and
   separate API.
 
 - Proper DT bindings for some older Broadcom SoCs.
 
 - External GPIO (EGPIO) support in the Qualcomm SM8250.
 
 Deleted code:
 
 - Dropped the now unused Samsung S3C24xx drivers.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEElDRnuGcz/wPCXQWMQRCzN7AZXXMFAmjcI6IACgkQQRCzN7AZ
 XXMFYxAApJr9Rlqh3WlOzvAa2kVrGev0m3S2I0SiQUAIy2TwfMBGBRjDTOQJ+db/
 ZazjsTyL+ObuCRmWJpoqlRThEB9oh5xgqN5OHCSIBQXqnjCzG9jnw+s50dGl5r77
 vX5RtS5OxPgqe2ay9DY9SA8Ix0G5Yxdq9eP2MfeX45zjAfGWGq6bJT+Llkpf5y8L
 a1k1EQmQbogw6DLLmpiSUA2qtFitGdB9rLkk/inYWZHq6g8qva4eoVdE+PhzG1ky
 DrkXaJF3+hC/fBBGk4yrzHfnLL7pqIzyhN3on5Xy9lMfytU8bxGESZck1BxaauHZ
 63w8kEfGOsOztbKQ9VLAzDg9Jd+t7fVMmQw5kXT53TEhB0hfX0SbiK2I8UAF3vkV
 dCe6AWD2Zzz5XlDJpl5vOOYr9lSmuVCZuaIdvgoyLk4BJSLau+24Rme9gqfulT92
 /z2mxCHO6CIzIgH4ILiyM90pIE4OCXp0II7SinZ34alO8ZoMyFHAT2Sqa736WdlQ
 PVfBRBIIJF02os3bcudXpwCD7Xn0ksE5UwVgdDSIk9MKdRI5ZGdbt0y9HUrnfTDk
 5hFH3rbm8Vdk65UHcgIiYTN9C9JlbPscNyQG0z4a1OUr2O4wurr0eFBn+kFpluRn
 ZQBQwjxtEqedsunb5W5Ny79srN6okddpzCIUSQDL20Uw69zy9L0=
 =DZy/
 -----END PGP SIGNATURE-----

Merge tag 'pinctrl-v6.18-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl

Pull pin control updates from Linus Walleij:
 "We have GPIO awareness in the pin control core and an interesting
  AAEON driver.

  Core changes:

   - Allow pins to be identified/marked as GPIO mode with a special
     callback.

     The pin controller core is now "aware" if a pin is in GPIO mode if
     the callback is implemented in the driver, and can thus be marked
     as "strict", i.e. disallowing simultaneous use of a line as GPIO
     and another function such as I2C.

     This is enabled in the Qualcomm TLMM driver and also implemeted
     from day 1 in the new Broadcom STB driver

   - Rename the pin config option PIN_CONFIG_OUTPUT to PIN_CONFIG_LEVEL
     to better describe what the config is doing, as well as making it
     more intuitive what shall be returned when reading this property

  New drivers:

   - Qualcomm SDM660 LPASS LPI TLMM pin controller subdriver

   - Qualcomm Glymur family pin controller driver

   - Broadcom STB family pin controller driver

   - Tegra186 pin controller driver

   - AAEON UP pin controller support.

     This is some special pin controller that works as an external
     advanced line MUX and amplifier for signals from an Intel SoC. A
     cooperative effort with the GPIO maintainer was needed to reach a
     solution where we reuse code from the GPIO aggregator/forwarder
     driver

   - Renesas RZ/T2H and RZ/N2H pin controller support

   - Axis ARTPEC-8 subdriver for the Samsung pin controller driver

  Improvements:

   - Output enable (OEN) support in the Renesas RZG2L driver

   - Properly support bias pull up/down in the pinctrl-single driver

   - Move over all GPIO portions using generic MMIO GPIO to the new
     generic GPIO chip management which has a nice and separate API

   - Proper DT bindings for some older Broadcom SoCs

   - External GPIO (EGPIO) support in the Qualcomm SM8250

  Deleted code:

   - Dropped the now unused Samsung S3C24xx drivers"

* tag 'pinctrl-v6.18-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: (75 commits)
  pinctrl: use more common syntax for compound literals
  pinctrl: Simplify printks with pOF format
  pinctrl: qcom: Add SDM660 LPASS LPI TLMM
  dt-bindings: pinctrl: qcom: Add SDM660 LPI pinctrl
  pinctrl: qcom: lpass-lpi: Add ability to use custom pin offsets
  pinctrl: qcom: Add glymur pinctrl driver
  dt-bindings: pinctrl: qcom: Add Glymur pinctrl
  pinctrl: qcom: sm8250: Add egpio support
  pinctrl: generic: rename PIN_CONFIG_OUTPUT to LEVEL
  pinctrl: keembay: fix double free in keembay_build_functions()
  pinctrl: spacemit: fix typo in PRI_TDI pin name
  pinctrl: eswin: Fix regulator error check and Kconfig dependency
  pinctrl: bcm: Add STB family pin controller driver
  dt-bindings: pinctrl: Add support for Broadcom STB pin controller
  pinctrl: qcom: make the pinmuxing strict
  pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions
  pinctrl: qcom: add infrastructure for marking pin functions as GPIOs
  pinctrl: allow to mark pin functions as requestable GPIOs
  pinctrl: qcom: use generic pin function helpers
  pinctrl: make struct pinfunction a pointer in struct function_desc
  ...
2025-10-01 13:14:48 -07:00
Arnd Bergmann
b7c0fe1654 soc/tegra: Changes for v6.18-rc1
NVMEM cells are added for Tegra114. These contain calibration data for
 sensors and USB.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEiOrDCAFJzPfAjcif3SOs138+s6EFAmjGXZwACgkQ3SOs138+
 s6FabA//a8Kvab6UPBtbg9wfAHvf+VS3RgtEpztmJEYlo4Tss0sOP8uc5+7Y7luy
 A5IRaBZuXmEn0OGG6LifLkGxoHG9DeSbPFMmz3lSvMnIBUQVoMgDTz+tzAmuwyPq
 16WixPvVfYTlLb8zNophAOllUU0x3jBKQx36SJ9bEk/rypwDGsPsUcK8czJ2SvM1
 3HkRaZ1rTyN9+dU2OUS8wxg29oLqn19vteikaEM3DTgqD8HgYjkPbGfPeBXAHBFS
 jbrQ84PSBnv1/vQWgrIBXyP3k97OvafYMd+9qRRhDpZUmntt/VA1l++gB6g15b6n
 FA+Ff0Zv2ginYMAWnc112aFkz0zSzJ6udtPaToWlQW2wUanrfkABu1QsMphSPaKS
 WzrgHrasJx6QMU7Mhlvg2m2veilwX5JIjWnjTGeSYS6WGDX4w+clwpAsTmcCH/8R
 8f1ZboHqlvTIiw7xT0cSEjXdGTXwPhce1jzvIZ0Nd94sCnFFEX4+fkN1EKAZFzvx
 nsABtcKO4lLXIbyGkMEbkBABQ/gQunDOFceoTWU7S92KlSbiVBdt5W0JgR8SoHgy
 Ijq2ve8K1hsUZYfLpAz8pN/I+tnoxWgvYl0TP4C0tjzIjebpIBkg32Xiz5eEsA5f
 Tk3uXzt5TqNXVI+RGcfCcPCAWh/Ab5pbOsdjk4j5cVAYsCstaR4=
 =JWiz
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmjIINIACgkQmmx57+YA
 GNmOABAArHJHIbTPM8hNZ66gV7mvtteCdsgSYqEtBuGj9OyjW6cb/dTVQVprwRxV
 TYYHvB2UPYSHm98LhCqYkJS8Z6k2CwIusDJg7mUTjin6kjlCbL0GdAr4iwE0wzit
 Y0V6g2M1+kkH1w1402xzR1xOr1FZMkzAIWW4cq3jKCN2n8SMe7SezbiBsQuPVaFm
 7HQFxeUqv0NtT//v0L0LpnL71G2Hu87GIFND29I9mBv18Ew4HPyh1K9ooLfYeHY+
 +AIzU8lGdQxkwSFHezsOva6eaT04cryGjl+uvjEQOPazLV58SzkspMsHCGEPooof
 vrta2MlSsDwz3LU+HhYMJHhKdJdQv+AHSCEIW4kYr2RMfwlL4ixWimb0+s3UXohQ
 buygwlGQfP+b/F05q7S5fiRWgFDKUgoOD6bjvErlrJ4dkEZZyxKRMqqj09hdf2Bm
 nTZcKlZXm5V8Y2oSFaey9TMlUxch+FKRfIFBRsM6bVckfTtxwqXcuGFJJ7+Ylr6t
 eO80FW6i5/QJ9XI6X2ussKcWWYIyJHH9wa+lqDou+A4R/Cn/zUyBap+GcKt8O6YJ
 4tR6w+uWIZ5pu9lXI7OFggc5K7PexhFU/uPg/HuzjvGphXw4hYV264p7MvDuKfEl
 0V8zh99GvXGzm1E6N3sWYkhl4ngaxYDUnZYvyl0FsW87PVBkdy0=
 =UvP9
 -----END PGP SIGNATURE-----

Merge tag 'tegra-for-6.18-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into soc/drivers

soc/tegra: Changes for v6.18-rc1

NVMEM cells are added for Tegra114. These contain calibration data for
sensors and USB.

* tag 'tegra-for-6.18-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
  soc/tegra: fuse: Add Tegra114 nvmem cells and fuse lookups

Link: https://lore.kernel.org/r/20250914063927.89981-2-thierry.reding@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2025-09-15 16:21:05 +02:00
Svyatoslav Ryhel
b9c01adedf soc/tegra: fuse: Add Tegra114 nvmem cells and fuse lookups
Add missing Tegra114 nvmem cells and fuse lookups which were added for
Tegra124+ but omitted for Tegra114.

Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-09-11 18:19:02 +02:00
Aaron Kling
542baf77f0 pinctrl: tegra: Add Tegra186 pinmux driver
This is based on Nvidia's downstream 5.10 driver, rewritten to match the
mainline Tegra194 pinmux driver.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Link: https://lore.kernel.org/20250812-tegra186-pinctrl-v3-2-115714eeecb1@gmail.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2025-08-19 13:26:51 +02:00
Jon Hunter
b6bcbce335 soc/tegra: pmc: Ensure power-domains are in a known state
After commit 13a4b7fb62 ("pmdomain: core: Leave powered-on genpds on
until late_initcall_sync") was applied, the Tegra210 Jetson TX1 board
failed to boot. Looking into this issue, before this commit was applied,
if any of the Tegra power-domains were in 'on' state when the kernel
booted, they were being turned off by the genpd core before any driver
had chance to request them. This was purely by luck and a consequence of
the power-domains being turned off earlier during boot. After this
commit was applied, any power-domains in the 'on' state are kept on for
longer during boot and therefore, may never transitioned to the off
state before they are requested/used. The hang on the Tegra210 Jetson
TX1 is caused because devices in some power-domains are accessed without
the power-domain being turned off and on, indicating that the
power-domain is not in a completely on state.

>From reviewing the Tegra PMC driver code, if a power-domain is in the
'on' state there is no guarantee that all the necessary clocks
associated with the power-domain are on and even if they are they would
not have been requested via the clock framework and so could be turned
off later. Some power-domains also have a 'clamping' register that needs
to be configured as well. In short, if a power-domain is already 'on' it
is difficult to know if it has been configured correctly. Given that the
power-domains happened to be switched off during boot previously, to
ensure that they are in a good known state on boot, fix this by
switching off any power-domains that are on initially when registering
the power-domains with the genpd framework.

Note that commit 05cfb988a4 ("soc/tegra: pmc: Initialise resets
associated with a power partition") updated the
tegra_powergate_of_get_resets() function to pass the 'off' to ensure
that the resets for the power-domain are in the correct state on boot.
However, now that we may power off a domain on boot, if it is on, it is
better to move this logic into the tegra_powergate_add() function so
that there is a single place where we are handling the initial state of
the power-domain.

Fixes: a38045121b ("soc/tegra: pmc: Add generic PM domain support")
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20250731121832.213671-1-jonathanh@nvidia.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
2025-08-11 12:24:43 +02:00
Linus Torvalds
fc8f5028eb pmdomain core:
- Leave powered-on genpds on until ->sync_state() or late_initcall_sync
  - Export a common ->sync_state() helper for genpd providers
  - Add generic ->sync_state() support
  - Add a bus/driver for genpd provider-devices
  - Introduce dev_pm_genpd_is_on() for consumers
 
 pmdomain providers:
  - cpuidle-psci: Drop redundant ->sync_state() support
  - cpuidle-riscv-sbi: Drop redundant ->sync_state() support
  - imx: Set ISI panic write for imx8m-blk-ctrl
  - qcom: Add support for Glymur and Milos RPMh power-domains
  - qcom: Use of_genpd_sync_state() for power-domains
  - rockchip: Add support for the RK3528 variant
  - samsung: Fix splash-screen handover by enforcing a ->sync_state()
  - sunxi: Add support for Allwinner A523's PCK600 power-controller
  - tegra: Opt-out from genpd's common ->sync_state() support for pmc
  - thead: Instantiate a GPU power sequencer via the auxiliary bus
  - renesas: Move init to postcore_initcalls
  - xilinx: Move ->sync_state() support to firmware driver
  - xilinx: Use of_genpd_sync_state() for power-domains
 
 pmdomain consumers:
  - remoteproc: imx_rproc: Fixup the detect/attach procedure for pre-booted cores
 -----BEGIN PGP SIGNATURE-----
 
 iQJLBAABCgA1FiEEugLDXPmKSktSkQsV/iaEJXNYjCkFAmiIqskXHHVsZi5oYW5z
 c29uQGxpbmFyby5vcmcACgkQ/iaEJXNYjClOLBAAxsd5QP7QyeCePR4hADGePY4d
 Ab4fX01EVsu+g5cjg7L1V8gZMbNC/O+bxVhF5s1CiDbXbEcDliuW9yKCTFq4Yqx+
 7PtR+U538FADJGbbETzp8AFbcD8hmd/Wt/o7JyqC2wmmRwlgDEKPTR+M7FirrU3J
 fLsE+wyJSxn8ywJ1XwQOxBOZUtq11a8UueMXb8L1DhilyjT88zqCNiMvkcLtBlh+
 tRT5TWBEGr7qPCDAW6w3RL/8Y22g8xIjJxcDI8LycI/ed7qB5gtIs3ORiTl2w4qE
 k78wp2Ltv1Q2AmrYiLoaciFMTXckeBycVhobf0c4zVn2HGS15Fip0YNhPQmOz3aI
 JY+h5aUTMTUICVTG1D9uTW9gEbzqJOnqwU75R6zyV6xUk9pS4pGHaxaqKasNdDPy
 zIVgaURMZZxq37x7TNmnQZSZ3pAisFTm8Rv4oDTOJshblhuzG0TsXTlgMuy+EONB
 qh0obkHZFETrucGwaGBFVenzpnwZiEZ3EAKMGDcjBAO54waWdo+SmmJCc0KCQLih
 UheFi4v0IAUm8KqzwM4CKGg5NhGo2E1FcG8YbX6t2phycQLfVHDSw3rXHJRfXOzu
 s6njs7DhPKvUdlQxm1Fjq+eeMw2wsUFj8x1+usQYiD3UfuC26GU3cPsrU99+pcak
 eTcWfSnpDiXpVE3pEOk=
 =9SL+
 -----END PGP SIGNATURE-----

Merge tag 'pmdomain-v6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm

Pull pmdomain updates from Ulf Hansson:
 "pmdomain core:
   - Leave powered-on genpds on until ->sync_state() or late_initcall_sync
   - Export a common ->sync_state() helper for genpd providers
   - Add generic ->sync_state() support
   - Add a bus/driver for genpd provider-devices
   - Introduce dev_pm_genpd_is_on() for consumers

  pmdomain providers:
   - cpuidle-psci: Drop redundant ->sync_state() support
   - cpuidle-riscv-sbi: Drop redundant ->sync_state() support
   - imx: Set ISI panic write for imx8m-blk-ctrl
   - qcom: Add support for Glymur and Milos RPMh power-domains
   - qcom: Use of_genpd_sync_state() for power-domains
   - rockchip: Add support for the RK3528 variant
   - samsung: Fix splash-screen handover by enforcing a ->sync_state()
   - sunxi: Add support for Allwinner A523's PCK600 power-controller
   - tegra: Opt-out from genpd's common ->sync_state() support for pmc
   - thead: Instantiate a GPU power sequencer via the auxiliary bus
   - renesas: Move init to postcore_initcalls
   - xilinx: Move ->sync_state() support to firmware driver
   - xilinx: Use of_genpd_sync_state() for power-domains

  pmdomain consumers:
   - remoteproc: imx_rproc: Fixup the detect/attach procedure for
     pre-booted cores"

* tag 'pmdomain-v6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm: (44 commits)
  pmdomain: qcom: rpmhpd: Add Glymur RPMh Power Domains
  dt-bindings: power: rpmpd: Add Glymur power domains
  remoteproc: imx_rproc: detect and attach to pre-booted remote cores
  remoteproc: imx_rproc: skip clock enable when M-core is managed by the SCU
  pmdomain: core: introduce dev_pm_genpd_is_on()
  pmdomain: ti: Select PM_GENERIC_DOMAINS
  pmdomain: sunxi: sun20i-ppu: change to tristate and enable for ARCH_SUNXI
  pmdomain: sunxi: add driver for Allwinner A523's PCK-600 power controller
  pmdomain: sunxi: sun20i-ppu: add A523 support
  pmdomain: samsung: Fix splash-screen handover by enforcing a sync_state
  cpuidle: riscv-sbi: Drop redundant sync_state support
  cpuidle: psci: Drop redundant sync_state support
  pmdomain: core: Leave powered-on genpds on until sync_state
  pmdomain: core: Leave powered-on genpds on until late_initcall_sync
  pmdomain: core: Default to use of_genpd_sync_state() for genpd providers
  driver core: Add dev_set_drv_sync_state()
  pmdomain: core: Add common ->sync_state() support for genpd providers
  driver core: Export get_dev_from_fwnode()
  firmware: xilinx: Use of_genpd_sync_state()
  firmware: xilinx: Don't share zynqmp_pm_init_finalize()
  ...
2025-07-29 11:42:31 -07:00
Linus Torvalds
4c10d22211 soc: defconfig updates for 6.16
As usual, more drivers get enabled in the defconfigs, to support newly
 added hardware drivers.
 
 There is one change for Tegra that modifies the Kconfig file at the same
 time, and the NXP arm32 defconfigs get a refresh.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmiD8n8ACgkQmmx57+YA
 GNni9g//d7W04OSpAOCT7LKLhkLEK8CMlAcXJMWSk8cDK0irHtAnmxEiwd/qlfOg
 bU9oooOd6w5RrLn3A2GCSEMkdW520ng5PlRTKZKpEXr074PI25ghfIf7vfaVrlEN
 t66P0deO7Yup7SQqa3Wl4V4rcrO6v0w0LKn5nHaajOhTgZhXft4z4fosPegGlez5
 lXp9HC7yxLcH8DZkvg8RVRWIZaxnunb1g7P8ma/meqb0jrE9d8JCTU3+I9rHgji3
 pqzSAhjnBE/r5dn0IPTMppncJI/hXbqvSf5757osec/9XRfR29/mBfgBT6EUXT6W
 D2WuHk3DHciitiHrcsTqShMV+R0EUGj7yY4yg0hLXO3Pcdme5pigzJGWUtLczPN3
 DayXj7+AJ+G7izdiC+bXI0hqxwKxKc8rkddV0qEWKNI2m69iaGs2xiMF8z6l/asW
 FYg5t14YN2h2lDpE7Vxo+sey4Dnxqmzel/WkV+UysqqWV5zlGa34ZT66j63m4iLu
 EYmB4Jw35FMZ6LVCl79q3QtJbusvGlJUHySF+khcEN8WrksNcCVU94mfr08ydsez
 gpCV+zHyD2z/d5JQVXIAtet/c6DowRy7FggmkauF2IcudDM6lU3WYeKP39fIv/lt
 w9FddYRMNC+LtnIUccjUcqKkIP3CXJ5zs7qIGflW4qYeRrdSQ0s=
 =En7k
 -----END PGP SIGNATURE-----

Merge tag 'soc-defconfig-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc

Pull SoC defconfig updates from Arnd Bergmann:
 "As usual, more drivers get enabled in the defconfigs, to support newly
  added hardware drivers.

  There is one change for Tegra that modifies the Kconfig file at the
  same time, and the NXP arm32 defconfigs get a refresh"

* tag 'soc-defconfig-6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (25 commits)
  arm: multi_v7_defconfig: Enable TPS65219 regulator
  arm: omap2plus_defconfig: Enable TPS65219 regulator
  arm64: defconfig: Enable Tegra241 and Tegra264
  riscv: defconfig: spacemit: enable sdhci driver for K1 SoC
  riscv: defconfig: Enable PWM support for SpacemiT K1 SoC
  riscv: defconfig: Remove CONFIG_SND_SOC_STARFIVE=m
  arm64: defconfig: Enable Tegra HSP and BPMP
  ARM: imx_v6_v7_defconfig: select CONFIG_USB_HSIC_USB3503
  ARM: imx_v6_v7_defconfig: select CONFIG_INPUT_PWM_BEEPER
  ARM: imx_v6_v7_defconfig: cleanup with savedefconfig
  ARM: mxs_defconfig: select new drivers used by imx28-amarula-rmm
  ARM: mxs_defconfig: Cleanup mxs_defconfig
  arm64: defconfig: enable further Rockchip platform drivers
  arm64: defconfig: enable Samsung PMIC over ACPM
  arm64: defconfig: enable Maxim max77759 driver
  ARM: configs: sama5_defconfig: Select CONFIG_WILC1000_SDIO
  ARM: shmobile: defconfig: Refresh for v6.16-rc2
  arm64: defconfig: Enable RZ/V2H(P) USB2 PHY controller reset driver
  arm64: defconfig: add S32G RTC module support
  arm64: defconfig: Drop unneeded unselectable sound drivers
  ...
2025-07-29 11:27:41 -07:00
Arnd Bergmann
985da98f29 soc/tegra: Updates for v6.17-rc1
The bulk of this is the addition of Tegra264 support for various low-
 level components. This also adds fabric descriptors for the new Tegra254
 and Tegra264 chips.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEiOrDCAFJzPfAjcif3SOs138+s6EFAmhxiLQACgkQ3SOs138+
 s6GrMA//SscGyGAVDKWGd0otj1Wk9TD5RIxgOMpvjGJE/M1EK+VHqtb4K76+Zqkc
 HnyrkkRbmGiV3c19e53tYqC2Syv6atxB0QYS/4n8M7gWMjNBXT3wFEU13Jqu8QER
 GPkgNSrKjUZClbAgkdGbTaEcjOuT35T1MORo5mGgYFKO+83bbpxFc4f3s7eDe3AU
 az/SgEfe7nbvaDVwM8XshazyFyidIg2lxCy9YzXVkZBhG+z4mH7sHhg9VlEI87VA
 a/ElQG3j80YNwzmeFA9j44GMy75ma01KgplfvXFPY4YRPj+dgTrVfll+9nttZbez
 itcukFMQKZF40NKfxy/bASL6SKxISLOPK6EwJ1+Ws1omXlsjzdgMacNaeURgLICt
 1DJQRjQs9COt+VFFCqnVBFtbZlFk8yOTcSv1IimaLk9B1vhz5oCrlg8+RCtW+54m
 XerfpqUaV+7zc2wtgofy/HsdY93EyLPwQ08AxJG8fZMMwqpE1lwxXCH6WBDHMZAC
 AccMc9dqW5fbuRKLdFfMDfMF6mzqHJXPag3KCv0VLDFIpy7buLTaSHfVNFMHhtcE
 ajuHpSrmYkHy7SOOVvlDtyQIP3mKk3FSQyE0PYconcJ2rJOdcfhJFWGDTTXaDz2a
 XhbxX2o7Z5LsVr52X+5LAwEaTnZLTR1omKnznWW21agqBljPXtU=
 =iSY8
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmh+aEMACgkQmmx57+YA
 GNkDtQ/+JjbVkMQOKxUvKNJMiy2hRhEG6WNc+sZ9Wqk+E6/JgMmFTIlbW9hKnRw1
 57ir/a18dWGJ0y/jV7YfjuZkYWgo+uXwMvA+rRrGAUm0ZxgVj1dCZLhEdWyrMEIS
 j16W1T52ANRsjfJB5L4y97J4b6EpnLeyDiEvO9NljANig6VgxRFuvZxuXiDWJ7I+
 h2JhdOXlSqCMlpfnsDddhvwKQHhHoYJBjFrytcxuzP1NJLwRajGax0GfObiXRrN0
 9A/tXarZOmoQAA6PtfvnNoxuZdc0A/otp2sYSntPJNNhxVyZy7flHvm2SFUhMnS1
 XX60qdV7V9raahopqvst12xBhK57xBfYFBUkybi0ExmCcXAvGp19psSAHFgFFUbC
 5SqQidl1TkcVK4ISTv/4hUqulumXhvN7Kq+PlFVswvye01M0GmuMrmAKaLhWSKqO
 qCPkFvu3aI3UlY8f0jVy6g4OeZO/ZYXiP4CTQyqeMFy8+b10kHLCm7EdOSZOEoW1
 emCqUm6Mr5YJqu1NhqF3LUQqTYBDIhae+z/vyCstv7hbBzwQk0hM+Ou05oINeZpk
 XNDD76ZQLCMHJPbuw/fcLrpk8wayiLf9a9PhCDfNYIeNrfTB7Rr6Xk8DGSQXiSnv
 jBAB2Agj/ylpL7MEmKL0NNXvBnlImdEJd6NMAIHKaNB8WpCp89o=
 =Urev
 -----END PGP SIGNATURE-----

Merge tag 'tegra-for-6.17-soc' of https://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into soc/drivers

soc/tegra: Updates for v6.17-rc1

The bulk of this is the addition of Tegra264 support for various low-
level components. This also adds fabric descriptors for the new Tegra254
and Tegra264 chips.

* tag 'tegra-for-6.17-soc' of https://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
  soc/tegra: cbb: Add support for CBB fabrics in Tegra254
  soc/tegra: cbb: Add support for CBB fabrics in Tegra264
  soc/tegra: cbb: Support HW lookup to get timed out target address
  soc/tegra: cbb: Improve handling for per SoC fabric data
  soc/tegra: cbb: Make error interrupt enable and status per SoC
  soc/tegra: cbb: Change master/slave to initiator/target
  soc/tegra: cbb: Clear ERR_FORCE register with ERR_STATUS
  soc/tegra: Add Tegra264 APBMISC compatible string
  soc/tegra: pmc: Add Tegra264 support
  soc/tegra: Enable support for Tegra264

Link: https://lore.kernel.org/r/20250711220943.2389322-1-thierry.reding@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2025-07-21 18:18:11 +02:00
Sumit Gupta
84daa158bb soc/tegra: cbb: Add support for CBB fabrics in Tegra254
Add support for CBB 2.0 based fabrics in Tegra254 SoC using ACPI.
Fabrics reporting errors are: C2C, GPU and Display_Cluster. Tegra254
uses a hardware based lookup to get target node address, so the
target_map tables for each fabric are no longer needed.

Signed-off-by: Sumit Gupta <sumitg@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-07-09 14:29:19 +02:00
Sumit Gupta
fa4854a9f5 soc/tegra: cbb: Add support for CBB fabrics in Tegra264
Add support for CBB 2.0 based fabrics in Tegra264 SoC using DT. Fabrics
reporting errors are: SYSTEM, TOP0, UPHY0 and VISION.

Signed-off-by: Sumit Gupta <sumitg@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-07-09 14:28:55 +02:00
Sumit Gupta
5f2c2c4399 soc/tegra: cbb: Support HW lookup to get timed out target address
Add support for hardware based lookup to get the address of the timed
out target node. This features is added in upcoming SoCs and avoids the
need for creating per fabric target_map tables in the driver.

Signed-off-by: Sumit Gupta <sumitg@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-07-09 14:28:07 +02:00
Sumit Gupta
25de5c8fe0 soc/tegra: cbb: Improve handling for per SoC fabric data
Improve handling for the per SoC fabrics and targets.
The below changes make them more flexible and ready for future SoC's.
- Added SoC prefix to Fabric_ID enums.
- Rename *lookup_target_timeout() to *sw_lookup_target_timeout() to
  make it separate from HW based lookup function to be added later.
- Moved target_map within fabric_lookup table to make it easy to
  check whether SW vs HW lookup is supported and handle accordingly.
- Slight improvements to some error prints.

Signed-off-by: Sumit Gupta <sumitg@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-07-09 14:27:41 +02:00
Sumit Gupta
2f2c32f9cc soc/tegra: cbb: Make error interrupt enable and status per SoC
Make the error interrupt enable and error status fields as per SoC. Both
of these fields can change for different SoC's. Moving them to per SoC
data helps to set or clear the required bits only for a SoC.

Signed-off-by: Sumit Gupta <sumitg@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-07-09 14:27:14 +02:00
Sumit Gupta
9c15079967 soc/tegra: cbb: Change master/slave to initiator/target
Change usage of 'Master/Slave' to 'Initiator/Target' as per the new
convention.

Signed-off-by: Sumit Gupta <sumitg@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-07-09 14:26:53 +02:00
Sumit Gupta
a0647bca89 soc/tegra: cbb: Clear ERR_FORCE register with ERR_STATUS
When error is injected with the ERR_FORCE register, then this register
is not auto cleared on clearing the ERR_STATUS register. This causes
repeated interrupts on error injection. To fix, set the ERR_FORCE to
zero along with clearing the ERR_STATUS register after handling error.

Fixes: fc2f151d23 ("soc/tegra: cbb: Add driver for Tegra234 CBB 2.0")
Signed-off-by: Sumit Gupta <sumitg@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-07-09 14:26:03 +02:00
Ulf Hansson
8efc9b195b soc/tegra: pmc: Opt-out from genpd's common ->sync_state() support
Tegra implements its own specific ->sync_state() callback for the genpd
providers. Let's set the GENPD_FLAG_NO_SYNC_STATE to inform genpd about it.

Moreover, let's call of_genpd_sync_state() to make sure genpd tries to
power off unused PM domains.

Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: Jonathan Hunter <jonathanh@nvidia.com>
Tested-by: Hiago De Franco <hiago.franco@toradex.com> # Colibri iMX8X
Tested-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> # TI AM62A,Xilinx ZynqMP ZCU106
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Link: https://lore.kernel.org/r/20250701114733.636510-10-ulf.hansson@linaro.org
2025-07-09 13:29:06 +02:00
Jiri Slaby (SUSE)
76760b9dbb soc: Use dev_fwnode()
irq_domain_create_simple() takes fwnode as the first argument. It can be
extracted from the struct device using dev_fwnode() helper instead of
using of_node with of_fwnode_handle().

So use the dev_fwnode() helper.

Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Cc: Qiang Zhao <qiang.zhao@nxp.com>
Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: Jonathan Hunter <jonathanh@nvidia.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linuxppc-dev@lists.ozlabs.org
Acked-by: Thierry Reding <treding@nvidia.com>
Link: https://lore.kernel.org/linuxppc-dev/20250611104348.192092-19-jirislaby@kernel.org/
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
2025-07-08 10:29:28 +02:00
Thierry Reding
18c590e012 arm64: defconfig: Enable Tegra HSP and BPMP
Selecting the IVC, HSP and BPMP drivers via Kconfig is problematic
because it can create conflicting configurations. Instead, enable them
in the default configuration.

Link: https://lore.kernel.org/r/20250506133118.1011777-12-thierry.reding@gmail.com
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-07-07 14:46:11 +02:00
Thierry Reding
7ddca45001 soc/tegra: Add Tegra264 APBMISC compatible string
Link: https://lore.kernel.org/r/20250506133118.1011777-9-thierry.reding@gmail.com
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-07-07 14:41:09 +02:00
Thierry Reding
5273adad12 soc/tegra: pmc: Add Tegra264 support
The PMC block on Tegra264 has undergone a few small changes since it's
Tegra234 predecessor. Match on the new compatible string to select the
updated SoC-specific data.

Link: https://lore.kernel.org/r/20250506133118.1011777-8-thierry.reding@gmail.com
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-07-07 14:30:56 +02:00
Thierry Reding
14bdb1be98 soc/tegra: Enable support for Tegra264
Tegra264 is the successor to Tegra234, with various improvements and new
hardware.

Link: https://lore.kernel.org/r/20250506133118.1011777-7-thierry.reding@gmail.com
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-07-07 14:12:57 +02:00
Jiri Slaby (SUSE)
6e4e30d70a soc: Switch to irq_domain_create_*()
irq_domain_add_*() interfaces are going away as being obsolete now.
Switch to the preferred irq_domain_create_*() ones. Those differ in the
node parameter: They take more generic struct fwnode_handle instead of
struct device_node. Therefore, of_fwnode_handle() is added around the
original parameter.

Note some of the users can likely use dev->fwnode directly instead of
indirect of_fwnode_handle(dev->of_node). But dev->fwnode is not
guaranteed to be set for all, so this has to be investigated on case to
case basis (by people who can actually test with the HW).

[ tglx: Fix up subject prefix ]

Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Christophe Leroy <christophe.leroy@csgroup.eu> # For soc/fsl
Link: https://lore.kernel.org/all/20250319092951.37667-35-jirislaby@kernel.org
2025-05-16 21:06:11 +02:00
Krzysztof Kozlowski
5e63dfe213 soc/tegra: pmc: Use str_enable_disable-like helpers
Replace ternary (condition ? "enable" : "disable") syntax with helpers
from string_choices.h because:
1. Simple function call with one argument is easier to read.  Ternary
   operator has three arguments and with wrapping might lead to quite
   long code.
2. Is slightly shorter thus also easier to read.
3. It brings uniformity in the text - same string.
4. Allows deduping by the linker, which results in a smaller binary
   file.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20250114203638.1013670-1-krzysztof.kozlowski@linaro.org
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-03-06 19:12:37 +01:00
Kartik Rajput
836b341cc8 soc/tegra: fuse: Update Tegra234 nvmem keepout list
Various Nvidia userspace applications and tests access following fuse
via Fuse nvmem interface:

	* odmid
	* odminfo
	* boot_security_info
	* public_key_hash
	* reserved_odm0
	* reserved_odm1
	* reserved_odm2
	* reserved_odm3
	* reserved_odm4
	* reserved_odm5
	* reserved_odm6
	* reserved_odm7
	* odm_lock
	* pk_h1
	* pk_h2
	* revoke_pk_h0
	* revoke_pk_h1
	* security_mode
	* system_fw_field_ratchet0
	* system_fw_field_ratchet1
	* system_fw_field_ratchet2
	* system_fw_field_ratchet3
	* optin_enable

Update tegra234_fuse_keepouts list to allow reading these fuse from
nvmem sysfs interface.

Signed-off-by: Kartik Rajput <kkartik@nvidia.com>
Link: https://lore.kernel.org/r/20241127061053.16775-1-kkartik@nvidia.com
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-01-10 18:51:46 +01:00
liujing
c475b68155 soc/tegra: Fix spelling error in tegra234_lookup_slave_timeout()
Fix spelling error in tegra234_lookup_slave_timeout().

Signed-off-by: liujing <liujing@cmss.chinamobile.com>
Link: https://lore.kernel.org/r/20241209055148.3749-1-liujing@cmss.chinamobile.com
Signed-off-by: Thierry Reding <treding@nvidia.com>
2025-01-10 18:51:02 +01:00