Em Thu, 9 Mar 2017 13:54:45 +0200 Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> escreveu: > The caller must always call the s_power() op symmetrically powering the > device on and off. This is the practice albeit it was not documented. A > lot of sub-device drivers rely on it, so document it accordingly. Actually, there are several non-embedded drivers that don't call s_power() symmetrically, as they use it just put a sub-device in standby mode. I remember some widely used tuners that has this behavior. Such subdevs automatically awaken when a command is issued to them (for example, requesting the tuner to tune into a channel). If you're willing to change the kABI, you need first to patch such drivers. Regards, Mauro > > Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> > --- > include/media/v4l2-subdev.h | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h > index 0ab1c5d..b4e521d 100644 > --- a/include/media/v4l2-subdev.h > +++ b/include/media/v4l2-subdev.h > @@ -172,8 +172,10 @@ struct v4l2_subdev_io_pin_config { > * > * @s_register: callback for %VIDIOC_G_REGISTER ioctl handler code. > * > - * @s_power: puts subdevice in power saving mode (on == 0) or normal operation > - * mode (on == 1). > + * @s_power: Puts subdevice in power saving mode (on == 0) or normal operation > + * mode (on == 1). The caller is responsible for calling the op > + * symmetrically, i.e. calling s_power(dev, 1) once requires later calling > + * s_power(dev, 0) once. > * > * @interrupt_service_routine: Called by the bridge chip's interrupt service > * handler, when an interrupt status has be raised due to this subdev, Thanks, Mauro