Re: [PATCH v2 0/4] V4L2 sub-device active state helper, CCS fixes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Moi,

On Tue, Oct 10, 2023 at 10:40:05AM +0300, Tomi Valkeinen wrote:
> On 10/10/2023 10:23, Sakari Ailus wrote:
> > Moi,
> > 
> > On Tue, Oct 10, 2023 at 09:52:48AM +0300, Tomi Valkeinen wrote:
> > > On 10/10/2023 01:09, Sakari Ailus wrote:
> > > > Hi folks,
> > > > 
> > > > This set includes a helper for working with V4L2 sub-device active state as
> > > > well as a fix for the CCS driver sub-device state patch.
> > > > 
> > > > since v1:
> > > > 
> > > > - There were other drivers using __v4l2_subdev_state_alloc(). Ouch. Change
> > > >     those users as well. Note that this function should not be used in
> > > >     drivers, hence API niceness is not a high priority.
> > > > 
> > > > Sakari Ailus (4):
> > > >     media: v4l: subdev: Set sub-device active state earlier
> > > >     media: v4l: subdev: Add a helper to tell if a sub-device state is
> > > >       active
> > > >     media: ccs: Rework initialising sub-device state
> > > >     media: ccs: Fix a (harmless) lockdep warning
> > > > 
> > > >    drivers/media/i2c/ccs/ccs-core.c              | 64 ++++++++++++-------
> > > >    .../platform/renesas/rcar-vin/rcar-v4l2.c     |  3 +-
> > > >    .../media/platform/renesas/vsp1/vsp1_entity.c |  3 +-
> > > >    drivers/media/v4l2-core/v4l2-subdev.c         | 14 ++--
> > > >    drivers/staging/media/tegra-video/vi.c        |  2 +-
> > > >    include/media/v4l2-subdev.h                   | 11 +++-
> > > >    6 files changed, 66 insertions(+), 31 deletions(-)
> > > > 
> > > 
> > > I'm not familiar with the CCS driver, and you don't explain much why you are
> > > doing this, so it's a bit unclear to me. But I don't like it.
> > > 
> > > The idea with the subdev state was that the driver doesn't need to know
> > > whether it's active-state or try-state. It should behave the same way in
> > > both cases. This series goes against that.
> > > 
> > > Can you explain a bit what the issue is and what you are doing in this
> > > series?
> > 
> > The driver maintains internal state and that needs to be updated when the
> > configuration (including what's in sub-device state) changes. Generally the
> > driver knows (as for the whence field) which state it's dealing with but
> > that is not the case for init_cfg.
> 
> So you need to set the subdev state to sd->active_state earlier (in patch 1)
> so that the driver can use v4l2_subdev_state_whence()? You don't really
> explain that in the patch descriptions.
> 
> In other words, if init_cfg() were to get a whence-parameter, this wouldn't
> be needed? (I don't want to do that, just trying to understand what's going
> on).

Yes, that's correct.

> 
> > Alternatively I could split the internal workings of the driver into active
> > and try states but I prefer to improve the framework and make the driver
> > simpler.
> 
> I agree with the goal, but I don't think this is improving the framework.
> 
> If we decide that we need to know if a state is an active-state or a
> try-state, I think it's better to add a whence-field into the state itself.
> But I'd rather not.

In all other callbacks the whence is known but not in init_cfg.

Comparing with sd->active_state does this pretty cleanly, without a need to
change APIs.

> 
> > Deducing the internal configuration solely based on sub-device state is not
> > really feasible.
> 
> Am I correct in that what you really need is a way to sub-class the subdev
> state, so that you can have all that internal state in the subdev state, and
> thus all the code in the driver can work in "whence-agnostic" manner? That's
> something we've been thinking about for a long time.

In the case of the CCS driver it's not necessary to store these parameters
for try states: they are driver internal only.

> 
> But the driver needs to be fixed now, not at some point in the future, of
> course. If the sub-classing would solve the issue (i.e. we have a plan in
> mind), I'd rather just hack this in the driver, instead of extending the
> framework, which might easily lead to other drivers going the wrong way too.
> 
> How about a private flag, set before calling v4l2_subdev_init_finalize(),
> and unset after the call. ccs_init_cfg() can look at that flag an if it's
> set, it's initializing an active state.

I dislike using driver specific flags in generic APIs.

While trivial sensor drivers have no use for such functionality, I would be
surprised if there would not be other similar cases.

-- 
Terveisin,

Sakari Ailus



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux