All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 00/10] media: qcom: camss: Bugfix series
@ 2023-08-30 15:16 Bryan O'Donoghue
  2023-08-30 15:16 ` [PATCH v3 01/10] media: qcom: camss: Fix pm_domain_on sequence in probe Bryan O'Donoghue
                   ` (11 more replies)
  0 siblings, 12 replies; 13+ messages in thread
From: Bryan O'Donoghue @ 2023-08-30 15:16 UTC (permalink / raw)
  To: rfoss, todor.too, bryan.odonoghue, agross, andersson,
	konrad.dybcio, mchehab, hverkuil-cisco, laurent.pinchart,
	sakari.ailus, andrey.konovalov
  Cc: linux-media, linux-arm-msm, linux-kernel

V3:
- Adds Reviewed-by where indicated - Laurent
- Adds a new patch for genpd cleanup. TBH I completely missed this so thanks ! - Laurent
- "media: qcom: camss: Fix V4L2 async notifier error path" stays the same fixes spalt in -next
  Fixes: 51397a4ec75d ("media: qcom: Initialise V4L2 async notifier later")
- I like the suggesting of using a common fix for vfe-17x and vfe-480 however, I believe
  we need to support multiple write-master/RDI => VCs in 17x which currently we only do
  in vfe-480 so sharing the code between the two here right now, is	n't possible.
- Included other suggestions on vfe-17x and vfe-480 - Laurent
- I didn't change the val |= 1 << CSI2_RX_CFG1_VC_MODE to BIT(2)
  The reason for that is all of the code uses this odd bit-shifting and I'd rather do
  the conversion from shifting to BIT(x) as a distinct series instead of piecemeal - bod

V2:
- Amends commit log for TPG fix to cover dropping of fixed
  VC when setting up a TPG - Konrad

- Leaves GENMASK etc out. I'm happy to do a "make it pretty"
  series later on. - bod

Link: https://git.codelinaro.org/bryan.odonoghue/kernel/-/commits/Bugfix-series-v2?ref_type=tags

V1:
- Drops dt_id = vc * 4 in favour of a patch in a later series - Hans
  Link: https://git.codelinaro.org/bryan.odonoghue/kernel/-/commit/d4c382c5d6ee153b410a01e172b3e811011d0b14
- Adds Konrad's Acked-by as indicated

V0:
This series covers a number of Fixes: all of which are for application to
stable as well as -next with the exception of the second patch which is a
fix for a SHA that is still in -next.

Link: https://git.codelinaro.org/bryan.odonoghue/kernel/-/tree/linux-next-23-08-07-db410c-rb3-camss-dts-v3

This series is part of a larger set of fixes, improvements developed/found
when adding a new SoC.

Link: https://git.codelinaro.org/bryan.odonoghue/kernel/-/tree/lenovo-x13s-v6.5-rc4-x13s-camss-patches

First pass on that larger series is to get all of the current Fixes: in the
branch out.

Andrey Konovalov (1):
  media: qcom: camss: Fix csid-gen2 for test pattern generator

Bryan O'Donoghue (9):
  media: qcom: camss: Fix pm_domain_on sequence in probe
  media: qcom: camss: Fix V4L2 async notifier error path
  media: qcom: camss: Fix genpd cleanup
  media: qcom: camss: Fix vfe_get() error jump
  media: qcom: camss: Fix VFE-17x vfe_disable_output()
  media: qcom: camss: Fix VFE-480 vfe_disable_output()
  media: qcom: camss: Fix missing vfe_lite clocks check
  media: qcom: camss: Fix invalid clock enable bit disjunction
  media: qcom: camss: Fix set CSI2_RX_CFG1_VC_MODE when VC is greater
    than 3

 .../platform/qcom/camss/camss-csid-gen2.c     | 11 ++--
 .../qcom/camss/camss-csiphy-3ph-1-0.c         |  2 +-
 .../media/platform/qcom/camss/camss-vfe-170.c | 22 +-------
 .../media/platform/qcom/camss/camss-vfe-480.c | 22 +-------
 drivers/media/platform/qcom/camss/camss-vfe.c |  5 +-
 drivers/media/platform/qcom/camss/camss.c     | 55 +++++++++++--------
 6 files changed, 46 insertions(+), 71 deletions(-)

-- 
2.41.0


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH v3 01/10] media: qcom: camss: Fix pm_domain_on sequence in probe
  2023-08-30 15:16 [PATCH v3 00/10] media: qcom: camss: Bugfix series Bryan O'Donoghue
@ 2023-08-30 15:16 ` Bryan O'Donoghue
  2023-08-30 15:16 ` [PATCH v3 02/10] media: qcom: camss: Fix V4L2 async notifier error path Bryan O'Donoghue
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Bryan O'Donoghue @ 2023-08-30 15:16 UTC (permalink / raw)
  To: rfoss, todor.too, bryan.odonoghue, agross, andersson,
	konrad.dybcio, mchehab, hverkuil-cisco, laurent.pinchart,
	sakari.ailus, andrey.konovalov
  Cc: linux-media, linux-arm-msm, linux-kernel, stable

We need to make sure camss_configure_pd() happens before
camss_register_entities() as the vfe_get() path relies on the pointer
provided by camss_configure_pd().

Fix the ordering sequence in probe to ensure the pointers vfe_get() demands
are present by the time camss_register_entities() runs.

In order to facilitate backporting to stable kernels I've moved the
configure_pd() call pretty early on the probe() function so that
irrespective of the existence of the old error handling jump labels this
patch should still apply to -next circa Aug 2023 to v5.13 inclusive.

Fixes: 2f6f8af67203 ("media: camss: Refactor VFE power domain toggling")
Cc: stable@vger.kernel.org
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/media/platform/qcom/camss/camss.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/media/platform/qcom/camss/camss.c b/drivers/media/platform/qcom/camss/camss.c
index f11dc59135a5a..75991d849b571 100644
--- a/drivers/media/platform/qcom/camss/camss.c
+++ b/drivers/media/platform/qcom/camss/camss.c
@@ -1619,6 +1619,12 @@ static int camss_probe(struct platform_device *pdev)
 	if (ret < 0)
 		goto err_cleanup;
 
+	ret = camss_configure_pd(camss);
+	if (ret < 0) {
+		dev_err(dev, "Failed to configure power domains: %d\n", ret);
+		goto err_cleanup;
+	}
+
 	ret = camss_init_subdevices(camss);
 	if (ret < 0)
 		goto err_cleanup;
@@ -1678,12 +1684,6 @@ static int camss_probe(struct platform_device *pdev)
 		}
 	}
 
-	ret = camss_configure_pd(camss);
-	if (ret < 0) {
-		dev_err(dev, "Failed to configure power domains: %d\n", ret);
-		return ret;
-	}
-
 	pm_runtime_enable(dev);
 
 	return 0;
-- 
2.41.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v3 02/10] media: qcom: camss: Fix V4L2 async notifier error path
  2023-08-30 15:16 [PATCH v3 00/10] media: qcom: camss: Bugfix series Bryan O'Donoghue
  2023-08-30 15:16 ` [PATCH v3 01/10] media: qcom: camss: Fix pm_domain_on sequence in probe Bryan O'Donoghue
@ 2023-08-30 15:16 ` Bryan O'Donoghue
  2023-08-30 15:16 ` [PATCH v3 03/10] media: qcom: camss: Fix genpd cleanup Bryan O'Donoghue
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Bryan O'Donoghue @ 2023-08-30 15:16 UTC (permalink / raw)
  To: rfoss, todor.too, bryan.odonoghue, agross, andersson,
	konrad.dybcio, mchehab, hverkuil-cisco, laurent.pinchart,
	sakari.ailus, andrey.konovalov
  Cc: linux-media, linux-arm-msm, linux-kernel

Previously the jump label err_cleanup was used higher in the probe()
function to release the async notifier however the async notifier
registration was moved later in the code rendering the previous four jumps
redundant.

Rename the label from err_cleanup to err_v4l2_device_register to capture
what the jump does.

Fixes: 51397a4ec75d ("media: qcom: Initialise V4L2 async notifier later")
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
---
 drivers/media/platform/qcom/camss/camss.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/media/platform/qcom/camss/camss.c b/drivers/media/platform/qcom/camss/camss.c
index 75991d849b571..a925b2bfd8989 100644
--- a/drivers/media/platform/qcom/camss/camss.c
+++ b/drivers/media/platform/qcom/camss/camss.c
@@ -1617,21 +1617,21 @@ static int camss_probe(struct platform_device *pdev)
 
 	ret = camss_icc_get(camss);
 	if (ret < 0)
-		goto err_cleanup;
+		return ret;
 
 	ret = camss_configure_pd(camss);
 	if (ret < 0) {
 		dev_err(dev, "Failed to configure power domains: %d\n", ret);
-		goto err_cleanup;
+		return ret;
 	}
 
 	ret = camss_init_subdevices(camss);
 	if (ret < 0)
-		goto err_cleanup;
+		return ret;
 
 	ret = dma_set_mask_and_coherent(dev, 0xffffffff);
 	if (ret)
-		goto err_cleanup;
+		return ret;
 
 	camss->media_dev.dev = camss->dev;
 	strscpy(camss->media_dev.model, "Qualcomm Camera Subsystem",
@@ -1643,7 +1643,7 @@ static int camss_probe(struct platform_device *pdev)
 	ret = v4l2_device_register(camss->dev, &camss->v4l2_dev);
 	if (ret < 0) {
 		dev_err(dev, "Failed to register V4L2 device: %d\n", ret);
-		goto err_cleanup;
+		return ret;
 	}
 
 	v4l2_async_nf_init(&camss->notifier, &camss->v4l2_dev);
@@ -1651,12 +1651,12 @@ static int camss_probe(struct platform_device *pdev)
 	num_subdevs = camss_of_parse_ports(camss);
 	if (num_subdevs < 0) {
 		ret = num_subdevs;
-		goto err_cleanup;
+		goto err_v4l2_device_unregister;
 	}
 
 	ret = camss_register_entities(camss);
 	if (ret < 0)
-		goto err_cleanup;
+		goto err_v4l2_device_unregister;
 
 	if (num_subdevs) {
 		camss->notifier.ops = &camss_subdev_notifier_ops;
@@ -1690,7 +1690,7 @@ static int camss_probe(struct platform_device *pdev)
 
 err_register_subdevs:
 	camss_unregister_entities(camss);
-err_cleanup:
+err_v4l2_device_unregister:
 	v4l2_device_unregister(&camss->v4l2_dev);
 	v4l2_async_nf_cleanup(&camss->notifier);
 
-- 
2.41.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v3 03/10] media: qcom: camss: Fix genpd cleanup
  2023-08-30 15:16 [PATCH v3 00/10] media: qcom: camss: Bugfix series Bryan O'Donoghue
  2023-08-30 15:16 ` [PATCH v3 01/10] media: qcom: camss: Fix pm_domain_on sequence in probe Bryan O'Donoghue
  2023-08-30 15:16 ` [PATCH v3 02/10] media: qcom: camss: Fix V4L2 async notifier error path Bryan O'Donoghue
@ 2023-08-30 15:16 ` Bryan O'Donoghue
  2023-08-30 15:16 ` [PATCH v3 04/10] media: qcom: camss: Fix vfe_get() error jump Bryan O'Donoghue
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Bryan O'Donoghue @ 2023-08-30 15:16 UTC (permalink / raw)
  To: rfoss, todor.too, bryan.odonoghue, agross, andersson,
	konrad.dybcio, mchehab, hverkuil-cisco, laurent.pinchart,
	sakari.ailus, andrey.konovalov
  Cc: linux-media, linux-arm-msm, linux-kernel, stable

Right now we never release the power-domains properly on the error path.
Add a routine to be reused for this purpose and appropriate jumps in
probe() to run that routine where necessary.

Fixes: 2f6f8af67203 ("media: camss: Refactor VFE power domain toggling")
Cc: stable@vger.kernel.org
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
---
 drivers/media/platform/qcom/camss/camss.c | 35 ++++++++++++++---------
 1 file changed, 21 insertions(+), 14 deletions(-)

diff --git a/drivers/media/platform/qcom/camss/camss.c b/drivers/media/platform/qcom/camss/camss.c
index a925b2bfd8989..c6df862c79e39 100644
--- a/drivers/media/platform/qcom/camss/camss.c
+++ b/drivers/media/platform/qcom/camss/camss.c
@@ -1538,6 +1538,20 @@ static int camss_icc_get(struct camss *camss)
 	return 0;
 }
 
+static void camss_genpd_cleanup(struct camss *camss)
+{
+	int i;
+
+	if (camss->genpd_num == 1)
+		return;
+
+	if (camss->genpd_num > camss->vfe_num)
+		device_link_del(camss->genpd_link[camss->genpd_num - 1]);
+
+	for (i = 0; i < camss->genpd_num; i++)
+		dev_pm_domain_detach(camss->genpd[i], true);
+}
+
 /*
  * camss_probe - Probe CAMSS platform device
  * @pdev: Pointer to CAMSS platform device
@@ -1627,11 +1641,11 @@ static int camss_probe(struct platform_device *pdev)
 
 	ret = camss_init_subdevices(camss);
 	if (ret < 0)
-		return ret;
+		goto err_genpd_cleanup;
 
 	ret = dma_set_mask_and_coherent(dev, 0xffffffff);
 	if (ret)
-		return ret;
+		goto err_genpd_cleanup;
 
 	camss->media_dev.dev = camss->dev;
 	strscpy(camss->media_dev.model, "Qualcomm Camera Subsystem",
@@ -1643,7 +1657,7 @@ static int camss_probe(struct platform_device *pdev)
 	ret = v4l2_device_register(camss->dev, &camss->v4l2_dev);
 	if (ret < 0) {
 		dev_err(dev, "Failed to register V4L2 device: %d\n", ret);
-		return ret;
+		goto err_genpd_cleanup;
 	}
 
 	v4l2_async_nf_init(&camss->notifier, &camss->v4l2_dev);
@@ -1693,28 +1707,19 @@ static int camss_probe(struct platform_device *pdev)
 err_v4l2_device_unregister:
 	v4l2_device_unregister(&camss->v4l2_dev);
 	v4l2_async_nf_cleanup(&camss->notifier);
+err_genpd_cleanup:
+	camss_genpd_cleanup(camss);
 
 	return ret;
 }
 
 void camss_delete(struct camss *camss)
 {
-	int i;
-
 	v4l2_device_unregister(&camss->v4l2_dev);
 	media_device_unregister(&camss->media_dev);
 	media_device_cleanup(&camss->media_dev);
 
 	pm_runtime_disable(camss->dev);
-
-	if (camss->genpd_num == 1)
-		return;
-
-	if (camss->genpd_num > camss->vfe_num)
-		device_link_del(camss->genpd_link[camss->genpd_num - 1]);
-
-	for (i = 0; i < camss->genpd_num; i++)
-		dev_pm_domain_detach(camss->genpd[i], true);
 }
 
 /*
@@ -1733,6 +1738,8 @@ static void camss_remove(struct platform_device *pdev)
 
 	if (atomic_read(&camss->ref_count) == 0)
 		camss_delete(camss);
+
+	camss_genpd_cleanup(camss);
 }
 
 static const struct of_device_id camss_dt_match[] = {
-- 
2.41.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v3 04/10] media: qcom: camss: Fix vfe_get() error jump
  2023-08-30 15:16 [PATCH v3 00/10] media: qcom: camss: Bugfix series Bryan O'Donoghue
                   ` (2 preceding siblings ...)
  2023-08-30 15:16 ` [PATCH v3 03/10] media: qcom: camss: Fix genpd cleanup Bryan O'Donoghue
@ 2023-08-30 15:16 ` Bryan O'Donoghue
  2023-08-30 15:16 ` [PATCH v3 05/10] media: qcom: camss: Fix VFE-17x vfe_disable_output() Bryan O'Donoghue
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Bryan O'Donoghue @ 2023-08-30 15:16 UTC (permalink / raw)
  To: rfoss, todor.too, bryan.odonoghue, agross, andersson,
	konrad.dybcio, mchehab, hverkuil-cisco, laurent.pinchart,
	sakari.ailus, andrey.konovalov
  Cc: linux-media, linux-arm-msm, linux-kernel, stable

Right now it is possible to do a vfe_get() with the internal reference
count at 1. If vfe_check_clock_rates() returns non-zero then we will
leave the reference count as-is and

run:
- pm_runtime_put_sync()
- vfe->ops->pm_domain_off()

skip:
- camss_disable_clocks()

Subsequent vfe_put() calls will when the ref-count is non-zero
unconditionally run:

- pm_runtime_put_sync()
- vfe->ops->pm_domain_off()
- camss_disable_clocks()

vfe_get() should not attempt to roll-back on error when the ref-count is
non-zero as the upper layers will still do their own vfe_put() operations.

vfe_put() will drop the reference count and do the necessary power
domain release, the cleanup jumps in vfe_get() should only be run when
the ref-count is zero.

[   50.095796] CPU: 7 PID: 3075 Comm: cam Not tainted 6.3.2+ #80
[   50.095798] Hardware name: LENOVO 21BXCTO1WW/21BXCTO1WW, BIOS N3HET82W (1.54 ) 05/26/2023
[   50.095799] pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[   50.095802] pc : refcount_warn_saturate+0xf4/0x148
[   50.095804] lr : refcount_warn_saturate+0xf4/0x148
[   50.095805] sp : ffff80000c7cb8b0
[   50.095806] x29: ffff80000c7cb8b0 x28: ffff16ecc0e3fc10 x27: 0000000000000000
[   50.095810] x26: 0000000000000000 x25: 0000000000020802 x24: 0000000000000000
[   50.095813] x23: ffff16ecc7360640 x22: 00000000ffffffff x21: 0000000000000005
[   50.095815] x20: ffff16ed175f4400 x19: ffffb4d9852942a8 x18: ffffffffffffffff
[   50.095818] x17: ffffb4d9852d4a48 x16: ffffb4d983da5db8 x15: ffff80000c7cb320
[   50.095821] x14: 0000000000000001 x13: 2e656572662d7265 x12: 7466612d65737520
[   50.095823] x11: 00000000ffffefff x10: ffffb4d9850cebf0 x9 : ffffb4d9835cf954
[   50.095826] x8 : 0000000000017fe8 x7 : c0000000ffffefff x6 : 0000000000057fa8
[   50.095829] x5 : ffff16f813fe3d08 x4 : 0000000000000000 x3 : ffff621e8f4d2000
[   50.095832] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff16ed32119040
[   50.095835] Call trace:
[   50.095836]  refcount_warn_saturate+0xf4/0x148
[   50.095838]  device_link_put_kref+0x84/0xc8
[   50.095843]  device_link_del+0x38/0x58
[   50.095846]  vfe_pm_domain_off+0x3c/0x50 [qcom_camss]
[   50.095860]  vfe_put+0x114/0x140 [qcom_camss]
[   50.095869]  csid_set_power+0x2c8/0x408 [qcom_camss]
[   50.095878]  pipeline_pm_power_one+0x164/0x170 [videodev]
[   50.095896]  pipeline_pm_power+0xc4/0x110 [videodev]
[   50.095909]  v4l2_pipeline_pm_use+0x5c/0xa0 [videodev]
[   50.095923]  v4l2_pipeline_pm_get+0x1c/0x30 [videodev]
[   50.095937]  video_open+0x7c/0x100 [qcom_camss]
[   50.095945]  v4l2_open+0x84/0x130 [videodev]
[   50.095960]  chrdev_open+0xc8/0x250
[   50.095964]  do_dentry_open+0x1bc/0x498
[   50.095966]  vfs_open+0x34/0x40
[   50.095968]  path_openat+0xb44/0xf20
[   50.095971]  do_filp_open+0xa4/0x160
[   50.095974]  do_sys_openat2+0xc8/0x188
[   50.095975]  __arm64_sys_openat+0x6c/0xb8
[   50.095977]  invoke_syscall+0x50/0x128
[   50.095982]  el0_svc_common.constprop.0+0x4c/0x100
[   50.095985]  do_el0_svc+0x40/0xa8
[   50.095988]  el0_svc+0x2c/0x88
[   50.095991]  el0t_64_sync_handler+0xf4/0x120
[   50.095994]  el0t_64_sync+0x190/0x198
[   50.095996] ---[ end trace 0000000000000000 ]---

Fixes: 779096916dae ("media: camss: vfe: Fix runtime PM imbalance on error")
Cc: stable@vger.kernel.org
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/media/platform/qcom/camss/camss-vfe.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/platform/qcom/camss/camss-vfe.c b/drivers/media/platform/qcom/camss/camss-vfe.c
index dabfd613b2f94..938f373bcd1fd 100644
--- a/drivers/media/platform/qcom/camss/camss-vfe.c
+++ b/drivers/media/platform/qcom/camss/camss-vfe.c
@@ -611,7 +611,7 @@ int vfe_get(struct vfe_device *vfe)
 	} else {
 		ret = vfe_check_clock_rates(vfe);
 		if (ret < 0)
-			goto error_pm_runtime_get;
+			goto error_pm_domain;
 	}
 	vfe->power_count++;
 
-- 
2.41.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v3 05/10] media: qcom: camss: Fix VFE-17x vfe_disable_output()
  2023-08-30 15:16 [PATCH v3 00/10] media: qcom: camss: Bugfix series Bryan O'Donoghue
                   ` (3 preceding siblings ...)
  2023-08-30 15:16 ` [PATCH v3 04/10] media: qcom: camss: Fix vfe_get() error jump Bryan O'Donoghue
@ 2023-08-30 15:16 ` Bryan O'Donoghue
  2023-08-30 15:16 ` [PATCH v3 06/10] media: qcom: camss: Fix VFE-480 vfe_disable_output() Bryan O'Donoghue
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Bryan O'Donoghue @ 2023-08-30 15:16 UTC (permalink / raw)
  To: rfoss, todor.too, bryan.odonoghue, agross, andersson,
	konrad.dybcio, mchehab, hverkuil-cisco, laurent.pinchart,
	sakari.ailus, andrey.konovalov
  Cc: linux-media, linux-arm-msm, linux-kernel, stable

There are two problems with the current vfe_disable_output() routine.

Firstly we rightly use a spinlock to protect output->gen2.active_num
everywhere except for in the IDLE timeout path of vfe_disable_output().
Even if that is not racy "in practice" somehow it is by happenstance not
by design.

Secondly we do not get consistent behaviour from this routine. On
sc8280xp 50% of the time I get "VFE idle timeout - resetting". In this
case the subsequent capture will succeed. The other 50% of the time, we
don't hit the idle timeout, never do the VFE reset and subsequent
captures stall indefinitely.

Rewrite the vfe_disable_output() routine to

- Quiesce write masters with vfe_wm_stop()
- Set active_num = 0

remembering to hold the spinlock when we do so followed by

- Reset the VFE

Testing on sc8280xp and sdm845 shows this to be a valid fix.

Fixes: 7319cdf189bb ("media: camss: Add support for VFE hardware version Titan 170")
Cc: stable@vger.kernel.org
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
---
 .../media/platform/qcom/camss/camss-vfe-170.c | 22 +++----------------
 1 file changed, 3 insertions(+), 19 deletions(-)

diff --git a/drivers/media/platform/qcom/camss/camss-vfe-170.c b/drivers/media/platform/qcom/camss/camss-vfe-170.c
index 02494c89da91c..168baaa80d4e6 100644
--- a/drivers/media/platform/qcom/camss/camss-vfe-170.c
+++ b/drivers/media/platform/qcom/camss/camss-vfe-170.c
@@ -7,7 +7,6 @@
  * Copyright (C) 2020-2021 Linaro Ltd.
  */
 
-#include <linux/delay.h>
 #include <linux/interrupt.h>
 #include <linux/io.h>
 #include <linux/iopoll.h>
@@ -494,35 +493,20 @@ static int vfe_enable_output(struct vfe_line *line)
 	return 0;
 }
 
-static int vfe_disable_output(struct vfe_line *line)
+static void vfe_disable_output(struct vfe_line *line)
 {
 	struct vfe_device *vfe = to_vfe(line);
 	struct vfe_output *output = &line->output;
 	unsigned long flags;
 	unsigned int i;
-	bool done;
-	int timeout = 0;
-
-	do {
-		spin_lock_irqsave(&vfe->output_lock, flags);
-		done = !output->gen2.active_num;
-		spin_unlock_irqrestore(&vfe->output_lock, flags);
-		usleep_range(10000, 20000);
-
-		if (timeout++ == 100) {
-			dev_err(vfe->camss->dev, "VFE idle timeout - resetting\n");
-			vfe_reset(vfe);
-			output->gen2.active_num = 0;
-			return 0;
-		}
-	} while (!done);
 
 	spin_lock_irqsave(&vfe->output_lock, flags);
 	for (i = 0; i < output->wm_num; i++)
 		vfe_wm_stop(vfe, output->wm_idx[i]);
+	output->gen2.active_num = 0;
 	spin_unlock_irqrestore(&vfe->output_lock, flags);
 
-	return 0;
+	vfe_reset(vfe);
 }
 
 /*
-- 
2.41.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v3 06/10] media: qcom: camss: Fix VFE-480 vfe_disable_output()
  2023-08-30 15:16 [PATCH v3 00/10] media: qcom: camss: Bugfix series Bryan O'Donoghue
                   ` (4 preceding siblings ...)
  2023-08-30 15:16 ` [PATCH v3 05/10] media: qcom: camss: Fix VFE-17x vfe_disable_output() Bryan O'Donoghue
@ 2023-08-30 15:16 ` Bryan O'Donoghue
  2023-08-30 15:16 ` [PATCH v3 07/10] media: qcom: camss: Fix missing vfe_lite clocks check Bryan O'Donoghue
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Bryan O'Donoghue @ 2023-08-30 15:16 UTC (permalink / raw)
  To: rfoss, todor.too, bryan.odonoghue, agross, andersson,
	konrad.dybcio, mchehab, hverkuil-cisco, laurent.pinchart,
	sakari.ailus, andrey.konovalov
  Cc: linux-media, linux-arm-msm, linux-kernel, stable

vfe-480 is copied from vfe-17x and has the same racy idle timeout bug as in
17x.

Fix the vfe_disable_output() logic to no longer be racy and to conform
to the 17x way of quiescing and then resetting the VFE.

Fixes: 4edc8eae715c ("media: camss: Add initial support for VFE hardware version Titan 480")
Cc: stable@vger.kernel.org
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
---
 .../media/platform/qcom/camss/camss-vfe-480.c | 22 +++----------------
 1 file changed, 3 insertions(+), 19 deletions(-)

diff --git a/drivers/media/platform/qcom/camss/camss-vfe-480.c b/drivers/media/platform/qcom/camss/camss-vfe-480.c
index f70aad2e8c237..8ddb8016434ae 100644
--- a/drivers/media/platform/qcom/camss/camss-vfe-480.c
+++ b/drivers/media/platform/qcom/camss/camss-vfe-480.c
@@ -8,7 +8,6 @@
  * Copyright (C) 2021 Jonathan Marek
  */
 
-#include <linux/delay.h>
 #include <linux/interrupt.h>
 #include <linux/io.h>
 #include <linux/iopoll.h>
@@ -328,35 +327,20 @@ static int vfe_enable_output(struct vfe_line *line)
 	return 0;
 }
 
-static int vfe_disable_output(struct vfe_line *line)
+static void vfe_disable_output(struct vfe_line *line)
 {
 	struct vfe_device *vfe = to_vfe(line);
 	struct vfe_output *output = &line->output;
 	unsigned long flags;
 	unsigned int i;
-	bool done;
-	int timeout = 0;
-
-	do {
-		spin_lock_irqsave(&vfe->output_lock, flags);
-		done = !output->gen2.active_num;
-		spin_unlock_irqrestore(&vfe->output_lock, flags);
-		usleep_range(10000, 20000);
-
-		if (timeout++ == 100) {
-			dev_err(vfe->camss->dev, "VFE idle timeout - resetting\n");
-			vfe_reset(vfe);
-			output->gen2.active_num = 0;
-			return 0;
-		}
-	} while (!done);
 
 	spin_lock_irqsave(&vfe->output_lock, flags);
 	for (i = 0; i < output->wm_num; i++)
 		vfe_wm_stop(vfe, output->wm_idx[i]);
+	output->gen2.active_num = 0;
 	spin_unlock_irqrestore(&vfe->output_lock, flags);
 
-	return 0;
+	vfe_reset(vfe);
 }
 
 /*
-- 
2.41.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v3 07/10] media: qcom: camss: Fix missing vfe_lite clocks check
  2023-08-30 15:16 [PATCH v3 00/10] media: qcom: camss: Bugfix series Bryan O'Donoghue
                   ` (5 preceding siblings ...)
  2023-08-30 15:16 ` [PATCH v3 06/10] media: qcom: camss: Fix VFE-480 vfe_disable_output() Bryan O'Donoghue
@ 2023-08-30 15:16 ` Bryan O'Donoghue
  2023-08-30 15:16 ` [PATCH v3 08/10] media: qcom: camss: Fix invalid clock enable bit disjunction Bryan O'Donoghue
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Bryan O'Donoghue @ 2023-08-30 15:16 UTC (permalink / raw)
  To: rfoss, todor.too, bryan.odonoghue, agross, andersson,
	konrad.dybcio, mchehab, hverkuil-cisco, laurent.pinchart,
	sakari.ailus, andrey.konovalov
  Cc: linux-media, linux-arm-msm, linux-kernel, stable

check_clock doesn't account for vfe_lite which means that vfe_lite will
never get validated by this routine. Add the clock name to the expected set
to remediate.

Fixes: 7319cdf189bb ("media: camss: Add support for VFE hardware version Titan 170")
Cc: stable@vger.kernel.org
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/media/platform/qcom/camss/camss-vfe.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/media/platform/qcom/camss/camss-vfe.c b/drivers/media/platform/qcom/camss/camss-vfe.c
index 938f373bcd1fd..b021f81cef123 100644
--- a/drivers/media/platform/qcom/camss/camss-vfe.c
+++ b/drivers/media/platform/qcom/camss/camss-vfe.c
@@ -535,7 +535,8 @@ static int vfe_check_clock_rates(struct vfe_device *vfe)
 		struct camss_clock *clock = &vfe->clock[i];
 
 		if (!strcmp(clock->name, "vfe0") ||
-		    !strcmp(clock->name, "vfe1")) {
+		    !strcmp(clock->name, "vfe1") ||
+		    !strcmp(clock->name, "vfe_lite")) {
 			u64 min_rate = 0;
 			unsigned long rate;
 
-- 
2.41.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v3 08/10] media: qcom: camss: Fix invalid clock enable bit disjunction
  2023-08-30 15:16 [PATCH v3 00/10] media: qcom: camss: Bugfix series Bryan O'Donoghue
                   ` (6 preceding siblings ...)
  2023-08-30 15:16 ` [PATCH v3 07/10] media: qcom: camss: Fix missing vfe_lite clocks check Bryan O'Donoghue
@ 2023-08-30 15:16 ` Bryan O'Donoghue
  2023-08-30 15:16 ` [PATCH v3 09/10] media: qcom: camss: Fix set CSI2_RX_CFG1_VC_MODE when VC is greater than 3 Bryan O'Donoghue
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Bryan O'Donoghue @ 2023-08-30 15:16 UTC (permalink / raw)
  To: rfoss, todor.too, bryan.odonoghue, agross, andersson,
	konrad.dybcio, mchehab, hverkuil-cisco, laurent.pinchart,
	sakari.ailus, andrey.konovalov
  Cc: linux-media, linux-arm-msm, linux-kernel, stable

define CSIPHY_3PH_CMN_CSI_COMMON_CTRL5_CLK_ENABLE BIT(7)

disjunction for gen2 ? BIT(7) : is a nop we are setting the same bit
either way.

Fixes: 4abb21309fda ("media: camss: csiphy: Move to hardcode CSI Clock Lane number")
Cc: stable@vger.kernel.org
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c b/drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c
index 04baa80494c66..4dba61b8d3f2a 100644
--- a/drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c
+++ b/drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c
@@ -476,7 +476,7 @@ static void csiphy_lanes_enable(struct csiphy_device *csiphy,
 
 	settle_cnt = csiphy_settle_cnt_calc(link_freq, csiphy->timer_clk_rate);
 
-	val = is_gen2 ? BIT(7) : CSIPHY_3PH_CMN_CSI_COMMON_CTRL5_CLK_ENABLE;
+	val = CSIPHY_3PH_CMN_CSI_COMMON_CTRL5_CLK_ENABLE;
 	for (i = 0; i < c->num_data; i++)
 		val |= BIT(c->data[i].pos * 2);
 
-- 
2.41.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v3 09/10] media: qcom: camss: Fix set CSI2_RX_CFG1_VC_MODE when VC is greater than 3
  2023-08-30 15:16 [PATCH v3 00/10] media: qcom: camss: Bugfix series Bryan O'Donoghue
                   ` (7 preceding siblings ...)
  2023-08-30 15:16 ` [PATCH v3 08/10] media: qcom: camss: Fix invalid clock enable bit disjunction Bryan O'Donoghue
@ 2023-08-30 15:16 ` Bryan O'Donoghue
  2023-08-30 15:16 ` [PATCH v3 10/10] media: qcom: camss: Fix csid-gen2 for test pattern generator Bryan O'Donoghue
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Bryan O'Donoghue @ 2023-08-30 15:16 UTC (permalink / raw)
  To: rfoss, todor.too, bryan.odonoghue, agross, andersson,
	konrad.dybcio, mchehab, hverkuil-cisco, laurent.pinchart,
	sakari.ailus, andrey.konovalov
  Cc: linux-media, linux-arm-msm, linux-kernel, stable

VC_MODE = 0 implies a two bit VC address.
VC_MODE = 1 is required for VCs with a larger address than two bits.

Fixes: eebe6d00e9bf ("media: camss: Add support for CSID hardware version Titan 170")
Cc: stable@vger.kernel.org
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/media/platform/qcom/camss/camss-csid-gen2.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/media/platform/qcom/camss/camss-csid-gen2.c b/drivers/media/platform/qcom/camss/camss-csid-gen2.c
index 45c7986d4a8d0..140c584bfb8b1 100644
--- a/drivers/media/platform/qcom/camss/camss-csid-gen2.c
+++ b/drivers/media/platform/qcom/camss/camss-csid-gen2.c
@@ -449,6 +449,8 @@ static void __csid_configure_stream(struct csid_device *csid, u8 enable, u8 vc)
 	writel_relaxed(val, csid->base + CSID_CSI2_RX_CFG0);
 
 	val = 1 << CSI2_RX_CFG1_PACKET_ECC_CORRECTION_EN;
+	if (vc > 3)
+		val |= 1 << CSI2_RX_CFG1_VC_MODE;
 	val |= 1 << CSI2_RX_CFG1_MISR_EN;
 	writel_relaxed(val, csid->base + CSID_CSI2_RX_CFG1);
 
-- 
2.41.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v3 10/10] media: qcom: camss: Fix csid-gen2 for test pattern generator
  2023-08-30 15:16 [PATCH v3 00/10] media: qcom: camss: Bugfix series Bryan O'Donoghue
                   ` (8 preceding siblings ...)
  2023-08-30 15:16 ` [PATCH v3 09/10] media: qcom: camss: Fix set CSI2_RX_CFG1_VC_MODE when VC is greater than 3 Bryan O'Donoghue
@ 2023-08-30 15:16 ` Bryan O'Donoghue
  2023-08-30 18:35 ` [PATCH v3 00/10] media: qcom: camss: Bugfix series Bryan O'Donoghue
  2023-08-30 20:47 ` Laurent Pinchart
  11 siblings, 0 replies; 13+ messages in thread
From: Bryan O'Donoghue @ 2023-08-30 15:16 UTC (permalink / raw)
  To: rfoss, todor.too, bryan.odonoghue, agross, andersson,
	konrad.dybcio, mchehab, hverkuil-cisco, laurent.pinchart,
	sakari.ailus, andrey.konovalov
  Cc: linux-media, linux-arm-msm, linux-kernel, stable

From: Andrey Konovalov <andrey.konovalov@linaro.org>

In the current driver csid Test Pattern Generator (TPG) doesn't work.
This change:
- fixes writing frame width and height values into CSID_TPG_DT_n_CFG_0
- fixes the shift by one between test_pattern control value and the
  actual pattern.
- drops fixed VC of 0x0a which testing showed prohibited some test
  patterns in the CSID to produce output.
So that TPG starts working, but with the below limitations:
- only test_pattern=9 works as it should
- test_pattern=8 and test_pattern=7 produce black frame (all zeroes)
- the rest of test_pattern's don't work (yavta doesn't get the data)
- regardless of the CFA pattern set by 'media-ctl -V' the actual pixel
  order is always the same (RGGB for any RAW8 or RAW10P format in
  4608x2592 resolution).

Tested with:

RAW10P format, VC0:
 media-ctl -V '"msm_csid0":0[fmt:SRGGB10/4608x2592 field:none]'
 media-ctl -V '"msm_vfe0_rdi0":0[fmt:SRGGB10/4608x2592 field:none]'
 media-ctl -l '"msm_csid0":1->"msm_vfe0_rdi0":0[1]'
 v4l2-ctl -d /dev/v4l-subdev6 -c test_pattern=9
 yavta -B capture-mplane --capture=3 -n 3 -f SRGGB10P -s 4608x2592 /dev/video0

RAW10P format, VC1:
 media-ctl -V '"msm_csid0":2[fmt:SRGGB10/4608x2592 field:none]'
 media-ctl -V '"msm_vfe0_rdi1":0[fmt:SRGGB10/4608x2592 field:none]'
 media-ctl -l '"msm_csid0":2->"msm_vfe0_rdi1":0[1]'
 v4l2-ctl -d /dev/v4l-subdev6 -c test_pattern=9
 yavta -B capture-mplane --capture=3 -n 3 -f SRGGB10P -s 4608x2592 /dev/video1

RAW8 format, VC0:
 media-ctl --reset
 media-ctl -V '"msm_csid0":0[fmt:SRGGB8/4608x2592 field:none]'
 media-ctl -V '"msm_vfe0_rdi0":0[fmt:SRGGB8/4608x2592 field:none]'
 media-ctl -l '"msm_csid0":1->"msm_vfe0_rdi0":0[1]'
 yavta -B capture-mplane --capture=3 -n 3 -f SRGGB8 -s 4608x2592 /dev/video0

Fixes: eebe6d00e9bf ("media: camss: Add support for CSID hardware version Titan 170")
Cc: stable@vger.kernel.org
Signed-off-by: Andrey Konovalov <andrey.konovalov@linaro.org>
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/media/platform/qcom/camss/camss-csid-gen2.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/media/platform/qcom/camss/camss-csid-gen2.c b/drivers/media/platform/qcom/camss/camss-csid-gen2.c
index 140c584bfb8b1..6ba2b10326444 100644
--- a/drivers/media/platform/qcom/camss/camss-csid-gen2.c
+++ b/drivers/media/platform/qcom/camss/camss-csid-gen2.c
@@ -355,9 +355,6 @@ static void __csid_configure_stream(struct csid_device *csid, u8 enable, u8 vc)
 		u8 dt_id = vc;
 
 		if (tg->enabled) {
-			/* Config Test Generator */
-			vc = 0xa;
-
 			/* configure one DT, infinite frames */
 			val = vc << TPG_VC_CFG0_VC_NUM;
 			val |= INTELEAVING_MODE_ONE_SHOT << TPG_VC_CFG0_LINE_INTERLEAVING_MODE;
@@ -370,14 +367,14 @@ static void __csid_configure_stream(struct csid_device *csid, u8 enable, u8 vc)
 
 			writel_relaxed(0x12345678, csid->base + CSID_TPG_LFSR_SEED);
 
-			val = input_format->height & 0x1fff << TPG_DT_n_CFG_0_FRAME_HEIGHT;
-			val |= input_format->width & 0x1fff << TPG_DT_n_CFG_0_FRAME_WIDTH;
+			val = (input_format->height & 0x1fff) << TPG_DT_n_CFG_0_FRAME_HEIGHT;
+			val |= (input_format->width & 0x1fff) << TPG_DT_n_CFG_0_FRAME_WIDTH;
 			writel_relaxed(val, csid->base + CSID_TPG_DT_n_CFG_0(0));
 
 			val = format->data_type << TPG_DT_n_CFG_1_DATA_TYPE;
 			writel_relaxed(val, csid->base + CSID_TPG_DT_n_CFG_1(0));
 
-			val = tg->mode << TPG_DT_n_CFG_2_PAYLOAD_MODE;
+			val = (tg->mode - 1) << TPG_DT_n_CFG_2_PAYLOAD_MODE;
 			val |= 0xBE << TPG_DT_n_CFG_2_USER_SPECIFIED_PAYLOAD;
 			val |= format->decode_format << TPG_DT_n_CFG_2_ENCODE_FORMAT;
 			writel_relaxed(val, csid->base + CSID_TPG_DT_n_CFG_2(0));
-- 
2.41.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH v3 00/10] media: qcom: camss: Bugfix series
  2023-08-30 15:16 [PATCH v3 00/10] media: qcom: camss: Bugfix series Bryan O'Donoghue
                   ` (9 preceding siblings ...)
  2023-08-30 15:16 ` [PATCH v3 10/10] media: qcom: camss: Fix csid-gen2 for test pattern generator Bryan O'Donoghue
@ 2023-08-30 18:35 ` Bryan O'Donoghue
  2023-08-30 20:47 ` Laurent Pinchart
  11 siblings, 0 replies; 13+ messages in thread
From: Bryan O'Donoghue @ 2023-08-30 18:35 UTC (permalink / raw)
  To: rfoss, todor.too, agross, andersson, konrad.dybcio, mchehab,
	hverkuil-cisco, laurent.pinchart, sakari.ailus, andrey.konovalov
  Cc: linux-media, linux-arm-msm, linux-kernel

On 30/08/2023 16:16, Bryan O'Donoghue wrote:
> V3:
> - Adds Reviewed-by where indicated - Laurent
> - Adds a new patch for genpd cleanup. TBH I completely missed this so thanks ! - Laurent
> - "media: qcom: camss: Fix V4L2 async notifier error path" stays the same fixes spalt in -next
>    Fixes: 51397a4ec75d ("media: qcom: Initialise V4L2 async notifier later")
> - I like the suggesting of using a common fix for vfe-17x and vfe-480 however, I believe
>    we need to support multiple write-master/RDI => VCs in 17x which currently we only do
>    in vfe-480 so sharing the code between the two here right now, is	n't possible.
> - Included other suggestions on vfe-17x and vfe-480 - Laurent
> - I didn't change the val |= 1 << CSI2_RX_CFG1_VC_MODE to BIT(2)
>    The reason for that is all of the code uses this odd bit-shifting and I'd rather do
>    the conversion from shifting to BIT(x) as a distinct series instead of piecemeal - bod

Pardon me I forgot to add a link to a tree for this series

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

---
bod


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v3 00/10] media: qcom: camss: Bugfix series
  2023-08-30 15:16 [PATCH v3 00/10] media: qcom: camss: Bugfix series Bryan O'Donoghue
                   ` (10 preceding siblings ...)
  2023-08-30 18:35 ` [PATCH v3 00/10] media: qcom: camss: Bugfix series Bryan O'Donoghue
@ 2023-08-30 20:47 ` Laurent Pinchart
  11 siblings, 0 replies; 13+ messages in thread
From: Laurent Pinchart @ 2023-08-30 20:47 UTC (permalink / raw)
  To: Bryan O'Donoghue
  Cc: rfoss, todor.too, agross, andersson, konrad.dybcio, mchehab,
	hverkuil-cisco, sakari.ailus, andrey.konovalov, linux-media,
	linux-arm-msm, linux-kernel

Hi Bryan,

I wanted to let you know that I will likely not be able to review this
v3 in a timely manner. v2 was quite fine overall, I trust that you've
taken my review comments into account in this new version. Maybe someone
else could give it another look, in order to get it merged in v6.7 ?

On Wed, Aug 30, 2023 at 04:16:05PM +0100, Bryan O'Donoghue wrote:
> V3:
> - Adds Reviewed-by where indicated - Laurent
> - Adds a new patch for genpd cleanup. TBH I completely missed this so thanks ! - Laurent
> - "media: qcom: camss: Fix V4L2 async notifier error path" stays the same fixes spalt in -next
>   Fixes: 51397a4ec75d ("media: qcom: Initialise V4L2 async notifier later")
> - I like the suggesting of using a common fix for vfe-17x and vfe-480 however, I believe
>   we need to support multiple write-master/RDI => VCs in 17x which currently we only do
>   in vfe-480 so sharing the code between the two here right now, is	n't possible.
> - Included other suggestions on vfe-17x and vfe-480 - Laurent
> - I didn't change the val |= 1 << CSI2_RX_CFG1_VC_MODE to BIT(2)
>   The reason for that is all of the code uses this odd bit-shifting and I'd rather do
>   the conversion from shifting to BIT(x) as a distinct series instead of piecemeal - bod
> 
> V2:
> - Amends commit log for TPG fix to cover dropping of fixed
>   VC when setting up a TPG - Konrad
> 
> - Leaves GENMASK etc out. I'm happy to do a "make it pretty"
>   series later on. - bod
> 
> Link: https://git.codelinaro.org/bryan.odonoghue/kernel/-/commits/Bugfix-series-v2?ref_type=tags
> 
> V1:
> - Drops dt_id = vc * 4 in favour of a patch in a later series - Hans
>   Link: https://git.codelinaro.org/bryan.odonoghue/kernel/-/commit/d4c382c5d6ee153b410a01e172b3e811011d0b14
> - Adds Konrad's Acked-by as indicated
> 
> V0:
> This series covers a number of Fixes: all of which are for application to
> stable as well as -next with the exception of the second patch which is a
> fix for a SHA that is still in -next.
> 
> Link: https://git.codelinaro.org/bryan.odonoghue/kernel/-/tree/linux-next-23-08-07-db410c-rb3-camss-dts-v3
> 
> This series is part of a larger set of fixes, improvements developed/found
> when adding a new SoC.
> 
> Link: https://git.codelinaro.org/bryan.odonoghue/kernel/-/tree/lenovo-x13s-v6.5-rc4-x13s-camss-patches
> 
> First pass on that larger series is to get all of the current Fixes: in the
> branch out.
> 
> Andrey Konovalov (1):
>   media: qcom: camss: Fix csid-gen2 for test pattern generator
> 
> Bryan O'Donoghue (9):
>   media: qcom: camss: Fix pm_domain_on sequence in probe
>   media: qcom: camss: Fix V4L2 async notifier error path
>   media: qcom: camss: Fix genpd cleanup
>   media: qcom: camss: Fix vfe_get() error jump
>   media: qcom: camss: Fix VFE-17x vfe_disable_output()
>   media: qcom: camss: Fix VFE-480 vfe_disable_output()
>   media: qcom: camss: Fix missing vfe_lite clocks check
>   media: qcom: camss: Fix invalid clock enable bit disjunction
>   media: qcom: camss: Fix set CSI2_RX_CFG1_VC_MODE when VC is greater
>     than 3
> 
>  .../platform/qcom/camss/camss-csid-gen2.c     | 11 ++--
>  .../qcom/camss/camss-csiphy-3ph-1-0.c         |  2 +-
>  .../media/platform/qcom/camss/camss-vfe-170.c | 22 +-------
>  .../media/platform/qcom/camss/camss-vfe-480.c | 22 +-------
>  drivers/media/platform/qcom/camss/camss-vfe.c |  5 +-
>  drivers/media/platform/qcom/camss/camss.c     | 55 +++++++++++--------
>  6 files changed, 46 insertions(+), 71 deletions(-)

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2023-08-30 23:22 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-30 15:16 [PATCH v3 00/10] media: qcom: camss: Bugfix series Bryan O'Donoghue
2023-08-30 15:16 ` [PATCH v3 01/10] media: qcom: camss: Fix pm_domain_on sequence in probe Bryan O'Donoghue
2023-08-30 15:16 ` [PATCH v3 02/10] media: qcom: camss: Fix V4L2 async notifier error path Bryan O'Donoghue
2023-08-30 15:16 ` [PATCH v3 03/10] media: qcom: camss: Fix genpd cleanup Bryan O'Donoghue
2023-08-30 15:16 ` [PATCH v3 04/10] media: qcom: camss: Fix vfe_get() error jump Bryan O'Donoghue
2023-08-30 15:16 ` [PATCH v3 05/10] media: qcom: camss: Fix VFE-17x vfe_disable_output() Bryan O'Donoghue
2023-08-30 15:16 ` [PATCH v3 06/10] media: qcom: camss: Fix VFE-480 vfe_disable_output() Bryan O'Donoghue
2023-08-30 15:16 ` [PATCH v3 07/10] media: qcom: camss: Fix missing vfe_lite clocks check Bryan O'Donoghue
2023-08-30 15:16 ` [PATCH v3 08/10] media: qcom: camss: Fix invalid clock enable bit disjunction Bryan O'Donoghue
2023-08-30 15:16 ` [PATCH v3 09/10] media: qcom: camss: Fix set CSI2_RX_CFG1_VC_MODE when VC is greater than 3 Bryan O'Donoghue
2023-08-30 15:16 ` [PATCH v3 10/10] media: qcom: camss: Fix csid-gen2 for test pattern generator Bryan O'Donoghue
2023-08-30 18:35 ` [PATCH v3 00/10] media: qcom: camss: Bugfix series Bryan O'Donoghue
2023-08-30 20:47 ` Laurent Pinchart

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.