rust: pwm: Drop wrapping of PWM polarity and state

These were introduced and used in an earlier revision of the patch that
became commit fb3957af9ec6 ("pwm: Add Rust driver for T-HEAD TH1520
SoC"). The variant that was actually applied sticks to the modern
waveform abstraction only (and other drivers are supposed to do that,
too), so they can be dropped.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
Link: https://patch.msgid.link/20251025122359.361372-2-u.kleine-koenig@baylibre.com
Signed-off-by: Uwe Kleine-König <ukleinek@kernel.org>
This commit is contained in:
Uwe Kleine-König 2025-10-25 14:23:56 +02:00 committed by Uwe Kleine-König
parent 264b501bb4
commit a69a54f8df
1 changed files with 1 additions and 55 deletions

View File

@ -15,38 +15,7 @@
prelude::*,
types::{ARef, AlwaysRefCounted, Opaque},
};
use core::{convert::TryFrom, marker::PhantomData, ptr::NonNull};
/// PWM polarity. Mirrors [`enum pwm_polarity`](srctree/include/linux/pwm.h).
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum Polarity {
/// Normal polarity (duty cycle defines the high period of the signal).
Normal,
/// Inversed polarity (duty cycle defines the low period of the signal).
Inversed,
}
impl TryFrom<bindings::pwm_polarity> for Polarity {
type Error = Error;
fn try_from(polarity: bindings::pwm_polarity) -> Result<Self, Error> {
match polarity {
bindings::pwm_polarity_PWM_POLARITY_NORMAL => Ok(Polarity::Normal),
bindings::pwm_polarity_PWM_POLARITY_INVERSED => Ok(Polarity::Inversed),
_ => Err(EINVAL),
}
}
}
impl From<Polarity> for bindings::pwm_polarity {
fn from(polarity: Polarity) -> Self {
match polarity {
Polarity::Normal => bindings::pwm_polarity_PWM_POLARITY_NORMAL,
Polarity::Inversed => bindings::pwm_polarity_PWM_POLARITY_INVERSED,
}
}
}
use core::{marker::PhantomData, ptr::NonNull};
/// Represents a PWM waveform configuration.
/// Mirrors struct [`struct pwm_waveform`](srctree/include/linux/pwm.h).
@ -89,22 +58,6 @@ fn from(wf: Waveform) -> Self {
}
}
/// Wrapper for PWM state [`struct pwm_state`](srctree/include/linux/pwm.h).
#[repr(transparent)]
pub struct State(bindings::pwm_state);
impl State {
/// Creates a `State` wrapper by taking ownership of a C `pwm_state` value.
pub(crate) fn from_c(c_state: bindings::pwm_state) -> Self {
State(c_state)
}
/// Returns `true` if the PWM signal is enabled.
pub fn enabled(&self) -> bool {
self.0.enabled
}
}
/// Describes the outcome of a `round_waveform` operation.
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum RoundingOutcome {
@ -164,13 +117,6 @@ pub fn label(&self) -> Option<&CStr> {
Some(unsafe { CStr::from_char_ptr(label_ptr) })
}
/// Gets a copy of the current state of this PWM device.
pub fn state(&self) -> State {
// SAFETY: `self.as_raw()` gives a valid pointer. `(*self.as_raw()).state`
// is a valid `pwm_state` struct. `State::from_c` copies this data.
State::from_c(unsafe { (*self.as_raw()).state })
}
/// Sets the PWM waveform configuration and enables the PWM signal.
pub fn set_waveform(&self, wf: &Waveform, exact: bool) -> Result {
let c_wf = bindings::pwm_waveform::from(*wf);