Merge tag 'pwm/for-6.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ukleinek/linux
Pull pwm updates from Uwe Kleine-König:
"Apart from the usual mix of new drivers (pwm-argon-fan-hat), adding
support for variants to existing drivers, minor improvements to both
drivers and docs, device tree documenation updates, the noteworthy
changes are:
- A hwmon companion driver to pwm-mc33xs2410 living in drivers/hwmon
and acked by Guenter Roeck
- chardev support for PWM devices. This leverages atomic PWM updates
to userspace and at the same time simplifies and accelerates PWM
configuration changes"
* tag 'pwm/for-6.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ukleinek/linux: (35 commits)
pwm: raspberrypi-poe: Fix spelling mistake "Firwmware" -> "Firmware"
hwmon: add support for MC33XS2410 hardware monitoring
pwm: mc33xs2410: add hwmon support
pwm: img: Remove redundant pm_runtime_mark_last_busy() calls
pwm: Expose PWM_WFHWSIZE in public header
dt-bindings: pwm: Convert lpc32xx-pwm.txt to yaml format
docs: pwm: Adapt Locking paragraph to reality
pwm: twl-led: Drop driver local locking
pwm: sun4i: Drop driver local locking
pwm: sti: Drop driver local locking
pwm: microchip-core: Drop driver local locking
pwm: lpc18xx-sct: Drop driver local locking
pwm: fsl-ftm: Drop driver local locking
pwm: clps711x: Drop driver local locking
pwm: atmel: Drop driver local locking
pwm: argon-fan-hat: Add Argon40 Fan HAT support
dt-bindings: pwm: argon40,fan-hat: Document Argon40 Fan HAT
dt-bindings: vendor-prefixes: Document Argon40
pwm: pwm-mediatek: Add support for PWM IP V3.0.2 in MT6991/MT8196
pwm: pwm-mediatek: Pass PWM_CK_26M_SEL from platform data
...
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
|
||||
|
||||
#ifndef _UAPI_PWM_H_
|
||||
#define _UAPI_PWM_H_
|
||||
|
||||
#include <linux/ioctl.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
/**
|
||||
* struct pwmchip_waveform - Describe a PWM waveform for a pwm_chip's PWM channel
|
||||
* @hwpwm: per-chip relative index of the PWM device
|
||||
* @__pad: padding, must be zero
|
||||
* @period_length_ns: duration of the repeating period.
|
||||
* A value of 0 represents a disabled PWM.
|
||||
* @duty_length_ns: duration of the active part in each period
|
||||
* @duty_offset_ns: offset of the rising edge from a period's start
|
||||
*/
|
||||
struct pwmchip_waveform {
|
||||
__u32 hwpwm;
|
||||
__u32 __pad;
|
||||
__u64 period_length_ns;
|
||||
__u64 duty_length_ns;
|
||||
__u64 duty_offset_ns;
|
||||
};
|
||||
|
||||
/* Reserves the passed hwpwm for exclusive control. */
|
||||
#define PWM_IOCTL_REQUEST _IO(0x75, 1)
|
||||
|
||||
/* counter part to PWM_IOCTL_REQUEST */
|
||||
#define PWM_IOCTL_FREE _IO(0x75, 2)
|
||||
|
||||
/*
|
||||
* Modifies the passed wf according to hardware constraints. All parameters are
|
||||
* rounded down to the next possible value, unless there is no such value, then
|
||||
* values are rounded up. Note that zero isn't considered for rounding down
|
||||
* period_length_ns.
|
||||
*/
|
||||
#define PWM_IOCTL_ROUNDWF _IOWR(0x75, 3, struct pwmchip_waveform)
|
||||
|
||||
/* Get the currently implemented waveform */
|
||||
#define PWM_IOCTL_GETWF _IOWR(0x75, 4, struct pwmchip_waveform)
|
||||
|
||||
/* Like PWM_IOCTL_ROUNDWF + PWM_IOCTL_SETEXACTWF in one go. */
|
||||
#define PWM_IOCTL_SETROUNDEDWF _IOW(0x75, 5, struct pwmchip_waveform)
|
||||
|
||||
/*
|
||||
* Program the PWM to emit exactly the passed waveform, subject only to rounding
|
||||
* down each value less than 1 ns. Returns 0 on success, -EDOM if the waveform
|
||||
* cannot be implemented exactly, or other negative error codes.
|
||||
*/
|
||||
#define PWM_IOCTL_SETEXACTWF _IOW(0x75, 6, struct pwmchip_waveform)
|
||||
|
||||
#endif /* _UAPI_PWM_H_ */
|
||||
Reference in New Issue
Block a user