aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUwe Kleine-König <uwe@kleine-koenig.org>2024-03-17 11:43:23 +0100
committerUwe Kleine-König <uwe@kleine-koenig.org>2024-03-17 11:43:23 +0100
commit046435df57055c60d72bed414d2fac2d0161a945 (patch)
treef2aedda4480d47afb74d34987827a4b51b8c3168
parent8ef8f5b1f4d9c20d361cbeef0da64504e9d3bc1c (diff)
downloadlibpwm-046435df57055c60d72bed414d2fac2d0161a945.tar.gz
cdev: Implement get_state callback
-rw-r--r--cdev.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/cdev.c b/cdev.c
index 6371c3f..465e175 100644
--- a/cdev.c
+++ b/cdev.c
@@ -71,8 +71,22 @@ static int pwm_chip_cdev_apply_state(struct pwm *pwm,
static int pwm_chip_cdev_get_state(struct pwm *pwm, struct pwm_state *state)
{
- errno = EIO;
- return -1;
+ struct pwm_cdev *pwm_cdev = container_of(pwm, struct pwm_cdev, pwm);
+ struct pwm_chip_cdev *chip_cdev = container_of(pwm->chip, struct pwm_chip_cdev, chip);
+ const struct pwmchip_state s = {
+ .hwpwm = pwm_cdev->hwpwm,
+ };
+ int ret;
+
+ ret = ioctl(chip_cdev->fd, PWM_IOCTL_GET, &s);
+ if (ret)
+ return ret;
+
+ state->period = s.period;
+ state->duty_cycle = s.duty_cycle;
+ state->duty_offset = s.duty_offset;
+
+ return 0;
}
struct pwm_chip *pwm_chip_cdev_open_by_number(unsigned int num)