From: Neha Malcom Francis <n-francis@ti.com>
To: Nishanth Menon <nm@ti.com>
Cc: <ssantosh@kernel.org>, <linux-kernel@vger.kernel.org>,
<linux-arm-kernel@lists.infradead.org>, <u-kumar1@ti.com>
Subject: Re: [PATCH] soc: ti: k3-socinfo: Revamp driver to accommodate different rev structs
Date: Fri, 15 Sep 2023 08:15:43 +0530 [thread overview]
Message-ID: <17d20ae4-22fc-430d-77eb-4c0511b9f8b9@ti.com> (raw)
In-Reply-To: <20230914160224.doytoq2bbvymuieh@onslaught>
Hi Nishanth
On 14/09/23 21:32, Nishanth Menon wrote:
> On 13:14-20230914, Neha Malcom Francis wrote:
>> 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. While at it, modify driver to be more understandable.
>
> Don't mix so many things up in a single patch.
>
>>
>> Signed-off-by: Neha Malcom Francis <n-francis@ti.com>
>> ---
>> This patch tries to revive an earlier attempt [1] and also works off of
>> those review comments, sending it as a new patch since the approach is
>> slightly different.
>>
>> [1] https://lore.kernel.org/all/20230607080349.26671-1-t-konduru@ti.com/
>>
>> drivers/soc/ti/k3-socinfo.c | 112 +++++++++++++++++++++++++-----------
>> 1 file changed, 80 insertions(+), 32 deletions(-)
>>
>> diff --git a/drivers/soc/ti/k3-socinfo.c b/drivers/soc/ti/k3-socinfo.c
>> index 6ea9b8c7d335..1e7a32b5b63f 100644
>> --- a/drivers/soc/ti/k3-socinfo.c
>> +++ b/drivers/soc/ti/k3-socinfo.c
>> @@ -20,7 +20,7 @@
>> * 31-28 VARIANT Device variant
>> * 27-12 PARTNO Part number
>> * 11-1 MFG Indicates TI as manufacturer (0x17)
>> - * 1 Always 1
>> + * 0 Always 1
>
> Looks like a typo you are fixing, but no information in commit message.
>
>> */
>> #define CTRLMMR_WKUP_JTAGID_VARIANT_SHIFT (28)
>> #define CTRLMMR_WKUP_JTAGID_VARIANT_MASK GENMASK(31, 28)
>> @@ -33,33 +33,81 @@
>>
>> #define CTRLMMR_WKUP_JTAGID_MFG_TI 0x17
>>
>> -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" },
>> +#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 char *j721e_rev_string_map[] = {
>> + "1.0", "1.1",
>> +};
>> +
>> +static char *typical_rev_string_map[] = {
>
> use k3_ name space please for vars.
>
>> + "1.0", "2.0", "3.0",
>> };
>>
>> static int
>> k3_chipinfo_partno_to_names(unsigned int partno,
>> struct soc_device_attribute *soc_dev_attr)
>> {
>> - int i;
>> + switch (partno) {
>> + case JTAG_ID_PARTNO_AM62AX:
>> + soc_dev_attr->family = "AM62AX";
>> + break;
>> + case JTAG_ID_PARTNO_AM62PX:
>> + soc_dev_attr->family = "AM62PX";
>> + break;
>> + case JTAG_ID_PARTNO_AM62X:
>> + soc_dev_attr->family = "AM62X";
>> + break;
>> + case JTAG_ID_PARTNO_AM64X:
>> + soc_dev_attr->family = "AM64X";
>> + break;
>> + case JTAG_ID_PARTNO_AM65X:
>> + soc_dev_attr->family = "AM65X";
>> + break;
>> + case JTAG_ID_PARTNO_J7200:
>> + soc_dev_attr->family = "J7200";
>> + break;
>> + case JTAG_ID_PARTNO_J721E:
>> + soc_dev_attr->family = "J721E";
>> + break;
>> + case JTAG_ID_PARTNO_J721S2:
>> + soc_dev_attr->family = "J721S2";
>> + break;
>> + case JTAG_ID_PARTNO_J784S4:
>> + soc_dev_attr->family = "J784S4";
>> + break;
>> + default:
>> + return -EINVAL;
>> + };
>> + return 0;
>> +};
>>
>> - for (i = 0; i < ARRAY_SIZE(k3_soc_ids); i++)
>> - if (partno == k3_soc_ids[i].id) {
>> - soc_dev_attr->family = k3_soc_ids[i].family_name;
>> - return 0;
>> - }
>
> Why redo the family attribute? That is JTAG standard and handling is
> valid and implementation is optimal - no sense in churning here.
>
>> +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(typical_rev_string_map))
>> + goto bail;
>> + soc_dev_attr->revision = kasprintf(GFP_KERNEL, "SR%s",
>> + typical_rev_string_map[variant]);
>> + }
>> + return 0;
>>
>> +bail:
>> return -EINVAL;
>> }
>>
>> @@ -70,10 +118,10 @@ static int k3_chipinfo_probe(struct platform_device *pdev)
>> struct device *dev = &pdev->dev;
>> struct soc_device *soc_dev;
>> struct regmap *regmap;
>> - u32 partno_id;
>> - u32 variant;
>> u32 jtag_id;
>> u32 mfg;
>> + u32 partno_id;
>> + u32 variant;
>> int ret;
>>
>> regmap = device_node_to_regmap(node);
>> @@ -92,28 +140,28 @@ static int k3_chipinfo_probe(struct platform_device *pdev)
>> return -ENODEV;
>> }
>>
>> - 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;
>>
>> + variant = (jtag_id & CTRLMMR_WKUP_JTAGID_VARIANT_MASK) >>
>> + CTRLMMR_WKUP_JTAGID_VARIANT_SHIFT;
>> +
> no need to relocate the code - just call the chip_info_to_sr
>
>> soc_dev_attr = kzalloc(sizeof(*soc_dev_attr), GFP_KERNEL);
>> 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;
>> + goto err;
>> }
>>
>> node = of_find_node_by_path("/");
>> --
>> 2.34.1
>>
>
Thanks for the review, will work on it and send v2
--
Thanking You
Neha Malcom Francis
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
prev parent reply other threads:[~2023-09-15 2:46 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-14 7:44 [PATCH] soc: ti: k3-socinfo: Revamp driver to accommodate different rev structs Neha Malcom Francis
2023-09-14 16:02 ` Nishanth Menon
2023-09-15 2:45 ` Neha Malcom Francis [this message]
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=17d20ae4-22fc-430d-77eb-4c0511b9f8b9@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=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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox