mbox series

[0/2] media: dt-bindings: media: sm8250-camss: Add power-domain-names property

Message ID 20220518121104.951621-1-vladimir.zapolskiy@linaro.org (mailing list archive)
Headers show
Series media: dt-bindings: media: sm8250-camss: Add power-domain-names property | expand

Message

Vladimir Zapolskiy May 18, 2022, 12:11 p.m. UTC
QCOM SM8250 camera subsystem depends on three power domains, at the moment
all of them are not differentiated one from another, however the power
domains compose a hierarchical structure with vfe0 and vfe1 as subdomains
of titan_top, also managing vfe0 and vfe1 separately allows to get more
fine-grained power control in runtime.

The change relates to my review comment for v2 of CAMSS on SM8250 submission:

   https://lore.kernel.org/all/13ad033e-cd5d-3a8c-b036-50a3ac4245c0@linaro.org/

Apparently it becomes important to manage CAMSS power domains much better for
newer platforms, this referes to platforms with Titan GDSC, for instance CAMSS
on SM8450 has 6 power domains, and dealing with them in bulk is not an option.

There was a note in commit 2f6f8af67203 ("media: camss: Refactor VFE power
domain toggling") about problems with power VFE domains on/off, but perhaps
it's related to the fact that Titan GDSC is a special power domain and VFE
are subdomains, the latter shall not be enabled earlier than the Titan, but
the driver did not construct a proper hierarchy and leaves a room for races.

The change should have no implications on any SM8250 CAMSS users, since
none of the supported in upstream boards enables the camss device tree node.
The correspondent changes in the driver will follow this dt specific series.

Most likely a similar change is required for SDM845 platform, but it would
need additional investigation and testing.

Vladimir Zapolskiy (2):
  media: dt-bindings: media: sm8250-camss: Add power-domain-names property
  arm64: dts: qcom: sm8250: camss: Add power-domain-names property

 .../devicetree/bindings/media/qcom,sm8250-camss.yaml       | 7 +++++++
 arch/arm64/boot/dts/qcom/sm8250.dtsi                       | 1 +
 2 files changed, 8 insertions(+)

Comments

Bryan O'Donoghue May 18, 2022, 1:16 p.m. UTC | #1
On 18/05/2022 13:11, Vladimir Zapolskiy wrote:
> QCOM SM8250 camera subsystem depends on three power domains, at the moment
> all of them are not differentiated one from another, however the power
> domains compose a hierarchical structure with vfe0 and vfe1 as subdomains
> of titan_top, also managing vfe0 and vfe1 separately allows to get more
> fine-grained power control in runtime.
> 
> The change relates to my review comment for v2 of CAMSS on SM8250 submission:
> 
>     https://lore.kernel.org/all/13ad033e-cd5d-3a8c-b036-50a3ac4245c0@linaro.org/
> 
> Apparently it becomes important to manage CAMSS power domains much better for
> newer platforms, this referes to platforms with Titan GDSC, for instance CAMSS
> on SM8450 has 6 power domains, and dealing with them in bulk is not an option.
> 
> There was a note in commit 2f6f8af67203 ("media: camss: Refactor VFE power
> domain toggling") about problems with power VFE domains on/off, but perhaps
> it's related to the fact that Titan GDSC is a special power domain and VFE
> are subdomains, the latter shall not be enabled earlier than the Titan, but
> the driver did not construct a proper hierarchy and leaves a room for races.
> 
> The change should have no implications on any SM8250 CAMSS users, since
> none of the supported in upstream boards enables the camss device tree node.
> The correspondent changes in the driver will follow this dt specific series.
> 
> Most likely a similar change is required for SDM845 platform, but it would
> need additional investigation and testing.
> 
> Vladimir Zapolskiy (2):
>    media: dt-bindings: media: sm8250-camss: Add power-domain-names property
>    arm64: dts: qcom: sm8250: camss: Add power-domain-names property
> 
>   .../devicetree/bindings/media/qcom,sm8250-camss.yaml       | 7 +++++++
>   arch/arm64/boot/dts/qcom/sm8250.dtsi                       | 1 +
>   2 files changed, 8 insertions(+)
> 

This doesn't break anything for me on sm8250

Tested-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>

for both
Vladimir Zapolskiy May 19, 2022, 9:53 p.m. UTC | #2
On 5/18/22 15:11, Vladimir Zapolskiy wrote:
> QCOM SM8250 camera subsystem depends on three power domains, at the moment
> all of them are not differentiated one from another, however the power
> domains compose a hierarchical structure with vfe0 and vfe1 as subdomains
> of titan_top, also managing vfe0 and vfe1 separately allows to get more
> fine-grained power control in runtime.
> 
> The change relates to my review comment for v2 of CAMSS on SM8250 submission:
> 
>     https://lore.kernel.org/all/13ad033e-cd5d-3a8c-b036-50a3ac4245c0@linaro.org/
> 
> Apparently it becomes important to manage CAMSS power domains much better for
> newer platforms, this referes to platforms with Titan GDSC, for instance CAMSS
> on SM8450 has 6 power domains, and dealing with them in bulk is not an option.
> 
> There was a note in commit 2f6f8af67203 ("media: camss: Refactor VFE power
> domain toggling") about problems with power VFE domains on/off, but perhaps
> it's related to the fact that Titan GDSC is a special power domain and VFE
> are subdomains, the latter shall not be enabled earlier than the Titan, but
> the driver did not construct a proper hierarchy and leaves a room for races.
> 
> The change should have no implications on any SM8250 CAMSS users, since
> none of the supported in upstream boards enables the camss device tree node.
> The correspondent changes in the driver will follow this dt specific series.
> 
> Most likely a similar change is required for SDM845 platform, but it would
> need additional investigation and testing.
> 
> Vladimir Zapolskiy (2):
>    media: dt-bindings: media: sm8250-camss: Add power-domain-names property
>    arm64: dts: qcom: sm8250: camss: Add power-domain-names property
> 
>   .../devicetree/bindings/media/qcom,sm8250-camss.yaml       | 7 +++++++
>   arch/arm64/boot/dts/qcom/sm8250.dtsi                       | 1 +
>   2 files changed, 8 insertions(+)
> 

These changes will be unneeded, if it is reliable to state that the order
of 'power-domains' array values is fixed.

 From Documentation/devicetree/bindings/media/qcom,sm8250-camss.yaml

   power-domains:
     items:
       - description: IFE0 GDSC - Image Front End, Global Distributed Switch Controller.
       - description: IFE1 GDSC - Image Front End, Global Distributed Switch Controller.
       - description: Titan GDSC - Titan ISP Block, Global Distributed Switch Controller.

Apparently it's insufficient to ensure the fixed order of the power domains
by running a check against the schema, and likely it can not be improved,
but please correct me here, if I'm wrong.

That's said, what is the preferred way here? Leave everything as is and rely
on the order of item descriptions, or add a new power-domain-names property?

--
Best wishes,
Vladimir
Rob Herring (Arm) June 1, 2022, 8:24 p.m. UTC | #3
On Fri, May 20, 2022 at 12:53:02AM +0300, Vladimir Zapolskiy wrote:
> On 5/18/22 15:11, Vladimir Zapolskiy wrote:
> > QCOM SM8250 camera subsystem depends on three power domains, at the moment
> > all of them are not differentiated one from another, however the power
> > domains compose a hierarchical structure with vfe0 and vfe1 as subdomains
> > of titan_top, also managing vfe0 and vfe1 separately allows to get more
> > fine-grained power control in runtime.
> > 
> > The change relates to my review comment for v2 of CAMSS on SM8250 submission:
> > 
> >     https://lore.kernel.org/all/13ad033e-cd5d-3a8c-b036-50a3ac4245c0@linaro.org/
> > 
> > Apparently it becomes important to manage CAMSS power domains much better for
> > newer platforms, this referes to platforms with Titan GDSC, for instance CAMSS
> > on SM8450 has 6 power domains, and dealing with them in bulk is not an option.
> > 
> > There was a note in commit 2f6f8af67203 ("media: camss: Refactor VFE power
> > domain toggling") about problems with power VFE domains on/off, but perhaps
> > it's related to the fact that Titan GDSC is a special power domain and VFE
> > are subdomains, the latter shall not be enabled earlier than the Titan, but
> > the driver did not construct a proper hierarchy and leaves a room for races.
> > 
> > The change should have no implications on any SM8250 CAMSS users, since
> > none of the supported in upstream boards enables the camss device tree node.
> > The correspondent changes in the driver will follow this dt specific series.
> > 
> > Most likely a similar change is required for SDM845 platform, but it would
> > need additional investigation and testing.
> > 
> > Vladimir Zapolskiy (2):
> >    media: dt-bindings: media: sm8250-camss: Add power-domain-names property
> >    arm64: dts: qcom: sm8250: camss: Add power-domain-names property
> > 
> >   .../devicetree/bindings/media/qcom,sm8250-camss.yaml       | 7 +++++++
> >   arch/arm64/boot/dts/qcom/sm8250.dtsi                       | 1 +
> >   2 files changed, 8 insertions(+)
> > 
> 
> These changes will be unneeded, if it is reliable to state that the order
> of 'power-domains' array values is fixed.
> 
> From Documentation/devicetree/bindings/media/qcom,sm8250-camss.yaml
> 
>   power-domains:
>     items:
>       - description: IFE0 GDSC - Image Front End, Global Distributed Switch Controller.
>       - description: IFE1 GDSC - Image Front End, Global Distributed Switch Controller.
>       - description: Titan GDSC - Titan ISP Block, Global Distributed Switch Controller.
> 
> Apparently it's insufficient to ensure the fixed order of the power domains
> by running a check against the schema, and likely it can not be improved,
> but please correct me here, if I'm wrong.

Right, the schemas can't check that the order is correct.

> That's said, what is the preferred way here? Leave everything as is and rely
> on the order of item descriptions, or add a new power-domain-names property?

Well, you can't start requiring power-domain-names without breaking the 
ABI and it has to be required to allow any order. Even then, defined 
order is preferred unless there's too many variations and we're stuck 
with no defined order.

Rob
Hans Verkuil Nov. 24, 2022, 9:03 a.m. UTC | #4
Hi Vladimir,

On 18/05/2022 14:11, Vladimir Zapolskiy wrote:
> QCOM SM8250 camera subsystem depends on three power domains, at the moment
> all of them are not differentiated one from another, however the power
> domains compose a hierarchical structure with vfe0 and vfe1 as subdomains
> of titan_top, also managing vfe0 and vfe1 separately allows to get more
> fine-grained power control in runtime.
> 
> The change relates to my review comment for v2 of CAMSS on SM8250 submission:
> 
>    https://lore.kernel.org/all/13ad033e-cd5d-3a8c-b036-50a3ac4245c0@linaro.org/
> 
> Apparently it becomes important to manage CAMSS power domains much better for
> newer platforms, this referes to platforms with Titan GDSC, for instance CAMSS
> on SM8450 has 6 power domains, and dealing with them in bulk is not an option.
> 
> There was a note in commit 2f6f8af67203 ("media: camss: Refactor VFE power
> domain toggling") about problems with power VFE domains on/off, but perhaps
> it's related to the fact that Titan GDSC is a special power domain and VFE
> are subdomains, the latter shall not be enabled earlier than the Titan, but
> the driver did not construct a proper hierarchy and leaves a room for races.
> 
> The change should have no implications on any SM8250 CAMSS users, since
> none of the supported in upstream boards enables the camss device tree node.
> The correspondent changes in the driver will follow this dt specific series.
> 
> Most likely a similar change is required for SDM845 platform, but it would
> need additional investigation and testing.
> 
> Vladimir Zapolskiy (2):
>   media: dt-bindings: media: sm8250-camss: Add power-domain-names property
>   arm64: dts: qcom: sm8250: camss: Add power-domain-names property
> 
>  .../devicetree/bindings/media/qcom,sm8250-camss.yaml       | 7 +++++++
>  arch/arm64/boot/dts/qcom/sm8250.dtsi                       | 1 +
>  2 files changed, 8 insertions(+)
> 

I am marking this series as 'Obsoleted' in patchwork. If you believe this
(or a variant of it) is still needed, then please repost.

Regards,

	Hans