All of lore.kernel.org
 help / color / mirror / Atom feed
From: Luca Weiss <luca@z3ntu.xyz>
To: linux-arm-msm@vger.kernel.org
Cc: ~postmarketos/upstreaming@lists.sr.ht,
	phone-devel@vger.kernel.org,
	Loic Poulain <loic.poulain@linaro.org>,
	Robert Foss <robert.foss@linaro.org>,
	Rob Herring <robh+dt@kernel.org>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	Todor Tomov <todor.too@gmail.com>, Andy Gross <agross@kernel.org>,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	linux-i2c@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-media@vger.kernel.org,
	matti.lehtimaki@gmail.com, Luca Weiss <luca@z3ntu.xyz>
Subject: [RFC PATCH 08/14] media: camss: Add 8x74 resources
Date: Sun, 22 May 2022 18:27:56 +0200	[thread overview]
Message-ID: <20220522162802.208275-9-luca@z3ntu.xyz> (raw)
In-Reply-To: <20220522162802.208275-1-luca@z3ntu.xyz>

From: Matti Lehtimäki <matti.lehtimaki@gmail.com>

Add structs with 8x74 resources. The number of CSIPHY, CSID
and VFE hardware modules is the same as 8x96 but the support
is otherwise different.

Signed-off-by: Matti Lehtimäki <matti.lehtimaki@gmail.com>
Signed-off-by: Luca Weiss <luca@z3ntu.xyz>
---
 drivers/media/platform/qcom/camss/camss.c | 161 ++++++++++++++++++++++
 1 file changed, 161 insertions(+)

diff --git a/drivers/media/platform/qcom/camss/camss.c b/drivers/media/platform/qcom/camss/camss.c
index 79ad82e233cb..5a69ce48c792 100644
--- a/drivers/media/platform/qcom/camss/camss.c
+++ b/drivers/media/platform/qcom/camss/camss.c
@@ -126,6 +126,154 @@ static const struct resources vfe_res_8x16[] = {
 	}
 };
 
+static const struct resources csiphy_res_8974[] = {
+	/* CSIPHY0 */
+	{
+		.regulators = { NULL },
+		.clock = { "top_ahb", "ispif_ahb", "csiphy0_timer" },
+		.clock_rate = { { 0 },
+				{ 0 },
+				{ 100000000, 200000000 } },
+		.reg = { "csiphy0", "csiphy0_clk_mux" },
+		.interrupt = { "csiphy0" }
+	},
+
+	/* CSIPHY1 */
+	{
+		.regulators = { NULL },
+		.clock = { "top_ahb", "ispif_ahb", "csiphy1_timer" },
+		.clock_rate = { { 0 },
+				{ 0 },
+				{ 100000000, 200000000 } },
+		.reg = { "csiphy1", "csiphy1_clk_mux" },
+		.interrupt = { "csiphy1" }
+	},
+
+	/* CSIPHY2 */
+	{
+		.regulators = { NULL },
+		.clock = { "top_ahb", "ispif_ahb", "csiphy2_timer" },
+		.clock_rate = { { 0 },
+				{ 0 },
+				{ 100000000, 200000000 } },
+		.reg = { "csiphy2", "csiphy2_clk_mux" },
+		.interrupt = { "csiphy2" }
+	}
+};
+
+static const struct resources csid_res_8974[] = {
+	/* CSID0 */
+	{
+		.regulators = { "vdda" },
+		.clock = { "top_ahb", "ispif_ahb", "csi0_ahb",
+			   "csi0", "csi0_phy", "csi0_pix", "csi0_rdi" },
+		.clock_rate = { { 0 },
+				{ 0 },
+				{ 0 },
+				{ 100000000, 200000000 },
+				{ 0 },
+				{ 0 },
+				{ 0 } },
+		.reg = { "csid0" },
+		.interrupt = { "csid0" }
+	},
+
+	/* CSID1 */
+	{
+		.regulators = { "vdda" },
+		.clock = { "top_ahb", "ispif_ahb", "csi1_ahb",
+			   "csi1", "csi1_phy", "csi1_pix", "csi1_rdi" },
+		.clock_rate = { { 0 },
+				{ 0 },
+				{ 0 },
+				{ 100000000, 200000000 },
+				{ 0 },
+				{ 0 },
+				{ 0 } },
+		.reg = { "csid1" },
+		.interrupt = { "csid1" }
+	},
+
+	/* CSID2 */
+	{
+		.regulators = { "vdda" },
+		.clock = { "top_ahb", "ispif_ahb", "csi2_ahb",
+			   "csi2", "csi2_phy", "csi2_pix", "csi2_rdi" },
+		.clock_rate = { { 0 },
+				{ 0 },
+				{ 0 },
+				{ 100000000, 200000000 },
+				{ 0 },
+				{ 0 },
+				{ 0 } },
+		.reg = { "csid2" },
+		.interrupt = { "csid2" }
+	},
+
+	/* CSID3 */
+	{
+		.regulators = { "vdda" },
+		.clock = { "top_ahb", "ispif_ahb", "csi3_ahb",
+			   "csi3", "csi3_phy", "csi3_pix", "csi3_rdi" },
+		.clock_rate = { { 0 },
+				{ 0 },
+				{ 0 },
+				{ 100000000, 200000000 },
+				{ 0 },
+				{ 0 },
+				{ 0 } },
+		.reg = { "csid3" },
+		.interrupt = { "csid3" }
+	}
+};
+
+static const struct resources_ispif ispif_res_8974 = {
+	/* ISPIF */
+	.clock = { "top_ahb", "ispif_ahb",
+		   "csi0", "csi0_pix", "csi0_rdi",
+		   "csi1", "csi1_pix", "csi1_rdi",
+		   "csi2", "csi2_pix", "csi2_rdi",
+		   "csi3", "csi3_pix", "csi3_rdi" },
+	.clock_for_reset = { "vfe0", "csi_vfe0",
+		   "vfe1", "csi_vfe1" },
+	.reg = { "ispif", "csi_clk_mux" },
+	.interrupt = "ispif"
+
+};
+
+static const struct resources vfe_res_8974[] = {
+	/* VFE0 */
+	{
+		.regulators = { NULL },
+		.clock = { "top_ahb", "vfe0", "csi_vfe0",
+			   "iface", "bus" },
+		.clock_rate = { { 0 },
+				{ 50000000, 80000000, 100000000, 160000000,
+				  177780000, 200000000, 266670000, 320000000,
+				  400000000, 400000000 },
+				{ 0 },
+				{ 0 },
+				{ 0 } },
+		.reg = { "vfe0" },
+		.interrupt = { "vfe0" }
+	},
+	/* VFE1 */
+	{
+		.regulators = { NULL },
+		.clock = { "top_ahb", "vfe1", "csi_vfe1",
+			   "iface", "bus" },
+		.clock_rate = { { 0 },
+				{ 50000000, 80000000, 100000000, 160000000,
+				  177780000, 200000000, 266670000, 320000000,
+				  400000000, 400000000 },
+				{ 0 },
+				{ 0 },
+				{ 0 } },
+		.reg = { "vfe1" },
+		.interrupt = { "vfe1" }
+	}
+};
+
 static const struct resources csiphy_res_8x96[] = {
 	/* CSIPHY0 */
 	{
@@ -1132,6 +1280,11 @@ static int camss_init_subdevices(struct camss *camss)
 		csid_res = csid_res_8x16;
 		ispif_res = &ispif_res_8x16;
 		vfe_res = vfe_res_8x16;
+	} else if (camss->version == CAMSS_8x74) {
+		csiphy_res = csiphy_res_8974;
+		csid_res = csid_res_8974;
+		ispif_res = &ispif_res_8974;
+		vfe_res = vfe_res_8974;
 	} else if (camss->version == CAMSS_8x96) {
 		csiphy_res = csiphy_res_8x96;
 		csid_res = csid_res_8x96;
@@ -1542,6 +1695,12 @@ static int camss_probe(struct platform_device *pdev)
 		camss->csiphy_num = 2;
 		camss->csid_num = 2;
 		camss->vfe_num = 1;
+	} else if (of_device_is_compatible(dev->of_node,
+					   "qcom,msm8974-camss")) {
+		camss->version = CAMSS_8x74;
+		camss->csiphy_num = 3;
+		camss->csid_num = 4;
+		camss->vfe_num = 2;
 	} else if (of_device_is_compatible(dev->of_node,
 					   "qcom,msm8996-camss")) {
 		camss->version = CAMSS_8x96;
@@ -1586,6 +1745,7 @@ static int camss_probe(struct platform_device *pdev)
 	}
 
 	if (camss->version == CAMSS_8x16 ||
+	    camss->version == CAMSS_8x74 ||
 	    camss->version == CAMSS_8x96) {
 		camss->ispif = devm_kcalloc(dev, 1, sizeof(*camss->ispif), GFP_KERNEL);
 		if (!camss->ispif) {
@@ -1735,6 +1895,7 @@ static int camss_remove(struct platform_device *pdev)
 
 static const struct of_device_id camss_dt_match[] = {
 	{ .compatible = "qcom,msm8916-camss" },
+	{ .compatible = "qcom,msm8974-camss" },
 	{ .compatible = "qcom,msm8996-camss" },
 	{ .compatible = "qcom,sdm660-camss" },
 	{ .compatible = "qcom,sdm845-camss" },
-- 
2.36.0


  parent reply	other threads:[~2022-05-22 16:30 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-22 16:27 [RFC PATCH 00/14] CAMSS support for MSM8974 Luca Weiss
2022-05-22 16:27 ` [RFC PATCH 01/14] media: dt-bindings: media: camss: Add qcom,msm8974-camss binding Luca Weiss
2022-05-23 10:07   ` Krzysztof Kozlowski
2022-06-02 13:01     ` Rob Herring
2022-05-22 16:27 ` [RFC PATCH 02/14] media: camss: Add CAMSS_8x74 camss version Luca Weiss
2022-05-26 12:32   ` Robert Foss
2022-05-22 16:27 ` [RFC PATCH 03/14] media: camss: vfe: Add support for 8x74 Luca Weiss
2022-05-26 12:36   ` Robert Foss
2022-05-22 16:27 ` [RFC PATCH 04/14] media: camss: video: " Luca Weiss
2022-05-26 12:37   ` Robert Foss
2022-05-22 16:27 ` [RFC PATCH 05/14] media: camss: csid: " Luca Weiss
2022-05-26 12:38   ` Robert Foss
2022-05-22 16:27 ` [RFC PATCH 06/14] media: camss: ispif: " Luca Weiss
2022-05-26 12:39   ` Robert Foss
2022-05-22 16:27 ` [RFC PATCH 07/14] media: camss: csiphy: " Luca Weiss
2022-05-26 12:40   ` Robert Foss
2022-05-22 16:27 ` Luca Weiss [this message]
2022-05-26 12:42   ` [RFC PATCH 08/14] media: camss: Add 8x74 resources Robert Foss
2022-05-22 16:27 ` [RFC PATCH 09/14] dt-bindings: i2c: qcom-cci: add QCOM MSM8974 compatible Luca Weiss
2022-05-23 10:07   ` Krzysztof Kozlowski
2022-05-22 16:27 ` [RFC PATCH 10/14] i2c: qcom-cci: add msm8974 compatible Luca Weiss
2022-06-14 20:20   ` Wolfram Sang
2022-06-15 17:13     ` Loic Poulain
2022-06-15 17:11   ` Loic Poulain
2022-05-22 16:27 ` [RFC PATCH 11/14] ARM: dts: qcom: msm8974: add CCI bus Luca Weiss
2022-05-26 12:16   ` Robert Foss
2022-05-22 16:28 ` [RFC PATCH 12/14] ARM: dts: qcom: msm8974: add CAMSS node Luca Weiss
2022-05-22 16:28 ` [RFC PATCH 13/14] ARM: dts: qcom: msm8974-FP2: Add OV8865 rear camera Luca Weiss
2022-05-22 16:28 ` [RFC PATCH 14/14] [DNM] media: camss: hacks for MSM8974 Luca Weiss
2022-05-23 12:39 ` [RFC PATCH 00/14] CAMSS support " Dmitry Baryshkov
2022-05-23 18:30   ` Brian Masney

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220522162802.208275-9-luca@z3ntu.xyz \
    --to=luca@z3ntu.xyz \
    --cc=agross@kernel.org \
    --cc=bjorn.andersson@linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=loic.poulain@linaro.org \
    --cc=matti.lehtimaki@gmail.com \
    --cc=mchehab@kernel.org \
    --cc=phone-devel@vger.kernel.org \
    --cc=robert.foss@linaro.org \
    --cc=robh+dt@kernel.org \
    --cc=todor.too@gmail.com \
    --cc=~postmarketos/upstreaming@lists.sr.ht \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.