From: Neha Malcom Francis <n-francis@ti.com> To: <nm@ti.com>, <ssantosh@kernel.org>, <t-konduru@ti.com> Cc: <linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>, <n-francis@ti.com>, <u-kumar1@ti.com> Subject: [PATCH v2 1/2] soc: ti: k3-socinfo: Revamp driver to accommodate different rev structs Date: Fri, 15 Sep 2023 12:16:49 +0530 [thread overview] Message-ID: <20230915064650.2287638-2-n-francis@ti.com> (raw) In-Reply-To: <20230915064650.2287638-1-n-francis@ti.com> k3-socinfo.c driver assumes silicon revisions to be 1.0, 2.0 etc. for every platform. However this typical style is not followed by J721E (1.0, 1.1) and need not be followed by upcoming silicon revisions as well. Adapt the driver to be similar to its U-Boot counterpart (drivers/soc/soc_ti_k3.c) that accounts for this difference on the basis of partno/family. Note that we change the order of invocation of k3_chipinfo_partno_to_names before k3_chipinfo_variant_to_sr so we have the family name in case error is returned. Signed-off-by: Thejasvi Konduru <t-konduru@ti.com> Signed-off-by: Neha Malcom Francis <n-francis@ti.com> --- drivers/soc/ti/k3-socinfo.c | 71 +++++++++++++++++++++++++++++-------- 1 file changed, 56 insertions(+), 15 deletions(-) diff --git a/drivers/soc/ti/k3-socinfo.c b/drivers/soc/ti/k3-socinfo.c index 6ea9b8c7d335..6de1e3531af9 100644 --- a/drivers/soc/ti/k3-socinfo.c +++ b/drivers/soc/ti/k3-socinfo.c @@ -33,19 +33,37 @@ #define CTRLMMR_WKUP_JTAGID_MFG_TI 0x17 +#define JTAG_ID_PARTNO_AM65X 0xBB5A +#define JTAG_ID_PARTNO_J721E 0xBB64 +#define JTAG_ID_PARTNO_J7200 0xBB6D +#define JTAG_ID_PARTNO_AM64X 0xBB38 +#define JTAG_ID_PARTNO_J721S2 0xBB75 +#define JTAG_ID_PARTNO_AM62X 0xBB7E +#define JTAG_ID_PARTNO_J784S4 0xBB80 +#define JTAG_ID_PARTNO_AM62AX 0xBB8D +#define JTAG_ID_PARTNO_AM62PX 0xBB9D + static const struct k3_soc_id { unsigned int id; const char *family_name; } k3_soc_ids[] = { - { 0xBB5A, "AM65X" }, - { 0xBB64, "J721E" }, - { 0xBB6D, "J7200" }, - { 0xBB38, "AM64X" }, - { 0xBB75, "J721S2"}, - { 0xBB7E, "AM62X" }, - { 0xBB80, "J784S4" }, - { 0xBB8D, "AM62AX" }, - { 0xBB9D, "AM62PX" }, + { JTAG_ID_PARTNO_AM65X, "AM65X" }, + { JTAG_ID_PARTNO_J721E, "J721E" }, + { JTAG_ID_PARTNO_J7200, "J7200" }, + { JTAG_ID_PARTNO_AM64X, "AM64X" }, + { JTAG_ID_PARTNO_J721S2, "J721S2"}, + { JTAG_ID_PARTNO_AM62X, "AM62X" }, + { JTAG_ID_PARTNO_J784S4, "J784S4" }, + { JTAG_ID_PARTNO_AM62AX, "AM62AX" }, + { JTAG_ID_PARTNO_AM62PX, "AM62PX" }, +}; + +static char *j721e_rev_string_map[] = { + "1.0", "1.1", +}; + +static char *k3_rev_string_map[] = { + "1.0", "2.0", "3.0", }; static int @@ -63,6 +81,29 @@ k3_chipinfo_partno_to_names(unsigned int partno, return -EINVAL; } +static int +k3_chipinfo_variant_to_sr(unsigned int partno, unsigned int variant, + struct soc_device_attribute *soc_dev_attr) +{ + switch (partno) { + case JTAG_ID_PARTNO_J721E: + if (variant >= ARRAY_SIZE(j721e_rev_string_map)) + goto bail; + soc_dev_attr->revision = kasprintf(GFP_KERNEL, "SR%s", + j721e_rev_string_map[variant]); + break; + default: + if (variant >= ARRAY_SIZE(k3_rev_string_map)) + goto bail; + soc_dev_attr->revision = kasprintf(GFP_KERNEL, "SR%s", + k3_rev_string_map[variant]); + } + return 0; + +bail: + return -EINVAL; +} + static int k3_chipinfo_probe(struct platform_device *pdev) { struct device_node *node = pdev->dev.of_node; @@ -94,7 +135,6 @@ static int k3_chipinfo_probe(struct platform_device *pdev) variant = (jtag_id & CTRLMMR_WKUP_JTAGID_VARIANT_MASK) >> CTRLMMR_WKUP_JTAGID_VARIANT_SHIFT; - variant++; partno_id = (jtag_id & CTRLMMR_WKUP_JTAGID_PARTNO_MASK) >> CTRLMMR_WKUP_JTAGID_PARTNO_SHIFT; @@ -103,15 +143,16 @@ static int k3_chipinfo_probe(struct platform_device *pdev) if (!soc_dev_attr) return -ENOMEM; - soc_dev_attr->revision = kasprintf(GFP_KERNEL, "SR%x.0", variant); - if (!soc_dev_attr->revision) { - ret = -ENOMEM; + ret = k3_chipinfo_partno_to_names(partno_id, soc_dev_attr); + if (ret) { + dev_err(dev, "Unknown SoC JTAGID[0x%08X]\n", jtag_id); + ret = -ENODEV; goto err; } - ret = k3_chipinfo_partno_to_names(partno_id, soc_dev_attr); + ret = k3_chipinfo_variant_to_sr(partno_id, variant, soc_dev_attr); if (ret) { - dev_err(dev, "Unknown SoC JTAGID[0x%08X]\n", jtag_id); + dev_err(dev, "Unknown revision for %s\n", soc_dev_attr->family); ret = -ENODEV; goto err_free_rev; } -- 2.34.1
WARNING: multiple messages have this Message-ID (diff)
From: Neha Malcom Francis <n-francis@ti.com> To: <nm@ti.com>, <ssantosh@kernel.org>, <t-konduru@ti.com> Cc: <linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>, <n-francis@ti.com>, <u-kumar1@ti.com> Subject: [PATCH v2 1/2] soc: ti: k3-socinfo: Revamp driver to accommodate different rev structs Date: Fri, 15 Sep 2023 12:16:49 +0530 [thread overview] Message-ID: <20230915064650.2287638-2-n-francis@ti.com> (raw) In-Reply-To: <20230915064650.2287638-1-n-francis@ti.com> k3-socinfo.c driver assumes silicon revisions to be 1.0, 2.0 etc. for every platform. However this typical style is not followed by J721E (1.0, 1.1) and need not be followed by upcoming silicon revisions as well. Adapt the driver to be similar to its U-Boot counterpart (drivers/soc/soc_ti_k3.c) that accounts for this difference on the basis of partno/family. Note that we change the order of invocation of k3_chipinfo_partno_to_names before k3_chipinfo_variant_to_sr so we have the family name in case error is returned. Signed-off-by: Thejasvi Konduru <t-konduru@ti.com> Signed-off-by: Neha Malcom Francis <n-francis@ti.com> --- drivers/soc/ti/k3-socinfo.c | 71 +++++++++++++++++++++++++++++-------- 1 file changed, 56 insertions(+), 15 deletions(-) diff --git a/drivers/soc/ti/k3-socinfo.c b/drivers/soc/ti/k3-socinfo.c index 6ea9b8c7d335..6de1e3531af9 100644 --- a/drivers/soc/ti/k3-socinfo.c +++ b/drivers/soc/ti/k3-socinfo.c @@ -33,19 +33,37 @@ #define CTRLMMR_WKUP_JTAGID_MFG_TI 0x17 +#define JTAG_ID_PARTNO_AM65X 0xBB5A +#define JTAG_ID_PARTNO_J721E 0xBB64 +#define JTAG_ID_PARTNO_J7200 0xBB6D +#define JTAG_ID_PARTNO_AM64X 0xBB38 +#define JTAG_ID_PARTNO_J721S2 0xBB75 +#define JTAG_ID_PARTNO_AM62X 0xBB7E +#define JTAG_ID_PARTNO_J784S4 0xBB80 +#define JTAG_ID_PARTNO_AM62AX 0xBB8D +#define JTAG_ID_PARTNO_AM62PX 0xBB9D + static const struct k3_soc_id { unsigned int id; const char *family_name; } k3_soc_ids[] = { - { 0xBB5A, "AM65X" }, - { 0xBB64, "J721E" }, - { 0xBB6D, "J7200" }, - { 0xBB38, "AM64X" }, - { 0xBB75, "J721S2"}, - { 0xBB7E, "AM62X" }, - { 0xBB80, "J784S4" }, - { 0xBB8D, "AM62AX" }, - { 0xBB9D, "AM62PX" }, + { JTAG_ID_PARTNO_AM65X, "AM65X" }, + { JTAG_ID_PARTNO_J721E, "J721E" }, + { JTAG_ID_PARTNO_J7200, "J7200" }, + { JTAG_ID_PARTNO_AM64X, "AM64X" }, + { JTAG_ID_PARTNO_J721S2, "J721S2"}, + { JTAG_ID_PARTNO_AM62X, "AM62X" }, + { JTAG_ID_PARTNO_J784S4, "J784S4" }, + { JTAG_ID_PARTNO_AM62AX, "AM62AX" }, + { JTAG_ID_PARTNO_AM62PX, "AM62PX" }, +}; + +static char *j721e_rev_string_map[] = { + "1.0", "1.1", +}; + +static char *k3_rev_string_map[] = { + "1.0", "2.0", "3.0", }; static int @@ -63,6 +81,29 @@ k3_chipinfo_partno_to_names(unsigned int partno, return -EINVAL; } +static int +k3_chipinfo_variant_to_sr(unsigned int partno, unsigned int variant, + struct soc_device_attribute *soc_dev_attr) +{ + switch (partno) { + case JTAG_ID_PARTNO_J721E: + if (variant >= ARRAY_SIZE(j721e_rev_string_map)) + goto bail; + soc_dev_attr->revision = kasprintf(GFP_KERNEL, "SR%s", + j721e_rev_string_map[variant]); + break; + default: + if (variant >= ARRAY_SIZE(k3_rev_string_map)) + goto bail; + soc_dev_attr->revision = kasprintf(GFP_KERNEL, "SR%s", + k3_rev_string_map[variant]); + } + return 0; + +bail: + return -EINVAL; +} + static int k3_chipinfo_probe(struct platform_device *pdev) { struct device_node *node = pdev->dev.of_node; @@ -94,7 +135,6 @@ static int k3_chipinfo_probe(struct platform_device *pdev) variant = (jtag_id & CTRLMMR_WKUP_JTAGID_VARIANT_MASK) >> CTRLMMR_WKUP_JTAGID_VARIANT_SHIFT; - variant++; partno_id = (jtag_id & CTRLMMR_WKUP_JTAGID_PARTNO_MASK) >> CTRLMMR_WKUP_JTAGID_PARTNO_SHIFT; @@ -103,15 +143,16 @@ static int k3_chipinfo_probe(struct platform_device *pdev) if (!soc_dev_attr) return -ENOMEM; - soc_dev_attr->revision = kasprintf(GFP_KERNEL, "SR%x.0", variant); - if (!soc_dev_attr->revision) { - ret = -ENOMEM; + ret = k3_chipinfo_partno_to_names(partno_id, soc_dev_attr); + if (ret) { + dev_err(dev, "Unknown SoC JTAGID[0x%08X]\n", jtag_id); + ret = -ENODEV; goto err; } - ret = k3_chipinfo_partno_to_names(partno_id, soc_dev_attr); + ret = k3_chipinfo_variant_to_sr(partno_id, variant, soc_dev_attr); if (ret) { - dev_err(dev, "Unknown SoC JTAGID[0x%08X]\n", jtag_id); + dev_err(dev, "Unknown revision for %s\n", soc_dev_attr->family); ret = -ENODEV; goto err_free_rev; } -- 2.34.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-09-15 6:47 UTC|newest] Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-09-15 6:46 [PATCH v2 0/2] Revamp k3-socinfo driver Neha Malcom Francis 2023-09-15 6:46 ` Neha Malcom Francis 2023-09-15 6:46 ` Neha Malcom Francis [this message] 2023-09-15 6:46 ` [PATCH v2 1/2] soc: ti: k3-socinfo: Revamp driver to accommodate different rev structs Neha Malcom Francis 2023-09-15 12:21 ` Nishanth Menon 2023-09-15 12:21 ` Nishanth Menon 2023-09-19 3:47 ` Neha Malcom Francis 2023-09-19 3:47 ` Neha Malcom Francis 2023-09-15 6:46 ` [PATCH v2 2/2] soc: ti k3-socinfo: Fix typo Neha Malcom Francis 2023-09-15 6:46 ` Neha Malcom Francis 2023-09-15 12:21 ` Nishanth Menon 2023-09-15 12:21 ` Nishanth Menon
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=20230915064650.2287638-2-n-francis@ti.com \ --to=n-francis@ti.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=nm@ti.com \ --cc=ssantosh@kernel.org \ --cc=t-konduru@ti.com \ --cc=u-kumar1@ti.com \ /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: linkBe 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.