[PATCH v6 0/8] media: qcom: camss: Introduce support for named power-domains

From: Bryan O'Donoghue
Date: Thu Nov 23 2023 - 12:03:09 EST


Changes in v6:

- Kernel test robot sparse spalt fix - kernel robot

- Imports an additional patch to switch on named pds for sm8250
I debated including this with myself and didn't opt for it.
Happy to pull it in based on feedback though - Konrad

- Changes code in patch #4 newlines, returns.
Christmas tree's per suggestion barring placing ret last - Konrad

- Moves switching off of TITAN gdsc to last.
This is how it "ought" to happen logically it is simply happenstance that
TOP is the parent of the VFE gdscs that the ordering of the switching off
is irrelevant but, the code should really make the call per our
conceptual expectations - bod, Konrad

Link: https://lore.kernel.org/r/20231118-b4-camss-named-power-domains-v5-0-55eb0f35a30a@xxxxxxxxxx
Link: https://git.codelinaro.org/bryan.odonoghue/kernel/-/tree/b4/b4-camss-named-power-domains-v6
Link: https://git.codelinaro.org/bryan.odonoghue/kernel/-/tree/b4/b4-camss-named-power-domains-v6+sm8250

V5:
- Adds Konrad's RB -> b4 trailers --update
- Amends comment and control flow disjunction for readability - Konrad

- Link to v4: https://lore.kernel.org/r/20231103-b4-camss-named-power-domains-v4-0-33a905359dbc@xxxxxxxxxx
Link:
https://git.codelinaro.org/bryan.odonoghue/kernel/-/tree/b4/b4-camss-named-power-domains-v5
sm8250-testable: https://git.codelinaro.org/bryan.odonoghue/kernel/-/tree/b4/b4-camss-named-power-domains-v5+sm8250

V4:
- Updates camss_configure_pd() to use has_pd to determine if
a VFE has a pd instead of comparing to vfe_num
- Brings in is_lite fixes from Matti
The determination of IS_LITE() has been a running sore in this code for
some time.

Named power domains remove magic index dependencies.
Similarly adding an "is_lite" flag to our resources removes the last
of the magic indexing sins, so this is an opportune series to add it in.

Link: https://git.codelinaro.org/bryan.odonoghue/kernel/-/tree/b4/b4-camss-named-power-domains-v4
sm8250-testable: https://git.codelinaro.org/bryan.odonoghue/kernel/-/tree/b4/b4-camss-named-power-domains-v4+sm8250
Link: https://lore.kernel.org/r/20231101-b4-camss-named-power-domains-v3-0-bbdf5f22462a@xxxxxxxxxx

V3:
- Includes bugfix reported on IRC
genpd_link and genpd should be checked for NULL on the cleanup path.
Matti Lehtimäki
- Retains NULL check before dev_pm_domain_attach_by_name()
I experimented with the suggested drop but of_property_match_string()
chokes
Link: https://lore.kernel.org/lkml/883ce8a7-80e1-4065-a957-424d0b4a6535@xxxxxxxxxx/T/#m10e5a43d0245f13eca177ef2f65b24259c641030
Konrad
- Fixes spelling caught by codespell - Konrad

Link: https://git.codelinaro.org/bryan.odonoghue/kernel/-/tree/b4/b4-camss-named-power-domains-v3
sm8250-testable: https://git.codelinaro.org/bryan.odonoghue/kernel/-/tree/b4/b4-camss-named-power-domains-v3+sm8250

V2:
- Incorporates Konrad's suggestion re: removing 'id'
- Adds RB - Konrad
- Adds in a flag to indicate if a VFE has a power domain.
As I rebased this series I realised we had some magic indexing for VFE v
VFE Lite, which isn't the root cause of my bug bear in this series but is
the same sin - inferring functionality from indexing.
Once we transition fully to named pds we won't need a 'has_pd' to flag
which VFEs need power-domain attachment and which don't.
That transition will require populating all upstream dtsi with pd-names
and then deprecating the old way.
has_pd is a far better choice than inferring from indexes so, I've added.

Link: https://git.codelinaro.org/bryan.odonoghue/kernel/-/commits/aa45a2b58aa1e187a2698a65164d694251f08fa1

V1:
At the moment the Qcom CAMSS driver relies on the declaration order of
power-domains within the dtsi to determine which power-domain relates to a
VFE and which power-domain relates to the top-level (top) CAMSS
power-domain.

VFE power-domains must be declared prior to the top power-domain. The top
power-domain must be declared last. Early SoCs have just one top
power-domain with later SoCs introducing VFE specific power-domains.

Differentiating between the number of power-domains results in lots of code
which is brittle and which we can mostly get rid of with named
power-domains.

The reliance on declaration ordering is in-effect magic number indexing.

This series introduces named power-domains for CAMSS and refactors some of
the code in CAMSS to support the new named power-domains. We continue to
support the legacy indexing model with an intention to remove after a
reasonable transition period.

New SoC additions should use named power-domains from now on.

Tested on x13s, rb5, db410c

Link: https://git.codelinaro.org/bryan.odonoghue/kernel/-/tree/linux-next-23-10-23-camss-named-power-domains

Bryan O'Donoghue (5):
media: qcom: camss: Flag which VFEs require a power-domain
media: qcom: camss: Convert to per-VFE pointer for power-domain
linkages
media: qcom: camss: Use common VFE pm_domain_on/pm_domain_off where
applicable
media: qcom: camss: Move VFE power-domain specifics into vfe.c
media: qcom: camss: Add support for named power-domains

.../media/platform/qcom/camss/camss-vfe-170.c | 36 --------
.../media/platform/qcom/camss/camss-vfe-4-1.c | 8 +-
.../media/platform/qcom/camss/camss-vfe-4-7.c | 36 --------
.../media/platform/qcom/camss/camss-vfe-4-8.c | 31 -------
.../media/platform/qcom/camss/camss-vfe-480.c | 36 --------
drivers/media/platform/qcom/camss/camss-vfe.c | 77 ++++++++++++++++
drivers/media/platform/qcom/camss/camss-vfe.h | 16 ++++
drivers/media/platform/qcom/camss/camss.c | 87 ++++++++++++-------
drivers/media/platform/qcom/camss/camss.h | 7 +-
9 files changed, 156 insertions(+), 178 deletions(-)

--
2.42.0

---
---
Bryan O'Donoghue (6):
media: qcom: camss: Flag which VFEs require a power-domain
media: qcom: camss: Convert to per-VFE pointer for power-domain linkages
media: qcom: camss: Use common VFE pm_domain_on/pm_domain_off where applicable
media: qcom: camss: Move VFE power-domain specifics into vfe.c
media: qcom: camss: Add support for named power-domains
media: qcom: camss: Add sm8250 named power-domain support

Matti Lehtimäki (2):
media: qcom: camss: Flag VFE-lites to support more VFEs
media: qcom: camss: Flag CSID-lites to support more CSIDs

.../media/platform/qcom/camss/camss-csid-gen2.c | 31 +++---
drivers/media/platform/qcom/camss/camss-csid.c | 5 +
drivers/media/platform/qcom/camss/camss-csid.h | 7 ++
drivers/media/platform/qcom/camss/camss-vfe-170.c | 36 -------
drivers/media/platform/qcom/camss/camss-vfe-4-1.c | 8 +-
drivers/media/platform/qcom/camss/camss-vfe-4-7.c | 36 -------
drivers/media/platform/qcom/camss/camss-vfe-4-8.c | 31 ------
drivers/media/platform/qcom/camss/camss-vfe-480.c | 69 +++---------
drivers/media/platform/qcom/camss/camss-vfe.c | 81 ++++++++++++++
drivers/media/platform/qcom/camss/camss-vfe.h | 26 +++++
drivers/media/platform/qcom/camss/camss.c | 119 +++++++++++++--------
drivers/media/platform/qcom/camss/camss.h | 10 +-
12 files changed, 236 insertions(+), 223 deletions(-)
---
base-commit: 48016737a9af47328dd321df4dd3479ed5e2041d
change-id: 20231031-b4-camss-named-power-domains-cc2ac2722543

Best regards,
--
Bryan O'Donoghue <bryan.odonoghue@xxxxxxxxxx>