diff options
author | Uwe Kleine-König <uwe@kleine-koenig.org> | 2024-03-17 11:43:23 +0100 |
---|---|---|
committer | Uwe Kleine-König <uwe@kleine-koenig.org> | 2024-03-17 11:43:23 +0100 |
commit | 046435df57055c60d72bed414d2fac2d0161a945 (patch) | |
tree | f2aedda4480d47afb74d34987827a4b51b8c3168 | |
parent | 8ef8f5b1f4d9c20d361cbeef0da64504e9d3bc1c (diff) | |
download | libpwm-046435df57055c60d72bed414d2fac2d0161a945.tar.gz |
cdev: Implement get_state callback
-rw-r--r-- | cdev.c | 18 |
1 files changed, 16 insertions, 2 deletions
@@ -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) |