mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 11:06:41 -05:00
rust: pwm: Add module_pwm_platform_driver! macro
Rust PWM drivers using the abstractions in `kernel/pwm.rs` typically call C functions (like `pwmchip_alloc`, `__pwmchip_add`, etc.) that are exported to the `PWM` C symbol namespace. With the introduction of `imports_ns` support in the `module!` macro, every PWM driver would need to manually include `imports_ns: ["PWM"]` in its module declaration. To simplify this for driver authors and ensure consistency, introduce a new helper macro `module_pwm_platform_driver!` in `pwm.rs`. This macro wraps the standard `module_platform_driver!`, forwards all user provided arguments using the `($($user_args:tt)*)` pattern, and automatically injects the `imports_ns: ["PWM"]` declaration. This follows the pattern used in other subsystems (e.g., `module_pci_driver!`) to provide specialized module registration helpers. It makes writing PWM drivers slightly simpler and less error prone regarding namespace imports. Signed-off-by: Michal Wilczynski <m.wilczynski@samsung.com> Reviewed-by: Elle Rhumsaa <elle@weathered-steel.dev> Link: https://patch.msgid.link/20251028-pwm_fixes-v1-2-25a532d31998@samsung.com Signed-off-by: Uwe Kleine-König <ukleinek@kernel.org>
This commit is contained in:
committed by
Uwe Kleine-König
parent
d8046cd508
commit
264b501bb4
@@ -760,3 +760,26 @@ fn drop(&mut self) {
|
||||
unsafe { bindings::pwmchip_remove(chip_raw); }
|
||||
}
|
||||
}
|
||||
|
||||
/// Declares a kernel module that exposes a single PWM driver.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
///```ignore
|
||||
/// kernel::module_pwm_platform_driver! {
|
||||
/// type: MyDriver,
|
||||
/// name: "Module name",
|
||||
/// authors: ["Author name"],
|
||||
/// description: "Description",
|
||||
/// license: "GPL v2",
|
||||
/// }
|
||||
///```
|
||||
#[macro_export]
|
||||
macro_rules! module_pwm_platform_driver {
|
||||
($($user_args:tt)*) => {
|
||||
$crate::module_platform_driver! {
|
||||
$($user_args)*
|
||||
imports_ns: ["PWM"],
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user