linux/rust/helpers
Michal Wilczynski 7b3dce814a rust: pwm: Add Kconfig and basic data structures
Introduce the foundational support for PWM abstractions in Rust.

This commit adds the `RUST_PWM_ABSTRACTIONS` Kconfig option to enable
the feature, along with the necessary build-system support and C
helpers.

It also introduces the first set of safe wrappers for the PWM
subsystem, covering the basic data carrying C structs and enums:
- `Polarity`: A safe wrapper for `enum pwm_polarity`.
- `Waveform`: A wrapper for `struct pwm_waveform`.
- `State`: A wrapper for `struct pwm_state`.

These types provide memory safe, idiomatic Rust representations of the
core PWM data structures and form the building blocks for the
abstractions that will follow.

Tested-by: Drew Fustini <fustini@kernel.org>
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com>
Reviewed-by: Elle Rhumsaa <elle@weathered-steel.dev>
Signed-off-by: Michal Wilczynski <m.wilczynski@samsung.com>
Link: https://patch.msgid.link/20251016-rust-next-pwm-working-fan-for-sending-v16-2-a5df2405d2bd@samsung.com
Signed-off-by: Uwe Kleine-König <ukleinek@kernel.org>
2025-11-07 10:03:54 +01:00
..
atomic.c rust: Introduce atomic API helpers 2025-09-15 09:38:32 +02:00
auxiliary.c rust: auxiliary: use generic device drvdata accessors 2025-07-09 00:04:33 +02:00
barrier.c rust: sync: Add memory barriers 2025-09-15 09:38:34 +02:00
binder.c rust_binder: add Rust Binder driver 2025-09-19 09:40:46 +02:00
bitmap.c rust: add bindings for bitmap.h 2025-09-22 15:52:44 -04:00
bitops.c rust: add bindings for bitops.h 2025-09-22 15:52:44 -04:00
blk.c
bug.c rust: Add warn_on macro 2025-07-23 02:05:58 +02:00
build_assert.c
build_bug.c rust: helpers: remove unnecessary header includes 2024-10-21 17:35:59 +02:00
clk.c rust: clk: Add helpers for Rust code 2025-05-19 12:55:40 +05:30
completion.c rust: completion: implement initial abstraction 2025-06-13 23:46:56 +02:00
cpu.c rust: cpu: Add CpuId::current() to retrieve current CPU ID 2025-06-12 10:31:28 +05:30
cpufreq.c rust: cpufreq: Add initial abstractions for cpufreq framework 2025-05-20 11:21:10 +05:30
cpumask.c rust: cpumask: Add few more helpers 2025-05-19 12:55:40 +05:30
cred.c rust: cred: add Rust abstraction for `struct cred` 2024-09-30 13:02:28 +02:00
device.c rust: device: add drvdata accessors 2025-07-09 00:04:33 +02:00
dma.c rust: dma: add DMA addressing capabilities 2025-07-19 19:36:51 +02:00
drm.c rust: drm: gem: Add GEM object abstraction 2025-04-28 10:08:23 +02:00
err.c rust: helpers: remove unnecessary header includes 2024-10-21 17:35:59 +02:00
fs.c rust: file: add Rust abstraction for `struct file` 2024-09-30 13:02:28 +02:00
helpers.c rust: pwm: Add Kconfig and basic data structures 2025-11-07 10:03:54 +01:00
io.c rust: io: mem: add a generic iomem abstraction 2025-07-20 19:43:14 +02:00
irq.c rust: irq: add support for non-threaded IRQs and handlers 2025-08-12 20:22:00 +02:00
jump_label.c rust: add static_branch_unlikely for static_key_false 2024-11-04 16:21:44 -05:00
kunit.c rust: helpers: remove unnecessary header includes 2024-10-21 17:35:59 +02:00
maple_tree.c rust: maple_tree: add MapleTree 2025-09-21 14:22:19 -07:00
mm.c mm: rust: add lock_vma_under_rcu 2025-05-11 17:48:24 -07:00
mutex.c Generic: 2025-06-02 12:24:58 -07:00
of.c rust: device: implement FwNode::is_of_node() 2025-06-25 18:10:12 +02:00
page.c rust_binder: add Rust Binder driver 2025-09-19 09:40:46 +02:00
pci.c rust: Add several miscellaneous PCI helpers 2025-08-15 20:25:42 +02:00
pid_namespace.c rust: add PidNamespace 2024-10-08 15:44:36 +02:00
platform.c rust: platform: use generic device drvdata accessors 2025-07-09 00:04:33 +02:00
poll.c poll: rust: allow poll_table ptrs to be null 2025-07-14 14:12:24 +02:00
processor.c rust: Add cpu_relax() helper 2025-08-21 16:58:07 +02:00
property.c rust: device: Create FwNode abstraction for accessing device properties 2025-06-12 23:56:42 +02:00
pwm.c rust: pwm: Add Kconfig and basic data structures 2025-11-07 10:03:54 +01:00
rbtree.c rust: rbtree: add red-black tree implementation backed by the C version 2024-08-31 17:35:08 +02:00
rcu.c rust: add rcu abstraction 2024-12-20 17:19:26 +01:00
refcount.c rust: implement `kernel::sync::Refcount` 2025-09-15 09:38:35 +02:00
regulator.c rust: regulator: add devm_enable and devm_enable_optional 2025-09-10 21:02:16 +01:00
scatterlist.c rust: scatterlist: Add abstraction for sg_table 2025-09-04 23:33:50 +02:00
security.c rust_binder: add Rust Binder driver 2025-09-19 09:40:46 +02:00
signal.c rust: helpers: remove unnecessary header includes 2024-10-21 17:35:59 +02:00
slab.c rust: support large alignments in allocations 2025-09-13 16:54:46 -07:00
spinlock.c rust: sync: Add lock::Backend::assert_is_held() 2024-12-19 14:04:42 -08:00
sync.c rust: lockdep: Use Pin for all LockClassKey usages 2025-03-08 00:55:04 +01:00
task.c rust: task: Add Rust version of might_sleep() 2025-06-24 15:53:50 -07:00
time.c rust: time: Add wrapper for fsleep() function 2025-06-30 13:22:05 +02:00
uaccess.c
usb.c rust: usb: add basic USB abstractions 2025-09-24 13:13:04 +02:00
vmalloc.c rust: support large alignments in allocations 2025-09-13 16:54:46 -07:00
wait.c rust: helpers: remove unnecessary header includes 2024-10-21 17:35:59 +02:00
workqueue.c rust: helpers: remove unnecessary header includes 2024-10-21 17:35:59 +02:00
xarray.c rust: xarray: Add an abstraction for XArray 2025-05-01 11:37:59 +02:00