[PATCH RFC 1/4] media: qcom: camss: Enable the IFE pixel path on SM8550
From: William Bright
Date: Tue Oct 13 2026 - 04:48:37 EST
SM8550 IFE 780 shares the write master layout, pixel pipe and two
pixels per clock with the SM8650 IFE 880. Give the full IFEs a PIX
line with the PIX formats and treat SM8550 like SM8650 in the pixel
path helpers.
Assisted-by: Claude:claude-opus-5-5
Signed-off-by: William Bright <william.bright@xxxxxxxxxxx>
---
drivers/media/platform/qcom/camss/camss-vfe.c | 6 ++++--
drivers/media/platform/qcom/camss/camss.c | 12 ++++++------
2 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/drivers/media/platform/qcom/camss/camss-vfe.c b/drivers/media/platform/qcom/camss/camss-vfe.c
index 4f50a362e185..930e6cdf7e0a 100644
--- a/drivers/media/platform/qcom/camss/camss-vfe.c
+++ b/drivers/media/platform/qcom/camss/camss-vfe.c
@@ -1389,12 +1389,13 @@ static bool vfe_check_clock_levels(struct camss_clock *clock)
* vfe_pix_ppc - Pixels the pixel path consumes per VFE clock
* @vfe: VFE device
*
- * The VFE 4.x and TFE pixel paths take one pixel per clock, the SM8650 IFE
- * pixel path two.
+ * The VFE 4.x and TFE pixel paths take one pixel per clock, the SM8550 and
+ * SM8650 IFE pixel paths two.
*/
static u32 vfe_pix_ppc(struct vfe_device *vfe)
{
switch (vfe->camss->res->version) {
+ case CAMSS_8550:
case CAMSS_8650:
return 2;
default:
@@ -2580,6 +2581,7 @@ static int vfe_bpl_align_rdi(struct vfe_device *vfe)
static bool vfe_pix_line_based(struct vfe_device *vfe)
{
switch (vfe->camss->res->version) {
+ case CAMSS_8550:
case CAMSS_8650:
return false;
default:
diff --git a/drivers/media/platform/qcom/camss/camss.c b/drivers/media/platform/qcom/camss/camss.c
index beafbbc77329..98d9d63838d6 100644
--- a/drivers/media/platform/qcom/camss/camss.c
+++ b/drivers/media/platform/qcom/camss/camss.c
@@ -3561,13 +3561,13 @@ static const struct camss_subdev_resources vfe_res_8550[] = {
.reg = { "vfe0" },
.interrupt = { "vfe0" },
.vfe = {
- .line_num = 3,
+ .line_num = 4,
.is_lite = false,
.has_pd = true,
.pd_name = "ife0",
.hw_ops = &vfe_ops_780,
.formats_rdi = &vfe_formats_rdi_845,
- .formats_pix = &vfe_formats_rdi_845
+ .formats_pix = &vfe_formats_pix_845
}
},
/* VFE1 */
@@ -3585,13 +3585,13 @@ static const struct camss_subdev_resources vfe_res_8550[] = {
.reg = { "vfe1" },
.interrupt = { "vfe1" },
.vfe = {
- .line_num = 3,
+ .line_num = 4,
.is_lite = false,
.has_pd = true,
.pd_name = "ife1",
.hw_ops = &vfe_ops_780,
.formats_rdi = &vfe_formats_rdi_845,
- .formats_pix = &vfe_formats_rdi_845
+ .formats_pix = &vfe_formats_pix_845
}
},
/* VFE2 */
@@ -3609,13 +3609,13 @@ static const struct camss_subdev_resources vfe_res_8550[] = {
.reg = { "vfe2" },
.interrupt = { "vfe2" },
.vfe = {
- .line_num = 3,
+ .line_num = 4,
.is_lite = false,
.has_pd = true,
.pd_name = "ife2",
.hw_ops = &vfe_ops_780,
.formats_rdi = &vfe_formats_rdi_845,
- .formats_pix = &vfe_formats_rdi_845
+ .formats_pix = &vfe_formats_pix_845
}
},
/* VFE3 lite */
--
2.43.0