linux/rust/kernel
Linus Torvalds 4517b5a6c8 Here's the clk changes for the merge window which is dominated in the diffstat
by Qualcomm churning out new SoCs that need clk drivers. Looking beyond the
 sheer amount of lines of mostly data there we have a clk nexus DT binding
 change in the core clk framework and a driver core patch to add a subsys driver
 macro. The clock nexus support is useful for devices that map clks internally
 or for connectors on a board that route clock signals to another board. I
 suspect the use of this will expand in the future, so we have unit tests to
 make sure it doesn't break. The driver core change adds subsys_driver() and
 subsys_platform_driver() so we can register early drivers without open-coding
 that all (module_platform_driver() is at device initcall level so it isn't be
 used).
 
 Beyond the core framework bits we have lots of changes all over the tree to
 initialize 'struct clk_init_data'. The potential risk here is that someone
 forgets to initialize all the members of that structure and either the clk
 flags cause weird behavior later on or the parents are pointing at junk and the
 clk is orphaned forever. The patches just initialize the thing with zeroes to
 be safe. Longer term we should probably move this struct out of 'struct clk_hw'
 and pass it during clk registration time. That's a much bigger change and would
 require restructuring entire drivers that rely on the pointer being there.
 
 Finally, we have the usual fixes like calculation updates for dividers,
 handling error paths during clk registration, or fixing clk data now that
 drivers are using them. Those patches are dwarfed by the amount of new SoC
 support and only affect those SoCs and the consumers of those clks. Overall I'm
 more concerned the clk_init_data patches are going to expose some latent bugs
 that we didn't notice before because something was relying on clks being
 orphaned and now they're not.
 
 Core:
  - subsys_driver() / subsys_platform_driver() macros
  - Clock nexus DT binding support (with KUnit tests)
  - Spread-spectrum configuration validation
  - Fully initialize struct clk_init_data across many drivers
 
 New Drivers:
  - Anlogic DR1V90 CRU
  - ZTE zx297520v3 top, matrix, and LSP clocks
  - Samsung Exynos5515 and ACPM driver extended to Exynos850.
  - Qualcomm Eliza camera, camera-BIST, GPU, and video clks
  - Qualcomm Hawi / Maili camera and GPU controllers
  - Qualcomm Kuno global, RPMh
  - Qualcomm MSM8952 global, RPM
  - Qualcomm Nord camera/video clocks, EMAC interconnect, PHY resets
  - Qualcomm IPQ5210 / IPQ9650 network clocks
  - i.MX93 350 MHz fractional-N GP-PLL for display
  - i.MX pll14xx spread-spectrum clock generation
  - Amlogic A9 SCMI clock controller
  - Allwinner single-divider "update bit" support
  - EN7523 Serdes port selection
 -----BEGIN PGP SIGNATURE-----
 
 iQJIBAABCAAyFiEE9L57QeeUxqYDyoaDrQKIl8bklSUFAmri0R4UHHN3Ym95ZEBj
 aHJvbWl1bS5vcmcACgkQrQKIl8bklSWcAA//YrAnklSwDggOqJ3FwYZ8DHwXfcjU
 LQO4guUzlfNl3Lq4js1av5XetKtHk7ndtDxhbP6kLgFIZ+b2LbkPDEUOlxiPZ/47
 MjrveKqgXgEVk6yAl1S8HpmL0BMSO+GZsr61Mcha3kjEUfgen4cZDGzETgyaxniW
 cqIrP6IRa/Z60c6IydRyK+kN/317TGp/VKPcXudtecey5FB+WlpaUQV9ntiOGBZZ
 6icxy2O76v31XU/HJnb+IjTZ0Jc449rBDE+/T12OvoZ1z1Lv59mRgxJgZ0BwdMOP
 PoqTXLq6hby1IH37pCjSEp2X9qVhMsT9I40HM/Nn5uPZIvlDk6mZ4GXh0/sWZqC/
 yYaf9gVouORSKV3DTMSD/njtsNKANoo/aj08Gxfr+hJHrA/7ohehntpeKobWlk9K
 X+0uzT0N1h6PgqlmDHDv0MvYYzUnNif1PRuN+0JFrpvf5Y1cc6jCKdapYVvQtr6i
 NzOs7XG1IbigWPlccUTl3hn0Bs15dLhOVUrWo1c9aPF4vkGpPtyHib8nLdCerbuP
 7mICMzZ3PM76l9rl7VvO8wLNvBHBa+8f90jXE9Zz/0oyAj0fIdrNsXL6Nu+5usDA
 zT8T5Z2PfGgkx6TsftRmk0SZErROG0YakGRstSSSTYytHig0+JezVAH7NY26z7Dz
 Vcft0XmRGbL1jbU=
 =Vb8R
 -----END PGP SIGNATURE-----

Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux

Pull clk updates from Stephen Boyd:
 "Here's the clk changes for the merge window which is dominated in the
  diffstat by Qualcomm churning out new SoCs that need clk drivers.

  Looking beyond the sheer amount of lines of mostly data there we have
  a clk nexus DT binding change in the core clk framework and a driver
  core patch to add a subsys driver macro.

  The clock nexus support is useful for devices that map clks internally
  or for connectors on a board that route clock signals to another
  board. I suspect the use of this will expand in the future, so we have
  unit tests to make sure it doesn't break.

  The driver core change adds subsys_driver() and
  subsys_platform_driver() so we can register early drivers without
  open-coding that all (module_platform_driver() is at device initcall
  level so it isn't be used).

  Beyond the core framework bits we have lots of changes all over the
  tree to initialize 'struct clk_init_data'. The potential risk here is
  that someone forgets to initialize all the members of that structure
  and either the clk flags cause weird behavior later on or the parents
  are pointing at junk and the clk is orphaned forever. The patches just
  initialize the thing with zeroes to be safe. Longer term we should
  probably move this struct out of 'struct clk_hw' and pass it during
  clk registration time. That's a much bigger change and would require
  restructuring entire drivers that rely on the pointer being there.

  Finally, we have the usual fixes like calculation updates for
  dividers, handling error paths during clk registration, or fixing clk
  data now that drivers are using them. Those patches are dwarfed by the
  amount of new SoC support and only affect those SoCs and the consumers
  of those clks. Overall I'm more concerned the clk_init_data patches
  are going to expose some latent bugs that we didn't notice before
  because something was relying on clks being orphaned and now they're
  not.

  Core:
   - subsys_driver() / subsys_platform_driver() macros
   - Clock nexus DT binding support (with KUnit tests)
   - Spread-spectrum configuration validation
   - Fully initialize struct clk_init_data across many drivers

  New Drivers:
   - Anlogic DR1V90 CRU
   - ZTE zx297520v3 top, matrix, and LSP clocks
   - Samsung Exynos5515 and ACPM driver extended to Exynos850.
   - Qualcomm Eliza camera, camera-BIST, GPU, and video clks
   - Qualcomm Hawi / Maili camera and GPU controllers
   - Qualcomm Kuno global, RPMh
   - Qualcomm MSM8952 global, RPM
   - Qualcomm Nord camera/video clocks, EMAC interconnect, PHY resets
   - Qualcomm IPQ5210 / IPQ9650 network clocks
   - i.MX93 350 MHz fractional-N GP-PLL for display
   - i.MX pll14xx spread-spectrum clock generation
   - Amlogic A9 SCMI clock controller
   - Allwinner single-divider "update bit" support
   - EN7523 Serdes port selection"

* tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux: (316 commits)
  clk: imx: pll14xx: support spread spectrum clock generation
  clk: cdce925: Size the PLL child name buffer for any int
  clk: stm32: fix clock array size for STM32MP21
  dt-bindings: clock: Convert HiSilicon clocks to DT schema
  clk: lmk04832: Handle reset GPIO lookup errors
  dt-bindings: clock: anlogic,dr1v90-cru: make external clocks optional
  clk: tegra: bpmp: remove kcalloc
  clk: mmp2-audio: add missing PM_CLK dependency
  clk: zte: Introduce a driver for zx297520v3 LSP clocks
  clk: zte: Introduce a driver for zx297520v3 matrix clocks
  clk: zte: Introduce a driver for zx297520v3 top clocks
  clk: zte: Add zx PLL support infrastructure
  clk: zte: Add regmap-based clocks
  clk: zte: Add Clock registration infrastructure
  dt-bindings: clk: zte: Add zx297520v3 LSP clock and reset controller
  dt-bindings: clk: zte: Add zx297520v3 matrix clock and reset controller
  dt-bindings: clk: zte: Add zx297520v3 top clock and reset controller
  clk: nuvoton: ma35d1: Add missing WDT/WWDT parent clocks
  dt-bindings: clock: ma35d1: Add missing WDT/WWDT parent clocks
  dt-bindings: clock: ma35d1: Drop CLK_MAX_IDX define
  ...
2026-10-30 06:18:43 -10:00
..
alloc rust: alloc: allow different error types in KBox::pin_slice 2026-09-29 21:04:59 +02:00
block rust: block: implement Send and Sync for TagSet 2026-10-01 07:53:55 -06:00
debugfs rust: debugfs: drop 'static bound from ScopedDir file creation methods 2026-09-04 17:58:43 +02:00
device
dma_buf rust: Add dma_fence abstractions 2026-09-07 19:43:43 +02:00
drm DRM Rust changes for v7.4-rc1 2026-10-13 18:01:37 +10:00
fs
gpu rust: gpu: Add GPU buddy allocator bindings 2026-03-23 21:41:47 +01:00
interop rust: interop: Add list module for C linked list interface 2026-03-23 20:29:28 +01:00
io drm next for 7.4-rc1 2026-10-23 18:29:02 -10:00
iommu drm for 7.3-rc1 2026-08-21 08:41:00 -07:00
irq rust: irq: declare cfi_encoding for irqreturn 2026-10-22 15:36:01 +02:00
list Locking updates for v7.1: 2026-04-14 12:36:25 -07:00
mm mm: rename zap_page_range_single() to zap_vma_range() 2026-04-05 13:53:15 -07:00
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2026-10-01 11:02:44 -07:00
num rust: num: add cv! macro to create values from constant expressions 2026-10-13 12:33:16 +02:00
pci drm next for 7.4-rc1 2026-10-23 18:29:02 -10:00
ptr rust: ptr: remove implicit index projection syntax 2026-06-05 10:16:47 +02:00
str
sync Rust fixes for v7.4 2026-10-29 09:40:12 -10:00
time Rust fixes for v7.4 2026-10-29 09:40:12 -10:00
types rust: types: introduce ForLt base trait for CovariantForLt 2026-07-11 19:42:03 +02:00
.gitignore
acpi.rs rust: driver: store pointers in DeviceId 2026-07-30 22:50:15 +02:00
alloc.rs rust: alloc: add NumaNode::id() accessor 2026-09-29 21:05:08 +02:00
auxiliary.rs drm next for 7.4-rc1 2026-10-23 18:29:02 -10:00
bitfield.rs Driver core changes for 7.4-rc1 2026-10-21 18:53:14 -10:00
bitmap.rs Rust changes for v7.4 2026-10-21 10:20:36 -10:00
bits.rs
block.rs
bug.rs rust: bug: update the SAFETY comment for warn_slowpath_fmt() on UML 2026-10-12 17:31:14 +02:00
build_assert.rs rust: make build_assert module the home of related macros 2026-06-10 09:07:13 +02:00
clk.rs rust: clk: document overflow panics in Hertz constructors 2026-09-23 15:33:44 -04:00
configfs.rs Rust configfs changes for v7.4-rc1 2026-10-16 09:17:46 -07:00
cpu.rs
cpufreq.rs rust: cpufreq: reject NULL from cpufreq_cpu_get() 2026-10-05 09:25:54 +05:30
cpumask.rs rust: cpumask: rename methods of Cpumask for clarity and consistency 2026-01-27 11:21:23 +05:30
cred.rs
debugfs.rs rust: debugfs: drop 'static bound from ScopedDir file creation methods 2026-09-04 17:58:43 +02:00
device_id.rs rust: mem: add transmute with deferred size check 2026-09-06 13:39:26 +02:00
device.rs Linux 7.2-rc7 2026-08-10 01:20:05 +02:00
devres.rs Linux 7.2 2026-08-20 10:58:44 +10:00
dma.rs Rust fixes for v7.4 2026-10-29 09:40:12 -10:00
driver.rs rust: driver: remove open-coded matching logic 2026-07-30 22:50:15 +02:00
error.rs rust: error: implement ZeroableOption for Error 2026-10-13 15:59:46 +02:00
faux.rs rust: faux: add Device type with AsBusDevice support 2026-07-12 15:55:51 +02:00
firmware.rs drm for 7.3-rc1 2026-08-21 08:41:00 -07:00
fmt.rs rust: fmt: route {:p} through HashedPtr to prevent address leaks 2026-08-12 11:58:50 +02:00
fs.rs
fwctl.rs rust: fwctl: declare cfi_encoding for fwctl_rpc_scope 2026-10-21 13:59:47 -03:00
generated_arch_reachable_asm.rs.S
generated_arch_static_branch_asm.rs.S
generated_arch_warn_asm.rs.S
gpu.rs rust: gpu: Add GPU buddy allocator bindings 2026-03-23 21:41:47 +01:00
i2c.rs rust: i2c: remove TryFrom<&Device> implementation for &I2cClient 2026-10-21 17:47:21 +01:00
id_pool.rs Rust changes for v7.4 2026-10-21 10:20:36 -10:00
impl_flags.rs rust: impl_flags: use bit helper in example 2026-08-10 06:44:10 +02:00
init.rs rust: treewide: replace __pinned_init with raw_[try_]init 2026-08-05 11:36:18 +01:00
interop.rs rust: interop: Add list module for C linked list interface 2026-03-23 20:29:28 +01:00
interrupt.rs rust: Introduce interrupt module 2026-08-10 12:53:09 +02:00
io.rs drm next for 7.4-rc1 2026-10-23 18:29:02 -10:00
ioctl.rs rust: make build_assert module the home of related macros 2026-06-10 09:07:13 +02:00
iov.rs
irq.rs rust: irq: fix C header path in module docs 2026-07-21 00:48:45 +02:00
jump_label.rs rust: jump_label: skip arch-specific asm in testlib builds 2026-08-23 21:27:16 +02:00
Kconfig.test Rust timekeeping changes for v7.4-rc1 2026-10-11 19:23:24 +02:00
kunit.rs rust: kunit: use line!() inside kunit_assert! 2026-10-03 14:04:56 +02:00
lib.rs drm next for 7.4-rc1 2026-10-23 18:29:02 -10:00
list.rs rust: kernel: list: fix incorrect pop_back example comment 2026-08-23 21:27:16 +02:00
maple_tree.rs rust: maple_tree: implement Send and Sync for MapleTree 2026-09-11 22:07:42 +09:00
mem.rs rust: missed rustfmt fix up in rust/kernel/mem.rs 2026-10-22 07:03:40 -10:00
miscdevice.rs Char/Misc/IIO/others driver changes for 7.4-rc1 2026-10-24 15:44:26 -10:00
mm.rs binder: remove mmap_lock fallback 2026-10-06 17:39:11 -07:00
module_param.rs rust: module_param: Fix potentially incorrect access of SetOnce<T> 2026-10-14 10:42:40 +02:00
module.rs rust: module: add THIS_MODULE const to ModuleMetadata trait 2026-08-12 09:36:26 +02:00
num.rs rust: num: add cv! macro to create values from constant expressions 2026-10-13 12:33:16 +02:00
of.rs rust: driver: store pointers in DeviceId 2026-07-30 22:50:15 +02:00
opp.rs opp: rust: mark OPP methods as inline 2026-05-25 09:40:52 +05:30
page.rs mm.git review status for mm-hotfixes-stable..mm-stable 2026-06-19 10:14:34 -07:00
pci.rs drm next for 7.4-rc1 2026-10-23 18:29:02 -10:00
pid_namespace.rs
platform.rs Driver core changes for 7.3-rc1 2026-08-19 10:42:18 -07:00
prelude.rs rust: num: add cv! macro to create values from constant expressions 2026-10-13 12:33:16 +02:00
print.rs rust: print: fix broken _printk Rustdoc link 2026-08-03 08:03:24 +02:00
processor.rs
ptr.rs rust: num: add cv! macro to create values from constant expressions 2026-10-13 12:33:16 +02:00
pwm.rs pwm: Changes for v7.3-rc1 2026-08-19 09:03:59 -07:00
ratelimit.rs rust: add pr_*_ratelimited! macros for printing 2026-10-12 07:03:26 +02:00
rbtree.rs Rust changes for v6.20 / v7.0 2026-02-10 11:53:01 -08:00
regulator.rs rust: regulator: do not assume that regulator_get() returns non-null 2026-03-24 13:08:21 +00:00
revocable.rs rust: revocable: Use LKMM atomics instead of Rust atomics 2026-08-04 05:52:54 -07:00
safety.rs rust: safety: introduce unsafe_precondition_assert! macro 2026-02-02 08:10:48 +01:00
scatterlist.rs rust: scatterlist: return u32 from SGEntry::dma_len() 2026-10-02 00:06:52 +02:00
security.rs rust: lsm: replace core::mem::zeroed with pin_init::zeroed 2026-09-10 15:00:17 -04:00
seq_file.rs rust: seq_file: replace kernel::c_str! with C-Strings 2026-01-29 15:32:40 +01:00
serdev.rs Driver core changes for 7.3-rc1 2026-08-19 10:42:18 -07:00
sizes.rs rust: sizes: implement SizeConstants for Alignment 2026-10-13 12:52:26 +02:00
soc.rs
std_vendor.rs
str.rs rust: kunit: use line!() inside kunit_assert! 2026-10-03 14:04:56 +02:00
sync.rs rust: sync: move lockdep types to rust/kernel/sync/lockdep.rs 2026-10-12 07:02:12 +02:00
task.rs Char/Misc/IIO/etc driver update for 7.3-rc1 2026-08-25 09:38:50 -07:00
time.rs rust: time: add Delta::as_jiffies_unsigned() 2026-10-12 07:31:20 +02:00
tracepoint.rs
transmute.rs rust: transmute: simplify code with Rust 1.80.0 split_at_*checked() 2026-04-07 10:00:24 +02:00
types.rs Driver core changes for 7.3-rc1 2026-08-19 10:42:18 -07:00
uaccess.rs rust: uaccess: add UserSliceWriter::write_truncated() 2026-09-27 14:10:32 +02:00
usb.rs USB / Thunderbolt changes for 7.3-rc1 2026-08-25 10:44:46 -07:00
workqueue.rs rust: workqueue: replace deprecated system_wq with system_{percpu,dfl}_wq 2026-10-21 01:30:34 +02:00
xarray.rs rust: make build_assert module the home of related macros 2026-06-10 09:07:13 +02:00