Hi all, I have a number of embedded boards that integrate a pwm-based buzzer device, and use the pwm-beeper device driver in order to control this. However the pwm-beeper device driver only supports simple (play / stop) ioctls, so I had implemented a "layered" device driver that would talk to the pwm-beeper device (through evdev), and provide additional ioctls to userspace so that an application could say e.g. "beep for 50ms", and the driver would take care of the timing. This layered device driver used set_fs + vfs_write to talk to the underlying device. However, since [1] this no longer works. I understand that device drivers should implement ->write_iter if they need to be written from kernel space, but evdev does not support this. What is the recommended way to have a layered device driver that can talk to evdev ? Thanks in advance, (If possible, please CC me in any replies) [1]: https://lore.kernel.org/lkml/20200626075836.1998185-9-hch@xxxxxx/ -- Guillermo Rodriguez Garcia guille.rodriguez@xxxxxxxxx